Zpět

Jak jsem do své knihy vložil hádanku za 10 tisíc korun v bitcoinu.

Hádanka na FB

Napsal jsem krátkou sci-fi knihu, u které bych chtěl tento rok vydat její fyzickou verzi. Mezi tím jsem ale vydal tu digitální a napadlo mě na ni udělat menší marketing. Do knihy jsem vložil hádanku, která toho, kdo ji rozluštil, obohatila o 10 tisíc korun v Bitcoinu.

Hádanka byla inspirována touto o něco starší hádankou v Pařížském graffiti:

Seed

Primární záměr byl, aby si co nejvíce lidí přečetlo mou knihu, která je k dostání zdarma. Hádanku jsem tudíž zaimplementoval přímo do ní a kdo se chtěl zůčastnit, musel si knihu stáhnout. Nakonec jsem ale ustoupil od záměru zaimplementovat hádanku do příběhu samotného, ačkoliv si to hromada lidí myslela, a šel jsem jednodušší cestou.

Bitcoin recovery seedy jsou většinou generovány zcela náhodně. Pokud ale chcete, můžete si je taky vymyslet. Stačí jen zajistit, aby seděl kontrolní součet, což není až tak těžké. Mohl jsem si tedy vymyslet recovery seed, který pasoval do mé knihy. V knize jsem podtrhnul česká slova, jejíž anglický překlad recovery seed tvoří.

Tady to mohlo skončit. První člověk kdo našel v knize všechna slova si mohl seed vložit do peněženky a získat Bitcoiny. Ale to by bylo moc snadné...

IPFS

Jeden z obrázků v hádance

Bitcoinový seed lze použít k přístupu na blockchain, jelikož se z něj získává privátní klíč. Ten se dá ale rovněž použít k zašifrování textu. A na konci knihy se několik zašifrovaných kousků textu nacházelo.

Bitcoin je skvělá technologie, protože vytváří decentralizovaný systém plateb. Mě se ale líbí i další decentralizované systémy, např. IPFS, systém pro decentralizované sdílení dat.

Na konci knihy byla zašifrována následující IPFS adresa: QmUYFdS7RAeggfRg2k446rCUYndyozg3nn4mcqfWFNV3eR Pod touto adresou se skrýval 7zip soubor, který obsahoval několik obrázků. Každý obrázek obsahoval text, kde bylo jedno slovo odstraněno.

Původní 7zip soubor.

Bitcoin

každé z těch slov patří k finálnímu seedu, kterým se lze dostat k Bitcoinu. Hádanku jsem vložil na Bitcoinovou komunitu na Facebooku a čekal co se stane. 5 dní mi psali náhodní lidé z komunity. Prosili o radu, prosili o nápovědu. A já mlčel. Raději jsem ani neřekl, jestli je třeba mít technické znalosti. Po pěti dnech se konečně objevil výherce.

Snažil jsem se neudělat žádnou chybu, přesto se mi z nějakého důvodu podařilo jedno slovo seedu zapsat špatně. Naštěstí to neznamenalo nic jiného, než že hádanka byla trochu těžší, nikoliv nemožná.

Výherce

Následuje soupis vyřešení hádanky od samotného výherce:

Na strane 420 bolo 6 hex-encodnutych jsonov, ktore obsahovali spravu zasifrovanu privatnym klucom.

Kluc sa nachadzal v texte knihy, bolo to 12 podciarknutych slov. Dali sa vyhladat napr. pomocov wordu.
dokumentem  - document
strojů      - machine
černého     - black
ozbrojený   - armed
nikdy       - never
byznys      - business
kniha       - book
střecha     - roof
mladý       - young
zbraň       - weapon
zpráva      - message
krásně      - beauty

Seed: document machine black armed never business book roof young weapon message beauty

Zo seedu bolo treba dostat private key. Ja som pouzil https://iancoleman.io/bip39/ + https://www.bitaddress.org
Private key: L4wFADAuxx4BhgoNKqhbDBxcC2TchrmYmE19ikQunuu3RUavs179
Private key hex: E63A7CBB4AD479257F922BDDA0E80A8B436680D995FC60C6243E8818F6D5F3EE

Na desifrovanie spravy sa potom dala pouzit JS kok..*ehm* kniznica eccrypto (https://github.com/bitchan/eccrypto)

Decrypted 1:  QmUYFdS7RAeg
Decrypted 2:  gfRg2k446rCU
Decrypted 3:  Yndyozg3nn4m
Decrypted 4:  cqfWFNV3eR
Decrypted 5:  ipfs, format:7z
Decrypted 6:  gordonfreeman99

IPFS je p2p storage a "QmUYFdS7RAeggfRg2k446rCUYndyozg3nn4mcqfWFNV3eR" je nazov suboru, ktory bolo treba stiahnut. Bol to 7z archiv, ktory bol zasifrovany heslom "gordonfreeman99".
Url: https://ipfs.io/ipfs/QmUYFdS7RAeggfRg2k446rCUYndyozg3nn4mcqfWFNV3eR

V archive sa nachadzalo 12 suborov, co nasvedcovalo, ze to budu slova seedu.
Vacsinou islo o obrazky textov, v ktorych chybalo nejake slovo. Najtazsie bolo najst 8 aj ked ani pri 2 a 10 som si nebol 100% isty ci mam spravne slovo.

1   digital     https://on-memetics.blogspot.com/2011/09/evolution-of-culture-in-nutshell.html
2   dragon      https://cdn.mos.cms.futurecdn.net/QjG4kyPwQfWesZiXJbvmL5.jpg
3   program     https://dopice.sk/noN
4   disease     https://dopice.sk/noO
5   spy         https://dopice.sk/noP
6   humble      https://www.youtube.com/watch?v=tvTRZJ-4EyI&feature=youtu.be
7   innocent    https://www.theguardian.com/commentisfree/2015/nov/20/paris-attacks-political-agenda-immigration-encryption-surveillence
8   people      https://youtu.be/7y-xS_EB3QI?t=308
9   hope        https://www.youtube.com/watch?v=u2yhqxyYLUQ
10  satoshi     https://genius.com/Gramatik-satoshi-nakamoto-lyrics
11  peace       https://www.robnagler.com/2019/02/03/All-Life-Is-Problem-Solving.html
12  economist   economy? - https://youtu.be/uv6KLbkvua8?t=1206

Seed: digital dragon program disease spy humble innocent people hope satoshi peace economy

Tento seed vsak nie je spravny kedze nesedi checksum (posledne slovo).
Na dopocitanie spravneho seedu a overenie, ze patri k danej adrese, som pouzil tool btcrecover (https://github.com/gurnec/btcrecover/)
S toolom som sa pokusal seed obnovit este aj ked som nemal vsetky slova, ale kedze som sa spoliehal, ze posledne slovo je jedno z tych, ktore su 100% spravne, tak tieto pokusy neboli uspesne.
Az ked som mal vsetky slova a checksum nesedel tak som vyskusal dopocitat ten. Toto bolo nakoniec spravne riesenie.

Finalny seed k penazenke teda je: digital dragon program disease spy humble innocent people hope satoshi peace always
Ak zapojite svoju fantaziu vsimnete si, ze seed v sebe mozno skryva aj pribeh so stastnym koncom ;-)

Cele riesenie bolo sprevadzane mnozstvom pokusov a omylov (nebudem to tu rozpisovat) a nebolo to samozrejme take priamociare ako sa moze z tohto popisu zdat.