perl extrahieren



  • hi,

    kan mir ein guru gerade mal ein kleines perl skript machen, welches aus einer datei wie dieser die zahlenfolge in jeder zeile zwischen dem doppelpunkt und dem pipe zeichen extrahiert und diese zahlenfolge von hex ins binär format sequentiell in eine neue datei schreibt? ich will daraus eben die opcodes extrahieren und eie reine binary erzeugen, ohne das ganze listing zeug...vielen dank

    [/code]

    | # Execution begins at address 0
      0x000:              | 	.pos 0
      0x000: 308400040000 | init:	irmovl Stack, %esp  	# Set up Stack pointer
      0x006: 308500040000 | 	irmovl Stack, %ebp  	# Set up base pointer
      0x00c: 7024000000   | 	jmp Main		# Execute main program
                          | 
                          | # Array of 4 elements
      0x014:              | 	.align 4
      0x014: 0d000000     | array:	.long 0xd
      0x018: c0000000     | 	.long 0xc0
      0x01c: 000b0000     | 	.long 0xb00
      0x020: 00a00000     | 	.long 0xa000
                          | 
      0x024: 308004000000 | Main:	irmovl $4,%eax
      0x02a: a008         | 	pushl %eax	# Push 4
      0x02c: 308214000000 | 	irmovl array,%edx
      0x032: a028         | 	pushl %edx      # Push array
      0x034: 803a000000   | 	call rSum	# Sum(array, 4)
      0x039: 10           | 	halt
                          |
    


  • Dieser Thread wurde von Moderator/in árn[y]ék aus dem Forum Webzeugs in das Forum Projekte verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ungetestet, da ich zu faul bin %hextobin auszufuellen (musst du noch selbst machen):

    #!/usr/bin/perl
    
    use strict;
    my $inputfile = 'bla.txt';  # CHANGE ME
    open(my $in, $inputfile);
    
    my %hextobin = ('0' => '0000', ... ); # FILL ME
    
    for my $line (<$in>)
    {
    	if ($line =~ /[0-9a-fA-F]: ([0-9a-fA-F]+)\s*/)
    	{
    		for my $c (split //, $1)
    		{
    			print $hextobin{$c};
    		}
    		print "\n";
    	}
    }
    print "\n";
    


  • Dieser Thread wurde von Moderator/in Korbinian aus dem Forum Projekte in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • vielen dank Blue-Tiger, ich werde es gleich mal testen.



  • Wer braucht schon Perl, wenn er die Shell hat *g*

    for i in `cut -f 4 -d ' ' foo`; do echo -e "f=base(2)\n0x$i\nexit" | calc; done
    

    Unter Verwendung von calc.



  • Na hatte mich im ersten Post etwas unglücklich ausgedrückt, aber ich habe es jetzt so hinbekommen, wie ich es wollte:

    #!/usr/bin/perl
    
    use strict;
    
    # create raw Y86 binary from .yo listing file
    for my $line (<>) {
    	if ($line =~ /[0-9a-fA-F]: ([0-9a-fA-F]+)\s*/) {
    			print pack("H*", $1);
    	}
    }
    

    vielen dank an alle 🙂


Anmelden zum Antworten