みんなで!
日本語base64難読化シェル芸
たいちょー
みなさん#!/bin/bash(こんにちはの意)
たいちょー
Twitter : @xztaityozx_001
OITの4年生
/bin/bash在住
母語はC# アイコンステッカーあります
難読化シェル芸 #とは
kanata氏考案のヤバいシェル芸
定義
内部的な動作の手続き内容・構造・データなどを人
間が理解しにくい、あるいはそのようになるよう加
工されたシェル芸のこと。
-- A painter and a black cat より
危険シェル芸の隠蔽、それが難読化シェル芸
危険シェル芸は確かに強力
しかし裸のまま危険シェル芸を書けば当然すぐ見つ
かり火刑台送りとなる
街中をナイフ片手に闊歩するようなものである
難読化はそんな危険シェル芸を隠蔽し危険シェ
ル芸人を守る最強の手段!
dateコマンドを難読化の手法いろいろ
アスキーコード利用型
$'x64x61x74x65‘
cutコマンド利用型
$(ls --help|grep ^M|cut -c4,5,6,16)
その他いろいろ
ここまでは基本ですわ
日本語base64難読化シェル芸 #とは
ぼく(たいちょー)が2017/5/27に行われた
oitLT(大阪工業大学LT)で発表した闇
Base64を使って日本語文字列からコマンド列を
取り出す
例) dateコマンド
$(echo "そずねぞ"|base64|tr -d 44GCg==)
そ → 44Gd
ず → 44Ga
ね → 44Gt
ぞ → 44Ge
日本語base64難読化シェル芸の覚え方
「ず」は「a」である
echo 44G{a..z}|sed 's/ //g'|base64 -d|grep -o .
ず~びまでが列挙されたはず
普通の五十音と並びが違うけど26文字だしアルファベッ
トを覚えることができた皆さんなら余裕
上級編1
44G〇の縛りにとらわれない心
例えば「㏾」をbase64に通すと44++Cg==が得ら
れるので適当に整形して
echo "㏾"|base64|tr -d 44C=|rev
g++
因みに「あ」だとgccが得られるよ
上級編2
日本語base64難読化シェル芸をできるだけ短縮
する
apt mooを今までのやり方で
apt moo → ずどね てとと
短縮すると
ㆩね ㉨と
???????????
手法は上級編1と同じ
ㆩ → 44ap
ね → 44Gt
㉨ → 44mo
と → 44Go
ちょっとまってください
ㆩね ㉨と
これ・・・なんて読むんですか・・・?
既に日本語でなくなってしまった
日本語base64難読化シェル芸の弱点
Base64の仕様上出てこない文字がある
特にシェル芸でよく使いそうなものは
-
*
(){}:;$
スペース
これらはsedとかで例外的に用意しないとダメ
隠蔽された危険シェル芸
破滅の呪文ことrm –rf /
echo "にて ーにた み"|base64|tr -d 44G|sed
's/CA/ /g;s/O8/-/g'|tr -d Cg==
あれ?逆に覚えやすくなってない?
難読化は読みにくく分かりにくくすること
より「読みにくく」より「分かりにくく」を目
指してきたはずなのに
にて -にた み
これは非常に覚えやすい
つまり難読化を求めるあまり逆行進化し
た・・・?
この辺で頭がおかしくなりそうだったのでそっ
とPCの電源を切った
$(echo "ㄇ㋭そブで"|base64|tr -d
44GCg==|sed 's/(.)/L1/g‘)
shutdown

みんなで!Base64難読化シェル芸