免费注册 查看新帖 |

Chinaunix

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

写了个脚本,土办法封emule 0.47c [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-18 16:27 |只看该作者 |倒序浏览
之前一直用l7-filter封堵P2P软件,近日突然发现对emule没有作用了,经过google发现是emule自0.47c开始使用了一种叫“协议迷惑”的技术,加密了包头。下边这段引用自网上的翻译:

[协议迷惑是一个使电骡在于其他客户端或服务器通讯时迷惑或“隐藏”自身协议的特性!没有使用协议迷惑时,每一通电骡连接通讯都有一个固定的格式,该格式可以让任何服务器辨别此讯息是来自一个电骡发出的数据包。如果本特性被打开后,整个电骡通讯产生的包都会以随机数据的面目出现从而使得自动辨别很难实现。这将帮助应付目前电骡协议受到的不公待遇甚或被某些网络通过辨别其数据包对其进行的完全封锁。
需重视协议迷惑并不打算做到以下几点:它并不增加你的隐藏性,它既不能使你隐身也无法对付嗅探器。同时如果你的网管拥有合法理由封锁电骡(比如在一个严格的公司网络里),打开本特性可能会给你带来其他不想要的结果。
协议迷惑目前可用于ED2k TCP 和 UDP, Server TCP 和 UDP 还有 Kad TCP 通讯. Kad UDP的迷惑尚未被支持。]

那么如何才能再次封住它呢?可能不久会有高人写出了更好的l7-filter的pattern,但暂时还没有。因此我查了emule的原理,想了一个土办法来封住emule。emule下载的具体原理见http://board.verycd.com/t262133.html

根据该网页上说emule需要与emule服务器联系上以后才能开始下载,因此只要我们封住了emule服务器的地址,阻止emule客户端与服务器联系就能阻止住。但是emule的服务器有那么多怎么才能封能?嘿嘿,有个老外的网站,专么发布emule的服务器,虽然不可能完全包括,但封了他的列表以后至少能封住九成。因此我写了个小脚本,自动到http://ed2k.2x4u.de/list.html这个地方取list.html这个网页,然后用shell脚本进行处理,得到那里发布的emule服务器的ip地址列表,然后呢?还用我说吗?当然是使用iptables封了!嗬嗬!!!!

下载回来的list.html在linux下看到的是如下的格式:

new SI(0x6d253348,15932,"DonkeyServer No2","www.First-Load.de / quad opteron 32gb / germany",1225631,305182119,0x3867625,0xfffc5418,0),

其中的0x6d253348就是DonkeyServer No2这个服务器的ip地址的16进制格式,不过是倒的,需要处理一下。

该网站的ip从网页上看是72.51.37.109,而0x6d253348对应的是:

0x6d=109
0x25=37
0x33=51
0x48=72

正好是相反的顺序,而且有这种0x335f13e少了一位的需要在前边补上一个0,变成0x0335f13e形式。
下边是我写的一个处理的脚本,所作的工作是

1、用wget下载list.html
2、用awk和sed提出0x0335f13e这段ip地址的部分
3、然后判断长度,如果是0x335f13e这种形式的需要在前边补0
4、用echo ${string:0:4} 的方式每两位一截,存入变量中
5、用echo $(($digi4))进行16进制-〉10进制转换
6、按照正常ip地址顺序输出到一个临时文件中
7、用sort进行排序
8、最后生成serverlist文件就是得到的ip地址列表。

脚本的代码如下:(水平有限,实在是写得很土,让高人见笑了)

  1. #!/bin/bash
  2. wget [url]http://ed2k.2x4u.de/list.html[/url]
  3. if [ "$?" -ne "0" ];then
  4. echo "Get server list fail!"
  5. exit
  6. fi
  7. cat list.html |grep SI|awk ' { print $2 } '|sed -e 's/SI(//g'|awk -F ','  ' { print $1 } ' > iplist
  8. for string in $( (cat iplist|sort -u) )
  9. do
  10. length=$(expr length $string)
  11. if [ "$length" == "9" ];then
  12. string=$(echo $string|sed -e 's/0x/0x0/g')
  13. fi
  14. digi4=$( echo ${string:0:4} )
  15. digi3=$( echo ${string:4:2} )
  16. digi2=$( echo ${string:6:2} )
  17. digi1=$( echo ${string:8:2} )
  18. B104=$( echo $(($digi4)) )
  19. B103=$( echo $((0x$digi3)) )
  20. B102=$( echo $((0x$digi2)) )
  21. B101=$( echo $((0x$digi1)) )
  22. echo $B101'.'$B102'.'$B103'.'$B104 >> ipdddddd
  23. done
  24. sort -n ipdddddd > tmpfile
  25. rm -f ipdddddd
  26. mv tmpfile serverlist
  27. echo "List convert success!"
复制代码


这个是用上边的serverlist生成iptables命令的脚本:
  1. #!/bin/bash
  2. #Destination: insert user who is allowed to use qq,bt
  3. #Usage: ip2rule ip_file
  4. #Version: 0.1
  5. if [ "$#" == "0" ];then
  6.    echo "Usage: $0 ip_file_name"
  7.    exit 0
  8. fi
  9. if [ "$1" == "-h" ];then
  10.    echo "Usage: $0 ip_file_name"
  11.    echo "It will create a new file \"rule\""
  12.    exit 0
  13. fi
  14. if [ -e "$1" ];then
  15.    cat $1 > tmpfile
  16.    cat tmpfile|sed -e 's/^/iptables -A FORWARD -s /g' > tmpfile1
  17.    cat tmpfile1|sed -e 's/$/ -j DROP/g' > tmpfile2
  18.    if [ -e rule ];then
  19.       rm -f rule
  20.       rm -f tmpfile
  21.       rm -f tmpfile1
  22.       mv tmpfile2 rule
  23.    else
  24.       rm -f tmpfile
  25.       rm -f tmpfile1
  26.       mv tmpfile2 rule
  27.    fi
  28. else
  29.    echo "The ip file $1 is not exist!"
  30. fi
复制代码


[ 本帖最后由 flycolt 于 2006-12-19 14:14 编辑 ]

评分

参与人数 1可用积分 +5 收起 理由
platinum + 5 very good ~!

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2006-12-18 22:22 |只看该作者
最好加上注释,代码部分用 [ code ] 括起来

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
3 [报告]
发表于 2006-12-19 14:48 |只看该作者
偏方治大病
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP