http://pen-testing.sans.org/resources/ papers/gcih/cisco-ios-type-7-password-vulnerability-100566
Код: Выделить всё
#Cisco password 7 constant is : "tfd;kfoA,.iyewrkldJKD", len = 21
CONSTANT = "tfd;kfoA,.iyewrkldJKD"
encoded_password = input('Enter a type-7 CISCO password: ').strip()
salt = int(encoded_password[:2], 16)
salt_ascii = ord(CONSTANT[salt - 1])
decoded = ''
i = 2
while i< len(encoded_password):
encoded_char_int= int(encoded_password[i:i+2], 16)
decoded+= '%c'%(salt_ascii ^ encoded_char_int)
salt+=1
if salt == 22:
salt = 1
salt_ascii = ord(CONSTANT[salt - 1])
i+=2
print(decoded)
Код: Выделить всё
CONSTANT = "tfd;kfoA,.iyewrkldJKD"
то есть: mypassword365
Однако mypassword3651 не смог получить расшифрован по той причине, что пароль достаточно длинный, чтобы соль доходила до конца "tfd;kfoA,.iyewrkldJKD", а потом я не знаю, что делать, нужно ли мне повторять это снова?
Я попробовал повторить цикл еще раз, но расшифровка неверная,
Код: Выделить всё
if salt == 22:
salt = 1
#mypasswordH
Код: Выделить всё
salt = int(encoded_password[:2], 16)
first_pos = salt
.
.
.
.
if salt == 22:
salt = first_pos
Так что моя проблема на самом деле связана с механизмом дешифрования, в более простой способ, когда две первые цифры зашифрованного пароля представляют собой символы, начинающиеся с «tfd;kfoA,.iyewrkldJKD», например t или f или d, проблем нет (пароль обычно содержит менее 21 символа и программа работает), однако, если две первые цифры являются символами, находятся в конце "tfd;kfoA,.iyewrkldJKD", например d или J или K или D, у меня заканчиваются соли, и пароль частично расшифровывается, первая половина правильная , а второй — ложь.
Есть идеи?
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/589 ... ing-python