зы: Серёга у тебя небольшая ошибка:
0000 - 0
0001 - 1
0010 - 2
0011 - 3
0100 - 4
Дима совершенно верно заметил. А дело было так, начну с начала:
--------------------------------------------------------------------------------------------------------------------
вот бывший пароль который установил вирус:
45274776
а вот код в котором этот пароль зашифрован, который был в поле "О себе":
0101100100010110011001011000000101101010010110010
0010110101001011010100101101000
-----------------------------------------------------------------------------------------------------------------
Дальше была мысль подсчитать количество цыфр пароля, и количество цифр шифра.
Само собой появилось подозрение то что ситуация выглядит так:
4 5 2 7 4 7 7 6
0101100100 0101100110 0101100000 0101101010 0101100100 0101101010 0101101010 0101101000
------------------------------------------------------------------------------------------------------------------
Дальше для большей наглядности я расположил всё это в столбик, получилось вот так:
4 = 0101100100
5 = 0101100110
2 = 0101100000
7 = 0101101010
4 = 0101100100
7 = 0101101010
7 = 0101101010
6 = 0101101000
--------------------------------------------------------------------------------------------------------------
Дальше стало несложно заметить несколько обстоятельств:
Первое это то, что одинаковые цифры таки имеют одинаковый код, а значит есть большой шанс что логика пока верна.
Второе это то, что в каждом коде каждой цифры, целые группы цифр совпадают, и лишь кое в чем разнятся.
В итоге раскладка обрела вот такой вид:
4 = 01011_00100
5 = 01011_00110
2 = 01011_00000
7 = 01011_01010
4 = 01011_00100
7 = 01011_01010
7 = 01011_01010
6 = 01011_01000
----------------------------------------------------------------------------------------------------------------------
Дальше было решено выбросить "дубликаты" (в даном случае 7 и 4) чтоб не музолить мусором глаза, а оставшиеся цифры расположить в порядке возрастания. Раскладка обрела вот такой вид:
2 = 01011_00000
4 = 01011_00100
5 = 01011_00110
6 = 01011_01000
7 = 01011_01010
-----------------------------------------------------------------------------------------------------------------------
Тут уже чуток пришлось напрячься, попотеть, однако не напрасно.
Если мы четко видим что первая половина кодов неизменна, то во второй половине кодов, кое как с напрягами но всё таки стало возможным заметить алгоритм наращивания двоичного кода синхронно с нарастающим значением цифр. Особенно хорошо это видно на получившейся черёдности 4, 5, 6, 7. Да только вот нюансы из за которых пришлось спотеть.
1. Значение кода отставало от значения присвоенной цифры на 2
2. Код читать нужно с заду на перед
3. Последняя цифра кода роли не играет
-------------------------------------------------------------------------------------------------------------------------
В итоге имеем раскладку всех цифр от 1 до 9
В данном случае коды тех цифр которых в нашем пароле нет, теперь стало угадать не сложно.
Имеем:
1 = 01001_10010
2 = 01011_00000
3 = 01011_00010
4 = 01011_00100
5 = 01011_00110
6 = 01011_01000
7 = 01011_01010
8 = 01011_01100
9 = 01011_01110
-----------------------------------------------------------------------------------------------------------------------
Отдельного внимания стоит "единица", её код выглядит как:
1 = 01001_10010
Опять наше внимание на вторую половинку. Уже зная что последняя цифра кода не учитывается, а код из оставшихся четырех цифр читается с заду на перед, здесь во второй половине кода мы видим значение 9, а зная что значение кода отстает от присвоенной цифры на 2 имеем 11. Но в пароле цифра 11 не пишется, верно ? Потому в пароле пишется "единица", но в это время в первой половинке кода произошли чуток изменения !!!
Теперь первая половинка выглядит не 01011 как у всех, а 01001. Мы видим что значение кода в первой половине у единицы на ту же единицу меньше чем у любой другой цифры. Стало не сложно догадаться что это знак переноса в предыдущий десяток, из которого остается вторая цифра результата сложения значения кода второй половины и условно прибавляемой двойки.
----------------------------------------------------------------------------------------------------------------------------
1. Крайние цифры каждой "десятки" кода всегда и везде нули, а потому роли не играют и прибавлены для "блуда".
2. Средние 8 цифр нужно разбить на две группы по 4
3. Первая группа как выяснилось отображает произвольный код для определения переноса, вторая группа сам код цифры пароля.
4. К значению кода второй половины, условно прибавляется двойка, это так же мера для введения в блуд.
5. Код читается наоборот - с заду на перед. И это также мера для введения в блуд.
--------------------------------------------------------------------------------------------------------------------------
Не разгаданным остался ноль. Неизвестно взят он был из текущего десятка 01011, или с предыдущего с переносом 01001 (как единица). Кроме своей лечил ещё одну аську, но нуля не попалось.