Так что имеем в итоге, имеется строка символов , при операции XOR каждый символ превращается в уникальный символ.... зацепка это ПРОБЕЛ .... нам лишь нужно определить где находится пробел и дело в шляпе!! lef|(ен(жълимукиб(хъы(зыщъф(мшылан(зжмыдицъ не нужно быть зорким соколом чтоб увидеть главного претендента - это символ '(' теперь имеем уравнение ' '^X='(' думаю теперь каждый отыщет число на которое производился XOR 8)))
ПРЕДСКАЗАНИЕ ПРОБЕЛА и расшифровка для фраз заксоренных одним и тем же числом!!! Code: #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; }