aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/parsers/usbmon2usbsnoop.pl
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/parsers/usbmon2usbsnoop.pl')
-rwxr-xr-xcontrib/parsers/usbmon2usbsnoop.pl53
1 files changed, 53 insertions, 0 deletions
diff --git a/contrib/parsers/usbmon2usbsnoop.pl b/contrib/parsers/usbmon2usbsnoop.pl
new file mode 100755
index 00000000..c6566873
--- /dev/null
+++ b/contrib/parsers/usbmon2usbsnoop.pl
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+#
+# This perl script converts output from usbmon to a format (usbsnoop's log format) that is compatible with usbreplay.
+# Taken from http://www.linuxtv.org/wiki/index.php/Usbmon2usbsnoop
+
+sub print_bytes{
+ my($str) = @_;
+
+ @str_1 = split(/ /, $str);
+
+ foreach(@str_1){
+ if (length($_) == 8) {
+ print substr($_, 0, 2) . " " . substr($_, 2, 2) . " " . substr($_, 4, 2) . " " . substr($_, 6, 2);
+ }elsif(length($_) == 4) {
+ print substr($_, 2, 2) . " " . substr($_, 0, 2);
+ }elsif(length($_) == 2) {
+ print $_;
+ }elsif(length($_) == 1) {
+ next;
+ }
+ print " ";
+ }
+}
+
+
+$i = 0;
+while($line = <STDIN>) {
+ $i++;
+
+ if($line =~ m/\S+ \S+ \S+ \S+ \S+ (.+) \S+ </) {
+ printf "%06d: OUT: %06d ms %06d ms ", $i, 1, $i;
+ print_bytes($1);
+ print "<<< ";
+ $line = <STDIN>;
+ $i++;
+ if($line =~ m/\S+ \S+ \S+ \S+ [a-fA-F0-9 ]+ = ([a-fA-F0-9 ]+)/) {
+ print_bytes($1);
+ #print "\n";
+ #print " $1\n";
+ }
+ print "\n";
+ }elsif($line =~ m/\S+ \S+ \S+ \S+ ([a-fA-F0-9 ]+) [a-fA-F0-9]+ = ([a-fA-F0-9 ]+)/) {
+ printf "%06d: OUT: %06d ms %06d ms ", $i, 1, $i;
+ print_bytes($1);
+ print ">>> ";
+ print_bytes($2);
+ print "\n";
+ }elsif($line =~ m/\S+ \S+ \S+ \S+ s (.+)/) {
+ printf "%06d: OUT: %06d ms %06d ms ", $i, 1, $i;
+ print_bytes($1);
+ print ">>>\n";
+ }
+}

Privacy Policy