Elveszett bitcoinok visszanyerése egy Androidos tárcából

2012-01-10

Szerző: Gary Rowe

Csak nemrégiben fedeztem fel a Bitcoint, melynek segítségével bárki küldhet bárkinek bármekkora pénzösszeget bárhova a világba mindössze nagyjából tíz perc alatt, végtelnül csekély – sok esetben nullás – tranzakciós díjakkal. A rendszer digitális aláírások hatékony használatára, valamint – a többszörös elköltés megakadályozása érdekében – nyilvánosan vezetett tranzakciónaplóra épül. Röviden, ez maga az újrafeltalált pénz, melynek segítségével küldhetsz akár egy dollárnál csekélyebb összegeket akár a világ másik végébe is.

Elég sok Bitcoin-kliens létezik (jómagam a MultiBit fejlesztőgárdáját erősítem), többek között az Android platformjára is. Ott van például Andreas Schildbach Bitcoin Walletje (kiváló mobilmegoldás számos, jelenleg is folyamatban lévő fejlesztéssel) és Brian Armstrong Bitcoin Androidja (korai kliens, újabban csökkent a támogatottsággal). A magam részéről Andreas kódját használom már egy ideje elsődleges mobiltárcámként, és nagyon jó tapasztalataim voltak vele.

Egészen addig, amíg az okostelefonom fel nem mondta a szolgálatot egy hálózati hardverhiba miatt.

Illetve, pontosabban, teljesen nem mondta fel a szolgálatot, csak annyira, hogy kiüsse az összes nem gyárilag telepített alkalmazást, veszélyeztetve így a bitcoinjaimat (bitcoin mint pénzegység kis “b”-vel, Bitcoin mint protokoll, rendszer, nagy “B”-vel). A Bitcoin használatához ugyanis az embernek nagyon kell vigyáznia a titkos kulcsaira, mivel csak azok által férhet hozzá a nyilvános tranzakciónaplóban (úgy is, mint a blokkláncban) jegyzett bitcoinjaihoz és rendelkezhet felettük; ha ezek a kulcsok elvesznek, úgy a hozzájuk tartozó bitcoinok is elvesznek – végleg és menthetetlenül.

Ez tehát itt egy kis segítség, amolyan útmutató ahhoz, hogy mit kell tenned hasonló helyzetben – kiindulva a saját élményeimből, vagyis abból, hogy nekem mit kellett tennem a bitcoinjaim visszaszerzéséhez. Figyelmeztetlek azonban, hogy az alant bemutatott eljárás abból az előfeltevésből indul ki, hogy rendelkezel a megfelelő technikai ismeretekkel. Ha az Android SDK telepítésének és az adb shelles használatának már a puszta gondolata is rémülettel teljes borzongással tölt el, akkor innentől inkább ne is olvass tovább.

A teendők

1.) Első és legfontosabb, hogy semmiképpen NE próbáld újratelepíteni a Bitcoin Wallet alkalmazást, mivel ezzel jó eséllyel letörölheted a helyi tárcafájlodat, és akkor valóban végleg búcsút mondhatsz a kulcsaidnak.

2.) Semmiképpen sem kerülheted meg a mobilod rootolását. Jelen cikk írásakor jómagam egy HTC Desire-ral rendelkezek, ezért az unrevoked3-at használtam. Ez elvileg semmit nem töröl a rendszeredről, viszont hozzáférést biztosít az egyébként rejtett fájlokhoz.

3.) Telepítsd az Android SDK-t és válaszd a platformodhoz illő “platform tools”-variánst, hogy hozzájuthass az adb alkalmazáshoz.

4.) Csatlakoztasd a mobilodat USB-kábellel (a rootolását követően valószínűleg úgyis csatlakoztatva hagytad).

5.) Indítsd be a terminált és gépeld be a következő parancsot (a “>”, “$” és “#” jeleket nem kell ténylegesen begépelned, ezeket csak a shellek jelölésére használom).

> cd <abba a könyvtárba, ahova az Android SDK-t telepítetted>
> adb shell
$

az adb shellbe, hogy roottá válj.

$ su
#

Ha a # jelet kapod válaszul, akkor root vagy. Ha nem, akkor próbáld újra az unrevoked3-mal.

6.) Navigálj el a tárcafájl könyvtárához.

Az Andreas Schildbach-féle Bitcoin Walletnél csináld ezt:

# cd /data/data/de.schildbach.wallet/files

Másold ki a titkos kulcsokat tartalmazó fájlt egy olyan helyre, ahol már az adb is elérheti.

# cat key-backup-base58 > /data/local

Észreveheted, hogy a “cp” és az “mv” nem opció a hivatalos Androidok esetében – ezért használjuk helyettük ravaszul a “cat”-et. És igen, próbáltam read-write-ként mountolni a partíciót és abszolúte nem sikerült működésre bírnom.

A Brian Armstrong-féle Android Walletnél csináld ezt:

# cd /data/data/com.bitcoinwallet/files

Másold ki a titkos kulcsokat tartalmazó fájlt egy olyan helyre, ahol már az adb is elérheti.

# cat prodnet.wallet > /data/local/prodnet.wallet

7.) Lépj ki a shellekből (előbb a rootból, majd az adb-ből)

# exit
$ exit

8.) Szedd le a titkos kulcsokat tartalmazó fájlt a készülékről valahova a gépedre.

> adb pull /data/local/key-backup-base58
> cat key-backup-base58

A Schildbach-kulcs sima base58-formátumban tárolja a kulcsokat, amelyek tehát valahogy így néznek ki:

5dsflkjsflklnsdaflsmdflmféleség

Az Armstrong-kulcs már egy kicsit komplikáltabb, mivel az sorosított ECKey-t használ, így csak a BitCoinJ-könyvtár (2.0-ás verziójával) tudtam kiszedni belőle, a DumpWallet.java fájl felhasználásával. Egy IDE-vel és egy debuggerrel kutakodva egy ilyesféleképpen kinéző titkos kulcsot találtam:

42a34b31e9a4eedf56980ee0fc32fe6e675ff7007651ff3féleség

Most már csak ezt a kulcsot kell elhelyezned egy biztonságos helyen.

9:) Importáld a kulcsot az MtGoxszal.

Az MtGox (fiókregisztrálás, ha még nincs, majd a rendkívül rugalmas titkos kulcs-importáló funkciójuk használata) messze a leggyorsabb megoldás. Csak klikkelj rá a “Private key”-re, mint befizetési módra, és másold ki-illeszd be a kulcsod tartalmát. Az MtGox nagyon sok formátumot ismer, és ha felismeri, amit bemásoltál, akkor rövid időn belül az egyenlegeden is rendelkezésedre bocsátja az ahhoz tartozó összeget, amivel így már azt csinálhatsz, amit csak akarsz.

10.) Végül, takarításképp, hogy véletlenül se hagyd hátra magad után a titkos kulcsot, hogy aztán bárki megszerezhesse és kereket oldhasson vele, végezd el még a következőket:

> adb shell
$ su
# cd /data/local
# rm key-backup-base58
# rm prodnet.wallet
# rm prodnet.keychain
# exit
$ exit
> exit

És már készen is vagy.

Ezt kell tehát végigcsinálnod a titkos kulcsaid visszaszerzéséhez; az eljárást teszteltem, és legalábbis jelen cikk írásakor még kiválóan működött. Mivel azonban rövidesen minden titkos kulcs kódolva lesz, ezért a fentieken kívül tisztában kell majd még lenned természetesen a jelszavaddal is, hogy hozzáférhess a titkos kulcsaidhoz.

Forrás: Agile Stack

A lap szövege Creative Commons Nevezd meg! – Ne add el! – Így add tovább! 3.0 licenc alatt áll, felhasználni csak forrásmegjelöléssel, és ide mutató linkkel szabad.