k47.cz  — každý den dokud se vám to nezačne líbit
foto Praha výběr povídky kultura
twitter FB RSS

Operace Tripkodér

21. 2. 2011 — k47 (CC by-sa) (♪)

Tripcode je způsob au­ten­ti­fi­kace na image­bo­ar­dech jako třeba 4chan, kde není možná žádná re­gis­trace a k ta­měj­šímu bon­tonu patří ano­nymní při­spí­vání. Když si někdo v tomhle pro­středí chce vy­tvo­řit per­si­s­tent­nější identitu, musí použít tripcode, což je ve­řejně vi­di­telný hash hesla. Uži­va­tel se po­de­píše jméno#heslo, na chanu bude vidět jméno!8nz4qwIJo6. Ta část za vy­křič­ní­kem je právě tripcode.

Dost často jsou k vidění pěkné tripkódy jako třeba !slash.ORiG. Ta­ko­vého kra­savce zís­káte jedině tak, že budete hrubou silou ge­ne­ro­vat jeden tripkód za druhým a hledat. A já začal hledat…


Roz­hodl jsem se napsat vlastní bru­te­force ge­ne­rá­tor v PHP a pro­tože patřím mezi vlád­noucí kastu líných pro­gra­má­torů, jed­no­duše jsem na netu našel funkci mktrip(). Sám jsem pak do­pl­nil bru­te­force část. Vy­poč­tení jedné kon­t­rolní dávky trvalo 100 vteřin.

To je všechno moc pěkné, ale nešlo by to rych­leji?

Ge­ne­rá­tor jsem tedy pře­psal, ten­to­krát do Scaly. K tomu, aby to fun­go­valo je po­třeba ja­vov­ská im­ple­men­tace funkce crypt odsud. Když se všechno zkom­pi­lo­valo, jedna dávka za­brala 8 vteřin a po drob­ných op­ti­ma­li­za­cích cirka 7 vteřin. Když jsem kód pomocí aktorů pa­ra­le­li­zo­val, tak na mém dvou­já­dru trvala jedna dávka trvala při­bližně po­lo­viční dobu. Tak jak to má být.

To je všechno moc pěkné, ale nešlo by to rych­leji?

Zou­falé okol­nosti si žádají zou­falé činy. Pře­psal jsem to ještě jednou, ten­to­krát do Céčka. Hned ze za­čátku jeden se­g­fault na uví­ta­nou, abych si uvě­do­mil, že píšu v jazyku pro sku­tečné chlapy. (Mi­mo­cho­dem, znáte hru sta­rých uni­xo­vých hac­kerů: Když uvidíš se­g­fault, napij se?) Ve vý­sledku jedna dávka v jednom vlákně trvala mezi jednou a dvěma vte­ři­nami.

To je všechno moc pěkné, ale nešlo by to rych­leji?

Šlo. Sa­mo­se­bou.

Pak jsem stáh­nul Tripcode ex­plo­rer, který napsal nějaký Ja­po­nec a vážně dů­kladně ho op­ti­ma­li­zo­val, aby vy­u­ží­val nej­no­vější in­strukce nej­no­věj­ších pro­ce­sorů a byl rychlý jako blesk. Jednu kon­t­rolní dávku Tripcode ex­plo­rer, který běžel ve Wine, pře­chroustal za 0.05 vte­řiny. Dva­ti­sí­ce­krát rych­leji než první pokus v PHP!

Rych­leji to už asi ne­pů­jde.


A po­u­čení z celé ana­báze? Pokud chcete rych­lost, PHP není správná volba.


Doba zpra­co­vání jedné dávky + odkazy ke sta­žení mých pokusů:

pokusdoba trvání vy­ge­ne­ro­vání cca 250000 tripkódůzrych­lení
PHP100s1x
Java/Scala8s12.5x
Java/Scala – op­ti­ma­li­zo­váno6.6 – 7.3s14x
C1.2 – 2.1s60x
Tripcode ex­plo­rer0.05 :(2000x
píše k47 & hosté, ascii@k47.cz