Jump to content
VirginMary

Hacking conquiztador.ro for fun & profit

Recommended Posts

Hacking conquiztador.ro for fun and profit

Clientul conquiztador este implementat in Flash si poate fi decompilat cu tooluri precum Sothink.

Protocolul de comunicare intre client si server este compus din mesaje XML plain text.

Folosind o biblioteca de captura a pachetelor diponibila in majoritatea distributiilor de Linux

(libpcap) se poate face inginerie inversa si se pot decoda mesajele (intrebari, solutii corecte, convorbiri pe chat, etc) in timp real.

Ok, sa presupunem ca ne-am logat si am demarat jocul. Clientul trimite o serie de mesaje:


  • ------------------------------------------------------------------------------
    WEBLOGIN - Parametrii sesiunii setati in urma logarii prin HTTP
    ------------------------------------------------------------------------------
    Cheie: SID
    Semnificatie: Identificator de sesiune (GUID pe 128 de biti)
    Exemplu valoare: 8be901bd6984d46fd6285495d56e0310
    ------------------------------------------------------------------------------
    Cheie: USERID
    Semnificatie: Identificatorul utilizatorului (intreg)
    Exemplu valoare: 351749
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    GETDATA - Request pentru datele personale si lista de prieteni
    ------------------------------------------------------------------------------
    Cheie: QUERY
    Semnificatie: Informatii cerute
    Exemplu valoare: MYDATA,FRIENDLIST
    ------------------------------------------------------------------------------

Serverul raspunde cu:


  • ------------------------------------------------------------------------------
    FRIENDLIST - Lista de prieteni
    ------------------------------------------------------------------------------
    Cheie: USERS
    Semnificatie: Lista de prieteni
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    MYDATA - Datele personale
    ------------------------------------------------------------------------------
    Cheie: NAME
    Semnificatie: Nume utilizator
    Exemplu valoare: MadCow
    ------------------------------------------------------------------------------
    Cheie: ID
    Semnificatie: Identificator utilizator
    Exemplu valoare: 351749
    ------------------------------------------------------------------------------
    Cheie: JEP
    Semnificatie: PAJ
    ------------------------------------------------------------------------------
    Cheie: VEP
    Semnificatie: PRC
    ------------------------------------------------------------------------------
    Cheie: AOJ
    Semnificatie: PPR
    ------------------------------------------------------------------------------
    Cheie: GWR
    Semnificatie: EFJ
    ------------------------------------------------------------------------------
    Cheie: GAMECOUNT
    Semnificatie: Numarul de jocuri
    ------------------------------------------------------------------------------
    Cheie: DAYRANK
    Semnificatie: Numarul stelute
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    NOCHAT - Motivul pentru care utilizatorul nu poate vorbi pe chatul general
    ------------------------------------------------------------------------------
    Cheie: REASON
    Semnificatie: Motivul...
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    GAMEROOM - Informatii camera de joc
    ------------------------------------------------------------------------------
    Cheie: ID
    Semnificatie: Identificatorul camerei de joc
    Exemplu valoare: 1
    ------------------------------------------------------------------------------
    Cheie: TITLE
    Semnificatie: Numele camerei
    Exemplu valoare: Blitzkrieg
    ------------------------------------------------------------------------------
    Cheie: MAP
    Semnificatie: Harta pe care se joaca
    Exemplu valoare: RO
    ------------------------------------------------------------------------------
    Cheie: PLAYERS
    Semnificatie: Utilizatori in asteptare
    Exemplu valoare: 10
    ------------------------------------------------------------------------------
    Cheie: INGAME
    Semnificatie: Utilizatori implicati in jocuri
    Exemplu valoare: 627
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    SEPROOM - Informatii separeu
    ------------------------------------------------------------------------------
    Cheie: ID
    Semnificatie: Identificatorul separeului
    Exemplu valoare: 6799780
    ------------------------------------------------------------------------------
    Cheie: MAP
    Semnificatie: Harta
    Exemplu valoare: RO
    ------------------------------------------------------------------------------
    Cheie: U1
    Semnificatie: Creatorul separeului
    Exemplu valoare: Vlad Vlad
    ------------------------------------------------------------------------------
    Cheie: DEPU1
    Semnificatie: Primul jucator
    Exemplu valoare: Vlad Vlad
    ------------------------------------------------------------------------------
    Cheie: DEPU2
    Semnificatie: Al doilea jucator
    Exemplu valoare: Ion Ion
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    USERLIST - Lista utilizatorilor logati
    ------------------------------------------------------------------------------
    Cheie: ULCH
    Semnificatie: Utilizatori logati
    Exemplu valoare: +TIBERIU 8|-r3alw4r|-patrunzatoru
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    CHATMSG - Mesaj pe chatul general
    ------------------------------------------------------------------------------
    Cheie: MID
    Semnificatie: Identificator mesaj
    Exemplu valoare: 924881
    ------------------------------------------------------------------------------
    Cheie: SENDER
    Semnificatie: Utilizatorul care a trimis mesajul
    Exemplu valoare: BobbyGuard
    ------------------------------------------------------------------------------
    Cheie: MSG
    Semnificatie: Mesajul propriu-zis
    Exemplu valoare: Comportati-va rezonabil, nu depasiti limitele bunului simt
    ------------------------------------------------------------------------------


  • In timpul unui joc mesajele pot fi urmatoarele:
    ------------------------------------------------------------------------------
    STATE - Serverul anunta clientul ca starea jocului s-a modificat.
    ------------------------------------------------------------------------------
    Cheie: SCREEN
    Semnificatie: Harta
    Exemplu valoare: MAP_RO
    ------------------------------------------------------------------------------
    Cheie: ROUND
    Semnificatie: A cata runda din joc este cea curenta
    Exemplu valoare: 6
    ------------------------------------------------------------------------------
    Cheie: NEXTPLAYER
    Semnificatie: Urmatorul jucator care trebuie sa aleaga un teritoriu
    Exemplu valoare: 2
    ------------------------------------------------------------------------------
    Cheie: PHASE
    Semnificatie: Etapa jocului cucerire/razboi
    Exemplu valoare: 2
    ------------------------------------------------------------------------------
    Cheie: HC
    Semnificatie: Ordinea jucatorilor
    Exemplu valoare: 123
    ------------------------------------------------------------------------------
    Cheie: POINT1
    Semnificatie: Punctele primului jucator
    Exemplu valoare: 2500
    ------------------------------------------------------------------------------
    Cheie: POINT2
    ------------------------------------------------------------------------------
    Cheie: POINT3
    ------------------------------------------------------------------------------
    Cheie: BASES
    Semnificatie: Pozitia turnurilor
    Exemplu valoare: 0F0206
    ------------------------------------------------------------------------------
    Cheie: SELECTIONS
    Semnificatie: Teritoriile selectate de jucatori
    Exemplu valoare: 000400
    ------------------------------------------------------------------------------
    Cheie: AREAS
    Semnificatie: Distributia teritoriilor la jucatori
    Exemplu valoare: 331243313113433341333141334111
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    STATE - Serverul anunta clientul ca se asteapta dupa un alt jucator (imaginea cu clepsidra)
    ------------------------------------------------------------------------------
    Cheie: SCREEN
    Semnificatie: Starea noua stare este "in asteptare"
    Exemplu valoare: WAIT
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    MESSAGE - Mesaj privat trimis
    ------------------------------------------------------------------------------
    Cheie: TO
    Semnificatie: Cui ii este adresat mesajul (0 pentru toata lumea)
    Exemplu valoare: 0
    ------------------------------------------------------------------------------
    Cheie: TEXT
    Semnificatie: Mesajul
    Exemplu valoare: conquizator rulz
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    MESSAGE - Mesaj privat primit
    ------------------------------------------------------------------------------
    Cheie: FROM
    Semnificatie: De la cine vine mesajul
    Exemplu valoare: 3
    ------------------------------------------------------------------------------
    Cheie: MSG
    Semnificatie: Mesajul
    Exemplu valoare: yep
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    QUESTION - Intrebare grila
    ------------------------------------------------------------------------------
    Cheie: RATING
    Semnificatie: Punctajul mediu cu care a fost evaluata intrebarea de catre jucatori
    Exemplu valoare: 3.0
    ------------------------------------------------------------------------------
    Cheie: CREATOR
    Semnificatie: Utilizatorul care a trimis intrebarea
    Exemplu valoare: Infernal
    ------------------------------------------------------------------------------
    Cheie: KEY
    Semnificatie: Cheia cu care se codeaza intrebarea si optiunile.
    Este un numar pe 128 de biti generat aleator de catre server pentru fiecare intrebare.
    Exemplu valoare: 4DC68E32C311ACF379EBE2D72E13C91E
    ------------------------------------------------------------------------------
    Cheie: QUESTION
    Semnificatie: Intrebarea hashuita
    Exemplu valoare:
    4E978B2EBCC12F5906648EBAA76EA7DF
    1FB94D95BF6E3AF48D9ACC2A841F5655
    64928263C4840D4E11308CBDE260AB8A
    15F0519DF17B68F1DF90C422D0527F5D
    289C922D42625F5D0B648EA642AEA3C0
    ------------------------------------------------------------------------------
    Cheie: OP1
    Semnificatie: Prima varianta de raspuns
    Exemplu valoare: 4B9F9334E98C1E52
    ------------------------------------------------------------------------------
    Cheie: OP2
    ------------------------------------------------------------------------------
    Cheie: OP3
    ------------------------------------------------------------------------------
    Cheie: OP4
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    TIPQUESTION - Intrebare cu raspuns rapid
    ------------------------------------------------------------------------------
    Cheie: RATING
    ------------------------------------------------------------------------------
    Cheie: CREATOR
    ------------------------------------------------------------------------------
    Cheie: KEY
    ------------------------------------------------------------------------------
    Cheie: QUESTION
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    ANSWER - Clientul trimite catre server raspunsul la o intrebare grila
    ------------------------------------------------------------------------------
    Cheie: ANSWER
    Semnificatie: A cata varianta a fost selectata
    Exemplu valoare: 3
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    ANSWERRESULT - Variantele jucatorilor si raspunsul corect pentru o intrebare grila
    ------------------------------------------------------------------------------
    Cheie: PLAYER1
    Semnificatie: Raspunsul primului jucator
    Exemplu valoare: 3
    ------------------------------------------------------------------------------
    Cheie: PLAYER2
    ------------------------------------------------------------------------------
    Cheie: GOOD
    Semnificatie: Raspunsul corect
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    TIP - Clientul trimite catre server raspunsul jucatorului la o intrebare rapida
    ------------------------------------------------------------------------------
    Cheie: TIP
    Semnificatie: Raspunsul
    Exemplu valoare: 130
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    TIP - Serverul anunta raspunsul altui jucator
    ------------------------------------------------------------------------------
    Cheie: PLAYER
    Semnificatie: Numarul jucatorului
    Exemplu valoare: 3
    ------------------------------------------------------------------------------
    Cheie: VALUE
    Semnificatie: Raspunsul
    Exemplu valoare: 1962
    ------------------------------------------------------------------------------
    Cheie: TIME
    Semnificatie: Timpul de reactie
    Exemplu valoare: 05.22
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    TIPRESULT - Variantele jucatorilor si raspunsul corect pentru o intrebare rapida</span>
    ------------------------------------------------------------------------------
    Cheie: WINNER
    Semnificatie: Numarul castigatorului
    Exemplu valoare: 3
    ------------------------------------------------------------------------------
    Cheie: GOOD
    Semnificatie: Raspunsul corect
    Exemplu valoare: 3
    ------------------------------------------------------------------------------
    Cheie: SECOND
    Semnificatie: Numarul celui de pe locul doi
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    WINNERSELECT - Serverul anunta clientul ce teritoriu a fost selectat
    ------------------------------------------------------------------------------
    Cheie: PLAYER
    Semnificatie: Numarul castigatorului
    ------------------------------------------------------------------------------
    Cheie: AREA
    Semnificatie: Teritoriul
    Exemplu valoare: 2
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    DISCONNECTED - Un jucator se deconecteaza
    ------------------------------------------------------------------------------
    Cheie: PLAYER
    Semnificatie: Numarul castigatorului
    ------------------------------------------------------------------------------
    Cheie: NAME
    Semnificatie: Numele jucatorului
    Exemplu valoare: brick_in_the_wall
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    SUBSTITUTE - Jucatorul este inlocuit cu robotul
    ------------------------------------------------------------------------------
    Cheie: PLAYER
    Semnificatie: Numarul castigatorului
    ------------------------------------------------------------------------------
    Cheie: NAME
    Semnificatie: Numele jucatorului
    Exemplu valoare: brick_in_the_wall (robot)
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    CMD - Informatii la terminarea jocului
    ------------------------------------------------------------------------------
    Cheie: CMD
    Exemplu valoare: END_GAME
    ------------------------------------------------------------------------------
    Cheie: PLACINGS
    Semnificatie: Ordinea jucatorilor la final
    Exemplu valoare: 312
    ------------------------------------------------------------------------------
    Cheie: JEPCHANGE
    Semnificatie: Schimbare PAJ
    Exemplu valoare: -17
    ------------------------------------------------------------------------------
    Cheie: NEWJEP
    Semnificatie: Noua valoare PAJ
    Exemplu valoare: 4966
    ------------------------------------------------------------------------------
    Cheie: GAMECOUNT
    Semnificatie: Numarul de jocuri
    ------------------------------------------------------------------------------
    Cheie: MONEY
    Semnificatie: Galbenii
    ------------------------------------------------------------------------------
    Cheie: MONEYCHANGE
    Semnificatie: Galbeni facuti in jocul curent
    ------------------------------------------------------------------------------
    Cheie: SELVEP
    Semnificatie: PRC intrebari grila
    ------------------------------------------------------------------------------
    Cheie: SELVEPCH
    Semnificatie: Schimbare PRC intrebari grila
    ------------------------------------------------------------------------------
    Cheie: TIPVEP
    Semnificatie: PRC intrebari rapide
    ------------------------------------------------------------------------------
    Cheie: TIPVEPCH
    Semnificatie: Schimbare PRC intrebari rapide
    ------------------------------------------------------------------------------
    Cheie: VEP
    Semnificatie: PRC
    ------------------------------------------------------------------------------
    Cheie: VEPCH
    Semnificatie: Schimbare PRC
    ------------------------------------------------------------------------------
    Cheie: GWR
    Semnificatie: EFJ
    ------------------------------------------------------------------------------
    Cheie: AOJ
    Semnificatie: PPR
    ------------------------------------------------------------------------------
    Cheie: AOJCH
    Semnificatie: Schimbare PPR
    ------------------------------------------------------------------------------
    Cheie: ANSCNT
    Semnificatie: Numarul de intrebari grila
    ------------------------------------------------------------------------------
    Cheie: TIPCNT
    Semnificatie: Numarul de intrebari rapide
    ------------------------------------------------------------------------------
    Cheie: GOODANSCNT
    Semnificatie: Numarul de intrebari grila la care am raspuns corect
    ------------------------------------------------------------------------------
    Cheie: TIPWINCNT
    Semnificatie: Numarul de intrebari rapide cu raspuns corect.
    ------------------------------------------------------------------------------


  • ------------------------------------------------------------------------------
    CLOSEGAME - Clientul notifica serverul de faptul ca am iesit din joc
    ------------------------------------------------------------------------------

Intrebarile sunt incapsulate intr-un mesaj QUESTION si sunt hashuite cu o cheie variabila generata de server.

Atat intrebarile cat si optiunile de raspuns sunt codate UTF8 deci caracterele uzuale au un octet iar diacriticele doi octeti.

Ce se poate face relativ usor este sa se decodeze intrebarile si sa se adauge automat la o baza de date in timpul jocului.

Un bot care sa joace neasistat este mai greu de realizat.

Algoritmul cu care se face decodarea este prezentat in continuare, implementat in cod C.



#define ROT(k) ((((k) >> 7) & 33554431) | (((k) & 127) << 25))</div>

int str_to_hex(char *s, int len)
{
int i, ret = 0;

for (i = 0; i < len; i++) {
ret = ret * 16 + ((s[i] >= '0' && s[i] <= '9') ? (s[i] - '0') : (s[i] - 'A' + 10));
}

return ret;
}

int dcd_key(char *s)
{
int aux;

if (*s == 0) return 0;

aux = str_to_hex(s, 2);
aux = ((aux & 28) >> 2) * 2 + 2;

return str_to_hex(&s[aux], 8) ^ 2875741179;
}

void dcd_text(char *buf, char *s, int k)
{
int i, len = strlen(s);
unsigned long aux;

if (k == 0) {
strcpy(buf, s);
return;
}

for (i = 0; i < len / 2; i++) {
aux = (str_to_hex(&s[i * 2], 2) ^ k) & 255;

if (aux <= 31) {
*(buf++) = '~';
} else if (aux >= 128) {
int uc = aux & 0x3F;
k = ROT(k); i++;
aux = (str_to_hex(&s[i * 2], 2) ^ k) & 255;
uc = (uc << 6) + (aux & 0x3F);

switch (uc) {
case 0xe2: *(buf++) = 'a'; break; // ^a
case 0xc2: *(buf++) = 'A'; break; // ^A
case 0xee: *(buf++) = 'i'; break;
case 0xce: *(buf++) = 'I'; break;
case 0x0103: *(buf++) = 'a'; break;
case 0x0102: *(buf++) = 'A'; break;
case 0x0163: *(buf++) = 't'; break;
case 0x0162: *(buf++) = 'T'; break;
case 0x015F: *(buf++) = 's'; break;
case 0x015E: *(buf++) = 'S'; break;
case 0x0218: *(buf++) = 's'; break;
case 0x0219: *(buf++) = 'S'; break;
case 0x021B: *(buf++) = 't'; break;
case 0x021A: *(buf++) = 'T'; break;
default: *(buf++) = '~'; break;
}
} else if (aux == 127) {
*(buf++) = '~';
} else {
*(buf++) = (char)aux;
}

k = ROT(k);
}

*buf = 0;
}

int main() {
char *k = "592DC16F1B2D717B0B10B6491C0C8A4F"; // cheia aleatoare generata de server
char *q = // mesaj hashuit
"0FE9F5B9FD2A1393A4BB79736BCAF3C516D2527B4EC8F78633A7341455487C81"
"23F2FFE6FD1BB541A2F2777F6ADFF3D40DD55E3A596917CF63A2244E560760D7";
char *op1 = "7CA6E0EAB31CA4"; // prima optiune
char *op2 = "78A6E0EAB31CA454"; // a doua optiune
char *op3= "7EA6E0EAB31CA454"; // a treia optiune
char *op4 = "7EB6ADE7B849A354B3EE637E63"; // a patra optiune

unsigned long key;
char buf[1024];

key = dcd_key(k);
dcd_text(buf, q, key);
printf("Intrebare %s\n", buf); // Box: Cat timp dureaza pauza dintre reprizele unui meci de box?
dcd_text(buf, op1, key);
printf("Prima optiune %s\n", buf); // 1 minut
dcd_text(buf, op2, key);
printf("A doua optiune %s\n", buf); // 5 minute
dcd_text(buf, op3, key);
printf("A treia optiune %s\n", buf); // 3 minute
dcd_text(buf, op4, key);
printf("A patra optiune %s\n", buf); // 30 de secunde

return 0;
}

O versiune in format HTML a acestui tutorial se gaseste la virginmarythefifth.we.bs

Link to comment
Share on other sites

felicitari in primul rand pentru munca.

Un bot care sa joace neasistat este mai greu de realizat.

Cred ca putina munca nu strica. Cateva randomuri puse bine pe la unele raspunsuri si aia e.

la teritorii, capitala si apoi alea cu punctaj mai mare,

nici de raspunsuri ciudata la intrebarile tip n-ai de ce sa-ti pese ca poti face o medie intre cele ale celor 2.

tot pentru intrebarile tip, trebuie sa ai in vedere variatia cu 1%+1 fata de raspunsul bun, la fel, cu random.

Nu de alta dar poate n-ai chef sa joci si vrei sa castigi. Si daca-l faci, tine-l pentru tine ;)

Am mai facut scripturi d'astea pentru trivia pe mirc :) super distractie ca era un server frumos cu tot felul de calcule gen caractere pe secunda si in versiunea initiala am facut ceva de genul 50 chrs/sec :| si ban

Link to comment
Share on other sites

am incercat cu cygwin sa compilez acest cod si imi da niste erori :

Axu&Yon@axuyon /bin
$ gcc c.c -o conqz.exe
c.c: In function `str_to_hex':
c.c:7: error: `lt' undeclared (first use in this function)
c.c:7: error: (Each undeclared identifier is reported only once
c.c:7: error: for each function it appears in.)
c.c:7: error: parse error before ';' token
c.c: In function `dcd_key':
c.c:23: warning: this decimal constant is unsigned only in ISO C90
c.c: In function `dcd_text':
c.c:43: error: parse error before '/' token
c.c:70: error: parse error before '/' token
c.c:102:3: warning: no newline at end of file

Axu&Yon@axuyon /bin
$

imi explica cineva care e problema ?

mersi.

Link to comment
Share on other sites

am incercat cu cygwin sa compilez acest cod si imi da niste erori :

Axu&Yon@axuyon /bin
$ gcc c.c -o conqz.exe
c.c: In function `str_to_hex':
c.c:7: error: `lt' undeclared (first use in this function)
c.c:7: error: (Each undeclared identifier is reported only once
c.c:7: error: for each function it appears in.)
c.c:7: error: parse error before ';' token
c.c: In function `dcd_key':
c.c:23: warning: this decimal constant is unsigned only in ISO C90
c.c: In function `dcd_text':
c.c:43: error: parse error before '/' token
c.c:70: error: parse error before '/' token
c.c:102:3: warning: no newline at end of file

Axu&Yon@axuyon /bin
$

imi explica cineva care e problema ?

mersi.

1. nu stii programare.

2. treci si invata programare

3. incearca sa gandesti singur inainte de a pune intrebari

4. problemele de compilare erau cauzate de la filtrarile de caractere impotriva XSS si de la librariile lipsa (nu au fost incluse)

5. uite aici:

http://pastebin.ca/874648

http://www.wikiupload.com/download_page.php?id=31845

#include <stdio.h>
#include <math.h>
#include <string.h>

#define ROT(k) ((((k) >> 7) & 33554431) | (((k) & 127) << 25))

int str_to_hex(char *s, int len)
{
int i, ret = 0;

for (i = 0; i < len; i++) {
ret = ret * 16 + ((s[i] >= '0' && s[i] <= '9') ? (s[i] - '0') : (s[i] - 'A' + 10));
}

return ret;
}

int dcd_key(char *s)
{
int aux;

if (*s == 0) return 0;

aux = str_to_hex(s, 2);
aux = ((aux & 28) >> 2) * 2 + 2;

return str_to_hex(&s[aux], 8) ^ 2875741179;
}

void dcd_text(char *buf, char *s, int k)
{
int i, len = strlen(s);
unsigned long aux;

if (k == 0) {
strcpy(buf, s);
return;
}

for (i = 0; i < len / 2; i++) {
aux = (str_to_hex(&s[i * 2], 2) ^ k) & 255;

if (aux <= 31) {
*(buf++) = '~';
} else if (aux >= 128) {
int uc = aux & 0x3F;
k = ROT(k);
i++;
aux = (str_to_hex(&s[i * 2], 2) ^ k) & 255;
uc = (uc << 6) + (aux & 0x3F);

switch (uc) {
case 0xe2: *(buf++) = 'a'; break; // ^a
case 0xc2: *(buf++) = 'A'; break; // ^A
case 0xee: *(buf++) = 'i'; break;
case 0xce: *(buf++) = 'I'; break;
case 0x0103: *(buf++) = 'a'; break;
case 0x0102: *(buf++) = 'A'; break;
case 0x0163: *(buf++) = 't'; break;
case 0x0162: *(buf++) = 'T'; break;
case 0x015F: *(buf++) = 's'; break;
case 0x015E: *(buf++) = 'S'; break;
case 0x0218: *(buf++) = 's'; break;
case 0x0219: *(buf++) = 'S'; break;
case 0x021B: *(buf++) = 't'; break;
case 0x021A: *(buf++) = 'T'; break;
default: *(buf++) = '~'; break;
}
} else if (aux == 127) {
*(buf++) = '~';
} else {
*(buf++) = (char)aux;
}

k = ROT(k);
}

*buf = 0;
}

int main() {
char *k = "592DC16F1B2D717B0B10B6491C0C8A4F"; // cheia aleatoare generata de server
char *q = // mesaj hashuit
"0FE9F5B9FD2A1393A4BB79736BCAF3C516D2527B4EC8F78633A7341455487C81"
"23F2FFE6FD1BB541A2F2777F6ADFF3D40DD55E3A596917CF63A2244E560760D7";
char *op1 = "7CA6E0EAB31CA4"; // prima optiune
char *op2 = "78A6E0EAB31CA454"; // a doua optiune
char *op3= "7EA6E0EAB31CA454"; // a treia optiune
char *op4 = "7EB6ADE7B849A354B3EE637E63"; // a patra optiune

unsigned long key;
char buf[1024];

key = dcd_key(k);
dcd_text(buf, q, key);
printf("Intrebare %s\n", buf); // Box: Cat timp dureaza pauza dintre reprizele unui meci de box?
dcd_text(buf, op1, key);
printf("Prima optiune %s\n", buf); // 1 minut
dcd_text(buf, op2, key);
printf("A doua optiune %s\n", buf); // 5 minute
dcd_text(buf, op3, key);
printf("A treia optiune %s\n", buf); // 3 minute
dcd_text(buf, op4, key);
printf("A patra optiune %s\n", buf); // 30 de secunde

return 0;
}

Link to comment
Share on other sites

Ma bucur ca va place tutorialul. Cred ca pornind de aici este destul de usor pentru

cine stie programare sa faca o aplicatie asemanatoare cu cea din fimuletul de pe net.

Va recomand sa cititi inainte tutorialul despre captura pachetelor cu libpcap pe care

il gasiti la www.cet.nau.edu/~mc8/Socket/Tutorials/section1.html si sa va jucati putin

cu decodarea payload-ului pachetelor tcp. Tot ce trebuie sa faceti pentru a ajunge la

payload este sa adaugati sizeof(tcphdr)+sizeof(iphdr)+sizeof(ethhdr) la adresa bufferului

care contine frameul ethernet. Dupa aceea parsati XML-ul si filtrati toate mesajele

inafara de cele de tip QUESTION, TIPQUESTION (intrebari) si ANSWERRESULT, TIPRESULT (raspunsuri)

Pentru mesajele QUESTION si TIPQUESTION extrageti valorile asociate cheilor QUESTION, OP1, OP2, OP3, OP4

si decodati-le cu algoritmul din postul initial.

Lansez deci un challenge pentru programatori: o aplicatie care sa actualizeze in timpul jocului un

fisier cu intrebarile si variantele de raspuns corecte.

Peste 2-3 saptamani o sa trimit si eu varianta mea, acum sunt ocupat cu licenta :P.

Good luck!

Link to comment
Share on other sites

va rog si eu dak puteti sa postati un link de unde se poate downloada programul pentru ca mai sunt oamnei ca mine care nu se pricep foarte bine la programare. :)

Da corect mai sunt,dar sunt si din aia care invata.!!!!!!!!!!!!!!!!!!!!!!!!!!PROGRAMUL E DOAR PENTRU EI PENTRU STAFF!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Link to comment
Share on other sites

va rog si eu dak puteti sa postati un link de unde se poate downloada programul pentru ca mai sunt oamnei ca mine care nu se pricep foarte bine la programare. :)

ideea pe care trebuie s-o retii este ca aici nu se fac programe pentru oameni. doar se stimuleaza oamenii sa faca programe

Q: nu te pricepi?

A: macar incearca, comunica cu altii ca tine, si poate reusesti.

Q: ai incercat si n-ai reusit si nici nu crezi c-o s-o faci vreodata?

A: n-o sa gasesti nimic interesant pe forumul asta.

Link to comment
Share on other sites

Ia de aici... dar nu vei rezolva nimic daca iei un programel exemplificator si gata. Cauta un tutorial de "C for Dummies", ia un compiler pt Windows (sau si mai bine invata sa compilezi pe Linux :) )

1. Link pt compiler de windoze:

http://www.q-software-solutions.de/downloaders/show_download_locations

2. Programelul lui VirginMary:

http://www.filebox.ro/download.php?key=3687f23696c3c217fa4c81a76f111f75

va rog si eu dak puteti sa postati un link de unde se poate downloada programul pentru ca mai sunt oamnei ca mine care nu se pricep foarte bine la programare. :)
Link to comment
Share on other sites

Programul merge perfect daca stii sa-l compilezi, nu aici e problema. dar nu am reusit sa obtin un rezultat favorabil utilizand informatii actualizate. Am facut partea cu interpretarea pachetelor, dar nu-mi dau seama ce gresesc, am pus cheia generata aleator si intrebarea aferenta, dar rezultatul e dezastruos.

Link to comment
Share on other sites

Calm..... :D

In alt ordine de idei, intrebam ce nevoie e de cmd? Programul se compileaza si ruleaza ok fara nici un cmd...daca era vorba sa nu se inchida fereastra cand rulezi executabilul, atunci mai bagi un getchar() si gata. Oricum am impresia ca s-a schimbat algoritmul, asa ca degeaba utilizezi programul, tot ce poti sa faci in prezent e sa salvezi intr-o baza de data mesajele hashuite, care le si poti decripta daca faci algoritmul :D

Link to comment
Share on other sites

Salutare, De unde stii cum se face hashingul la mesaj ? Super postul ;)

e intr-un swf pe site.

il decompilezi si e programare in actionscript. system.swf sau ceva de genul. cauta mai atent. vezi gasi

Putin offtopic!

Daca ar fi sa programez ceva... si n-as vrea sa trec la linux, ce sa folosesc pe windows?

Visual Studio?

Eclipse?

Dev-C++?

Alte recomandari?

Eu ma joc ca noobu cu php-ul ca e usor de scris dar hai sa trecem la chestii mai serioase.

LE

de visual studio 2008 ce stiti? ceva nou? ca iau acum Microsoft.Visual.Studio.2008.Professional.Edition-ZWTiSO

Link to comment
Share on other sites

Programul merge perfect daca stii sa-l compilezi, nu aici e problema. dar nu am reusit sa obtin un rezultat favorabil utilizand informatii actualizate. Am facut partea cu interpretarea pachetelor, dar nu-mi dau seama ce gresesc, am pus cheia generata aleator si intrebarea aferenta, dar rezultatul e dezastruos.

Ce program ai folosit pentru interpretarea pachetelor ? Folosesti WinPCap(libpcap) ? Da-mi niste detalii despre modul in care ai reusit sa interpretezi pachetele te rog, pentru ca eu am incercat in Visual C++ 6.0 avand Winpcap instalat, insa nu am toate Fisierele de Includere si nu le gasesc nici cum.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


×
×
  • Create New...