SlideShare a Scribd company logo
難読化PowerShell芸入門
たいちょー
みなさん#!/bin/bash(こんにちはの意)
たいちょー
@xztaityozx_001
母語はC#
ゆるふわお嬢様系難読化シェル芸人
最近
研究で思ってたより大量のデータが集まる
DBにいれたい(DBわからん)
難読化シェル芸
難読化シェル芸わからん
こわい
難読化シェル芸
#難daコレ
ありがとうございます(見てます)
難読化シェル芸
ぞくぞくふえ~る
難読化シェル芸
解読するだけで体力を失う
困る
それぞれの個性を感じたりできて楽しい
楽しい
PowerShell芸
PowerShell芸、始めました
勉強会の問題を解くなど
PowerShellとは
PowerShell(パワーシェル)は、マイクロソフ
トが開発した拡張可能なコマンドラインイン
ターフェース (CLI) シェルおよびスクリプト言
語である。オブジェクト指向に基づいて設計さ
れており、.NET Frameworkと.NET Coreを基盤と
している。 -- Wikipediaより
PowerShell
型があり、メソッドが生えてる
"abc".ToUpper()
=> ABC
.NETにある静的メソッドも呼べる
[System.Text.Encoding]::Unicode.GetString(
[Convert]::FromBase64String("RjCTMFMw"))
=> うんこ
PowerShell芸
とりあえずFizzBuzz
1..30 | %{ ((($_, "Fizz")[$_%3 -eq 0], "Buzz")[
$_%5 -eq 0], "FizzBuzz")[$_%15 -eq 0] }
解説
1..30
seq 30と同じ
$True = 1
$False = 0
解説
()
System.Objectの配列
()[index] でアクセスできる
解説
%
ForEach-Object へのエイリアス
ループ変数 $_ を操作して各Objectを加工できる
1..3|% {$_+1}
2 3 4
解説
($_, "Fizz")[$_%3 -eq 0]
$_%3 == 0 ? "Fizz" : $_ と同じ意味
TrueとFalseがそれぞれ1,0になることを利用してる
解説
1..30 | %{ ((($_, "Fizz")[$_%3 -eq 0],
"Buzz")[$_%5 -eq 0], "FizzBuzz")[$_%15 -eq
0] }
これは15,5,3の条件演算をネストしているとい
うことになる
簡単ですね!
難読化PowerShell芸
本題です
難読化ターゲット
Get-Date
PowerShellで難daコレ
文字列を評価してもコマンドを実行しない
# bash
> d="date"
> $d
2019年 8月 2日 金曜日 15:40:35 JST
# powershell
> $d="Get-Date"
> $d
Get-Date #文字列が出力されるのみ
Invoke-Expression
Invoke-Expression
bashとかでいうところのeval
# powershell
> $d="Get-Date"
> Invoke-Expression $d
2019年8月2日 16:14:36
Invoke-Expression
$d="Get-Date"
$i="Invoke-Expression"
$i $d # $iが評価できないね!
&
Invoke-Expressionと似た動きをする
これなら何とかできそう
$d="Get-Date"
& $d
2019年8月2日 16:14:36
やること
記号のみから得られる文字列から"Get-Date"を
作り、変数に代入
& $date を実行して日付を得る
記号変数
PowerShellでは${}で囲むとほとんどの記号を変
数にできる
${"}, ${@}, ${'}
数値を作る
この先数値が必要になるので記号変数に入れて
おく
${;}=+$() # 0
${%}=++${;} # 1
${;}++ # 2
${+}=${;}*${;}*${;} # 8
PowerShellの.&>/???/??/${##}
なんかしらの文字列を得られるやつ
"$?"
""+@{}
"$?"
前のコマンドが
正常終了 => True
異常終了 => False
""+@{}
これを実行すると
System.Collections.Hashtable
という文字列が得られる
stringへのキャストでToString()が呼ばれるため
文字の切り出し
欲しい文字だけを取り出す
stringなので[]でアクセスできる
${@}=""+@{}
${@} # System.Collections.Hashtable
"${@}"[0] # S
"${@}"[-1] # e
組み立てる
ではGet-Dateを作っていきましょう!
Get-Date
a,e,tを取り出す
Collections.Hashtable
ここからa,e
True
ここからT
取り出せました
${;}=+$() # 0
${%}=++${;} # 1
${;}++ # 2
${@}=""+@{} # System.Collections.Hashtable
"${@}"[-${;}-${;}] # => "${@}"[-4] => a
"${@}"[-${%}] # => "${@}"[-1] => e
"$?"[+$()] # => "True"[0] => T
Get-Date
残念ながらG,Dがありません
System.Collections.Hashtable
False
True
どこ探してもG,Dがありません…
シグネチャからG,Dを得る
string.Insert() のシグネチャは
string Insert(int startIndex, string value)
なんとG,Dがありました!
PowerShellでシグネチャを得る
オブジェクト.メソッド名 とするとPSMethodオ
ブジェクトを得られる
stringへキャストするとシグネチャが得られる
$s="".Insert # PSMethodオブジェクトを$sに代入
"$s" # stringへキャスト
# => string Insert(int startIndex, string value)
"".Insertを作ってシグネチャを得る
このシグネチャアクセスするにはInsertを作る必要
があります
文字自体はすでに揃っていますね
$Insert="Insert"
"".$Insert # "".Insertが呼べる
できました
${;}=+$(); ${%}=++${;}; ${;}++ # ${%}=1, ${;}=2
${@}=""+@{}
${&}="${@}"[-${%}$(${;}+${;})"]+"${@}"[${%}${;}"]+"${@}"[+
$()]+"${@}"[-${%}]+"$?"[${%}]+"$?"[+$()]
${&} # inSerT 大文字小文字は関係ない
${&}="".${&} # PSMethod Object
"${&}" # string Insert(int startIndex, string value)
G,Dを取り出します
シグネチャを無事得られたのでG,Dを取りだします
できました
${;}=+$(); ${%}=++${;}; ${;}++; # ${%}=1, ${;}=2
${+}=${;}*${;}*${;} # 8
"${&}" # string Insert(int startIndex, string value)
"${&}"[-${+}] # => "${&}"[-8] => g
"${&}"[-"${%}${+}"] # => "${&}"[-18] => d
合体!!!発進!!!
${#}="${&}"[-${+}]+"${@}"[-${%}]+"$?"[+$()]+"-"+"${&}"[-"$
{%}${+}"]+"${@}"[-${;}-${;}]+"$?"[+$()]+"${@}"[-${%}]
${#} # geT-daTe
& ${#} # Get-Date が実行される
まとめ
${;}=+$();${%}=++${;};${;}++;${+}=${;}*${;}*${;};${@}=""+@
{};${&}="${@}"[-"${%}$(${;}+${;})"]+"${@}"[-"${%}${;}"]+"$
{@}"[+$()]+"${@}"[-${%}]+"$?"[${%}]+"$?"[+$()];${&}=""+$("
".${&});${#}="${&}"[-${+}]+"${@}"[-${%}]+"$?"[+$()]+"-"+"$
{&}"[-"${%}${+}"]+"${@}"[-${;}-${;}]+"$?"[+$()]+"${@}"[-${
%}];& ${#}
な、なにこれ…(ドン引き)
OMAKE
pwsh -c "Get-Date" でbashからGet-Dateできま
す
ちょっと記号難読化してみます
できました
: "$(.&>/???/??/${##}) /*/$$"; __=(${_##*.}); : ${__[${##}
+${##}]/¥/$$}; : -${_/${_%?}};
/???/?????/???/${__[${##}+${##}]:${##}:${##}}?${__[${##}]:
-${##}-${##}:${##}}? $_ # /usr/local/bin/pwsh -c
超!合体!!!!
: "$(.&>/???/??/${##}) /*/$$"; __=(${_##*.}); : ${__[${##}
+${##}]/¥/$$}; : -${_/${_%?}};/???/?????/???/${__[${##}+${
##}]:${##}:${##}}?${__[${##}]: -${##}-${##}:${##}}? $_ '${
;}=+$();${%}=++${;};${;}++;${+}=${;}*${;}*${;};${@}=""+@{}
;${&}="${@}"[-"${%}$(${;}+${;})"]+"${@}"[-"${%}${;}"]+"${@
}"[+$()]+"${@}"[-${%}]+"$?"[${%}]+"$?"[+$()];${&}=""+$("".
${&});${#}="${&}"[-${+}]+"${@}"[-${%}]+"$?"[+$()]+"-"+"${&
}"[-"${%}${+}"]+"${@}"[-${;}-${;}]+"$?"[+$()]+"${@}"[-${%}
];& ${#}'
おわり
たのしいですね
参考文献
PowerShell難読化の基礎 (1) - Binary Pulsar
https://binary-
pulsar.hatenablog.jp/entry/2018/09/01/000000
PowerShellの演算子一覧 - しばたテックブログ
https://blog.shibata.tech/entry/2015/12/03/000000
記号のみで任意のPowerShellコードを実行 - JPerl
Advent Calendar 2010 Sym Track
リンク切れ

More Related Content

What's hot

PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
gree_tech
 
今日から始めるXen仮想化入門
今日から始めるXen仮想化入門今日から始めるXen仮想化入門
今日から始めるXen仮想化入門
VirtualTech Japan Inc.
 
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
Yuji Otani
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
nasa9084
 
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
Masaya Tahara
 
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
uchan_nos
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Jun-ichi Sakamoto
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
Recruit Lifestyle Co., Ltd.
 
PythonによるOPC-UAの利用
PythonによるOPC-UAの利用PythonによるOPC-UAの利用
PythonによるOPC-UAの利用
Kioto Hirahara
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
 
Hubsを何度も破壊して得た知見、話します
Hubsを何度も破壊して得た知見、話しますHubsを何度も破壊して得た知見、話します
Hubsを何度も破壊して得た知見、話します
hironroinakae
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
 
ユーザーインタビューするときは、どうやらゾンビのおでましさ
ユーザーインタビューするときは、どうやらゾンビのおでましさユーザーインタビューするときは、どうやらゾンビのおでましさ
ユーザーインタビューするときは、どうやらゾンビのおでましさ
Yoshiki Hayama
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
 
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
Y Watanabe
 
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
mmitti
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
 
徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまでHiroshi Tokumaru
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 

What's hot (20)

PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
今日から始めるXen仮想化入門
今日から始めるXen仮想化入門今日から始めるXen仮想化入門
今日から始めるXen仮想化入門
 
Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)Redis勉強会資料(2015/06 update)
Redis勉強会資料(2015/06 update)
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
なぜあなたのプロジェクトのDevSecOpsは形骸化するのか(CloudNative Security Conference 2022)
 
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
 
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とはがんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
 
PythonによるOPC-UAの利用
PythonによるOPC-UAの利用PythonによるOPC-UAの利用
PythonによるOPC-UAの利用
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
Hubsを何度も破壊して得た知見、話します
Hubsを何度も破壊して得た知見、話しますHubsを何度も破壊して得た知見、話します
Hubsを何度も破壊して得た知見、話します
 
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
 
ユーザーインタビューするときは、どうやらゾンビのおでましさ
ユーザーインタビューするときは、どうやらゾンビのおでましさユーザーインタビューするときは、どうやらゾンビのおでましさ
ユーザーインタビューするときは、どうやらゾンビのおでましさ
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
jooqってなんて読むの? から始めるO/RマッパーとSpringBootの世界
 
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-Zynqで始めるUSB開発-FPGAとARMで動くUSBオーディオデバイスの実例とともに-
Zynqで始めるUSB開発-FPGAとARMで動く USBオーディオデバイスの実例とともに-
 
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
 
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
徳丸本ができるまで
徳丸本ができるまで徳丸本ができるまで
徳丸本ができるまで
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 

More from xztaityozx

呪符式高速詠唱シェル芸2
呪符式高速詠唱シェル芸2呪符式高速詠唱シェル芸2
呪符式高速詠唱シェル芸2
xztaityozx
 
呪符式高速詠唱シェル芸
呪符式高速詠唱シェル芸呪符式高速詠唱シェル芸
呪符式高速詠唱シェル芸
xztaityozx
 
surgeコマンド作りました
surgeコマンド作りましたsurgeコマンド作りました
surgeコマンド作りました
xztaityozx
 
ナーベンシュタイン距離 ~グラフを添えて~
ナーベンシュタイン距離 ~グラフを添えて~ナーベンシュタイン距離 ~グラフを添えて~
ナーベンシュタイン距離 ~グラフを添えて~
xztaityozx
 
あの、selのリベンジをさせてください
あの、selのリベンジをさせてくださいあの、selのリベンジをさせてください
あの、selのリベンジをさせてください
xztaityozx
 
Owari version 2.0 をつくりました
Owari version 2.0 をつくりましたOwari version 2.0 をつくりました
Owari version 2.0 をつくりました
xztaityozx
 
実績を達成しました!
実績を達成しました!実績を達成しました!
実績を達成しました!
xztaityozx
 
ワタナBase59
ワタナBase59ワタナBase59
ワタナBase59
xztaityozx
 
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよ
xztaityozx
 
ワタナベシェル
ワタナベシェルワタナベシェル
ワタナベシェル
xztaityozx
 
柿と杮
柿と杮柿と杮
柿と杮
xztaityozx
 
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
xztaityozx
 
終わりを出力するコマンドつくった
終わりを出力するコマンドつくった終わりを出力するコマンドつくった
終わりを出力するコマンドつくった
xztaityozx
 
ワタナベ難読化シェル芸
ワタナベ難読化シェル芸ワタナベ難読化シェル芸
ワタナベ難読化シェル芸
xztaityozx
 
~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!
xztaityozx
 
CLIツール作るの楽しい
CLIツール作るの楽しいCLIツール作るの楽しい
CLIツール作るの楽しい
xztaityozx
 
レッツゴー難読化シェル芸
レッツゴー難読化シェル芸レッツゴー難読化シェル芸
レッツゴー難読化シェル芸
xztaityozx
 
超・記号オンリー難読化シェル芸
超・記号オンリー難読化シェル芸超・記号オンリー難読化シェル芸
超・記号オンリー難読化シェル芸
xztaityozx
 
部活でシェル芸がはやらない
部活でシェル芸がはやらない部活でシェル芸がはやらない
部活でシェル芸がはやらない
xztaityozx
 
潜入工作任務用シェル芸
潜入工作任務用シェル芸潜入工作任務用シェル芸
潜入工作任務用シェル芸
xztaityozx
 

More from xztaityozx (20)

呪符式高速詠唱シェル芸2
呪符式高速詠唱シェル芸2呪符式高速詠唱シェル芸2
呪符式高速詠唱シェル芸2
 
呪符式高速詠唱シェル芸
呪符式高速詠唱シェル芸呪符式高速詠唱シェル芸
呪符式高速詠唱シェル芸
 
surgeコマンド作りました
surgeコマンド作りましたsurgeコマンド作りました
surgeコマンド作りました
 
ナーベンシュタイン距離 ~グラフを添えて~
ナーベンシュタイン距離 ~グラフを添えて~ナーベンシュタイン距離 ~グラフを添えて~
ナーベンシュタイン距離 ~グラフを添えて~
 
あの、selのリベンジをさせてください
あの、selのリベンジをさせてくださいあの、selのリベンジをさせてください
あの、selのリベンジをさせてください
 
Owari version 2.0 をつくりました
Owari version 2.0 をつくりましたOwari version 2.0 をつくりました
Owari version 2.0 をつくりました
 
実績を達成しました!
実績を達成しました!実績を達成しました!
実績を達成しました!
 
ワタナBase59
ワタナBase59ワタナBase59
ワタナBase59
 
ocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよocsとselってコマンド作ったわよ
ocsとselってコマンド作ったわよ
 
ワタナベシェル
ワタナベシェルワタナベシェル
ワタナベシェル
 
柿と杮
柿と杮柿と杮
柿と杮
 
シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!シェル芸をドット絵にして思いを伝えよう!
シェル芸をドット絵にして思いを伝えよう!
 
終わりを出力するコマンドつくった
終わりを出力するコマンドつくった終わりを出力するコマンドつくった
終わりを出力するコマンドつくった
 
ワタナベ難読化シェル芸
ワタナベ難読化シェル芸ワタナベ難読化シェル芸
ワタナベ難読化シェル芸
 
~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!~/.bashrcを難読化しよう!
~/.bashrcを難読化しよう!
 
CLIツール作るの楽しい
CLIツール作るの楽しいCLIツール作るの楽しい
CLIツール作るの楽しい
 
レッツゴー難読化シェル芸
レッツゴー難読化シェル芸レッツゴー難読化シェル芸
レッツゴー難読化シェル芸
 
超・記号オンリー難読化シェル芸
超・記号オンリー難読化シェル芸超・記号オンリー難読化シェル芸
超・記号オンリー難読化シェル芸
 
部活でシェル芸がはやらない
部活でシェル芸がはやらない部活でシェル芸がはやらない
部活でシェル芸がはやらない
 
潜入工作任務用シェル芸
潜入工作任務用シェル芸潜入工作任務用シェル芸
潜入工作任務用シェル芸
 

難読化PowerShell芸入門