traffic-classify
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:11k
源码类别:

通讯编程

开发平台:

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 takes a tcpdump trace as input and outputs 
  20. # statistics (total # of packetz and total size) of each type of traffic
  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. $total=0;
  26. $http=0;
  27. $nntp=0;
  28. $ftp=0;
  29. $domain=0;
  30. $ntp=0;
  31. $smtp=0;
  32. #$icmp=0;
  33. $realaudio=0;
  34. $pop3=0;
  35. $time=0;
  36. $webcache=0;
  37. $ssh=0;
  38. $squid=0;
  39. $telnet=0;
  40. $cvs=0;
  41. $h323=0;
  42. $datametric=0;
  43. $x11=0;
  44. $phonebook=0;
  45. $snmp=0;
  46. $syslog=0;
  47. $gopher=0;
  48. $bgp=0;
  49. $auth=0;
  50. $rtsp=0;
  51. #$gris=0;
  52. $other=0;
  53. $totals=0;
  54. $https=0;
  55. $nntps=0;
  56. $ftps=0;
  57. $domains=0;
  58. $ntps=0;
  59. $smtps=0;
  60. $realaudios=0;
  61. $others=0;
  62. $pop3s=0;
  63. $times=0;
  64. $webcaches=0;
  65. $sshs=0;
  66. $squids=0;
  67. $telnets=0;
  68. $cvss=0;
  69. $h323s=0;
  70. $datametrics=0;
  71. $x11s=0;
  72. $phonebooks=0;
  73. $snmps=0;
  74. $syslogs=0;
  75. $gophers=0;
  76. $bgps=0;
  77. $auths=0;
  78. $rtsps=0;
  79. #$griss=0;
  80. $httpP= "80";
  81. $httpsP=         "443";
  82. $sshP=           "22";
  83. $squidP=         "3128";
  84. $datametricsP=   "1645";
  85. $phonebookP=     "767";
  86. $x11P=           "6000";
  87. $telnetP=        "23";
  88. $webcacheP=      "8080";
  89. $cvspserverP=    "2401";
  90. $domainP=        "53";
  91. $nntpP=          "119";
  92. $ntpP=           "123";
  93. $h323gatediscP=  "1718";
  94. $h323gatestatP=  "1719";
  95. $h323hostcallP=  "1720";
  96. $pop3P=          "110";
  97. $timeP=          "37";
  98. $ftpdataP=       "20";
  99. $ftpP=           "21";
  100. $smtpP=          "25";
  101. $snmpP=          "161";
  102. $gopherP=        "70";
  103. $authP=          "11";
  104. $rtspP=          "554";
  105. $bgpP=           "179";
  106. $syslogP=        "514";
  107. while (<>) {
  108.         ($time1,$time2,$ip11,$ip12,$ip13,$ip14,$srcPort,$dummy2,$ip21,$ip22,$ip23,$ip24,$dstPort,$dummy3,$proto,$size) = split(/[.: ]/,$_);
  109. #print join("#",split(/[.: ]/,$_));
  110. $time1="";
  111. $time2="";
  112. # $dummy1="";
  113. $dummy2="";
  114. $dummy3="";
  115. $ip11="";
  116. $ip12="";
  117. $ip13="";
  118. $ip14="";
  119. $ip21="";
  120. $ip22="";
  121. $ip23="";
  122. $ip24="";
  123. if (defined($proto) && defined($size)) {
  124. if (($proto eq "udp") || ($proto eq "tcp")) {
  125. if (defined($srcPort) && defined($dstPort) && ($size < 1500)) {
  126. if (($srcPort eq $httpP) || ($dstPort eq $httpP)) {
  127.     $https=$https+$size;
  128. }
  129. elsif (($srcPort eq $httpsP) || ($dstPort eq $httpsP)) {
  130.     $https=$https+$size;
  131. }
  132. elsif (($srcPort eq $sshP) || ($dstPort eq $sshP)) {
  133.     $sshs=$sshs+$size;
  134. }
  135. elsif (($srcPort eq $squidP) || ($dstPort eq $squidP)) {
  136.     $squids=$squids+$size;
  137. }
  138. elsif (($srcPort eq $datametricsP) || ($dstPort eq $datametricsP)) {
  139.     $datametrics=$datametrics+$size;
  140. }
  141. elsif (($srcPort eq $phonebookP) || ($dstPort eq $phonebookP)) {
  142.     $phonebooks=$phonebooks+$size;
  143. }
  144. elsif (($srcPort eq $x11P) || ($dstPort eq $x11P)) {
  145.     $x11s=$x11s+$size;
  146. }
  147. elsif (($srcPort eq $telnetP) || ($dstPort eq $telnetP)) {
  148.     $telnets=$telnets+$size;
  149. }
  150. elsif (($srcPort eq $webcacheP) || ($dstPort eq $webcacheP)) {
  151.     $webcaches=$webcaches+$size;
  152. }
  153. elsif (($srcPort eq $cvspserverP) || ($dstPort eq $cvspserverP)) {
  154.     $cvss=$cvss+$size;
  155. }
  156. elsif (($srcPort eq $domainP) || ($dstPort eq $domainP)) {
  157.     $domains=$domains+$size;
  158. }
  159. elsif (($srcPort eq $ntpP) || ($dstPort eq $ntpP)) {
  160.     $ntps=$ntps+$size;
  161. }
  162. elsif (($srcPort eq $h323gatestatP) || ($dstPort eq $h323gatestatP)) {
  163.     $h323s=$h323s+$size;
  164. }
  165. elsif (($srcPort eq $h323hostcallP) || ($dstPort eq $h323hostcallP)) {
  166.     $h323s=$h323s+$size;
  167. }
  168. elsif (($srcPort eq $h323gatediscP) || ($dstPort eq $h323gatediscP)) {
  169.     $h323s=$h323s+$size;
  170. }
  171. elsif (($srcPort eq $pop3P) || ($dstPort eq $pop3P)) {
  172.     $pop3s=$pop3s+$size;
  173. }
  174. elsif (($srcPort eq $timeP) || ($dstPort eq $timeP)) {
  175.     $times=$times+$size;
  176. }
  177. elsif (($srcPort eq $nntpP) || ($dstPort eq $nntpP)) {
  178.     $nntps=$nntps+$size;
  179. }
  180. elsif (($srcPort eq $ftpP) || ($dstPort eq $ftpP)) {
  181.     $ftps=$ftps+$size;
  182. }
  183. elsif (($srcPort eq $ftpdataP) || ($dstPort eq $ftpdataP)) {
  184.     $ftps=$ftps+$size;
  185. }
  186. elsif (($srcPort eq $smtpP) || ($dstPort eq $smtpP)) {
  187.     $smtps=$smtps+$size;
  188. }
  189. elsif (($srcPort eq $snmpP) || ($dstPort eq $snmpP)) {
  190.     $snmps=$snmps+$size;
  191. }
  192. elsif (($srcPort eq $gopherP) || ($dstPort eq $gopherP)) {
  193.     $gophers=$gophers+$size;
  194. }
  195. elsif (($srcPort eq $authP) || ($dstPort eq $authP)) {
  196.     $auths=$auths+$size;
  197. }
  198. elsif (($srcPort eq $rtspP) || ($dstPort eq $rtspP)) {
  199.     $rtsps=$rtsps+$size;
  200. }
  201. elsif (($srcPort eq $bgpP) || ($dstPort eq $bgpP)) {
  202.     $bgps=$bgps+$size;
  203. }
  204. elsif (($srcPort eq $syslogP) || ($dstPort eq $syslogP)) {
  205.     $syslogs=$syslogs+$size;
  206. }
  207. elsif (($srcPort eq "6970") || ($dstPort eq "6970")) {
  208.     $realaudios=$realaudios+$size;
  209. }
  210. else {
  211. $others=$others+$size;
  212. }
  213.     $totals=$totals+$size;
  214.          }
  215. }
  216. }
  217. if (defined($srcPort) && defined($dstPort)) {
  218. if (($srcPort eq $httpP) || ($dstPort eq $httpP)) {
  219.     $http=$http+1;
  220. }
  221. elsif (($srcPort eq $httpsP) || ($dstPort eq $httpsP)) {
  222.     $http=$http+1;
  223. }
  224. elsif (($srcPort eq $domainP) || ($dstPort eq $domainP)) {
  225.     $domain=$domain+1;
  226. }
  227. elsif (($srcPort eq $webcacheP) || ($dstPort eq $webcacheP)) {
  228.     $webcache=$webcache+1;
  229. }
  230. elsif (($srcPort eq $sshP) || ($dstPort eq $sshP)) {
  231.     $ssh=$ssh+1;
  232. }
  233. elsif (($srcPort eq $phonebookP) || ($dstPort eq $phonebookP)) {
  234.     $phonebook=$phonebook+1;
  235. }
  236. elsif (($srcPort eq $x11P) || ($dstPort eq $x11P)) {
  237.     $x11=$x11+1;
  238. }
  239. elsif (($srcPort eq $snmpP) || ($dstPort eq $snmpP)) {
  240.     $snmp=$snmp+1;
  241. }
  242. elsif (($srcPort eq $gopherP) || ($dstPort eq $gopherP)) {
  243.     $gopher=$gopher+1;
  244. }
  245. elsif (($srcPort eq $authP) || ($dstPort eq $authP)) {
  246.     $auth=$auth+1;
  247. }
  248. elsif (($srcPort eq $rtspP) || ($dstPort eq $rtspP)) {
  249.     $rtsp=$rtsp+1;
  250. }
  251. elsif (($srcPort eq $bgpP) || ($dstPort eq $bgpP)) {
  252.     $bgp=$bgp+1;
  253. }
  254. # elsif (($srcPort eq $grisP) || ($dstPort eq $grisP)) {
  255. #     $gris=$gris+1;
  256. # }
  257. elsif (($srcPort eq $syslogP) || ($dstPort eq $syslogP)) {
  258.     $syslog=$syslog+1;
  259. }
  260. elsif (($srcPort eq $datametricsP) || ($dstPort eq $datametricsP)) {
  261.     $datametric=$datametric+1;
  262. }
  263. elsif (($srcPort eq $squidP) || ($dstPort eq $squidP)) {
  264.     $squid=$squid+1;
  265. }
  266. elsif (($srcPort eq $cvspserverP) || ($dstPort eq $cvspserverP)) {
  267.     $cvs=$cvs+1;
  268. }
  269. elsif (($srcPort eq $telnetP) || ($dstPort eq $telnetP)) {
  270.     $telnet=$telnet+1;
  271. }
  272. elsif (($srcPort eq $ntpP) || ($dstPort eq $ntpP)) {
  273.     $ntp=$ntp+1;
  274. }
  275. elsif (($srcPort eq $pop3P) || ($dstPort eq $pop3P)) {
  276.     $pop3=$pop3+1;
  277. }
  278. elsif (($srcPort eq $timeP) || ($dstPort eq $timeP)) {
  279.     $time=$time+1;
  280. }
  281. elsif (($srcPort eq $nntpP) || ($dstPort eq $nntpP)) {
  282.     $nntp=$nntp+1;
  283. }
  284. elsif (($srcPort eq $ftpP) || ($dstPort eq $ftpP)) {
  285.     $ftp=$ftp+1;
  286. }
  287. elsif (($srcPort eq $ftpdataP) || ($dstPort eq $ftpdataP)) {
  288.     $ftp=$ftp+1;
  289. }
  290. elsif (($srcPort eq $smtpP) || ($dstPort eq $smtpP)) {
  291.     $smtp=$smtp+1;
  292. }
  293. elsif (($srcPort eq $h323gatestatP) || ($dstPort eq $h323gatestatP)) {
  294.     $h323=$h323+1;
  295. }
  296. elsif (($srcPort eq $h323hostcallP) || ($dstPort eq $h323hostcallP)) {
  297.     $h323=$h323+1;
  298. }
  299. elsif (($srcPort eq $h323gatediscP) || ($dstPort eq $h323gatediscP)) {
  300.     $h323=$h323+1;
  301. }
  302. elsif (($srcPort eq "6970") || ($dstPort eq "6970")) {
  303.     $realaudio=$realaudio+1;
  304. }
  305. else {
  306. $other=$other+1;
  307. }
  308. $total=$total+1;
  309.         } 
  310. }
  311. print "[PROTO]  [# of PKT]  [% of TOTAL PKT]  [SIZE]  [% of TOTAL SIZE]n";
  312. $httpp1=$http/$total;
  313. $httpp2=$https/$totals;
  314. print  "HTTP $http $httpp1 $https $httpp2n";
  315. $nntpp1=$nntp/$total;
  316. $nntpp2=$nntps/$totals;
  317. print  "NNTP $nntp $nntpp1 $nntps $nntpp2n";
  318. $ntpp1=$ntp/$total;
  319. $ntpp2=$ntps/$totals;
  320. print  "NTP $ntp $ntpp1 $ntps $ntpp2n";
  321. $domainp1=$domain/$total;
  322. $domainp2=$domains/$totals;
  323. print  "DNS $domain $domainp1 $domains $domainp2n";
  324. $smtpp1=$smtp/$total;
  325. $smtpp2=$smtps/$totals;
  326. print  "SMTP $smtp $smtpp1 $smtps $smtpp2n";
  327. $ftpp1=$ftp/$total;
  328. $ftpp2=$ftps/$totals;
  329. print  "FTP $ftp $ftpp1 $ftps $ftpp2n";
  330. $snmpp1=$snmp/$total;
  331. $snmpp2=$snmps/$totals;
  332. print  "SNMP $snmp $snmpp1 $snmps $snmpp2n";
  333. $gopherp1=$gopher/$total;
  334. $gopherp2=$gophers/$totals;
  335. print  "GOPHER $gopher $gopherp1 $gophers $gopherp2n";
  336. #$authp1=$auth/$total;
  337. #$authp2=$auths/$totals;
  338. #print  "AUTH $auth $authp1 $auths $authp2n";
  339. $rtspp1=$rtsp/$total;
  340. $rtspp2=$rtsps/$totals;
  341. print  "RTSP $rtsp $rtspp1 $rtsps $rtspp2n";
  342. #$grisp1=$gris/$total;
  343. #$grisp2=$griss/$totals;
  344. #print  "GRIS $gris $grisp1 $griss $grisp2n";
  345. $syslogp1=$syslog/$total;
  346. $syslogp2=$syslogs/$totals;
  347. print  "SYSLOG $syslog $syslogp1 $syslogs $syslogp2n";
  348. $bgpp1=$bgp/$total;
  349. $bgpp2=$bgps/$totals;
  350. print  "BGP $bgp $bgpp1 $bgps $bgpp2n";
  351. $webcachep1=$webcache/$total;
  352. $webcachep2=$webcaches/$totals;
  353. print  "WEBCACHE $webcache $webcachep1 $webcaches $webcachep2n";
  354. $pop3p1=$pop3/$total;
  355. $pop3p2=$pop3s/$totals;
  356. print  "POP3 $pop3 $pop3p1 $pop3s $pop3p2n";
  357. $datametricp1=$datametric/$total;
  358. $datametricp2=$datametrics/$totals;
  359. print  "DATAMETRICS $datametric $datametricp1 $datametrics $datametricp2n";
  360. $timep1=$time/$total;
  361. $timep2=$times/$totals;
  362. print  "TIME $time $timep1 $times $timep2n";
  363. $sshp1=$ssh/$total;
  364. $sshp2=$sshs/$totals;
  365. print  "SSH $ssh $sshp1 $sshs $sshp2n";
  366. $squidp1=$squid/$total;
  367. $squidp2=$squids/$totals;
  368. print  "SQUID $squid $squidp1 $squids $squidp2n";
  369. $telnetp1=$telnet/$total;
  370. $telnetp2=$telnets/$totals;
  371. print  "TELNET $telnet $telnetp1 $telnets $telnetp2n";
  372. $cvsp1=$cvs/$total;
  373. $cvsp2=$cvss/$totals;
  374. print  "CVS $cvs $cvsp1 $cvss $cvsp2n";
  375. $h323p1=$h323/$total;
  376. $h323p2=$h323s/$totals;
  377. print  "H323 $h323 $h323p1 $h323s $h323p2n";
  378. $phonebookp1=$phonebook/$total;
  379. $phonebookp2=$phonebooks/$totals;
  380. print  "PHONEBOOK $phonebook $phonebookp1 $phonebooks $phonebookp2n";
  381. $x11p1=$x11/$total;
  382. $x11p2=$x11s/$totals;
  383. print  "X11 $x11 $x11p1 $x11s $x11p2n";
  384. $otherp1=$other/$total;
  385. $otherp2=$others/$totals;
  386. print  "OTHER $other $otherp1 $others $otherp2n";