Hra na počesť dosiahnutia 50 000 domén bola pôvodne plánovaná ako postrehová záležitosť. Keďže sme však medzi geekmi, netrvalo dlho a stal sa z nej súboj dôvtipu a kóderských zručností. Tu je výber najlepších trikov, s ktorými ste dosiahli inak nereálne čísla.
1. Naťahovanie času
Výborným pomocníkom pri cheatovaní bola utilitka Cheat Engine. Umožňuje zastaviť prehliadač, čím získate dosť času na otvorenie požadovanej domény vo vedľajšom okne. S Cheat Enginom dokážete preľstiť všetky hry využívajúce údaje z vášho PC – flashové, webové i newebové.
2. Paralelné prehliadanie webu
Ďalšia finta spočívala v paralelnom otvorení zobrazenej domény. Kým sa zjavili náhľady web stránok, bolo jasné, na čo treba kliknúť. Pomocou skriptu ste doménu automaticky otvárali buď do nového okna, alebo – efektívnejšie – cez iframe priamo v tom istom okne.
3. Parsovanie domény z unikátneho hashu súboru obrázku
Sofistikovanejší spôsob bolo nakódenie vlastného bota, ktorý sa postupne “učil” správne odpovede. Ku každému obrázku sa dá vytvoriť hash daného súboru a k nemu priradiť doménu postupným skúšanim mnohých levelov, až sa nazbiera dostatok dát. Potom už len stačí hashe vsetkych zobrazených obrázkov porovnať s databázou a získať názvy domen, takže sa dá určiť, o akú stránku ide.
4. Zrýchlené klikanie vo dvojici
Tento trik sa snaží eliminovať zdĺhavé ovládanie myšou a vylepšiť postreh. Jeden z hráčov si vytvoril jednoduchý autoclicker, ktorému nastavil bindy. Na ovládanie potom namiesto myši používal klávesy A, S, D, F a klávesy 1, 2, 3, 0 na numlocku. Každému z nich zodpovedal konkrétny obrázok. Hrali dvaja. Zo začiatku, keď boli len dva obrázky, klikal prvý na F, alebo druhý na 1. S rastúcim počtom obrázkov zapájali ďalšie klávesy.
5. Porovnanie screenov s realitou
Ďalší bot využíval API projektu Thumblizer. Vytvoril screen vypísanej domény a pomocou iného skriptu na porovnávanie ho porovnával ho zo screenmi zobrazených obrázkov.
6. Porovnaním našich vlastných screenov
Asi najprefíkanejší prístup zvolil hráč, ktorý si nakódil vlastné rozšírenie pre Chrome. Po zobrazení domény sa jeho skript pripojil na náš server a stiahol odtiaľ súbor s rovnakým názvom ako bola vypísaná doména. Následne ho porovnal so súbormi, ktoré WebMatch zobrazil a označil zhodu.
Update: 4. 9. 2012 9:56
7. Použitie hrubej sily
Kóderi nás dodatočne upozornili ešte na jeden veľmi častý postup – brute-force útoky. Takéto útoky využívajú skripty, ktoré náhodne tipujú správnu odpoveď. Skúšajú to dookola celé hodiny. Najprimitívnejšie tipovacie skripty sa nedostali ani cez 3 levely, iné, doplnené o funkciu „učenia“, boli oveľa úspešnejšie. Jeden takýto prepracovaný tipovací skript sa dostal až na level 100. Kým to dokázal, zahral si WebMatch asi 44 000 krát.
Za priznanie ďakujeme Janovi Jedinákovi, Ahmedovi Al Hafoudhovi, Vladovi Vaculíkovi a ďalším. Ich e-maily boli veľmi inšpiratívne čítanie.
Top cheateri |
|||
---|---|---|---|
priemerný reakčný čas | počet pokusov | Top level | Nick |
5,97 | 98 | 100 | meciar |
3,39 | 4961 | 100 | magaman |
4,17 | 5567 | 100 | velyger |
2,91 | 721 | 100 | ahmed |
0,50 | 44259 | 100 | larrenko |
Zaujímavé čísla o WebMatch-i
- WebMatch si zahralo 2815 ľudí
- Spolu prešli 462 955 levelov
- Potrebovali na to 33 421 pokusov
- 1 človek prešiel priemerne cez 11,8 levelov
- Najaktívnejší hráč zahral webmatch 4205 krát
- Dvaja z troch ľudí, si zahrali WebMatch viackrát
- Jedna hra trvala priemerne 95 sekúnd, najčastejšie to bolo okolo 15 sekúnd
- Najdlhšia hra trvala 585 sekúnd
- Za 30. level sa dostalo každý desiaty hráč
- Za 50. level sa dostalo iba 37 ľudí (1,3 %)
15 odpovedí na “6 trikov ako preľstiť WebMatch”
Kolko vlastne bolo tych webov?? Moj robot si stiahol necelych 6000 obrazkov a potom uz prakticky vedel odpovedat na vsetko…
To preto, že skript bol napísaný tak, aby prioritne zameriaval na weby s najvyššou návštevnosťou a trafficom a tých je výrazne menej
Ak by niekoho zaujimalo https://bitbucket.org/freevision/webmatch-automat
Bola to super zábava. Ja som nakódil robota, ktorý sa postupne učil zo správnych a nesprávnych odpovedí a podľa porovnania množín ponúkaných odpovedí.
Úplne prvý nápad ako to oklamať bola snaha prísť na algoritmus generovania odkazov. Zdá sa, že tam je súvislosť s dĺžkou názvu domény, no nič viac sa mi zistiť nepodarilo.
Potom som sa snažil správne odpovede identifikovať podľa odkazov, no zistil som, že po ďalšom logine sa kódy pre rovnaké domény menili a navyše každý užívateľ mal kódy iné. Preto som program upravil tak, aby počítal hash odtlačky samotných JPG obrázkov domén – tie boli vždy rovnaké 🙂 a ukladal výsledky do databázy. Robot mi bežal pod viacerými loginmi, ktoré mohli zdieľať správne odpovede, resp. databázu budovali aj využívali spoločne. Použil som aj delay, aby aktivita robota nebola podozrivá 🙂
Žiaľ, robot nestihol bežať dostatočne dlho na to, aby atakoval prvú priečku. Dosiahol myslím len 53 level, pričom v databáze správnych odpovedí bolo uložených cca 7000 záznamov.
PS: mormálnym klikacím spôsobom som sa myslím nedostal nad 30. level 🙂
hm, tusil som ze to nebude vsetko s „kostolnym poriadkom“ (;
cize „cheating“ bol v podstate povoleny … dobre vediet do buducna (;
ja som sa normalnym klikanim dostal na 44 … ale akosi mi nezaratalo (co sa mi stalo viackrat).
Nebol povolený, čistili sme cheaty priebežne, ale vyhnúť sa tomu nedalo 🙂 A podobné aktivity nekončia, čiže šancí bude dosť :))
je teda mozne urcit, aky najvyssi level dosiahol clovek vlastnymi silami ?
Vedel by niekto vysvetliť bod 6 – ako sa podarilo dopracovať priamo k úložisku screenshotov?
Tiez by ma to zaujimalo 🙂
Takéto detaily nám autor triku neprezradil, ale predpokladáme, že skript pracoval s cestou uvedenou v HTML – <img src=““>
Práveže URL bola nejaký hash alebo kód a nedalo sa z jej tvaru odvoviť názov domény, teda aspoň sa mi to nepodarilo. Pretože toto by bola najjednduchšia možnosť ako oje…kabátiť Webmatch. Stačilo by dekódovať URL obrázku na názov domény a máme to v suchu. 🙂 Request nesmeroval priamo na JPG súbor na disku a nebol identifikovateľný s názvom domény. Obrázok generoval php skript v závislosti na prihlásení a session posielal obsah súboru podľa GET paremetru.
Napríklad odkz, ktorý bol použitý pri aktívnej login session https://www.websupport.sk/images/domain.php?id=fee193825f388a59ec1541c011d2962f.jpg teraz nefunguje. Pravdepodobne to kontroluje obsah referer, pretoze scriptom mi obrázok načítať išlo, rovnako aj otvorenie obrázku v novom okne.
🙂
Fatal error: Uncaught exception ‚Exception‘ with message ‚File not found‘ in /data/w/e/websupport.sk/projects/1.5.5/web/images/domain.php:8 Stack trace: #0 {main} thrown in /data/w/e/websupport.sk/projects/1.5.5/web/images/domain.php on line 8
Skript by mal miesto chybovej hlášky vrátiť HTTP 403 alebo 404, ale to je len detail 😉
Tak sa teda priznam i ja.
Hra to bola velmi zaujimava, ale velmi vysoko sa mi bez pomoci nedarilo.
Tak ako skoro kazdeho, ako prve ma napadlo otvaranie odkazov vo vedlajsom okne. Na rucne prepisovanie nebol cas, ale vyhoda bola, ze text sa dal oznacit, skopitovat do schranky a potom vlozit do policka adresy prehliadaca.
Napadlo ma, co tak to zautomatizovat. Naprogramoval som teda C# program, ktory pouzival webbrowser na otvaranie stranok. Problem bol, ze stranky sa za tych par sekund nestihali nacitat.
Tak ma napadlo pouzit databazu miniatur. K tym na websupport.sk som nenasiel pristup, tak som si musel vygenerovat vlastne. Na to som pouzil iny C# program ktory bezal v batch mode v 10 instanciach naraz. Trvalo to cca 24 hodin. Zoznam domen a ich registratorov je volne pristupny na sk-nic.sk. Websupport mal registrovanych cca 40 000 slovenskych domen. Zo zvysnych 10 000 ne-„.sk“ domen si program priebezne generoval nove miniatury pocas riesenia.
Takto som dosiahol realny cas 422 sekund na 100 levelov len pomocou miniatur a vlastneho postrehu. Predbehol ma ale ktosi s 390 sekundami, a akokolvek som sa snazil, tak to bol pre mna nedosiahnutelny cas. V pravidlach bolo, ze rychlejsi vyhrava, lenze ja som stracal vela casu zobrazovanim domeny. Tak som si ho trocha skratil. Kratky skriptik:
javascript:(function(){ document.getElementById(„domainBox“).style.display=“block“ })();
na ukazanie miniatur v pozadi stranky som nastavil na bookmarklet a pouzival klavesovu skratku na jeho spustenie a spolu s Ctrl+C na vkladanie oznaceneho textu do schranky som ich nastavil na tlacitka na myske.
Zvysok uz bol len postreh a klikacka. Takto som dosiahol cas cca 310 sekund na 100 levelov.
Musim uznat, ze ma prekvapilo, ze z 50 000 domen sa v hre mnoho opakovalo. Popri generovani vlastnych miniatur som zistil, ze mnoho domen je len zaparkovanych alebo uplne prazdnych.
Dakujem Websupport teamu za chytlavu hru a dobry challenge, aj ked slabo bezpecnostne osetreny.
Dlhe a nudne video ako tato metoda vypada v praxi:
http://www.youtube.com/watch?v=o1tH9kIqEkM&t=0m24s
mohol si to mat este rychlejsie, keby parsujes html a namiesto klikania komunikuje so serverom tvoj bot. tam by ten cas bol zaozaj o tom, ake rychle mas internetove spojenie.
ale ja som nechcel podvadzat nejakym botom.
chcel som si zahrat a pri tom vyhrat. otvaranie stranky alebo miniatury v inom okne nepokladam za podvadzanie, lebo to mohol pouzit ktokolvek, len nie dostatocne rychlo. ani v pravidlach to nebolo zakazane. text sa dal oznacit a skopirovat.
v mojom postupe za cheatovanie pokladam len zobrazenie miniatur pred casovym limitom priamou upravou kodu stranky, ku ktoremu som sa uchylil z poslednej nudze, kedze som chcel predbehnut ineho cheatera v poradi.
Riadne ste nás vymákli 🙂
Ja som si tiež zbastlil skript, ktorý danú stránku otvoril na druhej obrazovke. Ale keďže cca 1/10 stránok sa otvárala pomalšie ako tých 5s tak to nebolo bohviečo.