夜はさっむい
一年中こんな気候ならいいのに
なんかメールをのぞいたらはてなブログが
そろそろ更新しませんかだってさ
なので最近アツいシェル芸で遊んだお話を書きます
難読化シェル芸という闇
シェル芸界隈に少し前に現れた究極のジャンル 難読化シェル芸
ここ最近はシェル芸で遊ぶときはこの難読化でわくわくしてます
難読化シェル芸ちょっと研究した
難読化を発見したkanata氏に感銘を受けたのでぼくも少しやってみました
その結果 日本語base64難読化シェル芸
とかいう闇を一つ深めたものを生んでしまいました
これをLT大会で話しました
その時のスライドがこれ~~
www.slideshare.net
詳細はスライドに書いてあるんですがまぁここでも
日本語base64難読化シェル芸とは
基本
日本語をbase64エンコードすることで目的のコマンドを得る手法
例えば「あ」をbase64エンコードすると 44GCCg==
が得られる
$ echo "あ" | base64 44GCCg==
またこれを
$ echo "あ" | base64 | sed -E 's@(44|g==)@@g'|awk '{print tolower($1)}' gcc
こうすることでgcc
コマンドが得られる うーんこれはなかなか
これは実はある法則がある
例えば「ら」「り」「る」をbase64に通すとそれぞれ 44KJ
、44KK
、44KL
が得られる
つまり4文字目がアルファベット順になってる(実際は3文字目もだけど)
これを使ってコマンド列をレッツメイク
$ echo "そずねぞ" | base64 | grep -o '[a-z]' | xargs | sed 's@ @@g' date
やったー!
他にもありまぁす
base64を複数通すことで目的のコマンド列をcut
コマンドを使って取り出す手法
これはkanata師のls --helpからdateを取り出す
やつを元にやってみた(上記サイト参照)
それがスライド13ページにあるやつ
$ echo "うんこ"|base64|base64|base64|cut -c 4,27|awk '{print tolower($1)}' sl
#シェル芸 pic.twitter.com/b0OTr9lMj9
— たいちょー (@xztaityozx_001) 2017年5月28日
うんこがSLを走らせる
まさに 産業革命
ちなみに目grepがつらい人たちのために
$ echo "もじれつ"|fold -w1|cat -n|grep ほしいやつ|awk '{print $1}'
これで何文字目かわかるのでcut
しまくろう
これからの展望
なんかうんこを使うのが通例でトレンドなようで、様々なコマンドがうんこから錬成されてるみたいですね・・・ここまでくるとうんこに無限の可能性があるように感じてきます
どうやらシーザー暗号とかopensslを利用する手もあるようなのでそっちも試してみたいですね
日本語base64難読化シェル芸
の方はさらなる隠蔽を目指してコマンド全体を覆いつくせるように模索しているところです
何かわかったらシェル芸勉強会のLTで話してみたいですね