Форум: "Начинающим";
Текущий архив: 2013.05.19;
Скачать: [xml.tar.bz2];
ВнизДешифровка по кодовому слову Найти похожие ветки
← →
Инокентий (2012-10-23 12:30) [0]Доброго времени суток читающему это сообщение. перейду сразу к вопросу - нужно найти правильный метод шифрования.
У меня имеется всё, кроме самого метода, имеется оригинальный текст, ключевое слово из 16 символов (4 по 4 через -) и зашифрованный текст.
Пожалуйста, если есть чем помочь, буду очень благодарен.
По заявлению преподавателя тут всё очень просто, неделю разбирался, ничего не могу сделать подходящее, могу выслать свои пробы, но боюсь будете смеятся.
← →
Ega23 © (2012-10-23 12:45) [1]http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
← →
И. Павел © (2012-10-23 12:54) [2]> могу выслать свои пробы
Лучше высылайте текст, шифротекст и ключ. Если «очень просто», то, скорее всего, текст просто накладывается на ключ (буквы нумеруются по порядку в алфавите). Этот вариант проверяли?
← →
Ega23 © (2012-10-23 13:06) [3]
> текст просто накладывается на ключ (буквы нумеруются по
> порядку в алфавите).
Там куча нюансов есть. Хорошо, если только кириллица используется. А если латиница есть? Цифры присутствуют? Знаки препинания?
← →
Inovet © (2012-10-23 13:20) [4]> [0] Инокентий (23.10.12 12:30)
> По заявлению преподавателя тут всё очень просто
xor?
← →
Ega23 © (2012-10-23 13:23) [5]
> xor?
Если есть оригинальный текст и зашифрованный текст, то маловероятно.
"я" xor "я" дадут терминирующий ноль.
← →
Ega23 © (2012-10-23 13:24) [6]Это если сам xor каким-то образом не переопределён :)
← →
И. Павел © (2012-10-23 13:26) [7]> Хорошо, если только кириллица используется. А если латиница
> есть? Цифры присутствуют? Знаки препинания?
Ну если преподаватель сказал, что «всё очень просто», то не думаю, что он ожидает, что студент переберет 10-20 кодировок.
← →
brother © (2012-10-23 13:29) [8]вопрос автору: что вообще за игры в угадайку с преподом? зачем это?
← →
Ega23 © (2012-10-23 13:39) [9]
> Ну если преподаватель сказал, что «всё очень просто», то
> не думаю, что он ожидает, что студент переберет 10-20 кодировок.
>
Не в кодировках дело, они тут вообще не при чём.
Допустим, есть множество кодируемых символов
1 - "1"
2 - "2"
...
9 - "9"
10 - "А"
11 - "Б"
....
42 - "Я"
Есть исходный текст "МАМА МЫЛА РАМУ"
Есть ключ "ПАПЫ ПИЛИ ПИВО"
Функция шифрования F: код конечного символа = (код символа исходного текста + код символа ключа) mod 42
Т.е. всё зависит от количества символов в кодовой таблице и порядке их расположения.
Дальше. Автор говорит, что у него ключ - 4 группы по 4 символа. Может быть шифровать по очереди. Может, первые 4 символа шифруются первой группой, вторые - второй, и т.д. Может быть всё сообщение сначала шифруется первой группой, потом всё сообщение - второй и т.д.
Вариантов - масса.
← →
И. Павел © (2012-10-23 14:24) [10]> [9] Ega23 © (23.10.12 13:39)
Ключевая фраза в моем предположении:если преподаватель сказал, что «всё очень просто»
.
← →
Ega23 © (2012-10-23 14:32) [11]
> Ключевая фраза в моем предположении:
Эта ключевая фраза зависит от миллиона факторов, начиная от распухшего ЧСВ препода, и заканчивая темами, разбираемыми на семинарах.
Мне (почему-то) кажется, что данная тема - таки разбиралась.
← →
И. Павел © (2012-10-23 14:50) [12]> [11] Ega23 © (23.10.12 14:32)
Ну тогда со своей стороны могу предположить то, что преподжаватель мог дать студенту текст, шифротекст и открытый ключ, и речь идет не о симметричном методе, как предполагается в [1].
← →
Ega23 © (2012-10-23 15:34) [13]
> Ну тогда со своей стороны могу предположить то, что преподжаватель
> мог дать студенту текст, шифротекст и открытый ключ, и речь
> идет не о симметричном методе, как предполагается в [1].
Я вот тут что подумал. Если бы я был преподавателем и предмет был программированием, то я бы сделал вот что.
То, что я писал в [9]. При этом - в функции шифрования добавить соль, например
Функция шифрования F: код конечного символа = (код символа исходного текста + код символа ключа + соль) mod 42
И задачей бы сказал найти эту самую соль.
Т.е. исходные данные:
1. Таблица кодов литералов
2. Функция шифрования с неизвестной солью
3. Ключ шифрования.
4. Исходный текст
5. Шифрованный текст.
ИМХО, это нормальная домашняя задачка для семинара.
А вот данные, как у ТС - это уже на курсовую может потянуть.
← →
Инокентий (2012-10-23 21:19) [14]Оригинальный текст:
aaaaaaaaaaaaaaaa
ssssssssssssssss
dddddddddddddddd
ffffffffffffffff
Шифрованный:
тттттттттттттттт
аааааааааааааааа
чччччччччччччччч
хххххххххххххххx
Ключевое слово:
kkkk-kkkk-kkkk-kkkk
Код программы(только не смейтесь):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, XPMan, ExtCtrls;
type
TForm1 = class(TForm)
pgc1: TPageControl;
ts1: TTabSheet;
mmo2: TMemo;
mmo1: TMemo;
btn1: TButton;
edt1: TEdit;
ts2: TTabSheet;
mmo3: TMemo;
mmo4: TMemo;
edt2: TEdit;
btn2: TButton;
lbl1: TLabel;
lbl2: TLabel;
tmr1: TTimer;
lbl3: TLabel;
tmr2: TTimer;
lbl4: TLabel;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TrimWorkingSet;
procedure tmr1Timer(Sender: TObject);
procedure edt1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure tmr2Timer(Sender: TObject);
procedure edt2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x:Integer=0;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
mmo2.Text:="";
x:=0;
tmr1.Enabled:=True;
end;
procedure TForm1.btn2Click(Sender: TObject);
var
s,pass :string;
i,j,h,b:Integer;
begin
mmo4.Text:="";
x:=36;
tmr2.Enabled:=True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
form1.DoubleBuffered:=true;
TrimWorkingSet;
end;
procedure TForm1.TrimWorkingSet;
var MainHandle: THandle;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID);
SetProcessWorkingSetSize(MainHandle, DWORD(-1), DWORD(-1));
CloseHandle(MainHandle);
end;
end;
procedure TForm1.tmr1Timer(Sender: TObject);
var
s,pass :string;
i,j,h,b:Integer;
begin
X:=x+1;
s:=mmo1.Text;
i:=Length(s);
pass:=edt1.Text ;
j:=Length(pass);
h:=Round(i/j);
for b:=1 to h do
pass:=pass+pass;
pass:=Copy(pass,1,i);
for b:=1 to i do
begin
if ((Ord(s[b])+ord(pass[b])))>255 then
mmo2.text:=mmo2.text+" "+chr((Ord(s[b])+ord(pass[b]))-255+x)
else
mmo2.Text:=mmo2.text+" "+chr((Ord(s[b])+ord(pass[b]))+x);
lbl3.Caption:="X= "+inttostr(x);
end;
end;
procedure TForm1.edt1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=32)and (tmr1.Enabled=True) then
tmr1.Enabled:=False
else
tmr1.Enabled:=True;
end;
procedure TForm1.tmr2Timer(Sender: TObject);
var
s,pass :string;
i,j,h,b:Integer;
begin
X:=x;
s:=mmo3.Text;
i:=Length(s);
pass:=edt2.Text ;
j:=Length(pass);
h:=Round(i/j);
for b:=1 to h do
pass:=pass;
pass:=Copy(pass,1,i);
for b:=1 to i do
begin
if (Ord(s[b])-ord(pass[b]))<1 then
mmo4.text:=mmo4.text+chr((Ord(s[b])-ord(pass[b]))+255-x)
else
mmo4.Text:=mmo4.text+chr((Ord(s[b])-ord(pass[b])-x));
lbl1.Caption:=IntToStr((Ord(s[b])));
lbl4.Caption:="X= "+inttostr(x);
end;
end;
procedure TForm1.edt2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=32)and (tmr2.Enabled=True) then
tmr2.Enabled:=False
else
tmr2.Enabled:=True;
end;
end.
Что скажите?
← →
Инокентий (2012-10-23 21:27) [15]Я могу вам выдать любой зашифрованный текст по любому вашему ключевому слову, которое состоит из 16 символом если это поможет в поиске метода.
Я уже к преподавателю обращался несколько раз у меня есть несколько готовых(шифр+ключ=зашифровка), могу написать их или какие вы попросите, он сам сказал обращаться к нему за этим, чтобы нам проще было. и ещё преподаватель как то так сказал - почему все просят только текст, причём почти одинаковый, никто не спрашивал ни символы ни числа ни тот же хекс... Интересно зачем это он сказал, жаль дословности точной не помню, может запутать хочет или к чему бы ему это. Прикольный он )))
← →
Инокентий (2012-10-23 21:31) [16]код программы, который я указал ранее, я делал в самом начале когда у меня было только 2 варианта шифрованного текста, пытался найти методом подбора и сложения, если в одном примере вроде находишь подходящие X, то когда применяешь под другой текст и тоже ключевое слово, то подходящее Х не подходит!
← →
Rouse_ © (2012-10-23 21:57) [17]Чет сложный у тебя алго.
Оть смотри.
Оригинальный текст:
aaaaaaaaaaaaaaaa
ssssssssssssssss
dddddddddddddddd
ffffffffffffffff
Шифрованный:
тттттттттттттттт
аааааааааааааааа
чччччччччччччччч
хххххххххххххххx
Ключевое слово:
kkkk-kkkk-kkkk-kkkk
Делаем анализ:procedure TForm1.Button1Click(Sender: TObject);
function Foo(A, B: Char): Byte;
begin
Result := Byte(A) xor Byte(B);
end;
var
D1, D2, D3, D4: Byte;
begin
D1 := Foo("a", "т");
D2 := Foo("s", "а");
D3 := Foo("d", "ч");
D4 := Foo("f", "х");
ShowMessage(Format("%d, %d, %d, %d, char = %s", [D1, D2, D3, D4, Char(D1)]));
end;
Видим что результат каждого ксора 147. Значит как минимум алго ксора вычислен верно, теперь осталось поймать ключ.
Т.к. Char(D1) не совпадает с ключем k, то считаем что над ним производились преобразования например такого вида:Byte(KeyChar) xor 248
Соответственно код трансформа блока будет примерно таким:procedure TForm1.Button2Click(Sender: TObject);
function Transform(const Data, Key: AnsiString): AnsiString;
var
I, KeyCursor, KeyLength, RealKey: Integer;
begin
SetLength(Result, Length(Data));
KeyCursor := MaxInt;
KeyLength := Length(Key);
for I := 1 to Length(Data) do
begin
if (KeyCursor mod 5) = 0 then
Inc(KeyCursor);
if KeyCursor > KeyLength then
KeyCursor := 1;
RealKey := Byte(Key[KeyCursor]) xor 248;
Inc(KeyCursor);
Result[I] := AnsiChar(Byte(Data[I]) xor RealKey);
end;
end;
const
Key = "kkkk-kkkk-kkkk-kkkk";
var
RealData, Encrypted, Decrypted: AnsiString;
begin
RealData :=
"aaaaaaaaaaaaaaaa" +
"ssssssssssssssss" +
"dddddddddddddddd" +
"ffffffffffffffff";
Encrypted := Transform(RealData, Key);
Decrypted := Transform(Encrypted, Key);
ShowMessage(Encrypted);
ShowMessage(Decrypted);
end;
← →
Rouse_ © (2012-10-23 22:02) [18]ЗЫ: а вообще вас как-то по глупому криптоанализу учат...
Методы Полларда, линейного/дифференциального анализа проходили?
← →
Инокентий (2012-10-24 17:06) [19]это задание дано нам на пол года, пока учимся, мышление улучшается(Ну так должно быть) и в конце концов мы должны решить эту задачу, конец года через 2 месяца а мыслей по этому вопросу нет))) Методы Полларда, линейного/дифференциального анализа мы не проходили.
← →
Rouse_ © (2012-10-24 18:53) [20]
> а мыслей по этому вопросу нет)
Ну тогда бери мое решение и изучай...
← →
Ega23 © (2012-10-24 20:13) [21]
> это задание дано нам на пол года
За полгода можно и перебором сделать.
← →
Инокентий (2012-10-24 20:24) [22]Rouse_ Спасибо, буду изучать)))
Ega23 методом подбора я пытался код текста выше, пока только так пытался,код программы, который я указал ранее, я делал в самом начале когда у меня было только 2 варианта шифрованного текста, пытался найти методом подбора и сложения, если в одном примере вроде находишь подходящие X, то когда применяешь под другой текст и тоже ключевое слово, то подходящее Х не подходит!
← →
AV © (2012-10-25 13:02) [23]
> Я уже к преподавателю обращался несколько раз у меня есть
> несколько готовых(шифр+ключ=зашифровка), могу написать их
напиши
Как можно больше примеров
а также, если можно, зашифрованный текст для следующего
оригинала
ABCDEFGHIJKLMNOP
PONMLKJIHGFEDCBA
AAAAAAAAAAAAAAAA
ZZZZZZZZZZZZZZZZ
при ключах
ABCD-EFGH-IJKL-MNOP
PONM-LKJI-HGFE-DCBA
AAAA-AAAA-AAAA-AAAA
ZZZZ-ZZZZ-ZZZZ-ZZZZ
т.е. должно быть 4 зашифрованных текста
или хотя бы 2, ключами
ABCD-EFGH-IJKL-MNOP
AAAA-AAAA-AAAA-AAAA
← →
Инокентий (2012-10-25 13:56) [24]Больше нет никаких вариантов-предложений??
← →
Инокентий (2012-10-25 14:02) [25]> AV © (25.10.12 13:02) [23]
> напиши
> Как можно больше примеров
в течении часа напишу хорошо у однокурсника есть что то подобное, к преподавателю только завтра могу подойти его сегодня не будет с утра был и ушёл.
> AV< спасибо
← →
Инокентий (2012-10-25 14:11) [26]Кстати если поможет могу отправить отрывок из Война и Мир зашифрованных ключём ABCD-EFGH-IKLM-NOPQ
← →
AV © (2012-10-25 14:37) [27]
> Инокентий
Пока не за что. Просто стало интересно. Попробую тоже.
>> могу отправить отрывок из
ты не спрашивай - приводи тут сразу.
может еще кто попробовать захочет, ему тоже слать будешь что ли..
Фактически, есть только один пример. Как можно предполагать - непонятно.
Вдруг алгоритм там
Если (ТЕХT1), то ответить (TEXT2), иначе вообще не шифровать? :)
← →
AV © (2012-10-25 14:40) [28]
> из Война и Мир
ну, не очень большой, конечно, если :)
← →
Инокентий (2012-10-25 16:07) [29]
> > из Война и Мир
>
> ну, не очень большой, конечно, если :)
Отрывок большой в архиве отправлю вот ссылка - http://rusfolder.com/33293920
← →
AV © (2012-10-25 16:15) [30]
> Отрывок большой в архиве отправлю вот ссылка - http://rusfolder.
> com/33293920
Ключ какой?
← →
Инокентий (2012-10-25 16:22) [31]
> AV © (25.10.12 13:02) [23]
>
> > Я уже к преподавателю обращался несколько раз у меня есть
>
> > несколько готовых(шифр+ключ=зашифровка), могу написать
> их
>
> напиши
> Как можно больше примеров
>
>
> оригинала
> ABCDEFGHIJKLMNOP
> PONMLKJIHGFEDCBA
> AAAAAAAAAAAAAAAA
> ZZZZZZZZZZZZZZZZ
> при ключах
> ABCD-EFGH-IJKL-MNOP
> PONM-LKJI-HGFE-DCBA
Оригинальный текст:
ABCDEFGHIJKLMNOP
PONMLKJIHGFEDCBA
AAAAAAAAAAAAAAAA
ZZZZZZZZZZZZZZZZ
Шифрованный текст в блокноте:
!"#$%&"()*+,-./00/.-,+*)("&%$#"!!!!!!!!!!!!!!!!!::::::::::::::::
зашифрованный текст вид в Хексе:21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30
30 2f 2e 2d 2c 2b 2a 29 28 27 26 25 24 23 22 21
21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a
← →
Инокентий (2012-10-25 16:23) [32]Забыл ключевое слово : ABCD-EFGH-IJKL-MNOP
← →
Инокентий (2012-10-25 16:24) [33]Ключевое слово:
ABCD-EFGH-IKLM-NOPQ
этот ключ использовался на отрывке из Война и Мир
← →
Rouse_ © (2012-10-25 19:06) [34]Для ключа ABCD-EFGH-IJKL-MNOP ксоровое число 105,
Т.е. грубо чтобы распаковать войну и мир нужно выполнить след трансформ:function Transform(const Data: AnsiString): AnsiString;
var
I, RealKey: Integer;
begin
SetLength(Result, Length(Data));
for I := 1 to Length(Data) do
begin
RealKey := 105;
Result[I] := AnsiChar(Byte(Data[I]) xor RealKey);
end;
end;
осталось только понять как это число вычисляется из ключа.
← →
Rouse_ © (2012-10-25 19:32) [35]Кстати, а ты при помощи чего шифрование делаешь? :)
← →
Инокентий (2012-10-25 20:45) [36]
> Rouse_ © (25.10.12 19:32) [35]
> Кстати, а ты при помощи чего шифрование делаешь? :)
Я сам то не делаю нам преподаватель дал несколько вариантов и сказал что мы можем к нему обращаться с любым текстом и любым(16 символов) ключевым словом и он на даёт зашифрованный текст, у нас у однокурсников много разных вариантов и у меня уже достаточно много их!
← →
AV © (2012-10-25 20:46) [37]
> ксоровое число 105
это да, это просто
>> осталось только понять как это число вычисляется из ключа.
> ты при помощи чего шифрование делаешь?
хочешь в самом шифраторе посмотреть как? :)
← →
Sha © (2012-10-25 21:16) [38]> Rouse_ © (25.10.12 19:06) [34]
> осталось только понять как это число вычисляется из ключа
например, так :)
105=15*7=15*8-15=15*16/2-15=(0+1+2+..+15)-15=(Key[0]+Key[1]+..+Key[15])-High(Key),
← →
AV © (2012-10-25 21:22) [39]
> Оригинальный текст:
> ABCDEFGHIJKLMNOP
> PONMLKJIHGFEDCBA
> AAAAAAAAAAAAAAAA
> ZZZZZZZZZZZZZZZZ
>
> Шифрованный текст в блокноте:
> !"#$%&"()*+,-./00/.-,+*)("&%$#"!!!!!!!!!!!!!!!!!::::::::
> ::::::::
>
96
но ключ тот же
ABCD-EFGH-IJKL-MNOP
значит, зависит и от данных
← →
AV © (2012-10-25 21:43) [40]
> сказал что мы можем к нему обращаться с любым текстом и
> любым(16 символов) ключевым словом и он на даёт зашифрованный
> текст
Обратись
с текстом
A
Ключ
AAAA-AAAA-AAAA-AAAA
с текстом
B
Ключ
AAAA-AAAA-AAAA-AAAA
с текстом
AB
Ключ
AAAA-AAAA-AAAA-AAAA
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.05.19;
Скачать: [xml.tar.bz2];
Память: 0.57 MB
Время: 0.004 c