Encryption

如何使用 dmtxread 讀取掃描的數據矩陣?

  • December 30, 2016

我正在嘗試讀取從私有 2096 位加密 RSA 密鑰生成的數據矩陣。

gpg使用以下命令生成密鑰並列印為 PDF:

gpg --export-secret-key MY_PRIVATE_KEY_ID | paperkey --output-type raw | dmtxwrite -e 8 -f PDF > ~/key.pdf

然後我列印key.pdf並掃描它,生成以下 jpg 文件:

在此處輸入圖像描述

我現在想使用以下命令重新創建我的私鑰:

dmtxread /path/to/image.jpg | paperkey --pubring ~/.gnupg/pubring.gpg > my-regenerated-private-key.gpg

但是,該命令dmtxread不列印任何內容stdout並返回1. 我嘗試使用 修正錯誤,使用-C 10000降低旋轉容差-q 5,並增加圖像的畫布大小以增加矩陣左右空白像素的數量。我還嘗試了更大解析度的掃描(我不知道 DPI,但它是 4MB,並且正方形非常明確)並使用 和 調整對比度容差-t 20-t 5所有結果都相同(儘管我不得不跳過像素使用-S 5使用這個大文件讓它在 < 30 分鐘內完成)。

我嘗試使用--verbose但沒有列印任何內容stdout(或據我所知的任何診斷文件)。

我還嘗試了-D生成診斷圖像的選項。我不太確定結果如何:

在此處輸入圖像描述

顯然,它正在與一些界限作鬥爭,但我不確定為什麼或如何變得dmtxread更健壯。

我的下一步是嘗試使用恢復的私鑰解密一個虛擬文件,但顯然我並沒有走得那麼遠。

令人失望的是,這太難了。如果使用命令行工具沒有簡單的方法可以做到這一點libdmtx,也許還有另一個工具可以為我做到這一點?

重要:不用說我永遠不會使用這個私鑰進行任何實際的加密,因為我已經在網上分享了它。你永遠不應該分享你的私鑰。

看起來,我設法從您的圖像中獲取數據。

我做了以下事情:

  1. 用 GIMP 打開
  2. 顏色 -> 門檻值
  3. 將滑塊定位在中心附近(我不記得我選擇的確切值),然後點擊確定
  4. 圖像 -> 畫布大小
  5. 選擇百分比
  6. 帆布尺寸:寬度:160 %
  7. 帆布尺寸:高度:120 %
  8. 偏移:點擊“中心”
  9. 點擊調整大小
  10. 工具 -> 變換工具 -> 旋轉工具
  11. 角度:-0.50 並點擊“旋轉”(在此之前添加垂直參考線很有用)
  12. 文件 -> 導出為
  13. 選擇文件名並點擊導出,然後點擊導出(使用所有預設值)

這是我在完成所有這些步驟後得到的圖像:

固定掃描

執行 dmtxread 會立即給出結果(不到一秒):

dmtxread --shrink=2 c8wcN1B.jpg &gt; quant.paperkey

大小為 1428 字節,前兩個八位字節看起來像二進製紙密鑰格式。

要驗證生成的文件,您可以在此處下載

引用自:https://unix.stackexchange.com/questions/252957