ftp.pl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #!/usr/bin/perl -w
  2. #
  3. # Copyright (C) 2001 by USC/ISI
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms are permitted
  7. # provided that the above copyright notice and this paragraph are
  8. # duplicated in all such forms and that any documentation, advertising
  9. # materials, and other materials related to such distribution and use
  10. # acknowledge that the software was developed by the University of
  11. # Southern California, Information Sciences Institute.  The name of the
  12. # University may not be used to endorse or promote products derived from
  13. # this software without specific prior written permission.
  14. #
  15. # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
  16. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  17. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18. #
  19. # An perl script that seperate inbound and outbound traffic of ISI domain, 
  20. # used by SAMAN ModelGen
  21. #
  22. # This work is supported by DARPA through SAMAN Project
  23. # (http://www.isi.edu/saman/), administered by the Space and Naval
  24. # Warfare System Center San Diego under Contract No. N66001-00-C-8066
  25. #
  26. sub usage {
  27.         print STDERR <<END;
  28.       usage: $0  [-w FilenameExtention]
  29.         Options:
  30.             -w string  specify the filename extention
  31. END
  32.         exit 1;
  33. }
  34. BEGIN {
  35.         $dblibdir = "./";
  36.         push(@INC, $dblibdir);
  37. }
  38. use DbGetopt;
  39. require "dblib.pl";
  40. my(@orig_argv) = @ARGV;
  41. &usage if ($#ARGV < 0);
  42. my($prog) = &progname;
  43. my($dbopts) = new DbGetopt("w:?", @ARGV);
  44. my($ch);
  45. while ($dbopts->getopt) {
  46.         $ch = $dbopts->opt;
  47.         if ($ch eq 'w') {
  48.                 $fext = $dbopts->optarg;
  49. } else {
  50.                 &usage;
  51.         };
  52. };
  53. $fsession=join(".",$fext,"session");
  54. $farrivef=join(".",$fext,"arrive");
  55. $sizef=join(".",$fext,"size");
  56. $filef=join(".",$fext,"fileno");
  57. open(FSESSION,"> $fsession") || die("cannot open $fsessionn");
  58. open(FFARRIVE,"> $farrivef") || die("cannot open $farrivefn");
  59. open(FSIZE,"> $sizef") || die("cannot open $sizefn");
  60. open(FFILE,"> $filef") || die("cannot open $filefn");
  61. $fileno=0;
  62. $fsize=0;
  63. $oldsrc="";
  64. $olddst="";
  65. $oldsrcP="";
  66. $olddstP="";
  67. while (<>) {
  68.         ($ip11,$ip12,$ip13,$ip14,$srcPort,$ip21,$ip22,$ip23,$ip24,$dstPort,$dummy,$time1,$time2,$flag,$seqb,$seqe,$size,$size1) = split(/[.:() ]/,$_);
  69.         $time=join(".",$time1,$time2);
  70.         if (!defined($size)) {
  71.         $size=0;
  72. } else {
  73. if (($flag eq "") && ($seqb eq "") && defined($size1)) {     
  74. $size=$size1;
  75. }
  76. }
  77.         if (!defined($flag)) {
  78.         $flag="";
  79. }
  80.         $dummy="";
  81. $seqe="";
  82.         #not modelig FTP control channel
  83.         if (($srcPort ne "21") && ($dstPort ne "21")) {
  84.         $srcP=join(".",$ip11,$ip12,$ip13,$ip14,$srcPort);
  85. $dstP=join(".",$ip21,$ip22,$ip23,$ip24,$dstPort);
  86.         $src=join(".",$ip11,$ip12,$ip13,$ip14);
  87. $dst=join(".",$ip21,$ip22,$ip23,$ip24);
  88.         
  89.         if ($flag eq "S") {
  90. $ssrcP=$srcP;
  91. $sdstP=$dstP;
  92. $ssrc=$src;
  93. $sdst=$dst;
  94. $stime=$time;
  95. }
  96. if (($src eq $oldsrc) && ($dst eq $olddst)) {
  97. if (($srcP eq $oldsrcP) && ($dstP eq $olddstP)) {
  98.         $fsize=$fsize+$size;
  99.          if ((($flag eq "F") || ($flag eq "FP")) && 
  100.      ($ssrcP eq $srcP) && ($sdstP eq $dstP)) {
  101.      $fileno++;
  102. if ($fsize != 0) {
  103. # print FSIZE "$srcP $dstP $fsizen";
  104. print FSIZE "$fsizen";
  105. }
  106. $fsize=0;
  107.                                 print FFARRIVE "$ssrc $sdst $stimen";
  108. }
  109. }
  110. } else {
  111.         if (($oldsrc ne "") && ($olddst ne "")) {
  112. if ($fileno != 0) {
  113. # print FFILE "$oldsrc $olddst $filenon";
  114.                                 print FSESSION "$oldtimen";
  115. print FFILE "$filenon";
  116. }
  117. }
  118. $fileno=0;
  119. $oldtime=$time;
  120. }
  121. $oldsrc=$src;
  122. $olddst=$dst;
  123. $oldsrcP=$srcP;
  124. $olddstP=$dstP;
  125. }
  126. }
  127. #print the last FTP session
  128. print FFILE "$filenon";
  129. close(FFARRIVE);
  130. close(FSIZE);
  131. close(FFILE);