この投稿はUDHI-LAB++; Advent Calender 2022 7日目の記事です
なんで?
CTFを授業で取り扱っていた際に新しい問題の作成に悩み、たどり着いたのがQRコードを細切れにして解読するお話でした。
割と苦行なのですが、実際やってみると絶対読めないように思えるQRコードも頑張れば解読できることが楽しくなっていきます。(白目)
(QRを読むためだけの知識のため、浅いところが多いです…)
ここから大量に細切れにされたQRコードが何度か出てきます。
気持ち悪くなったらすみません。
本題
ここからは別のQRでまずは僕が解析によく使っているQRコードの決まりを説明していきます。
一番目立つところから行くとファインダパターン
左上、左下、右上に配置されている三つです
次にアライメントパターン
右下中央寄りに配置されています
そしてタイミングパターン
規則的に並んでいるやつです
最後にフォーマット情報
これは左下から右上と左上のパターンが同じになるので一番助けられます
この知識を前提として
まずは僕の作ったツールに29x29分打ち込んでいきます。
そうしたら、明らかなファインダパターンから揃えていきます。
その時点でここまで確定し、ほかも結構絞れます
そしてアライメントパターンとフォーマット情報から解読を進めていきます
右側のファインダパターンの間は2分の1なので両方試して埋めてしまいます
なんだか答えが見えてきましたね…
ここからはタイミングパターンとアライメントパターンを見て埋めていきます
と、後半は総当たり気味ですが、こんな風に解読することができました!!
最後に
これでもしQRコードをシュレッダーにかけてしまったとしても読めますね!!!
今回はツールを作った話をする予定が問題の解き方になってしまいました…
もし細切れのQRコードに出会ったときはこのツールで解読してあげてください()