gpt4 book ai didi

perl - 解析/分解 - 一步步解释这个混淆的 perl 脚本

转载 作者:行者123 更新时间:2023-12-02 22:45:04 28 4
gpt4 key购买 nike

如标题 - 请任何人解释一下下一个脚本是如何工作的

这会打印文本:“Perl 人很聪明”

''=~('(?{'.('])@@^{'^'-[).*[').'"'.('-[)@{:__({:)[{(-:)^}'^'}>[,[]*&[[[[>[[@[[*_').',$/})')

这仅打印“b”

use strict;
use warnings;
''=~('(?{'.('_/).+{'^'/]@@_[').'"'.('=^'^'_|').',$/})')

perl -MO=Deparse 仅显示以下内容:

use warnings;
use strict 'refs';
'' =~ m[(?{print "b",$/})];

但不知道为什么...;(

像脚本一样分解的推荐方式是什么?如何开始?

所以,尝试一下:

'' =~
(
'(?{'
.
(
'])@@^{' ^ '-[).*['
)
.
'"'
.
(
'-[)@{:__({:)[{(-:)^}' ^ '}>[,[]*&[[[[>[[@[[*_'
)
.
',$/})'
)

几个部分由.连接起来。按位 ^ 的结果可能给出文本部分。 :

perl -e "print '-[)@{:__({:)[{(-:)^}' ^ '}>[,[]*&[[[[>[[@[[*_'"

打印“Perl Guys are smart”并且第一个 ^ 生成“print”。

但是当我将其重写为:

'' =~
(
'(?{'
.
(
'print'
)
.
'"'
.
(
'Perl guys are smart'
)
.
',$/})'
)

我的 Perl 告诉我:

panic: top_env

奇怪,我第一次看到这样的错误消息......

这意味着:不允许用结果替换'str1' ^ 'str2',(不明白为什么)以及perl打印的原因 panic 消息?

我的 Perl:

This is perl 5, version 12, subversion 4 (v5.12.4) built for darwin-multi-2level

Ps:生成示例here

最佳答案

在行

.('_/).+{' ^ '/]@@_[

当您计算']' ^ '-'时,结果将是字母p^ 是按位字符串运算,因此我们逐个字母地进行操作即可得到结果字符串。

检查我的脚本,它的工作方式与您的示例类似。希望对您有帮助。

use v5.14;

# actually we obfuscated print and your word + "
# it looks like that (print).'"'.(yor_word")
my $print = 'print';
my $string = 'special for stackoverflow by fxzuz"';

my $left = get_obfuscated($print);
my $right = get_obfuscated($string);

# prepare result regexp
my $result = "'' =~ ('(?{'.($left).'\"'.($right).',\$/})');";

say 'result obfuscated ' . $result;
eval $result;

sub get_obfuscated {

my $string = shift;
my @letters = split //, $string;

# all symbols like :,&? etc (exclude ' and \)
# we use them for obfuscation
my @array = (32..38, 40..47, 58..64, 91, 93..95, 123..126);

my $left_str = '';
my $right_str = '';

# obfuscated letter by letter
for my $letter (@letters) {

my @result;
# get right xor letters
for my $symbol (@array) {

# prepare xor results
my $result = ord $letter ^ $symbol;
push @result, { left => $result, right => $symbol } if $result ~~ @array;
}

my $rand_elem = $result[rand $#result];
$left_str .= chr $rand_elem->{left};
$right_str .= chr $rand_elem->{right};
}

my $obfuscated = "'$left_str' ^ '$right_str'";
say "$string => $obfuscated";

return $obfuscated;
}

关于perl - 解析/分解 - 一步步解释这个混淆的 perl 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11062749/

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