PERL Examples
Revision as of 14:53, 4 December 2008 by PeterHarding (talk | contribs)
Skeleton PERL Scripts
pl2py.pl
#!/usr/bin/env perl # # $Id:$ # if ( $#ARGV != 0 ) { printf "Enter basename of file to convert (i.e. no extension!)\n"; exit(0); } $file = $ARGV[0]; print $file; $pl = $file . ".pl"; $py = $file . ".py"; open IN, "<$pl"; open OUT, ">$py"; while (<IN>) { chop(); $_ =~ s'/usr/bin/perl'/usr/bin/env python'g; $_ =~ s/::/./g; $_ =~ s/\$//g; $_ =~ s/;//g; $_ =~ s/use/import/g; printf OUT "%s\n", $_; } close IN; close OUT; system("chmod +x $py")
Edit File
#!/usr/bin/env perl $file = "llheader_jar.log"; open IN, "< $file"; open OUT, "> ntlm.txt"; $typeFlg = -1; while (<IN>) { chop(); s/ //; /^Authorization: / && do { if ( $typeFlg == 0 ) { $typeFlg = 1; s/.*Negotiate *//; } else { $typeFlg = 3; s/.*Negotiate *//; } printf OUT "::%d:: %s\n", $typeFlg, $_; }; /^Parameter \"WWW/ && do { next if /Negotiate\"/; /NTLM/ && do { $typeFlg = 0; s/"$//; s/.*"//; printf OUT "::0:: %s\n", $_; }; /Parameter \"WWW-Authenticate\" Value \"Negotiate / && do { $typeFlg = 2; s/.*Negotiate *//; s/"$//; printf OUT "::2:: %s\n", $_; }; #printf "%s\n", $_; }; } close IN; close OUT;
fix.pl
#!/usr/local/bin/perl open IN, "< xx.c"; open OUT, "> new.c"; $cnt = 0; while (<IN>) { chop(); /\/\/ <[0-9][0-9][0-9][0-9]>/ && do { s/[0-9][0-9][0-9][0-9]/%04d/; $l = sprintf $_, $cnt++; $_ = $l; printf "%s\n", $_; }; printf OUT "%s\n", $_; } close( OUT );
parser.pl
#!/usr/bin/perl use IO::Handle; STDOUT->autoflush(1); my($total, $current, $icmp); $current=1; $icmp=0; init_parser(); $total=get_info(); foreach $linia (<STDIN>){ printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"); printf("Analysing line $current of $total"); $current++; if($linia=~/^.+\s.+\s>>>>\s.+\s.+\s.+/){ my($proto, $srcip, $nic, $dstip, $date, $time)=split(' ', $linia); $srcip=~tr/:/./; $dstip=~tr/:/./; if($proto eq "ICMP"){$icmp=1;} if(($proto ne "ICMP") && $icmp==1){print PLIK "$linia";goto blah;} open(PLIK, ">>./$proto/$srcip-$dstip")|| die "Can`t open file ./$proto/$srcip-$dstip: $!\n"; if(($proto eq "ICMP")){ print PLIK "$linia";} blah: } else{ if($linia=~/--end-of-icmp-packet/){ $icmp=0; print PLIK "\n"; } else{ $linia=~s/^\n$//; print PLIK "$linia"; } } } printf("\n"); sub init_parser{ if(!(-d "./TCP")){ mkdir("./TCP", 0744) || die "Can`t create \"tcp\" directory: $!\n"; } if(!(-d "./UDP")){ mkdir("./UDP", 0744) || die "Can`t create \"udp\" directory: $!\n"; } if(!(-d "./ICMP")){ mkdir("./ICMP", 0744) || die "Can`t create \"icmp\" directory: $!\n"; } } sub get_info{ my($tem, $counter); $counter=0; foreach $tem (<STDIN>){ $counter++; } seek(STDIN, 0, SEEK_SET); return $counter; }
Generate HTTP Requests
#!/usr/local/bin/perl -w use LWP::UserAgent; use Time::HiRes 'time','sleep'; $ua = LWP::UserAgent->new; $request = new HTTP::Request('GET', "http://localhost/index.html"); $hits = 50; $hps = 100; # Do 50 hits at 100 hits per second, then 50 at 99 hits per second, ... while ($hps) { $i = $hits; $start = time(); while ($i--) { $ua->request($request); sleep (1/$hps); } $end = time(); print "$hps ", $hits/($end - $start), "\n"; $hps--; }