关于whoer.net获取TCP/IP相关信息的原理、伪造性及实现端的技术问询
Whoer.net如何获取TCP/IP系统信息及伪造可能性解析
咱们先拆解whoer.net获取你看到的那串TCP/IP系统信息的逻辑,其实是客户端JavaScript为主,服务端辅助验证的组合方式:
- 基础系统内核判断:浏览器提供的
navigatorAPI是关键,JS可以读取navigator.userAgent、navigator.platform这些字段,从这些信息里就能识别出Windows NT内核的特征——毕竟不同系统的userAgent有固定的格式规律,比如Windows系统的userAgent里通常会包含Windows NT字样。 - MTU值探测:这个是客户端JS通过网络测试实现的,比如发送不同大小的数据包,观察哪些能成功传输,以此推算出当前网络的MTU值。以太网默认MTU就是1500,所以大部分场景下会返回这个数值。
- 服务端辅助验证:服务端会记录TCP连接的底层特征,比如TCP初始序列号的生成规律、窗口大小、握手包的参数等——Windows NT内核的TCP栈有自己独特的行为模式,服务端可以用这些特征来交叉验证客户端JS拿到的信息,确保准确性。
接下来聊伪造的可能性:
- 客户端侧的信息完全可以伪造:
- 你可以通过浏览器开发者工具、插件甚至专门的工具修改
userAgent,让JS读取到假的系统信息,比如把Windows伪装成Linux。 - MTU值也可以干扰,比如手动修改本地网卡的MTU配置,或者使用代理工具模拟不同的MTU环境,让探测结果偏离真实值。
- 你可以通过浏览器开发者工具、插件甚至专门的工具修改
- 服务端侧的TCP栈特征伪造难度较高:要模拟Windows NT内核的TCP行为,需要修改TCP包的底层参数,比如初始序列号的生成规则、窗口缩放因子等,普通用户很难操作,大部分代理工具也没法完全复刻这些特征。
最后回答你的核心疑问:
这个获取过程不是完全在服务端进行,大部分信息是客户端JavaScript拿到的,所以是可以伪造的,但伪造的完整度取决于你能覆盖多少客户端和网络层面的参数——单纯伪造JS能读取的信息很简单,但要骗过服务端的TCP特征验证就需要更专业的手段了。
内容的提问来源于stack exchange,提问作者Fadey Anomaly




