PERL   9

log_parse.pl

Guest on 14th May 2021 12:43:23 AM

  1. #!/usr/bin/perl
  2. $task = $ARGV[0];
  3.  
  4. if ($task eq "usbsnoop-iso") {
  5.     while(<>) {
  6.       chomp;
  7.       if (/IsoPacket/) {
  8.           $iso = 1;
  9.       } elsif ($iso && /[0-9a-f]{8}: (.+)/) {
  10.           $bytes = $1;
  11.           foreach $byte (split(/ /, $bytes)) {
  12.             print(chr(hex($byte)));
  13.           }
  14.       } else {
  15.           $iso = 0; }
  16.     }
  17. } elsif ($task eq "usbsnoop-iso-sync") {
  18.     while(<>) {
  19.       chomp;
  20.       if (/IsoPacket/) {
  21.           $iso = 1;
  22.       } elsif ($iso && /[0-9a-f]{8}: (.+)/) {
  23.           $bytes = $1;
  24.           foreach $byte (split(/ /, $bytes)) {
  25.             $packet .= chr(hex($byte));
  26.           }
  27.       } else {
  28.           if (substr($packet, 0, 6) eq "\xff\xff\x00\xc4\xc4\x96") {
  29.             $header_found = 1;
  30.             if ($image_len > 0) {
  31.                 print "\xff" x (320*200*3 - ($image_len % (320*200*3)));
  32.                 $image_len = 0;
  33.             }
  34.             $packet = substr($packet, 16*4);
  35.           }
  36.           if ($header_found) {
  37.             $image_len += length($packet);
  38.             print $packet;
  39.           }
  40.           $packet = "";
  41.           $iso = 0;
  42.       }
  43.     }
  44. } elsif ($task eq "usbsnoop-raw") {
  45.     while(<>) {
  46.       chomp;
  47.       if (/[0-9a-f]{8}: (.+)/) {
  48.           $bytes = $1;
  49.           foreach $byte (split(/ /, $bytes)) {
  50.             print(chr(hex($byte)));
  51.           }
  52.       }
  53.     }
  54. } elsif ($task eq "usbsnoop-annotate") {
  55.     while(<>) {
  56.       chomp;
  57.       $line = $_;
  58.       chomp($line);
  59.       print $line;
  60.       print " ";
  61.       if ($line =~ /[0-9a-f]{8}: (.+)/) {
  62.           $bytes = $1;
  63.           foreach $byte (split(/ /, $bytes)) {
  64.             $chr = chr(hex($byte));
  65.             if ($chr =~ /[[:print:]]/) {
  66.                 print $chr;
  67.             } else {
  68.                 print ".";
  69.             }
  70.           }
  71.       }
  72.       print "\n";
  73.     }
  74. } elsif ($task eq "usbsnoop-annotate2") {
  75.     my $dir = "";
  76.     while(<>) {
  77.       chomp;
  78.       $line = $_;
  79.       chomp($line);
  80. #     print $line . "\n";
  81.       if ($line =~ /going down/) {
  82.           $dir = ">";
  83.       } elsif ($line =~ /coming back/) {
  84.           $dir = "<";
  85.       } elsif ($line =~ /[0-9a-f]{8}: (.+)/) {
  86.           $bytes = $1;
  87.           print "$dir $line \"";
  88.           foreach $byte (split(/ /, $bytes)) {
  89.             $chr = chr(hex($byte));
  90.             if ($chr =~ /[[:print:]]/) {
  91.                 print $chr;
  92.             } else {
  93.                 print ".";
  94.             }
  95.           }
  96.           print "\"\n";
  97.       }
  98.     }
  99. } elsif ($task eq "log-pnm") {
  100.     print "P6\n848 585\n255\n";
  101.     while(<>) {
  102.       chomp;
  103.       if(/bulk read returned [0-9]+, bytes: ([^\"]+)/) {
  104.           $bytes = $1;
  105.           foreach $byte (split(/ /, $bytes)) {
  106.             print(chr(hex($byte)));
  107.           }
  108.       }
  109.     }
  110. } elsif ($task eq "usbmon") {
  111.     $prev_time = 0;
  112.     while (<>) {
  113.       chomp;
  114.       @cols = split(/ /);
  115.       $time = $cols[1];
  116.       my $delta = ($time - $prev_time) / 1000.0;
  117.       printf("%9.0f", $delta);
  118.       for (my $i = 2; $i < $#cols + 1; $i++) {
  119.           print(" " . $cols[$i]);
  120.       }
  121.       print("\n");
  122.       $prev_time = $time;
  123.     }
  124. } else {
  125.     print "unknown task\n";
  126. }

Raw Paste


Login or Register to edit or fork this paste. It's free.