写真をハックしてBTCを取得する(しない)方法

アメリカの芸術家アンディ・バウチ(アンディ・バウチ)のレゴブロックの絵の形の作品に私は注意を引きました。 著者によると、ビットコインを含むさまざまな暗号通貨のウォレットへの秘密鍵は暗号化されています。 資産とウォレットアドレスの価値は、 newmoney.andybauch.comページにあります



着信可



たとえば、最初の価値が60ドルのビットコインの最も明白な写真を撮ります。







秘密鍵をアドレス1HvEJG5JR84MVpncXcDVBqx65uY5odr6fPに暗号化し、そこに〜0.14ビットコイン(〜$ 1200)がありました。



blockchain.infoで、「Radix 6」というテキストプロンプトが表示されます。それを思い出して先に進みます。



鋭い表情で、次の点を調べて確認します。





6文字は、古典的なWIFまたはHEX秘密鍵を270文字でエンコードするには明らかに十分ではありませんが、秘密鍵にはミニフォーマットがあり、わずか30文字で構成され、ブレインウォレットの原則-sha256(「mini_private_key」)に基づいて機能します。



この形式の特徴は、文字Sで始まる必須です。例はS6c56bnXQiBjk9mqSYE7ykVQ7NzrRyです。







最後に、写真を見て、最初の30ブロックの正方形のすべての色を書きます。青色の垂直仕切りを除き、便宜上、色を1文字で指定します:Y =黄色、G =灰色、R =赤色、B =青色、L =明るい青色、 D =ダークグリーン



それは判明します:



'YGR', 'LBY', 'LBL', 'YBR', 'LGY', 'YYY', 'LBY', 'YBL', 'YDY', 'LGY', 'GRG', 'GRR', 'GDR', 'LBD', 'LBY', 'YDL', 'LBG', 'YYB', 'LYY', 'GRL', 'YYD', 'YGR', 'YDR', 'LBD', 'GYD', 'YRR', 'GRY', 'GYD', 'GRR', 'LGG'
      
      





最初の文字がSであり、コーディングが6桁であることがわかっているため、どの色がどの桁を担当しているかを見つける必要があります。



数値変換の場合は、baseconvertパッケージをインストールします



 pip install baseconvert
      
      





文字Sを16進エンコードに変換します



 echo -n "S" | od -A n -t x1 53
      
      





別のユーティリティを使用して結果を6桁のエンコードに変換します



 python3 -m baseconvert --string true --number 53 --input-base 16 --output-base 6 215
      
      





このことから、



 Y = 2 G = 1 R = 5
      
      





問題の半分は解決されました。 あまり時間がないので、残りの3つの値を手動列挙で見つけます。オプションがほとんどなく、プライベートミニキーを発行する小さなスクリプトをすぐに書くからです。



solve.py
 #!/usr/bin/python3 import baseconvert values = ['YGR', 'LBY', 'LBL', 'YBR', 'LGY', 'YYY', 'LBY', 'YBL', 'YDY', 'LGY', 'GRG', 'GRR', 'GDR', 'LBD', 'LBY', 'YDL', 'LBG', 'YYB', 'LYY', 'GRL', 'YYD', 'YGR', 'YDR', 'LBD', 'GYD', 'YRR', 'GRY', 'GYD', 'GRR', 'LGG'] replace = {'Y':'2', 'G':'1', 'R':'5', 'B':'0', 'L':'3', 'D':'4'} #   key = [] base = 6 for char in values: for i, j in replace.items(): char = char.replace(i, j) v = baseconvert.base(char, base, 16, string=True) v = bytearray.fromhex(v).decode('ascii') key.append(v) print(''.join(key))
      
      







起動中...



 python3 solve.py SnoMtVnKbtCGApncmTzEXSep4kD4Gs
      
      





ミニ秘密キーの仕様によれば、最後に疑問符を追加してsha256をハッシュすることにより、その有効性を検証できます。 最初の2文字がゼロの場合、キーは有効と見なされます。



 echo -n SnoMtVnKbtCGApncmTzEXSep4kD4Gs? | sha256sum 00edc14de4c175a2a8ccb213e4d5deee738782a8213c25328a7b035d3c728866
      
      





幸運なことに、秘密鍵は有効です。



次に、 www.bitaddress.orgにアクセスし (非常に高速)、結果の秘密キーをWallet Detailsタブに挿入します。



WIF形式(5KfNkSeQwNgjHr7cRErzDmq5XdUm8qc94YM3iEN5YaMYoA2UGky)の秘密鍵を取得し、ビットコインクライアントにインポートします。







ここに何がありますか?..







おっと...誰かが速くなったことが判明し、賞を受賞しました。 しかし、それでも解決されたタスクからの満足は得られました。

UPD:20ドルと30ドルがSopaXT によって 取得 され ました



All Articles