Просмотр полной версии : Зашифровал и забыл
Delimiter
14.11.2008, 20:19
Зашифровал какую то фразу простейшим ксором на одно и то же число.... пробелы между словами удалил.....
помню там было одно слово 'просто' ....
а не фразу и не число не помню :cool:
:p фраза
Mahkqopousnqopsopwrko
кто могет???
[:|||||:]
14.11.2008, 20:19
крута
[:|||||:], будеш борщик, с капусткой, но не красный?
Delimiter
15.11.2008, 19:51
+-сы с мину!
Пауки в ачате. Где дихлофос мой?
Delimiter
15.11.2008, 20:25
+++++
Delimiter
15.11.2008, 20:43
так 8))))))))) попроще но приз тот же +5
зашифровал снова фразу XOR НА ЧИСЛО но не удалял пробелы
никакиф слоф не знаю
фраза:
lef|(ен(жълимукиб(хъы(зыщъф(м ылан(зжмыдицъ
ty(;]kbverb,([]s(pso]a(viskfy(p;vslbw]
2Delimiter, ок, не буду :)
Delimiter
20.11.2008, 17:10
первые +5 ушли dmnt
кто следующий?
procedure
21.11.2008, 18:00
Решал, решал, какая то хня получилось:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string key, text, longkey, result;
char[] text2, longkey2;
char toto;
longkey = result = "";
Console.WriteLine("Enter the key: ");
key = Console.ReadLine();
Console.WriteLine("Enter the text: ");
text = Console.ReadLine();
for (int i = 0; i < (text.Length / key.Length); i++)
longkey += key;
longkey2 = longkey.ToCharArray();
text2 = text.ToCharArray();
for (int i = 0; i < longkey2.Length; i++)
Console.Write(longkey2[i]);
Console.WriteLine();
for (int i = 0; i < text2.Length; i++)
Console.Write(text2[i]);
for (int i = 1; i < (text.Length - 1); i++)
{
toto = Convert.ToChar((int)text2[i] ^ (int)longkey2[i]);
result += Convert.ToString(toto);
}
Console.WriteLine(result);
}
}
}
Delimiter
21.11.2008, 18:52
давай по первой 8)) .... ее поскольку решили.... то ее и посмотрим
procedure
21.11.2008, 18:57
Смотри, на выводе у меня получается какая то хня. C# с KOI8-R не могу заставить работать....
Enter the key:
10
Enter the text:
Майкрософтпростосцуко
10101010101010101010
Майкрософтпростосцуко????Ў? ??Ў????Ў????
Для продолжения нажмите любую клавишу . . .
т.е. вот результат кодирования:
????Ў?Ў??Ў????Ў????
Сейчас немного переписал:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int f = 0 ;
string key, text, longkey, result;
char[] text2, longkey2;
char toto;
longkey = result = "";
Console.WriteLine("Enter the key: ");
key = Console.ReadLine();
Console.WriteLine("Enter the text: ");
text = Console.ReadLine();
key = "Mahkqopousnqopsopwrko";
for (int i = 0; i < (text.Length / key.Length); i++)
longkey += key;
longkey2 = longkey.ToCharArray();
text2 = text.ToCharArray();
for (int i = 1; i < (text.Length - 1); i++)
{
f += (int)text2[i] ^ (int)longkey2[i];
toto = Convert.ToChar((int)text2[i] ^ (int)longkey2[i]);
result += Convert.ToString(toto);
}
Console.WriteLine(result);
Console.WriteLine(f);
}
}
}
Получилось:
Enter the key:
ыва
Enter the text:
Майкрософтпростосцуко
ёёёбёбёббёбёббёбббё
20675
Для продолжения нажмите любую клавишу . . .
20675 Об этом числе шла речь в первом примере?
Delimiter
21.11.2008, 19:11
нет кодировать числом нужно от 1-255 .... иначе смысл теряется для посимвольного!
8)))
ты усложнил задачу .... задача поддается полному автоматическому перебору!
unsigned char str[1000];
unsigned char obrazets[50];
unsigned char rezult[1000];
int i,j,l,ex;
strcpy((char *)str,"Mahkqopousnqopsopwrko");
strcpy((char *)obrazets,"просто");
for(i=0;*(str+i)!=0;i++)
for(j=1;j<256;j++)
{
for(l=0,ex=0;*(obrazets+l)!=0 && ex==0;l++)
if(((char )*(str+i+l)^j)!=*(obrazets+l))
ex=1;
if(ex==0)
{
for(l=0;l<strlen(str);l++)
*(rezult+l)=*(str+l)^j;
*(rezult+l)=0;
printf("%s",rez);
}
}
вторую можно тоже автоматизировать .... зная что пробелы разбивают фразу на слова.... которые даже после XOR остаются различимыми!
Соответственно с ПРЕДПОЛОЖЕНИЕМ 8))) либо с аппаратом предположения... 8)))
Delimiter
21.11.2008, 20:00
Вторые плюсеги умчались.....
...кстати счас обалдел.... оказываются дрова к логитех вебкамере свалили мой VC 8)))))
линковка просто впадала в ступор!!! ....
LOGITECH MUST DIE!!!!!!!!!!!!!!!!!!!
Delimiter
21.11.2008, 21:56
и так 3-я задача будет 2раза по +5 в репу.... решаем 2-ю !!!
+5 за 2-ю на дороге не валяются!!! :D Или пока валяются.... хз!
так чуть ниже РЫБУ ЗАВОРАЧИВАЛИ..... господа сразу пропускаем ....
ClienTtm
21.11.2008, 22:01
Вы совсем еб*нулись тут? Где дихлофоз епт! Чё за чушь вы несете?
Delimiter
24.11.2008, 17:21
Так что имеем в итоге, имеется строка символов , при операции XOR каждый символ превращается в уникальный символ.... зацепка это ПРОБЕЛ .... нам лишь нужно определить где находится пробел и дело в шляпе!!
lef|(ен(жълимукиб(хъы(зыщъф(м ылан(зжмыдицъ
не нужно быть зорким соколом чтоб увидеть главного претендента - это символ '('
теперь имеем уравнение
' '^X='('
думаю теперь каждый отыщет число на которое производился XOR
8)))
Delimiter
24.11.2008, 17:58
ПРЕДСКАЗАНИЕ ПРОБЕЛА и расшифровка для фраз заксоренных одним и тем же числом!!!
#define MAX_LEN 15
int havegotfield(char *sourcestr,char *deststr,int nelement,char *delimiterStr,int mode)
{
int i;
int mcnt;
char tstr[300];
int flrez=0;
int pstr=0;
int prepfl;
*(deststr)=0;
if(strchr(delimiterStr,*(sourcestr))!=0)
prepfl=0;
else
prepfl=1;
for(i=0,mcnt=1,flrez=0,prepfl=0;*(sourcestr+i)!=0; i++)
{
if(strchr(delimiterStr,*(sourcestr+i))!=NULL)
{
if(mode==0)
{
if(prepfl!=0)
{
if(mcnt<=nelement)
mcnt++;
else
break;
}
prepfl=0;
}
else
{
if(mcnt<=nelement)
mcnt++;
else
{
flrez=1;
break;
}
}
}
else
{
if(mcnt==nelement)
{
*(deststr+pstr)=*(sourcestr+i);
pstr++;
flrez=1;
}
prepfl=1;
}
}
*(deststr+pstr)=0;
return flrez;
}
^--- вспомогательная функция выдирает лексемы(слова) по определенным делимитерам(разделителям)
.......................
int i,j,fl_ex,rez_n;
char str[1000];
char dstr[1000];
char rez[1000];
char tstr[5];
*(tstr+1)=0;
strcpy(str,"lef|(ен(жълимукиб(хъы(зыщъф(м ылан(зжмыдицъ");
for(i=1;i<256;i++) \\ проверяем каждый символ как претендента
{
*tstr=i;
for(j=1,fl_ex=0;havegotfield(str,dstr,j,tstr,1)!=0 && fl_ex==0;j++) \\ идем по строке разбиваем на лексемы
if(!(strlen(dstr)>0 && strlen(dstr)<MAX_LEN)) \\ проверка разбития
fl_ex=1;
if(fl_ex==0 && j>1) \\ условие претендента
{
rez_n=' '^i;
for(j=0;*(str+j)!=0;j++) \\ превращаем строку в соответствии с наденным числом
*(rez+j)=*(str+j)^rez_n;
*(rez+j)=0;
if(strlen(rez)==strlen(str))
{
printf("\r\n--------------------------------------------\r\n");
printf("%s",rez);
}
}
}
....................
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE h = CreateFile(L"c:\\1.txt",GENERIC_ALL,0,0,OPEN_EXISTING,0,0); //файл со строкой
char buff[1000];
DWORD read=0;
ReadFile(h,&buff,1000,&read,0);
for(int i=0;i<256;i++)
{
char b[1000];
memcpy(&b,&buff,read);
for(int j=0;j<read;j++)
b[j] = b[j] ^ i;
if(b[4]==' ')
{
HANDLE o = CreateFile(L"c:\\2.txt",GENERIC_ALL,0,0,CREATE_ALWAYS,0,0);
WriteFile(o,&b,read,&read,0);
}
}
return 0;
}
Delimiter
24.11.2008, 19:57
ПЛЮСЭГИ УЛЕТЕЛИ dnd!!!
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot