PDA

Просмотр полной версии : Расшифровка пасса (алгоритм не известен)


Nek1t
12.03.2010, 21:12
Есть пасс в довольно странном виде, я думаю, что это не хэш, а именно закодированный пасс - к примеру, есть зависимость от длины.
Так же есть возможность шифровать любой пасс.
Для примера(я все перевел в бейс64, т.к. непечатаемые символы):
bugmen выглядит как:
WeBueu/N5mfndkxsAysefw==

aaaaaaaaaaaaaaaaa выглядит как:
eFYCtPLC8chlvNBrX8k4clxXycMYn596ZIQjyh1mtrQ=

Сказал бы я, что это обычный XOR, но число символов в зашифрованном/исходном виде не сходится, да и одинаковые символы кодируются по разному.
Есть идеи, как узнать алгоритм/расшифровать?

Pashkela
12.03.2010, 21:27
скорее всего нужен ключ для расшифровки, а функция шифрования вполне может быть чонить вроде такой (с одного реального сайта, админ типо ушлый):


<?php
function pass_in($string) {
$result = '';
$error = 'antichat';
for($i=1; $i<=strlen($string); $i++) {
$char = substr($string, $i-1, 1);
$keychar = substr($error, ($i % strlen($error))-1, 1);
$char = chr(ord($char) + ord($keychar));
$result .= $char;
}
return $result;
}
?>


так вот $error = 'antichat'; надо знать, типо это и есть ключ

PS: А вообще вариантов миллион и еще один

Nek1t
13.03.2010, 18:37
Ок, понятно.
Кстати говоря, в приведенном тобой коде идет обычное сложение ASCII-кодов и как результат одинаковая длина входных и выходных данных. В моем же случае этого не наблюдается.

Pashkela
13.03.2010, 18:46
ключ может быть не один, ключ может быть массивом ключей и т.д.

Nek1t
13.03.2010, 18:50
Ну, какая разница, даже при нескольких ключах strlen($inputPass) == strlen($outputPass), нэ?
Разве что если подмешивать лишние символы из тех же ключей.

Pashkela
13.03.2010, 18:55
Ну для первого символа например береш первое слово из массива, для второго - второе, тут ключевая строка здесь:

$keychar = substr($error, ($i % strlen($error))-1, 1);

а еррор может быть разный