我正在这样做:
#!/usr/bin/env/perl
open FILE1, "<Exed.exe";
open FILE2, ">Fileinhexadecimal.txt";
binmode FILE1;
while (<FILE1>) {
$lines = $_;
$lines = unpack("H*", $lines);
chomp $lines;
print FILE2 "$lines\n";
}
close (FILE1);
close (FILE2)
print "Finish\n";
<>;
之后,我创建了其他程序来读取这个“.txt”文件来搜索一些信息。
使用此脚本,我正在创建一个包含 .exe 文件的十六进制数据的文本文件。我的大问题是:
1-我想用正则表达式提取行:(/8B55-(.*)-8B55/
使用第二个脚本,这里没有发布)
2 - 这是问题:
曾经我的 file.txt 是这样的:
8B55-646464-8B558B55-636363-8B55
8B55-656565-8B558B55-666666-8B55
当我运行脚本时,脚本只会弹出这些数据:
"646464", "656565".
你还是不明白我的问题。我想提取:646464, 636363, 656565, 666666
。但是脚本,当它找到第一个匹配项时,他会跳到下一行,不要阅读其余部分。
你能帮忙我怎么能抓住所有的比赛吗?其他例子:
8B55-646464-8B55987941651968798779878B55-686868-8B55
8B55-ILOVEYOU-8B55
在这里,脚本只会捕获646464
and ILOVEYOU
。(缺少 686868):/
我正在搜索一些数据的真实文件非常大并且有一些行,比这个例子大。
我尝试使用“g”: if ($lines =~ /(.*)/g) {
但不起作用。
我的第二个脚本:
我正在尝试运行此脚本:
#!/usr/bin/perl
open FILE, "<Fileinhexadecimal.txt";
while (<FILE>) {
$lines = $_;
if ($lines =~ /8B55-(.*)-8B55/g) {
print "-$1\n";
}
}
close (FILE)
<>;
什么也没有发生。我正在尝试从一个巨大的文件中提取某些连续的单词,并且正在发生这种情况,我只是以 8B55 为例。但问题是一样的。新想法?我怎么能使用你的代码?
@match = /8B55-(.*?)-8B55/g; 打印“@match\n”;
???感谢您的回复,抱歉英语不好
真正的问题该行是:
8BCEE84EC4FFFF6A016A2B6A2B686C0100008BCEE83CC4FFFF6A016A2B6A2B686C0100008BCEE82AC4FFFF6A016A0E6A0E686D0100008BCEE818C4FFFF6A016A146A1468F20100008BCEE806C4FFFF6A006A0E6A0E68700100008BCEE8F4C3FFFF6A016A1E6A1E6871010000
在这一行中,我有 6 个数据要提取。
我使用这个正则表达式来提取:
8BCEE8....FFFF6A(..)6A(..)6A(..)68(..)(..)0000
在第一行,我们有 3 个匹配项,在第二个我们有 2 个匹配项,最后一行我们有 1 个匹配项 (8BCEE8F4C3FFFF6A016A1E6A1E6871010000)
实际上,我想提取 \1 \2 \3 \4 和 \5。我尝试使用 if :
if ($lines =~ /8BCEE8....FFFF6A(..)6A(..)6A(..)68(..)(..)0000/g) { print "$5$4 $1$2$3" }
但是有了这段代码,我每行只能匹配一个。并不是所有的比赛。明白了吗?:/我想在这里提取,例如:
8BCEE84EC4FFFF6A016A2B6A2B686C010000
我想提取 6A 之后的单词,6A 之后,6A 之后和 68 之后的 4 个字母。:/ \o/ 感谢您的建议,iluv u!
在这个文件中,有 1000 行具有相同的正则表达式。我想提取这 1000 行。