Для начала нужно узнать длину пароля.Вы делаете это, оценивая Индекс совпадений или Каппа-тест.XOR зашифрованный текст сам сместился на 1 шаг и посчитал количество одинаковых символов (значение 0).Вы получите значение Каппа, разделив результат на общее количество символов минус 1. Сдвиньте еще раз и снова вычислите значение Каппа.Сдвигайте шифротекст столько раз, сколько необходимо, пока не найдете длину пароля.Если длина равна 4, вы должны увидеть что-то похожее на это:
Offset Hits
-------------------------
1 2.68695%
2 2.36399%
3 3.79009%
4 6.74012%
5 3.6953%
6 1.81582%
7 3.82744%
8 6.03504%
9 3.60273%
10 1.98052%
11 3.83241%
12 6.5627%
Как видите, значение Kappa значительно выше на множителях 4 (4, 8 и 12), чем на других.Это говорит о том, что длина пароля равна 4.
Теперь, когда у вас есть длина пароля, вы должны снова XOR зашифрованный текст с самим собой, но теперь вы смещаетесь на кратные длины.Зачем?Поскольку зашифрованный текст выглядит следующим образом:
THISISTHEPLAINTEXT <- Plaintext
PASSPASSPASSPASSPA <- Password
------------------
EJKELDOSOSKDOWQLAG <- Ciphertext
Когда два одинаковых значения XOR: ed, результат равен 0:
EJKELDOSOSKDOWQLAG <- Ciphertext
EJKELDOSOSKDOWQLAG <- Ciphertext shifted 4.
В действительности:
THISISTHEPLAINTEXT <- Plaintext
PASSPASSPASSPASSPA <- Password
THISISTHEPLAINTEXT <- Plaintext
PASSPASSPASSPASSPA <- Password
Что такое:
THISISTHEPLAINTEXT <- Plaintext
THISISTHEPLAINTEXT <- Plaintext
Как видите, пароль «исчезает», и открытый текст XOR: ed с самим собой.
Так что же мы можем сделать сейчас?Вы написали, что пробелы удалены.Это усложняет получение открытого текста или пароля.Но не совсем невозможно.
В следующей таблице приведены значения зашифрованного текста для всех английских символов:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A 0
B 3 0
C 2 1 0
D 5 6 7 0
E 4 7 6 1 0
F 7 4 5 2 3 0
G 6 5 4 3 2 1 0
H 9 10 11 12 13 14 15 0
I 8 11 10 13 12 15 14 1 0
J 11 8 9 14 15 12 13 2 3 0
K 10 9 8 15 14 13 12 3 2 1 0
L 13 14 15 8 9 10 11 4 5 6 7 0
M 12 15 14 9 8 11 10 5 4 7 6 1 0
N 15 12 13 10 11 8 9 6 7 4 5 2 3 0
O 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
P 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 0
Q 16 19 18 21 20 23 22 25 24 27 26 29 28 31 30 1 0
R 19 16 17 22 23 20 21 26 27 24 25 30 31 28 29 2 3 0
S 18 17 16 23 22 21 20 27 26 25 24 31 30 29 28 3 2 1 0
T 21 22 23 16 17 18 19 28 29 30 31 24 25 26 27 4 5 6 7 0
U 20 23 22 17 16 19 18 29 28 31 30 25 24 27 26 5 4 7 6 1 0
V 23 20 21 18 19 16 17 30 31 28 29 26 27 24 25 6 7 4 5 2 3 0
W 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24 7 6 5 4 3 2 1 0
X 25 26 27 28 29 30 31 16 17 18 19 20 21 22 23 8 9 10 11 12 13 14 15 0
Y 24 27 26 29 28 31 30 17 16 19 18 21 20 23 22 9 8 11 10 13 12 15 14 1 0
Z 27 24 25 30 31 28 29 18 19 16 17 22 23 20 21 10 11 8 9 14 15 12 13 2 3 0
Что это значит?Если A и B равны XOR: ed, то результирующее значение равно 3. E и P приведут к 21. И т.д. Хорошо, но как это вам поможет?
Помните, что открытым текстом является XOR: ed ссам сдвигается на кратные длины пароля.Для каждого значения вы можете проверить таблицу выше и определить, какие комбинации может иметь эта позиция.Допустим, значение равно 25, тогда два символа, которые привели к значению 25, могут быть одной из следующих комбинаций: (IP), (HQ), (KR), (JS), (MT), (LU), (OV), (NW), (AX) или (CZ).Но какой?Теперь вы делаете больше смен и ищите соответствующие значения в таблице снова для каждой позиции.В следующий раз значение может быть 7, и поскольку у вас уже есть список возможных комбинаций символов, вы проверяете только их.В следующие две смены значения равны 3 и 1. Теперь вы можете определить, что символ является W, поскольку это единственный общий символ в каждой смене, (NW), (PW), (TW), (VW).Вы можете сделать это для большинства позиций.
Вы не получите весь открытый текст, но получите достаточно символов, чтобы узнать пароль.Возьмите известные символы и зашифруйте их в правильном положении в зашифрованном тексте.Это даст пароль.Количество известных символов, которое вам нужно по крайней мере, - это количество символов в пароле, если они находятся на «правильных» позициях относительно пароля.
Удачи!