gpt4 book ai didi

perl - 来自 "bleached"文件的 perl 行有什么作用?

转载 作者:行者123 更新时间:2023-12-04 10:29:06 24 4
gpt4 key购买 nike

我有一些被“漂白”的 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('#')

最佳答案

  • $_ = << '';将文件的其余部分读入累加器。
  • y;\r\n;;d;去除回车和换行符。
  • $_ = pack 'b*', $_;$_ 中将字符转换为位, LSB 优先。
  • $_ = eval;执行 $_作为 Perl 代码。
  • $@ && die $@; $_优雅地处理异常和返回代码。
  • 关于perl - 来自 "bleached"文件的 perl 行有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7556782/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com