Forum Webscript.Ru
Программирование => Теория, алгоритмы и стандарты => Тема начата: NAS от 03 Октября 2003, 13:21:46
-
Есть задача. Необходимо найти алгоритм в последовательности LNJJPVNRCNAJGVERFNKL
Под этими буквами скрывается 1234567890
Может есть программы, которые найдут алгоритм.
-
hmm... ?
1 => LN
2 => JJ
3 => PV
4 => NR
5 => CN
6 => AJ
7 => GV
8 => ER
9 => FN
0 => KL
-
Да это тоже была первая мысль, но оказалось что нет.
Т.е. если задавать пароль 1234567890, то последовательность именно такая, а вот если например 4561237890, то уже другая.
Вообще я пытаюсь выцепить все ящики из почтового сервера VPOP3, который при экспорте дает шифрованные пароли.
-
Он и хранит их наверное в таком виде.
Пароли только цифровые?
Можно попробовать анализатор набросать
Паролей много есть?
-
Не пароли всякие. И паролей у меня есть бесконечное кол-во, могу завести любое кол-во пользователей.
-
хуже...
Гугление по этому вопросу ничего не дало?
-
Дало, только то что пароли одназначно расшифровываются обратно, так как фирма производитель расшифровывает их по 5 фунтов за штуку.
-
Бизнесом решил заняться :)
Пришли мне на csc@ukr.net десятка два с несложным порядком.
-
Хм...
я бы тоже посмотрел =)
-
если еще актуально, то и мне пришли.
Желаетльно чтобы пароли были не только цифрами и не только по 10 символов
max@webscript.ru
-
Смогу выложить в понедельник. Все на работе.
-
"abcdefghijklmno","ONMJCVARBNHJFVLRINOJMVCRDNBJHV"
"pqrstuvwxyz","PMNIDUBQGMEIKUIQJMPINU"
"skfhsaeis","PLNOCIAVGHHUFPLOJT"
"abc123","ONMJCVMKCGAS"
"6ertyui7","IOMMDUBRHREIFTEQ"
"ABCDEFGH","INOJMVCRDNBJHVFR"
"9087JFHG","IVJTPGNUAOBJHSFQ"
"TRTR9","OQPJNSCLDR"
"QWERTY","JNPKMTCLAMGM"
"DDDDDDDD","JQOHMSCRDMBTHOEN"
"ooollkkjjddnvchf","PHNSDRAJGUHKFJLPIKOPPKCPASAKGKET"
-
Если известна максимальная длинна паролей, то есть тупой и простой способ решения.
Прежде всего нам известно:
- каждый символ заменяется на два прописных символа латинского алфавита.
- заменяется единозначно в зависимости от рассположения в строке, т.е. учитывается порядковый номер символа и на замену не влияют никакие другие факторы.
Решение:
Во-первых создадим (26*2)+10+? паролей (буквы в латинском алфавите + цифры + другие разрешенные спецсимволы) вида "aaaaaaaaaaaaa", "1111111111111111", "BBBBBBBBBBBBB". Длина паролей равна длине максимально возможного пароля.
После чего создадим массив данных где значением будет символ плюс порядковый номер символа, а ключем то, на что это заменилось(т.е. пара букв).
Дальше я думаю объяснять не надо?
ЗЫ: Если длина паролей не ограничена, то можно ввести ограничение, ну скажем в 100 символов, реально то всегда меньше будет :).
-
NAS
ммм... может немного поздновато, но интернета у меня не было... только сейчас вышел прочитал и расшифровал... если все еще нужно, то могу выложить полный алгоритм шифрования...
P.S. для примера:
Phoinix -> JMMLDRASGSHMIR
-
Phoinix:
ммм... может немного поздновато, но интернета у меня не было... только сейчас вышел прочитал и расшифровал... если все еще нужно, то могу выложить полный алгоритм шифрования...
Очень даже надо. Кинь, если не сложно.
-
NAS
О расшифровке алгоритсма. На самом деле принцип кодирования очень прост.
первый разряд кода символа имеет ключ:
Q R O P U V S T I J G H M N K L
второй разряд кода символа имеет ключ:
K L I J O P M N C D A B G H E F
Стартовый символ: 0 -> 1С (в шеснадцатиричной системе счисления)
смещение первого разряда отностельно таблицы чисел и заглавных символов - +7
смещение первого разряда отностельно таблицы заглавных символов и строчных символов - +6
смещение второго разряда при переходе на следующий символ - -2
т.е. формула вычисления кода символа:
символ = [код символа hex] - (30 - 1C) + (4B-20)*[номер сивола в строке];
сокращенно:
символ = [код символа hex] - 20 + 2B*[номер сивола в строке];
(соответственно все считаем в шеснадцатиричной системе)
из полученного символа берем 2 последнии цифры и переводим в соответствии с ключами:
десятки:
0 1 2 3 4 5 6 7 8 9 A B C D E F
K L I J O P M N C D A B G H E F
единицы:
0 1 2 3 4 5 6 7 8 9 A B C D E F
Q R O P U V S T I J G H M N K L
Получаем наш код...
Теперь попробуем объяснить теорию... %-)
для кодирования берутся просто 2 последовательности заглавных символов длинной в 16, для десятков и единиц с смещением, в нашем случае последовательности такие:
десятки: ABCDEFGHIJKLMNOP
единицы: GHIJKLMNOPQRSTUV
потом эти последовательности разбиваются на пополам, потом на пары, и собираются в виде:
Вторая половина Первая половина
(2-я, 1-я, 4-я, 3-я) + (2-я, 1-я, 4-я, 3-я)
К сожалению я не видел кода crhbgnf поэтому не могу сказать какой функцией это делается, принцип простой: замена соседних пар, замена соседних пар пар, замена соседних пар пар пар.
соответственно собираем 2 готовые последовательности (ключи)
Потом идет смещение относительно первого символа "0" - 14(hex) или 20(dec) (может тоже как-то вычисляется относительно смещения последовательностей символов);
между последовательностями цифр, заглавных букв и строчных букв смещение +7 и +6 соответственно, прямо как в таблице кодировки, поэтому я подозреваю, что символы между этими последовательностями (например: = < > ?) тоже можно использовать в пароле (просто в приведенных выше паролях их не было, поэтому точно сказать не могу)
как только доходим до символа z - код продолжается, но от него отнимают 2 десятка и эти коды применяются для следующего символа в пароле...
Сотни, соответственно, отбрасываются...
Вроде все...
Если, что не по человечески объяснил, или может опечатался где, напишите объясню...
-
Phoinix
Ух, большое спасибо. Выйду из отпуска проверю.