SlideShare a Scribd company logo
1 of 18
Download to read offline
ワタナBase59
たいちょー
皆さん︕#!/bin/bash︕(こんにちはの意)
たいちょーです
Twitter: @xztaityozx_001
GitHub: xztaityozx
ゆるふわお嬢様系難読化シェル芸⼈です
さて、12⽉ですね
12⽉開催のシェル芸勉強会LTで話すことといえば
ワタナベ難読化シェル芸
ワタナベ難読化シェル芸 #とは
ワタナベさんの「ナベ」が多すぎることから⽣まれた「ナベ」によるエンコーデ
ィング
2018/12 ワタナベ難読化シェル芸
https://www.slideshare.net/xztaityozx/ss-126519906
https://github.com/xztaityozx/noc
2019/12 ワタナベシェル
https://www.slideshare.net/xztaityozx/ss-211896776
https://github.com/xztaityozx/nabesh
ナベの異体字
Q:「いうてもそんなにナベおおくないっしょw」
A:「そうだねw」
異体字セレクタで表せるナベは全部で56個です
noc のアルゴリズム
過去のスライドが詳しいのでそっちで説明します(P18~)
(再掲)︓ https://www.slideshare.net/xztaityozx/ss-126519906
noc の弱点
マルチバイト対応できてない
おや︖出来ているのでは︖
$ echo うんこ | noc
部邊邊邊邉邉邉邊邊邊邉邉邉邊邊邊邉邉邉部
実はアップデートで、マルチバイト部はBase64してからワタナベエンコードする
ように変えた
これなんかちょっと残念じゃないですか︖
マルチバイトをちゃんと考えたエンコードしたい…
したいですね…
したいならするしかないですね…
できました
wbase59
https://github.com/xztaityozx/wbase59
ワタナベとbase64/58の夢のコラボレーション
まずは試してみましょう
$ echo うんこ | wbase59
邊邊邊辺邊辺邊邊辺邊邊邊邉邊辺辺邉辺邊邊邊辺邊辺辺邉辺邉邊辺
base64のアルゴリズム
1. バイト列を6ビットずつに切り分ける。⾜りない部分は0で埋める
2. テーブルにしたがって変換する(2^6 = 64)
3. 4⽂字ずつに分ける。⾜りない分は = で埋める
base58
base64から数字の 1 とか⼩⽂字のエル l など、間違えやすい⽂字を排除したやつ
2のべき乗個じゃないので、ちょっとアルゴリズムが違う
超簡単な説明
1. バイト列をでかい数値としてみる
2. 58で割った余りをテーブルにしたがって⽂字に変える
3. 商が0になるまでやる
wbase59はどうするの︖
異体字(56個)+異体字セレクタの無いナベ(3個)で表す
2のべき乗個ではないので、base58みたいな⽅針が必要
ちょっと⼯夫も⼊れたい
かんたんな wbase59 あるごりずむ せつめい
1. 8ビットずつに分ける
2. 8ビットを3で割った余りをテーブルに従って無いナベに変換する(= フラグナベ )
0 => 辺
1 => 邊
2 => 邉
3. 8ビットを10進数とみてから56で割り、その余りをテーブルに従って変換( セクシ
ョンナベ )
4. 8ビットのエンコード結果として フラグナベ+セクションナベ を出⼒する
ええところ
マルチバイト対応
デコード時に、フラグナベを使ってセクションナベの誤り検出ができる(パリティ
ナベ)
あかんところ
エンコード結果が⻑くなりがち
実装が駄⽬。末尾に勝⼿に改⾏を⼊れちゃう
さっき気づいて汗かいてる
おわり
良いワタナベエンコードが出来たと思います
これでワタナベネイティブな環境のシェル(例えばnabesh)でも⼤丈夫ですね。
是⾮お試しください

More Related Content

More from xztaityozx

Owari version 2.0 をつくりました
Owari version 2.0 をつくりましたOwari version 2.0 をつくりました
Owari version 2.0 をつくりましたxztaityozx
 
実績を達成しました!
実績を達成しました!実績を達成しました!
実績を達成しました!xztaityozx
 
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよxztaityozx
 
ワタナベシェル
ワタナベシェルワタナベシェル
ワタナベシェルxztaityozx
 
難読化PowerShell芸入門
難読化PowerShell芸入門難読化PowerShell芸入門
難読化PowerShell芸入門xztaityozx
 
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!xztaityozx
 
終わりを出力するコマンドつくった
終わりを出力するコマンドつくった終わりを出力するコマンドつくった
終わりを出力するコマンドつくったxztaityozx
 
ワタナベ難読化シェル芸
ワタナベ難読化シェル芸ワタナベ難読化シェル芸
ワタナベ難読化シェル芸xztaityozx
 
~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!xztaityozx
 
CLIツール作るの楽しい
CLIツール作るの楽しいCLIツール作るの楽しい
CLIツール作るの楽しいxztaityozx
 
レッツゴー難読化シェル芸
レッツゴー難読化シェル芸レッツゴー難読化シェル芸
レッツゴー難読化シェル芸xztaityozx
 
超・記号オンリー難読化シェル芸
超・記号オンリー難読化シェル芸超・記号オンリー難読化シェル芸
超・記号オンリー難読化シェル芸xztaityozx
 
部活でシェル芸がはやらない
部活でシェル芸がはやらない部活でシェル芸がはやらない
部活でシェル芸がはやらないxztaityozx
 
潜入工作任務用シェル芸
潜入工作任務用シェル芸潜入工作任務用シェル芸
潜入工作任務用シェル芸xztaityozx
 
ダブルシンク難読化シェル芸
ダブルシンク難読化シェル芸ダブルシンク難読化シェル芸
ダブルシンク難読化シェル芸xztaityozx
 
破壊的難読化シェル芸
破壊的難読化シェル芸破壊的難読化シェル芸
破壊的難読化シェル芸xztaityozx
 
みんなで!Base64難読化シェル芸
みんなで!Base64難読化シェル芸みんなで!Base64難読化シェル芸
みんなで!Base64難読化シェル芸xztaityozx
 
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話xztaityozx
 
難読化シェル芸
難読化シェル芸難読化シェル芸
難読化シェル芸xztaityozx
 

More from xztaityozx (20)

Owari version 2.0 をつくりました
Owari version 2.0 をつくりましたOwari version 2.0 をつくりました
Owari version 2.0 をつくりました
 
実績を達成しました!
実績を達成しました!実績を達成しました!
実績を達成しました!
 
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよ
 
ワタナベシェル
ワタナベシェルワタナベシェル
ワタナベシェル
 
柿と杮
柿と杮柿と杮
柿と杮
 
難読化PowerShell芸入門
難読化PowerShell芸入門難読化PowerShell芸入門
難読化PowerShell芸入門
 
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
 
終わりを出力するコマンドつくった
終わりを出力するコマンドつくった終わりを出力するコマンドつくった
終わりを出力するコマンドつくった
 
ワタナベ難読化シェル芸
ワタナベ難読化シェル芸ワタナベ難読化シェル芸
ワタナベ難読化シェル芸
 
~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!
 
CLIツール作るの楽しい
CLIツール作るの楽しいCLIツール作るの楽しい
CLIツール作るの楽しい
 
レッツゴー難読化シェル芸
レッツゴー難読化シェル芸レッツゴー難読化シェル芸
レッツゴー難読化シェル芸
 
超・記号オンリー難読化シェル芸
超・記号オンリー難読化シェル芸超・記号オンリー難読化シェル芸
超・記号オンリー難読化シェル芸
 
部活でシェル芸がはやらない
部活でシェル芸がはやらない部活でシェル芸がはやらない
部活でシェル芸がはやらない
 
潜入工作任務用シェル芸
潜入工作任務用シェル芸潜入工作任務用シェル芸
潜入工作任務用シェル芸
 
ダブルシンク難読化シェル芸
ダブルシンク難読化シェル芸ダブルシンク難読化シェル芸
ダブルシンク難読化シェル芸
 
破壊的難読化シェル芸
破壊的難読化シェル芸破壊的難読化シェル芸
破壊的難読化シェル芸
 
みんなで!Base64難読化シェル芸
みんなで!Base64難読化シェル芸みんなで!Base64難読化シェル芸
みんなで!Base64難読化シェル芸
 
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
シェル芸で使いたくてLINQが使えるコマンドを作ったらawkでよかった話
 
難読化シェル芸
難読化シェル芸難読化シェル芸
難読化シェル芸
 

ワタナBase59