Ok ... mi-am facut ceva timp liber si m-am gandit sa postez un tutorial daca nu interesant pentru unii...sigur de folos pentru altii. lol

Vreau ca acest topic sa fie exclusiv tutorialelor dedicate
Protocolului de CS1.6 [Counter-Strike].Sa analizam reteaua si sa
vedem ce se petrece in culisele acestui joc.[ca doar asa il jucam ,nu?

].Motivul acestui tutorial este acela ca nu exista specificatii
pe internet la acest protocol...sa dau o mana de ajutor celor ce cauta

si poate a ridicam putin nr de accesari la pagina,ca doamne
ajuta,jucatori sunt multi

]
Ok ... astea fiind spuse... mi-am scos
Ethereal-ul din directorul de programe neinstalate,l-am instalat,am pornit counterul,am pornit
programul si am inceput sa analizez.
In acest prim post vom vorbi despre ce se intampla in momentul in care
Dorim sa achizitionam lista de servere de pe internet.
Stiti voi,atunci cand intrat in CS,dati
Find Servers si apoi selectati tab-ul
Internet de vedeti lista aceea ce tot creste.
Sa trecem direct la treaba
IP Server de Achizitie lista :
69.28.151.162Port :
27010Tipul conexiunii :
UDPOk...deci sa zicem ca am simula o conexiune la acea adresa,de tip UDP,pe acel port...ce s-ar intampla? Mai nimic...trebuie sa ii transmitem ceva
serverului ca sa-i spunem ca dorim o lista.La prima conexiune i-am trimite asta:
0x31, 0xff //header standard
0x30,0x2e, //the ip section 0.0.0.0
0x30,0x2e,
0x30,0x2e,
0x30,
0x3a,0x30, //port section :0
0x00 //sfarsit stream
Acesta este primul request si este probabil si cel mai simplu deoarece,asa cum am observat,se mai transmit si alte date la server precum informatiile
despre filtrul selectat...dar merge si asa si oricum filtrul se poate aplica si pe partea clientului...desi pe partea serverului ar reduce timpul de executie
de pe partea clientului...dar eu le consider irelevante si vom sari peste acea parte.
Asadar...noi am trimis serverului informatii ca dorim lista de ip-uri incepand de la
0.0.0.0:0.
Dupa acest request...serverul va trimite,tot prin acelasi protocol,un datagram ce contine exact 1392Bytes...
Mai jos este un memory dump la un astfel de reply
0030 ff ff ff ff 66 0a 52 4d b3 d4 69 88 52 4d ....f.RM..i.RM
0040 d0 c2 69 87 52 4d fe fc 6d 6f 52 4d fe fc 69 87 ..i.RM..moRM..i.
0050 52 4d fe fe 69 87 52 4d 1e bc 69 87 52 4d 06 e2 RM..i.RM..i.RM..
0060 69 87 52 4d 06 e2 6d 6f 52 48 a6 9f 69 96 52 4e i.RM..moRH..i.RN
0070 db 1d 69 87 52 4e f0 b8 69 87 52 4f 03 9b 69 87 ..i.RN..i.RO..i.
0080 52 47 da 1e 69 87 52 4f 92 4e 69 87 52 4f 92 4e RG..i.RO.Ni.RO.N
0090 69 88 52 43 aa 96 69 87 52 4f bd fa 69 87 52 4f i.RC..i.RO..i.RO
00a0 ea ae 69 87 52 4f f9 46 69 87 52 43 5e 4e 69 87 ..i.RO.Fi.RC^Ni.
00b0 52 50 fc 79 2b 67 52 50 fc 79 69 83 52 50 fc 79 RP.y+gRP.yi.RP.y
00c0 69 8b 52 50 fc 79 69 93 52 50 fc 79 65 cc 52 50 i.RP.yi.RP.ye.RP
00d0 fc 79 69 d0 52 50 fc 79 61 da 52 50 fc 79 59 e5 .yi.RP.ya.RP.yY.
00e0 52 42 46 be 69 87 52 50 fc 79 59 e6 52 42 3b e2 RBF.i.RP.yY.RB;.
00f0 d6 f7 52 50 fc 79 4e e8 52 42 3b e2 d6 f4 52 42 ..RP.yN.RB;...RB
0100 3b e2 d6 e2 52 42 3b e2 d7 32 52 42 3b e2 d7 19 ;...RB;..2RB;...
0110 52 42 3b e2 d7 18 52 42 3b e2 d7 13 52 42 3b e2 RB;...RB;...RB;.
0120 d7 11 52 52 81 12 69 87 52 53 3f 1f 69 87 52 29 ..RR..i.RS?.i.R)
0130 ef a5 69 87 52 5d 0e 98 d2 f5 52 5d 0e 98 d2 f7 ..i.R]....R]....
0140 52 5d 0e 98 d2 f8 52 22 4a b7 fc 33 52 5d 0e 98 R]....R"J..3R]..
0150 d2 f9 52 22 4a b7 fc 31 52 5d 0e 98 d2 fa 52 5d ..R"J..1R]....R]
0160 0e 98 d2 fb 52 22 4a b7 fc 2a 52 5d 0e 98 d2 fc ....R"J..*R]....
0170 52 5d 0e 98 d2 fd 52 5d 0e 98 d2 fe 52 5e dc 30 R]....R]....R^.0
0180 69 87 52 5e dc 3e 69 91 52 5e dc 4a 69 87 52 5e i.R^.>i.R^.Ji.R^
0190 dc 66 69 91 52 5e dc 87 69 91 52 5e dc 96 69 91 .fi.R^..i.R^..i.
01a0 52 5e dc bb 69 91 52 5e dc bf 69 91 52 5e dc eb R^..i.R^..i.R^..
01b0 69 91 52 5e e4 0a 69 87 52 5e e4 1b 69 87 52 5e i.R^..i.R^..i.R^
01c0 e4 22 69 87 52 5e e4 25 69 87 52 5e e4 26 69 87 ."i.R^.%i.R^.&i.
01d0 52 5e e4 2c 69 87 52 5e e4 2d 69 87 52 5e e4 2f R^.,i.R^.-i.R^./
01e0 69 87 52 5e e4 30 69 87 52 5e e4 37 69 87 52 5e i.R^.0i.R^.7i.R^
01f0 e4 38 69 87 52 5e e4 39 69 87 52 5e e4 49 69 87 .8i.R^.9i.R^.Ii.
0200 52 5e e4 4a 69 87 52 03 9b 0e 69 87 52 5e e4 4c R^.Ji.R...i.R^.L
0210 69 87 52 00 db b5 69 88 52 5e e4 4d 69 87 52 5e i.R...i.R^.Mi.R^
0220 e4 4f 69 87 51 ff 18 56 69 87 52 5e e4 50 69 87 .Oi.Q..Vi.R^.Pi.
0230 52 5e e4 51 69 87 52 5e e4 55 69 87 52 5e e4 64 R^.Qi.R^.Ui.R^.d
0240 69 87 52 5e e4 69 69 87 52 5e e4 71 69 87 52 5e i.R^.ii.R^.qi.R^
0250 e4 73 69 87 52 5e e4 77 69 87 52 5e e4 83 69 87 .si.R^.wi.R^..i.
0260 52 5e e4 84 69 87 52 5e e4 87 69 87 52 5e e4 8a R^..i.R^..i.R^..
0270 69 87 52 5e e4 8d 69 87 52 5e e4 90 69 87 52 5e i.R^..i.R^..i.R^
0280 e4 93 69 87 52 5e e4 94 69 87 52 5e e4 99 69 87 ..i.R^..i.R^..i.
0290 52 5e e4 9a 69 87 52 5e e4 9c 69 87 52 5e e4 9d R^..i.R^..i.R^..
02a0 69 87 52 5e e4 ac 69 87 52 5e e4 b0 69 87 52 5e i.R^..i.R^..i.R^
02b0 e4 b1 69 87 52 5e e4 b2 69 87 52 5e e4 b6 69 87 ..i.R^..i.R^..i.
02c0 52 5e e4 b8 69 87 51 ed d0 21 69 8b 52 5e e4 bc R^..i.Q..!i.R^..
02d0 69 87 51 ed ca d2 69 87 52 5e e4 d2 69 87 52 5e i.Q...i.R^..i.R^
02e0 e4 d4 69 87 52 5e e4 d5 69 87 52 5e e4 d9 69 87 ..i.R^..i.R^..i.
02f0 52 5e e4 e6 69 87 52 5e e4 e7 69 87 52 5e e4 e9 R^..i.R^..i.R^..
0300 69 87 51 ec d0 f7 69 87 52 5e e4 eb 69 87 51 ec i.Q...i.R^..i.Q.
0310 bc c9 69 87 51 ec b5 22 69 89 52 5e e4 ee 69 87 ..i.Q.."i.R^..i.
0320 51 ec b5 22 69 88 52 5e e4 f0 69 87 51 ec b5 22 Q.."i.R^..i.Q.."
0330 69 87 52 5e e4 f5 69 87 52 5e e4 f7 69 87 51 ec i.R^..i.R^..i.Q.
0340 a4 1a 69 87 52 5e e4 f9 69 87 52 60 16 c2 69 87 ..i.R^..i.R`..i.
0350 52 60 16 c3 69 87 52 60 16 c4 69 87 52 60 16 c5 R`..i.R`..i.R`..
0360 69 87 51 eb fc b5 69 87 51 eb f8 19 e4 a3 52 60 i.Q...i.Q.....R`
0370 40 1e 69 8d 51 eb f4 6e f8 f1 51 eb f0 7d d6 d9 @.i.Q..n..Q..}..
0380 52 60 40 60 69 9b 52 60 40 61 69 a5 52 60 40 8e R`@`i.R`@ai.R`@.
0390 69 90 52 60 40 8e 69 94 51 eb d0 63 69 87 52 60 i.R`@.i.Q..ci.R`
03a0 40 8e 69 98 51 eb ca b0 69 8a 51 eb c9 66 69 87 @.i.Q...i.Q..fi.
03b0 52 60 40 8e 69 a6 52 60 40 8e 69 a8 51 eb 8d 5e R`@.i.R`@.i.Q..^
03c0 69 87 52 60 40 91 69 90 51 ea fe ea f7 24 52 60 i.R`@.i.Q....$R`
03d0 40 91 69 92 51 ea d6 cd f4 ce 52 60 40 91 69 98 @.i.Q.....R`@.i.
03e0 51 ea d6 cd f4 53 52 60 40 91 69 a0 51 ea d6 cd Q....SR`@.i.Q...
03f0 f4 1c 52 60 45 21 69 87 52 60 49 07 69 87 52 60 ..R`E!i.R`I.i.R`
0400 49 19 69 87 51 ea d5 40 69 87 52 60 49 20 69 87 I.i.Q..@i.R`I i.
0410 51 ea cc 34 0e 46 52 60 49 21 69 87 52 60 49 22 Q..4.FR`I!i.R`I"
0420 69 87 52 60 49 23 69 87 52 60 49 24 69 87 52 60 i.R`I#i.R`I$i.R`
0430 49 25 69 87 52 60 49 26 69 87 52 60 49 3d 69 87 I%i.R`I&i.R`I=i.
0440 52 60 49 4c 69 87 51 ea 8f f0 69 87 52 60 4b 1d R`ILi.Q...i.R`K.
0450 69 87 52 60 4b 29 69 87 52 60 4d 8b 62 3e 52 60 i.R`K)i.R`M.b>R`
0460 4d 8c 57 1c 52 60 4d 8d 58 48 52 60 4d 8e 57 80 M.W.R`M.XHR`M.W.
0470 51 e9 fa a4 69 88 52 60 4d 97 34 26 52 60 55 0a Q...i.R`M.4&R`U.
0480 5a 3c 52 60 55 0e 56 b8 52 60 55 1d 5a 3c 51 e9 Z0490 e3 8c 69 87 52 60 55 22 5a a0 52 60 55 24 69 87 ..i.R`U"Z.R`U$i.
04a0 52 60 55 2e 5b cc 51 e9 d7 31 69 87 52 60 55 33 R`U.[.Q..1i.R`U3
04b0 56 b8 51 e9 c5 6f 69 87 52 60 57 03 6b 08 51 e9 V.Q..oi.R`W.k.Q.
04c0 b9 de 69 87 52 60 57 03 6b 6c 52 60 57 0b 6b 08 ..i.R`W.klR`W.k.
04d0 52 60 57 0b 6b d0 51 e9 88 2d 69 87 52 60 57 0c R`W.k.Q..-i.R`W.
04e0 6c 34 51 e9 74 8f 69 87 52 60 57 0c 6a 40 52 60 l4Q.t.i.R`W.j@R`
04f0 57 0c 6a a4 52 60 57 0d 6a 40 52 60 57 0d 6a a4 W.j.R`W.j@R`W.j.
0500 51 e9 6a 8a 69 8a 52 60 57 10 6b 08 52 60 57 10 Q.j.i.R`W.k.R`W.
0510 6b 6c 51 e9 5b 13 69 87 52 60 57 11 6b d0 52 60 klQ.[.i.R`W.k.R`
0520 57 12 6a 40 52 60 57 14 6c 34 51 e9 4e e4 69 82 W.j@R`W.l4Q.N.i.
0530 52 60 57 14 6a 40 52 60 57 14 6a a4 51 e9 4e 80 R`W.j@R`W.j.Q.N.
0540 fc 0d 52 60 57 23 6b 08 51 e9 11 9d 69 87 52 60 ..R`W#k.Q...i.R`
0550 57 35 6c 34 52 60 57 35 6a a4 51 e8 b1 e4 69 87 W5l4R`W5j.Q...i.
0560 52 60 58 a0 56 2c 51 e8 b1 2b 69 87 52 60 5b 1f R`X.V,Q..+i.R`[.
0570 69 87 52 60 5b 44 69 87 52 60 5b 4a 69 87 52 60 i.R`[Di.R`[Ji.R`
0580 61 bc 69 78 52 60 65 10 6a a4 52 60 65 11 6b 08 a.ixR`e.j.R`e.k.
0590 52 60 65 11 69 dc 51 e7 ea 79 69 87 52 60 66 0c R`e.i.Q..yi.R`f.
05a0 69 87 i.
Dumpul nu este complet intrucat am exclus headerele de protocol care il insoteau [IP,UDP,Ethernet,etc].
Pentru cei ce nu stiu ... acesta este un memory dump...in aceste 3 tabele se gasesc,numerotand de la stanga la dreapta, adresa de baza a randului,
coloana cu date brute[cea din mijloc -
formatata in hexazecimale] si cea din dreapta ... coloana care reprezinta interpretarea bytesilro in
sistem ascii,mai atractiv

.
Ok ... avem cei 1392de Bytes...si acestia au o sectiune/header ce nu ne intereseaza ... aceea contine primii 6B,care in cazul nostru sunt:
ff ff ff ff 66 0a
Am eliminat sectiunea...apoi,va vine sau nu a crede,dar restul de Bytes sunt adrese de servere impreuna cu portul lor disponibile pe internet.
Cum sunt formate aceste adrese?
Fieccare adreasa este alcatuita din 6B in care
4B se folosesc pentru ip-ul serveului [IPv4 only] in format [x.y.z.w]
2B se folosesc pentru portul de conexiune
Probabil va intrebati de ce 2B pentru port? Pai intr-un Byte incap 255 ,iar gameri stiu ca adresele de CS sunt in general de forma 27015...mult mai mari,dar
care incap lejer in 2Bytes doarece 2B=32767. Ma intreb daca asta inseamna ca nu pot exista servere cu ip mai mare de 32767 ... dar asta va las pe voi sa aflati

Oricum daca ar exista nu cred ca ar fi indexate de serverul central...sau nu stiu

.Vedeti voi daca va intereseaza...
Asadar...avem primii 6B nefolositori si urmatorii din 6 in 6 B avem o adresa de server impreuna cu portul lui.Asta rezulta ca din pachetul de 1392 de date vom avea un numar de
(1392-6)/6=231 adrese de ip.
Haideti sa aplicam ce am zis mai sus...pe o grupare de 6B consecutivi ... sa o luam pe ultima grupare.
Asta este :
52 60 66 0c 69 87
Primii 4B tradusi individual in baza 10 ar da urmatoarea adresa de ip :
82.96.102.12 Ceea ce pare a fi o adresa de ip

acum sa vedem portul :
Urmatorii 2B tradusi
impreuna in baza 10 ar da urmatorul port :
27015Haha...nu este frumos portul ?
Ok deci utlima adresa din lista unde am gasi un server ar fi
82.96.102.12:27015 . Puteti sa incercati sa vedeti daca va puteti conecta...eu nu garantez ca serverul respectiv mai este on intrucat dump-ul are cateva zile...si erverul e posibil sa fie particular...dar garantez ca judecata este buna

.
Asadar avem o lista de 231 de adrese unde se afla servere de cs.Cum achizitionam informatii privind numele servului,nr de locuri libere,harta care este jucata,etc le vom discuta intr-un post viitor.
Nu e o coincidenta ca am luat ultima grupare de 6B si l-am transformat in adresa de ip cu port.Desi noi avem primele 231 de adrese..ce facem sa luam urmatoarele 231 de adrese?
Mai tineti minte cand am facut primul request, am trimis date ca dorim sa pornim de la 0.0.0.0:0 si sa ne returneze servere?
Acum...daca dorim sa continuam cu lista... mai trimitem un request de achizitie servere .... dar de data asta pornind de la ultima adresa de server care am primit-o ... ca achizitionarea sa fie continua si serverul sa ocupe tot domeniu.
Ok...in primul request nu ati vazut prea multe detalii [erau doar 0 ],acum veti vedea ceva interesant.Pentru a continua achizitia de servere,datele trimise trebuiesc putin alterate...
In sens ca trimitem fiecare cifra ca corespondentul ei in baza 16.
De aceea conversia dintre hex -> zecimal este utila in momentul de fata.
Asta o explica tabelul de mai jos
Zecimal Hex
0 0x30
1 0x31
2 0x32
3 0x33
4 0x34
5 0x45
6 0x36
7 0x37
8 0x38
9 0x39
Si mai sunt :
[punct] 0x2e
[doua puncte] 0x3a
Datele de header,universal valabile pentru requestul asta :
0x31, 0xff
,noul nostru request,pentru a continua achizitia de ip-uri de la ultimul procesat...ar fi:
0x31, 0xff //prefixul
0x38,0x32,0x2e, //82.
0x39,0x36,0x2e, //96.
0x31,0x30,0x32,0x2e //102.
0x31,0x32, //12
0x3a, //:
0x37,0x30,0x31,0x35, //27015
0x00 //end of stream
Liniar am trimite bytes din
hexi astia :
31 ff 38 32 2e 39 36 2e 31 30 32 2e 31 32 3a 37 30 31 35 00
Sper ca ati inteles cate ceva din acest mic tutorial...sper ca altele sa urmeze dupa cum timpul imi va permite
Pentru nelamuriri sau sugestii...postati aici
©3Nigma 23Iulie 2007