「ブリーチ」されたいくつかの perl ファイルがあります (それが ACME::Bleach からのものか、または同様のものからのものかはわかりません)。perl にあまり詳しくないので、ファイルを開始するワンライナーが次の空白をデコードするために何をするかを理解したいと思います。
$_=<<'';y;\r\n;;d;$_=pack'b*',$_;$_=eval;$@&&die$@;$_
ファイルの残りの部分は空白文字であり、ファイルはそれ自体で実行可能です (ファイルは /bin ディレクトリに配置されます)。
[解決策]、@JBに感謝します。
このpack
部分が最も複雑なようで、何が起こっているのか気付くまでにしばらく時間がかかりました。Pack は、8 文字ごとに LSBのみを取得し、それをバイナリのビッグ エンディアン文字として展開します。したがって、タブは「0」になり、スペースは「1」になります。
'\t\t \t ' => '#'
in binary:
00001001 00001001 00100000 00100000 00100000 00001001 00100000 0100000
every LSB:
1 1 0 0 0 1 0 0
convert from from big-endian format:
0b00100011 == 35 == ord('#')