👨‍🍳

CyberChefで遊ぶ

2022/01/02に公開

CyberChefとは

CyberChefとはブラウザで動くデータ加工ツールです。Base64やハッシュ値の計算、16進数への変換と逆変換などのよくある操作から、QRコードを生成やグラフの描画などのあると便利な機能、果ては二次大戦時の暗号機エニグマまで幅広い機能が実装されています。
インストール不要で使え、データ加工の操作の内容(レシピと呼ばれています)と入力したデータはURL内に格納されるため簡単に共有することもできます!
今回はこれを使って遊んでいきたいと思います。

ヘンテコエンコード

任意のデータを絵文字に変換できるレシピを作ってみました。Inputにデータを入力するとOutputに絵文字列が現れます。今回は StudioAquatan ~あくあたん工房~ を入力にします。
https://gchq.github.io/CyberChef/#recipe=To_Hex('Line feed',0)Fork('\\n','',false)Find_/_Replace({'option':'Regex','string':'(.*)'},'26$1',false,false,true,false)From_Charcode('Space',16)Merge()&input=U3R1ZGlvQXF1YXRhbiB%2B44GC44GP44GC44Gf44KT5bel5oi/fg

すると ♓♴♵♤♩♯♁♱♵♡♴♡♮☠♾⛣⚁⚂⛣⚁⚏⛣⚁⚂⛣⚁⚟⛣⚂⚓⛥⚷⚥⛦⚈⚿♾ に変換されます!

このエンコーダは、unicodeのコードポイントの上1バイトを0x26にし、下1バイトにデータを置くことで実現しています。なのでデコードはunicodeのコードポイントの下1バイトのみを取り出せばよいことになります。
https://gchq.github.io/CyberChef/#recipe=Fork('','',false)To_Charcode('Space',16)Drop_bytes(0,2,false)Merge()From_Hex('Space')&input=4pmT4pm04pm14pmk4pmp4pmv4pmB4pmx4pm14pmh4pm04pmh4pmu4pig4pm%2B4puj4pqB4pqC4puj4pqB4pqP4puj4pqB4pqC4puj4pqB4pqf4puj4pqC4pqT4pul4pq34pql4pum4pqI4pq/4pm%2B
ちゃんと元に戻せました!

秘密の文章

あくあたん工房のロゴ画像に秘密の文章を埋め込んでみました。
https://gchq.github.io/CyberChef/#recipe=Add_Text_To_Image('Secret text','None','None',0,0,32,'Roboto',255,255,255,1)Render_Image('Raw')
秘密の文章入りあくあたん工房のロゴ画像

CyberChefの "View Bit Plane" 使うことで隠された文字を見ることができます。
https://gchq.github.io/CyberChef/#recipe=View_Bit_Plane('Red',0)Render_Image('Raw')

結果

これは文字を画像に非常に薄い色で描きこむことで肉眼では見えない文字を書き込んでいます。"View Bit Plane" を使って最下位ビットのみを白黒で表示させると見ることができます。

画像をANSIアート化してターミナルに表示する

ターミナルに表示される文字に色がついていることがあると思いますが、それは大体ANSIエスケープシーケンスを使って実現されているものです。これを使うと背景色を指定することができ、スペース文字の背景色を指定することでドット絵のようなものをターミナル上に表示することができ、これをANSIアートといいます。
画像をANSIアートに変換するレシピを作ってみました。
https://gchq.github.io/CyberChef/#recipe=Contain_Image(80,48,'Left','Middle','Bicubic',false)Resize_Image(80,24,'Pixels',false,'Bilinear')Extract_RGBA(',',false)From_Decimal('Comma',false)To_Hex('Space',240)Fork('\\n','\\\\n',false)From_Hex('Auto')To_Decimal('Space',false)Find_/_Replace({'option':'Regex','string':'([0-9]%2B) ([0-9]%2B) ([0-9]%2B)\\s*'},'\\e[48;2;$1;$2;$3m ',true,false,false,false)Find_/_Replace({'option':'Regex','string':'$'},'\\\\e[0m',false,false,false,false)Merge()Comment('echoコマンドを使わない場合は以下の "Find/Replace" を消す。')Find_/_Replace({'option':'Regex','string':'(.*)'},'echo -e \'$1\'',false,false,false,false)

試しにあくあたん工房のロゴを入力してみました。

出力されたコマンドは大きすぎたのでGistに貼り付けました。
あくあたん工房ロゴ表示コマンドのGist
実行してみると……

ちゃんと表示されました!

終わりに

思いついたレシピをいくつか作ってみましたが、いかがだったでしょうか?CyberChefはほかにもいろいろできて便利で楽しいツールなのでぜひ使ってみてください。

Discussion