2次元コードの作成と解読
CTFで2次元コードが出題されることがあり、自分の勉強のために2次元コードを調べてみました。調べてわかったのですが、とにかく2次元コードは種類が多いので、本投稿では有名なコードにしぼり記載します。合わせて、各種コードの作成方法と解読方法も載せておきます。なお、これらのコマンド/プログラムの動作確認はUbuntu20.04で行っています。
コードの種類
https://qiita.com
を各種2次元コードでコード化してみました。
コード名 | コード | 規格 |
---|---|---|
qrcode | ISO/IEC18004:2015 | |
azteccode | ISO/IEC24778:2008 | |
datamatrix | ISO/IEC16022:2006 | |
maxicode | ISO/IEC16023:2000 | |
pdf417 | ISO/IEC15438:2015 |
コードの作成
treepoemというライブラリを使います。
- インストール
pip install treepoem
- 作成
treepoem -o qrcode.png -t qrcode "https://qiita.com"
import treepoem
code = treepoem.generate_barcode(barcode_type='qrcode',data='https://qiita.com')
code.save('qrcode.png')
※treepoemにはもっと多くのコードが入っていますので、興味があれば調べてみるといいかもしれません。
コードの解読
ZXing(ゼブラクロッシング)はGoogle社製のオープンソースのライブラリで、1次元・2次元コードの解読ができます。今回はこれを使います。
- インストール
ZXingはJAVA上で動作するためJAVAのインストールが必要です。
apt install default-jre
pip install zxing
- 解読
解読のプログラムを記載します。コードの種類判別は自動です。
zxing code.png
import zxing
reader = zxing.BarCodeReader()
code = reader.decode('code.png')
print(code.raw)
Author And Source
この問題について(2次元コードの作成と解読), 我々は、より多くの情報をここで見つけました https://qiita.com/uneyamauneko/items/e56161cda3c8eaf248a2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .