Submit Search
Upload
超・記号オンリー難読化シェル芸
•
1 like
•
7,987 views
X
xztaityozx
Follow
2018/04/07に開催された第35回シェル芸勉強会の大阪サテライトでLTしたときに使った資料です
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 29
Download now
Download to read offline
Recommended
L8&9 position in the room and town part1
L8&9 position in the room and town part1
MikiUoN17
終わりを出力するコマンドつくった
終わりを出力するコマンドつくった
xztaityozx
ワタナベ難読化シェル芸
ワタナベ難読化シェル芸
xztaityozx
呪符式高速詠唱シェル芸2
呪符式高速詠唱シェル芸2
xztaityozx
呪符式高速詠唱シェル芸
呪符式高速詠唱シェル芸
xztaityozx
surgeコマンド作りました
surgeコマンド作りました
xztaityozx
ナーベンシュタイン距離 ~グラフを添えて~
ナーベンシュタイン距離 ~グラフを添えて~
xztaityozx
あの、selのリベンジをさせてください
あの、selのリベンジをさせてください
xztaityozx
Recommended
L8&9 position in the room and town part1
L8&9 position in the room and town part1
MikiUoN17
終わりを出力するコマンドつくった
終わりを出力するコマンドつくった
xztaityozx
ワタナベ難読化シェル芸
ワタナベ難読化シェル芸
xztaityozx
呪符式高速詠唱シェル芸2
呪符式高速詠唱シェル芸2
xztaityozx
呪符式高速詠唱シェル芸
呪符式高速詠唱シェル芸
xztaityozx
surgeコマンド作りました
surgeコマンド作りました
xztaityozx
ナーベンシュタイン距離 ~グラフを添えて~
ナーベンシュタイン距離 ~グラフを添えて~
xztaityozx
あの、selのリベンジをさせてください
あの、selのリベンジをさせてください
xztaityozx
Owari version 2.0 をつくりました
Owari version 2.0 をつくりました
xztaityozx
実績を達成しました!
実績を達成しました!
xztaityozx
ワタナBase59
ワタナBase59
xztaityozx
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよ
xztaityozx
ワタナベシェル
ワタナベシェル
xztaityozx
柿と杮
柿と杮
xztaityozx
難読化PowerShell芸入門
難読化PowerShell芸入門
xztaityozx
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
xztaityozx
~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!
xztaityozx
CLIツール作るの楽しい
CLIツール作るの楽しい
xztaityozx
レッツゴー難読化シェル芸
レッツゴー難読化シェル芸
xztaityozx
部活でシェル芸がはやらない
部活でシェル芸がはやらない
xztaityozx
潜入工作任務用シェル芸
潜入工作任務用シェル芸
xztaityozx
ダブルシンク難読化シェル芸
ダブルシンク難読化シェル芸
xztaityozx
破壊的難読化シェル芸
破壊的難読化シェル芸
xztaityozx
みんなで!Base64難読化シェル芸
みんなで!Base64難読化シェル芸
xztaityozx
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
xztaityozx
難読化シェル芸
難読化シェル芸
xztaityozx
More Related Content
More from xztaityozx
Owari version 2.0 をつくりました
Owari version 2.0 をつくりました
xztaityozx
実績を達成しました!
実績を達成しました!
xztaityozx
ワタナBase59
ワタナBase59
xztaityozx
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよ
xztaityozx
ワタナベシェル
ワタナベシェル
xztaityozx
柿と杮
柿と杮
xztaityozx
難読化PowerShell芸入門
難読化PowerShell芸入門
xztaityozx
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
xztaityozx
~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!
xztaityozx
CLIツール作るの楽しい
CLIツール作るの楽しい
xztaityozx
レッツゴー難読化シェル芸
レッツゴー難読化シェル芸
xztaityozx
部活でシェル芸がはやらない
部活でシェル芸がはやらない
xztaityozx
潜入工作任務用シェル芸
潜入工作任務用シェル芸
xztaityozx
ダブルシンク難読化シェル芸
ダブルシンク難読化シェル芸
xztaityozx
破壊的難読化シェル芸
破壊的難読化シェル芸
xztaityozx
みんなで!Base64難読化シェル芸
みんなで!Base64難読化シェル芸
xztaityozx
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
xztaityozx
難読化シェル芸
難読化シェル芸
xztaityozx
More from xztaityozx
(18)
Owari version 2.0 をつくりました
Owari version 2.0 をつくりました
実績を達成しました!
実績を達成しました!
ワタナBase59
ワタナBase59
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよ
ワタナベシェル
ワタナベシェル
柿と杮
柿と杮
難読化PowerShell芸入門
難読化PowerShell芸入門
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!
CLIツール作るの楽しい
CLIツール作るの楽しい
レッツゴー難読化シェル芸
レッツゴー難読化シェル芸
部活でシェル芸がはやらない
部活でシェル芸がはやらない
潜入工作任務用シェル芸
潜入工作任務用シェル芸
ダブルシンク難読化シェル芸
ダブルシンク難読化シェル芸
破壊的難読化シェル芸
破壊的難読化シェル芸
みんなで!Base64難読化シェル芸
みんなで!Base64難読化シェル芸
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
難読化シェル芸
難読化シェル芸
超・記号オンリー難読化シェル芸
1.
超・記号オンリー難読化シェル芸 たいちょー
2.
みなさん#!/bin/bash(こんにちはの意) たいちょーです @xztaityozx_001 母語はC# 胃下垂かもしれなくて悲しい
3.
最近の難読化事情(フィクション) いくら難読化を行ったところで随所に現れるコ マンド列が難読化の可読化をしていた ls --helpから始まるもんなら 「ははーんさてはdateだな?」 そうでなくてもls --helpの出力から何か作ろうとし ているのが分かる
4.
難読化過激派の暴走 いったんは落ち着いた難読化の流れ 人間一時は納得しても、それに慣れると「もっと もっと」と欲張るのです 十分に難読化されたこれまでの手法では 「たりぬ」 結果、暴走
5.
記号オンリー難読化シェル芸 前回のシェル芸勉強会で少しだけお話しさせて いただいたkanataさんの獄炎 アルファベット2文字と記号と1、2だけでシェル 芸をする。 https://raintrees.net/news/114
6.
dateコマンドの例 普通の難読化シェル芸 $(printf "%b" $(printf
'%s%x' '¥x' $((0x83 ^ 0xe7))))$(ls --help|grep ^G|cut -c53)$(ls -- help|grep ^G|cut -c10)$(ls --help|grep ^G|cut - c8) まだわかる
7.
dateコマンドの例 A,z,記号,1,2のみの難読化シェル芸 A=$(. 2>&1);A=${A##*.};${A:$((++z*++z*++z*z- z+++z)):$((z=z^z||++z))}${A:$((++z*++z--- z)):$((z=z^z||++z))}${A:$((++z*++z*z)):$((z=z^z||+ +z))} --
{z..A};${@:$((++z*++z*++z---z+++z--- z+++z---z)):$((z=z^z||++z))}${@:$((++z*++z*++z--- z+++z---z+++z)):$((z=z^z||++z))}${@:$((++z+++z+-- z)):$((z=z^z||++z))}${@:$((++z*++z*++z---z+++z--- z)):$((z=z^z||++z))} 何もわからない。見えない
8.
手法の説明 A=$(. 2>&1) 無から有を生み出すすべての源 後のために命の泉と名付けます A=${A##*.}; 環境に依存する文字列を取り除く Aには"filename [arguments]"だけが残る
9.
手法 変数展開を利用してブレース展開をつくればOK kanataさんによると set -- {z..A} でいいらしいので変数Aを使って ${A:19:1}${A:4:1}${A:18:1}
-- {z..A}
10.
手法 結果は z y x
w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A 何でもできそう
11.
課題だったところ 変数Aや${A:19:1}${A:4:1}${A:18:1} -- {z..A} などが問題 ここにはなんとアルファベットが2文字もあるの でまだまだ読める ホンマか
12.
超・記号オンリー難読化シェル芸 本当に課題なのか解りませんがなんとかアル ファベットを削ってみました 基本のやり方は前述までと同じです
13.
変数A 変数名にAを使っていたので削ります。 代わりに使えるものを記号群から探す必要があ ります 大体は式の一部だったり特殊変数だったりで使えま せん
14.
変数にできる記号 しかし変数群の中に2つ以上つなげれば変数に使 える記号がありました だ~れだ 時間切れです 正解は_(アンダーバー)です
15.
変数__ $_は直前のコマンドの引数がはいるので使えま せんが$__は変数として使えます $___も使えるので実質変数は無限個作れる 変数Aを消せた
16.
ブレース展開に使うやつを消す set -- {z..A}で使っていたz,Aを削ります ブレース展開をどうにかして表現しようと思っ たのですが無理だったので別のアプローチをと りました
17.
filename [arguments]で表現できるコマンド きれいなWSLのbinにあるやつから探しました ls /bin
/usr/bin -1| grep -v "[^ a|e|f|g|i|l|m|n|r|s|t|u]" 使えるコマンドが64個ありました 結構ありますね
18.
mtコマンド 今回採用したのはmtコマンドです 磁気テープ?を操作?するコマンド これを命の泉から作ります Usageが出力されます あとのためにこれをマナと名付けます
19.
mtのUsage Usage: mt [OPTION...]
operation [count] Try `mt --help' or `mt --usage' for more information. l,s,--helpがあるのでls --helpが使えます 後のためにls --helpの出力を世界樹と名付けます
20.
世界樹に含まれる文字 サクッと調べてみます ls --help|grep -o
.|sort -u|tail -58|tr -d '¥n' 出力は以下みたいになってました 012345678aAbBcCdDeEfFgGhHiIkKlLmMnNoOpPqQrRsS tTuUvwWxXyYzZ
21.
世界樹の出力を得る記号難読化ワンライナー __="$(. 2>&1)"; __=${__##*.}; ___=($(${__:2*2+2+1:1}${__:2*((1+2)*(1+2)):1} 2>&1));
${___[2*2*2-1]:2+2:1}${___[1-1]:1:1} ${___[2*2*2-1]:1-1:2*2+2}|${___[1- 1]:1+2:1}${___[2+2+1]:1:1}${___[1- 1]:2+2:1}${___[1+2]:1:1} -${___[1+2]:1- 1:1} .|${___[1-1]:1:1}${___[2*2*2]:1- 1:2}${___[1]:1:1} ${___[11- 1]:1:2}|${___[1]:1:1}${___[1-1]:2:1}${___[12+1]:1- 1:1}${___[2*2*2-1]:2+2:1} -$((22*2+12+2))
22.
世界樹に含まれない文字 j,J,V,9がありませんでした・・・ しかし世界樹をちぎればevalが作れるのでブレース 展開ができますね z=z; A=A eval echo
{$z..$A} z y x w v u t s r q p o n m l k j i h g f e d c b a ` _ ^ ] [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A 9は計算すればいいですね
23.
というわけで 0123456789,a~z,A~Zが作れました。 いえ~い あとはお好みで数字の部分を変数の算術演算に して完全に記号のみにするか、1と2は許してし まうかを選んで好きなコマンドを作り上げます
24.
注意:dateコマンドです ____=($(__="$(. 2>&1)"; __=${__##*.}; ___=($(${__:2*2+2+1:1}${__:2*((1+2)*(1+2)):1}
2>&1)); ${___[2*2*2-1]:2+2:1}${___[1-1]:1:1} ${___[2*2*2-1]:1- 1:2*2+2}|${___[1-1]:1+2:1}${___[2+2+1]:1:1}${___[1- 1]:2+2:1}${___[1+2]:1:1} -${___[1+2]:1-1:1} .|${___[1- 1]:1:1}${___[2*2*2]:1-1:2}${___[1]:1:1} ${___[11- 1]:1:2}|${___[1]:1:1}${___[1-1]:2:1}${___[12+1]:1- 1:1}${___[2*2*2-1]:2+2:1} - $((22*2+12+2))));${____[11+2+2]}${____[2*2*2+1]}${____[2 2*2+1]}${____[12+2*2+1]}
25.
解説 ____=( $(__="$(. 2>&1)" __=${__##*.} ___=( $(${__:2*2+2+1:1}${__:2*((1+2)*(1+2)):1}
2>&1) ) ${___[2*2*2-1]:2+2:1}${___[1-1]:1:1} ${___[2*2*2-1]:1-1:2*2+2}| ${___[1-1]:1+2:1}${___[2+2+1]:1:1}${___[1-1]:2+2:1}${___[1+2]:1:1} -${___[1+2]:1-1:1} .| ${___[1-1]:1:1}${___[2*2*2]:1-1:2}${___[1]:1:1} ${___[11-1]:1:2}| ${___[1]:1:1}${___[1-1]:2:1}${___[12+1]:1-1:1}${___[2*2*2-1]:2+2:1} -$((22*2+12+2)) )); ${____[11+2+2]}${____[2*2*2+1]}${____[22*2+1]}${____[12+2*2+1]} 命の泉 mt => マナ ls --help => 世界樹 grep -o . sort -u tail -n58 dateコマンド
26.
ちなみに eval echo {y..A}でいいならマナからも作れま す。 mt
--helpにe,v,a,c,h,o,l,y,Aが含まれるのでそこ から錬金すればいいです
27.
超・記号オンリー難読化シェル芸 良いところ 読めない 数字もつくれる 悪いところ 読めない 長い
28.
呪文か何かなのか・・・? 実験中はこれまでで最高に呪文感が強くて頭が おかしくなりそうでした 今回はmtを使いましたが他の64個から始めても いいと思います mt始動とかls始動とか名前を付けよう!
29.
今後の課題 スマートじゃない mt始動は結局ls --helpに頼るのでカッコよくない set --
{z..A}はシンプルでカッコいい 難読化なのにシンプルとは なにもわからない
Download now