Das Problem, das ich habe, ist, wenn ich ein Perl-Skript lesen Daten (PE Executable) über STDIN und der Stream enthält einen Zeilenabschluss "0A" die Konvertierung in Hex fehlt. Dann, wenn ich die Hex-Daten zurückkonvertiere, ist es beschädigt (fehlende 0A im Hex-Format). Wie kann ich die "Windows" Version des Zeilenvorschubs "0A" in Perl erkennen?Perl konvertieren binären Stream zu hex
Hinweis: Linux-Betriebssystem (Perl) liest ein Windows PE
!usr/bin/perl
while($line = <STDIN>)
{
chomp($line);
@bytes = split //, $line;
foreach (@bytes)
{
printf "%02lx", ord $_;
}
}
Anwendungsbeispiel:
[[email protected] test]# cat test.exe | perl encoder.pl > output
Wow, das ist peinlich. Ich tauchte direkt in "binmode()" und sah nicht einmal den "chomp". –
Außerdem finden Sie 'entpacken (' H * ', $ binary_string) 'ist _much_ effizienter als' split' und 'printf'% 02x''. – cjm
eine Änderung vorgenommen #!/Usr/bin/perl Binmodus (STDIN); while () { #print $ _; push (@bytes, $ _); } foreach (@bytes) { printf "% 02lx", ord $ _; } –
ekronnenburg