![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дешифровка по кодовому слову [D7]
Инокентий © (2012-10-23 12:30:00)Доброго времени суток читающему это сообщение. перейду сразу к вопросу - нужно найти правильный метод шифрования.
У меня имеется всё, кроме самого метода, имеется оригинальный текст, ключевое слово из 16 символов (4 по 4 через -) и зашифрованный текст.
Пожалуйста, если есть чем помочь, буду очень благодарен.
По заявлению преподавателя тут всё очень просто, неделю разбирался, ничего не могу сделать подходящее, могу выслать свои пробы, но боюсь будете смеятся.
Sha (2012-10-26 22:56:00) [1]функцию для последней цифры ключа подобрал
function GetXorValue(start: integer; const s: string): byte;
var
i, val: integer;
begin;
Result:=start;
for i:=1 to Length(s) do begin;
val:=Ord(s[i]) + (Ord(s[i]) xor 1) and 1 * 2;
Result:=Result-val;
end;
end;
const
TestKeys: array[0..3] of string= (
'kkkk-kkkk-kkkk-kkkk',
'kkkk-kkkk-kkkk-kkkl',
'kkkk-kkkk-kkkk-kkkm',
'kkkk-kkkk-kkkk-kkkn'
);
procedure TForm1.Button1Click(Sender: TObject);
var
i, start: integer;
b: byte;
begin;
start:=256;
while start>0 do begin;
dec(start);
if GetXorValue(start, TestKeys[Low(TestKeys)])=147 then break;
end;
Memo1.Lines.Add(Format('start=%.2x',[start]));
for i:=Low(TestKeys) to High(TestKeys) do begin;
b:=GetXorValue(start, TestKeys[i]);
Memo1.Lines.Add(Format('xor=%.2x code=%.2x',[b, b xor $20]));
end;
end;
{вывод:
start=CA
xor=93 code=B3
xor=90 code=B0
xor=91 code=B1
xor=8E code=AE
}
Инокентий (2012-10-26 19:00:00) [2]Я думал что это именно код)))) Да это однозначно моя ошибка, извините)))
Sha (2012-10-26 18:53:00) [3]#0 означает символ номер 0, т.е. его Ord()=0, т.е его шестнадцатеричное значение равно $00.
Кто из вас с преподом сделал вид, что этого не знает?
Или никто? :-)
Инокентий (2012-10-26 18:41:00) [4]
> Sha © (26.10.12 18:12) [64]
> > я дал ему этот ключ он его прямо так и применил с решётками
>
> кто из вас прикололся?
В смысле?
Sha (2012-10-26 18:12:00) [5]> я дал ему этот ключ он его прямо так и применил с решётками
кто из вас прикололся?
Инокентий (2012-10-26 17:17:00) [6]у меня тут ещё есть интересные примеры если помогут
В качестве оригинального текста используется 1 пробел
Ключ: kkkk-kkkk-kkkk-kkkl
шифрованный:°
шифрованный вид в хексе:b0
Ключ: kkkk-kkkk-kkkk-kkkm
шифрованный:±
шифрованный вид в хексе:b1
Ключ: kkkk-kkkk-kkkk-kkkn
шифрованный:®
шифрованный вид в хексе:ae
Ключ: kkkk-llll-mmmm-nnnn
шифрованный:«
шифрованный вид в хексе:ab
Ключ: kkkk-kkkk-kkkq-kkkk
шифрованный:Q
шифрованный вид в хексе:51
Инокентий (2012-10-26 17:14:00) [7]
> > Sha © (25.10.12 22:28) [41]
> > лучше с текстом #0
> > и ключами:
> > #1#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
в блокноте ец
в хексе e5 f6
#1#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0 я дал ему этот ключ он его прямо так и применил с решётками
AV (2012-10-26 16:53:00) [8]
> шифрованный:`
> шифрованный вид в хексе:60
>
>
> > @ - второй текст
> > @@@@-@@@@-@@@@-@@@@ - ключ
>
>
> шифрованный:.
> шифрованный вид в хексе:00
а вот это интереснее..
подумаю дома
AV (2012-10-26 16:52:00) [9]
> Инокентий
ага
итак, xor на этот раз 69
// что как бэ говорит, что мы еще по ээ мучаемся, причем не по-человечьи :)
или 0100 0101
имеется ключ - 65 (0100 0001) по 16 (0001 0000) раз
пока ничего
(просто так, записал, что бы видно было. Может что потом придет)
Инокентий (2012-10-26 16:43:00) [10]
> Sha © (25.10.12 22:28) [41]
> лучше с текстом #0
> и ключами:
> #1#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #0#1#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #0#0#1#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #0#0#0#1-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #0#0#0#0-#1#0#0#0-#0#0#0#0-#0#0#0#0
> #0#0#0#0-#0#1#0#0-#0#0#0#0-#0#0#0#0
> #0#0#0#0-#0#0#1#0-#0#0#0#0-#0#0#0#0
> #0#0#0#0-#0#0#0#1-#0#0#0#0-#0#0#0#0
> #0#0#0#0-#0#0#0#0-#1#0#0#0-#0#0#0#0
> #0#0#0#0-#0#0#0#0-#0#1#0#0-#0#0#0#0
> #0#0#0#0-#0#0#0#0-#0#0#1#0-#0#0#0#0
> #0#0#0#0-#0#0#0#0-#0#0#0#1-#0#0#0#0
> #0#0#0#0-#0#0#0#0-#0#0#0#0-#1#0#0#0
> #0#0#0#0-#0#0#0#0-#0#0#0#0-#0#1#0#0
> #0#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#1#0
> #0#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#1
> если этого будет мало добавим еще
>
> <Цитата>
> Sha © (25.10.12 22:32) [42]
> вот ключи эти тоже спроси
> #2#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #4#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #8#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #16#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #32#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #64#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #128#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
А вот с этим по труднее будет,если я правильно Вас понял то надо без# писать т.к. ключ состоит из 16 символов
Инокентий (2012-10-26 16:24:00) [11]
> AV © (26.10.12 01:08) [45]
> Автору.
>
> В общем,
> надо два разных текста по одному ключу прогнать
> Тексты как можно проще. В идеале, как сказал Sha.
> Если препод придерется, что это не текст, то как я предложил.
>
> хотя даже лучше нет. Лучше "пробел" или @
> Ключ тоже, или все "пробелы" или @
>
> Итого
> все пробелы (чем меньше разрешит, тем лучше)
> второй - все @(чем меньше разрешит, тем лучше)
> Ключ из них же, но один и тот же для обоих текстов.
>
> один пробел - первый текст
> @@@@-@@@@-@@@@-@@@@ - ключ
>
шифрованный:`
шифрованный вид в хексе:60
> @ - второй текст
> @@@@-@@@@-@@@@-@@@@ - ключ
шифрованный:.
шифрованный вид в хексе:00
Инокентий (2012-10-26 16:03:00) [12]>AV
Тест выше для AV то что Вы просили
Инокентий (2012-10-26 16:02:00) [13]
> A
> Ключ
> AAAA-AAAA-AAAA-AAAA
>
шифрованный:.
шифрованный вид в хексе:04
> с текстом
> B
> Ключ
> AAAA-AAAA-AAAA-AAAA
>
шифрованный:.
шифрованный вид в хексе:07
> с текстом
> AB
> Ключ
> AAAA-AAAA-AAAA-AAAA
шифрованный:..
шифрованный вид в хексе:04 07
Rouse_ (2012-10-26 14:28:00) [14]ну я вот примерно таким-же способом как ты описал и крутил kkkk-kkkk-kkkk-kkkk дабы 147 получить, чистые сложение отрицания - не подходят, чистые ксоры то-же, получается что похоже зависимость от положения байта ключа в самом ключе в качестве модификатора + еще что-то...
han_malign (2012-10-26 14:22:00) [15]- да чего-то я попутал...
То есть, для решения задачи - исходный и шифро-текст не важен (уже) - достаточно одного символа.
И на самом деле нужно исследовать ключ, а не шифровку...
Тогда в первую очередь нужно проверить коммутативность групп ключа:
- 4 (по идее ортогональные) перестановки в подгруппе: 1234-..., 2134, 1243, 3412
- возможно 4 раза(X-0-0-0, 0-X-0-0, 0-0-X-0, 0-0-0-X) т.к. подгруппы могут по разному кодироваться.
- тоже самое для групп 1111-2222-3333-4444, ...
(и того 20 ключей)
а дальше уже смотреть куда копать...
Rouse_ (2012-10-26 13:28:00) [16]
> и либо здесь ошибка
Почему же ошибка? Если отнимать - да цифры разные, а если ксорить - то во всех 4 есть ключ = 147
Writeln($61 xor $F2);
Writeln($64 xor $F7);
Writeln($66 xor $F5);
Writeln($73 xor $E0);
han_malign (2012-10-26 12:20:00) [17]
> "По заявлению преподавателя тут всё очень просто", то должно быть что-то другое.
- просто - на полгода...
и либо здесь ошибка
> Инокентий [14]
>
> Оригинальный текст:
> aaaaaaaaaaaaaaaa
> ssssssssssssssss
> dddddddddddddddd
> ffffffffffffffff
>
> Шифрованный:
> тттттттттттттттт
> аааааааааааааааа
> чччччччччччччччч
> хххххххххххххххx
>
> Ключевое слово:
> kkkk-kkkk-kkkk-kkkk
$61 - $F2
$64 - $F7
$66 - $F5
$73 - $E0
- либо таки таблица
AV (2012-10-26 11:11:00) [18]
> Ну типа Key[n] - Key[N+1] + Key[N+2] и т.п.
согласен
для примера
Оригинальный текст:ABCDEFGHIJKLMNOP
Шифрованный текст:!"#$%&'()*+,-./0
ключевое слово : ABCD-EFGH-IJKL-MNOP
Подходит OR по ключу + 1 = 96
Что уже не подходит для других.
Нужно что-то типа ключа, где все 0 и только 1 бит установлен.
#32 - пробел
#64 - @
подошли бы
Rouse_ (2012-10-26 10:51:00) [19]Кстати это и не CRC8 (инициализация таблицы в диапазоне полинома 1..255 не подходит)
brother (2012-10-26 10:29:00) [20]Вот препод от вас отмазался ;) а окажется Key[n] + xor + ключевая таблица;)