距離310枚比特幣,你只差一步

距離310枚比特幣,你只差一步

2018年10月3日,一名匿名土豪在Reddit論壇上,發起了一個名為「比特幣挑戰(Bitcoin Challenge)」,宣布將310枚比特幣藏於下圖,只要破解密碼,誰就可以轉走圖中隱藏的310枚比特幣(按照比特幣最近幾日的平均價格,價值約1500萬人民幣),瞬間走上人生的一個小巔峰。

帖子發布後不到幾分鐘,各大新聞媒體網站和比特幣論壇爭相轉發。這個挑戰就像一針雞血,讓近日「死氣沉沉」的幣圈再次喧鬧起來,不論是小白還是技術大咖都加入了這浩浩蕩蕩的「奪寶」大軍。

看這架勢,不禁讓我想起了兩部電影《頭號玩家》和《達·芬奇密碼》的情節。在《頭號玩家》中,超級富豪(詹姆斯哈利迪)臨終前宣布,它在遊戲中設計了一個彩蛋,只要獲得三把鑰匙,就可以解開彩蛋,成為綠洲的繼承人。而在《達·芬奇密碼》中,哈佛大學宗教符號學教授羅伯特·蘭登在破案時,發現達·芬奇畫作中隱藏一系列神秘的符號,只要解開了這些符號,就能了解到歷史上許多未解之謎的真相。

而如今,區塊鏈和比特幣這個結合了加密學、密碼學等等先進技術的行業正在悄悄改變人們的生活。電影中的虛擬劇情,正悄然在比特幣的世界發生。

310枚比特幣的解謎挑戰

這次比特幣解謎挑戰一共分為4關,第一關0.1BTC,第二關0.2BTC,第三關0.31BTC,第四關310BTC。

第一關和第二關在帖子發布後的1天和5天後相繼被打破,而最難的一關也在今天10月11號,被人解破。目前第二關和第四關的解答者還沒有放出攻略,那我們先來看看第一關的破解思路。

首先,將圖片用GIMP打開,然後新建一黑一白兩個新圖層,並將「提取通道」設置為「Alpha」,最後將色階調至253到254中間,設置完成後會發現整個圖片只剩下了一行線與一個二維碼,這條線應該是對應一個2進位數字,而二維碼是一個網址。我們掃描這個二維碼會得到一個網址 bitcoinchallenge.codes/。進入這個網址之後,我們可以與發布者進行交流。

bitcoinchallenge.codes/ (二維碼自動識別)

然後,在最初的圖中,有一條比較明顯的線索,最明顯的一個線索,18個數字的九宮格。與此同時,在表格正上方,有一串隱藏的字元(圖中紅色圈處),OCT 2 2018,也就是20181002。如果將這一串數字作為一個Shift Key,將18宮格中的數字套進去,我們會得到下列這一串數字。我們可以很清楚的看到第一行有6個310,對應著310BTC。

除開第一行310的彩蛋(對應310枚比特幣),第二行第三行的構成形式很像16進位。我們將16進位轉化為10進位之後,可以得出下圖的12個數字。

12代表著什麼?相信許多資深的幣友已經察覺到了,助記詞的數量!用數字一一對應助記詞表(github.com/bitcoin/bips)對應的助記詞。可以得出:

將助記詞輸入錢包地址(1446C8HqMtvWtEgu1JnjwLcPESSruhzkmV)之後,就可以提取第一關的獎勵0.1BTC啦!當然早就已經被一位解謎高手取走啦!

至於第二關和第四關是怎麼破解的,讓我們靜靜等待解謎高手們之後放出來的教程。

歷史上的比特幣解謎圖片

這並不是第一次比特幣解謎競賽,接下來,讓我們來回顧一下過往的幾次比特幣解謎大賽。

2015年,@coin_artist從莎士比亞的愛情長詩《鳳凰與斑鳩》中獲得靈感,創作了畫作《Torched H34R7S》,並將5個BTC的秘鑰藏在其中。

原作者將比特幣私鑰信息分兩部分藏在圖片中,一部分藏在四周的火焰中,一部分藏在右下角的彩帶中。

在2018年2月,終於被一對程序員夫婦所破解,下面是破解思路:

1. 將《鳳凰與斑鳩》中的一段長為24位的詩句「beauty, truth and rarity(美麗、真相和珍貴)」變形為「b34u7y, truth, and rarity」,然後加在錢包52位的明文私鑰前,合成76位的字元串。將這個字元串轉換為一個長為608(76*8)的二進位數字。

2. 將608位二進位數字與「變形秘鑰」做亦或運算得到一個新的608位二進位數字。

3. 設置一個長為6位的「變形秘鑰」011010按長短隱藏在這六條紅絲帶中。

4. 每個火焰有四個屬性:外焰顏色、內焰顏色、寬窄、長短。每個屬性的兩個特徵都可以用二進位0或1表示: 紅色外焰:0 黃色外焰:1 紫色內焰:0 綠色內焰:1 寬:0 窄:1 短:0 長:1。

將152個火焰按順序轉換為608位二進位數字後,用變形秘鑰轉換為原本的608位二進位數字,然後將二進位數字變為「b34u7y, truth, and rarity+52位明文私鑰」的字元串。減去前面的「b34u7y, truth, and rarity」就得到了私鑰。

除此以外,還有一些正在進行中的解謎遊戲,例如New Money, 下圖是一名洛杉磯藝術家用10萬塊樂高拼成的作品,其中含有價值約1W美元的多種加密貨幣。

(遊戲地址:andybauch.com/exhibitio

有興趣的朋友可以嘗試一下。

通用的解謎手法

接下來,給大家科普一下幾個簡單的解謎手法,萬一就用上了呢!!!

1. 行列像素點置亂方法,

該方法將原圖中的像素信息進行了重新排布——置亂。通過一一對應的關係可以恢復原來的圖像,此時的秘鑰即為行列變換的映射向量Mchange和Nchange。

簡單的MATLAB程序如下:

clc,clear all,close all

Lena = imread(Lena512.bmp);

figure;imshow(Lena)

title(原圖)

[M,N] = size(Lena);

Rm = randsample(M,M);

Mchange = [1:1:M;Rm];

Rn = randsample(N,N);

Nchange = [1:1:N;Rn];

%打亂行順序

Lena (Mchange(1,:),:) = Lena (Mchange(2,:),:);

figure;imshow(Lena)

title(行加密後圖像)

%打亂列順序

Lena (:,Nchange(1,:)) = Lena (:,Nchange(2,:));

figure;imshow(Lena)

title(列加密後圖像)

%列變換還原

Lena (:,Nchange(2,:)) = Lena (:,Nchange(1,:));

figure;imshow(Lena)

title(列解謎後圖像)

%行變換還原

Lena (Mchange(2,:),:) = Lena (Mchange(1,:),:);

figure;imshow(Lena)

title(解謎後圖像)

2. Base64位解謎

最簡單的加密方式,沒有密鑰,這種方式只要讓別人拿到你的密文,就可以直接解謎,只能用來迷惑,一般情況下不單獨使用,因為真的並沒有什麼卵用~可以和其他加密方式混合起來,作為一層外部包裝。

import base64data = "abc"

#加密

m = Base64.encodestring(data)

print m #得到一個base64的值

#解謎

date = Base64.decodestring(m)

3. 進位之間的轉換。

比特幣的視覺謎題說到底還是基於程序和代碼的。那麼基於二進位的0和1兩個數字就顯得尤為重要。因此2進位,10進位,和16進位之間的轉換必然會涉及的。

在解謎過程中,我們也要注意不要被固有的邏輯所局限,有時候跳出思維框架,或者暮然回首,就能發現那個在燈火闌珊處的答案。

想要了解更多,歡迎各位關注我,加我v,拉你進社群交流!

推薦閱讀:

TAG:比特幣Bitcoin | 貨幣 |