摘要:随着互联网带宽的发展,运营商为了保护自己的利益而不让用户几家合用路由上网,于是普遍采用IPID、时间戳、User-Agent头等技术来检测技术来判定路由器后面有多少台计算机在共享上网。本文深入剖析这些技术的基础上,提出如何防范运营商的共享检测,着重分析了IPID解决方案。
关键词:共享神盾 共享神矛 网络尖兵 IPID

一、 检测原理简析
现在电信运营商的带宽越来越大,Internet技术的发展和高昂的接入价格,使得越来越多的用户采取合租方式通过路由上网。但是有线宽带由于没有无线宽带那种SIM防复制,防止破解等技术,因此控制路由器上网一直是他们研究的重点。
原来电信运营商常用SMTP检测技术来判定是否路由,但是随着时代的发展和设备的更新,现在运营商很难从设备层来控制用户,于是更新的检测技术,采用IPID判定法、TTL判定法、时间戳判定法、User-Agent判定法等方法来检测路由后面的用户数。

(1)  IPID判定法
根据Windows协议栈的特性,一台计算机IPID值是连续的。通过分析IPID值的跳跃我们可以得出计算机的台数。Windows网络协议栈实现时,ID字段的值随着发送IP报文数的增加而增加,IPID的初始值是随机值,一般说来,不同主机的初始值有较大差距。由于Linux、Unix的IPID是随机值,故此判定方法对Linux、Unix无效。

(2)  TTL判定法
TTL指生存时间,指定数据报被路由器丢弃之前允许通过的网段数量。TTL 是由发送主机设置的,以防止数据包不断在 IP 互联网络上永不终止地循环。转发 IP 数据包时,要求路由器至少将 TTL 减小 1。不同的操作系统其TTL不同:LINUX 为64,WIN2K/NT为 128,WINDOWS9X 系列 为32,UNIX 系列为255。如果检测到有多个TTL的值则可以断定有多台主机。

(3)  时间戳判定法
由于不同主机的物理时钟一般存在偏移,且网络协议栈时钟与物理时钟存在对应关系,同时不同主机发送报文的频率与时钟存在统计关系,因此可以分析发现不同的网络时钟偏移数目来确定主机的台数。

(4)  User-Agent头判定法
HTTP头分为HTTP请求头和HTTP应答头。HTTP请求头为HTTP客户在浏览服务器上的主页时,向服务器发送请求的时候必须指明请求类型。请求类型是指HTTP-GET或HTTP-POST,每个HTTP-GET和HTTP-POST都由一系列HTTP请求头组成,这些请求头定义了客户端从服务器请求了什么,而响应则是由一系列HTTP应答头和应答数据组成,如果请求成功则返回应答。在HTTP头中有一个User-Agent头标明了浏览器类型。不同操作系统、不同IE版本、不同补丁的User-Agent字段不同。由此可以根据user-Agent头的不同来判定主机的数量。

二、 分析Windows TCP/IP协议栈数据处理过程
在众多检测原理中,IPID判定法判定准确,用得较多,其他再作为辅助判定方法。下面我们主要分析一下Windows TCP/IP协议栈数据处理过程。
图1数据包处理的 TCP/IP 体系结构

1.WinSock的数据包形成后,Tcpip.sys会将其传递给防火墙驱动程序 (Ipnat.sys) 进行处理。防火墙检查该数据包是否属于所要阻止的Internet控制消息协议 (ICMP) 消息类型。如果ICMP消息被阻止,防火墙就将丢弃该数据包。
处理完后,防火墙会将该数据包传回给Tcpip.sys,

2.Tcpip.sys 将数据包传递给筛选器驱动程序 (Ipfltdrv.sys) 进行处理。
Ipfltdrv.sys根据下一跃点接口,将该数据包与已配置的出站IP数据包筛选器格式进行对比。
若出站数据包筛选器不允许该数据包通过,Ipfltdrv.sys就会直接下,丢弃该数据包。若出站数据包筛选器允许该数据包,Ipfltdrv.sys就会将该数据包传回给Tcpip.sys。

3.Tcpip.sys 将该数据包传递给Ipsec.sys进行处理。
Ipsec.sys根据IPsec筛选器组,决定是否允许、阻止或保护该数据包。若允许的话,Ipsec.sys 会在不修改该数据包的情况下,将其发回给Tcpip.sys。若阻止的话,Ipsec.sys会直接丢弃该数据包。若要进行保护的话,Ipsec.sys会在将数据包传回给Tcpip.sys之前,对其添加适当的IPsec保护。
Tcpip.sys随后会通过下一跃点接口,将该数据包发送到下一跃点IP地址。完成数据包的出站。

三、 解决方案

(1)对于IPID检测的破解
因为各运营商破解时是采集其前置机上的数据包通过分析IPID来判定的其主机数目。由上面我们知道只需要我们出去的数据包在发出前我们修改其所有数据包的IPID头设定为一个统一的值或者随机值即可。因此我们只需在图1第2步黑色椭圆的位置添加驱动程序修改IPID头即可。
既然破解检测的核心在于修改Windows协议栈,我们选择修改开源驱动DrvFiltIp.sys来完成IPID头的修改,因为数据包通过ipfltdrv.sys以后,IP层的数据包结构都不会拦截或者修改,这个时候我们只要在他进入TCPIP.sys之前使用一个hook驱动,加载了DrvFiltIp.sys,将IPID改为固定值或者随机值,就可以解决所谓IPID检测问题。
修改FilterPackets过滤函数

(2)对于TTL的检测,我们有多种解决办法:
1、修改注册表办法,在Windows下我们可以直接修改注册表让TTL同一为一个固定值。
在“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\ Parameters”,找到“DefaultTTL”,将该值修改为十进制的固定值,重新启动服务器系统后即可。

2、修改驱动的办法:在上面ipid改动代码中加入ipp->ipTTL=111(111为固定值)

3、Linux下修改方法:
命令行#sysctl -w net.ipv4.ip_default_ttl=n,(n=0~255),若n>255,则ttl=0,重启服务器即可生效。

(3)统一时间戳,这个可以通过服务程序在内网建立一个动态的udp时钟服务器,将每台计算机启动后时间进行同步,保证内网的计算机时间都是一致的,这样就解决了时间戳的检查问题。

(4)user-agent头判定法,同样可以通过修改注册表修改user-agent头。这个办法网上介绍了很多,就不再阐述。
四、改进和建议
上述办法虽然比较完美的解决了网络尖兵的检测问题,但是随着时间的推移,电信商又通过Windows的tcp连接数不超过255个来做文章,判断后台端口使用数量等问题,这些问题虽然可以通过路由器编程直接解决,但是也可以通过一个服务统计连接数解决,总之,未来将会有更新的检测技术产生,研究检测原理的办法也将不断的更新。

参考文献
1、赵丙秀,ADSL共享上网检测的原理与实现,《电脑学习》,2009年第2期
2、安志锋,破解网络尖兵初探,《电脑知识与技术》,2006年第22期
3、吴县植,让您的宽带继续共享,《办公自动化》2007年第6期

作者简介:
赵丙秀,女,1976年10月,副教授,武汉软件职业学院
通讯地址:武汉市武昌关风路特一号(武汉软件工程职业学院计算机与软件学院)
邮政编码:430205   办公电话:15671683670 电子邮箱:sonyxiu@163.com

电信联通ADSL共享上网检测的原理与实现相关推荐

  1. 关于电信、网通检测ADSL共享上网的技术手段

    关于电信.网通检测ADSL共享上网的技术手段 关于电信.网通检测ADSL共享上网的技术手段 - AreYouOK? - ITeye技术网站 关于电信.网通检测ADSL共享上网的技术手段 电信网络协议W ...

  2. 电信和邻居共享上网_与k个最近邻居的电信行业客户流失预测

    电信和邻居共享上网 问题描述 (Problem Description) This blog aims to predict when a customer could probably churn ...

  3. Linux操作系统下iptables+nat实现ADSL共享上网!

    Linux操作系统下iptables+nat实现ADSL共享上网! ADSL作为一种较为成熟的宽带接入技术,凭着传输速度快.安装使用方便,无需太多的投入,以及节省费用等优点被现在大部分家庭和中小企业所 ...

  4. 宽带路由器实现ADSL共享上网

    宽带路由器实现ADSL共享上网 [徐远志 2002-9-17 11:11:04] <电脑报>编辑部 前面我们详细讲述了如何用路由式ADSL Modem+集线器(或交换机)实现多机共享.大家 ...

  5. Fedora下adsl共享上网

    最近开始折腾fedora, 在老机器上跑着挺快的,所以研究下给它加上adsl上网. 需要有一个电信adsl帐号和密码,一个modem,如果是多台机器,就得有一个路由器 软件方面, 一般用的是rp-pp ...

  6. 转自eNet硅谷动力: ADSL共享上网设置总结

    Word 文档. http://files.cnblogs.com/honmiz/ADSL%e5%85%b1%e4%ba%ab%e4%b8%8a%e7%bd%91.rar 转载于:https://ww ...

  7. 破解山东网通adsl共享封杀

    从去年开始,山东网通继南方电信开始封杀共享上网之后,也开始了对本地用户下了屠刀. 嘿嘿,比较惨.刚出来的时候没感觉有什么,因为我是一个人独享一条adsl线路. 以为网通还是像以前一样封一段时间就拉倒啦 ...

  8. 用代理服务器实现Drcom共享上网

    上一篇日志中提到在Linux用NAT方式实现了Drcom的共享上网,而对于大部分使用windows操作系统的用户来说,可采用代理服务器方式实现无路由,无需登陆的上网方式. 之前有提到比较常用的两种代理 ...

  9. 电信联通共享检测技术及防封杀

    很多地区的电信联通光纤宽带用户会遇到这种情况:如果用户接路由多机共享超出一定数量,网页打不开.游戏掉线.只有当接入终端数符合约定数量后才能会恢复上网(几十分钟以内).有些地区则没有任何提示,还会出现5 ...

最新文章

  1. 元对象我所理解的设计模式(C++实现)——享元模式(Flyweight Pattern)
  2. python使用近似公式计算e_python如何算自然底数e(方法二)
  3. CSS3给网页穿上美丽的外衣
  4. 随手能做194个实验,不呆板,轻松撬动大智慧
  5. jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第3部分
  6. 编写一个C程序,实现以下功能:编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101。在main函数中输入整数n,调用函数,输出它的二进制
  7. 和pythondjango后端_webGIS实践:4_0_python django后端搭建web工程
  8. android:fillviewport=true 不起作用,无法在android模拟器中滚动
  9. 每个时代都有每个时代的风口
  10. CAD转换图片的小窍门
  11. Windows 相关镜像及补丁下载地址
  12. Alias Method——高效的离散分布采样算法
  13. 软考项目管理十大管理及过程
  14. 选择中医 - 养肾补肾方法
  15. et al和etc区别
  16. Halo博客建站小记
  17. Python从RGBD数据进行3D场景重建
  18. 投资中的N种认知偏差总有一款败你
  19. screen:There is no screen to be resumed matching XXX 解决办法
  20. HTML期末作业-我的大学生活

热门文章

  1. dlib 一个有趣的开源c++库
  2. (nips2014)Generative Adversarial Nets by Ian Goodfellow review
  3. vue如何使用elementui分页器,前端分页器
  4. stringbuild的拼接快不快_string与StringBuilder拼接字符串的性能差距有多大
  5. 这两年大家都在吃瘪,结果微软他闷声发大财了?!
  6. 云计算与大数据期末考试题库
  7. 电子名片-vcard(一)
  8. css弹性布局自动换行怎么实现,网页设计常用布局之CSS弹性布局
  9. 如何在调色环节保障网剧制作的创意、效率和品质(案例解析)
  10. 生词提取方法,学以致用(用于生成学习计划)