xia*_*ian 16 c++ networking tcp winpcap
我目前正在开发一个程序,它可以嗅探从特定地址发送和接收的TCP数据包.我想要完成的是回复定制的数据包到某些收到的数据包.我已经完成了解析.我已经可以生成有效的以太网,IP和 - 大部分 - TCP数据包.
我唯一无法弄清楚的是如何确定seq/ack数.
虽然这可能与问题无关,但程序是使用WinPCap用C++编写的.我要求任何可能对我有帮助的提示,文章或其他资源.
DGe*_*try 24
建立TCP连接时,每一方都生成一个随机数作为其初始序列号.这是一个强随机数:如果互联网上的任何人都可以猜测序列号,就会出现安全问题,因为他们可以轻松伪造数据包以注入TCP流.
此后,对于发送的每个字节,序列号将递增1. ACK字段是来自另一侧的序列号,被发送回确认接收.
RFC 793(最初的TCP协议规范)将会有很大帮助.
如果我理解正确的话-您正在尝试发起 TCP SEQ 预测攻击。如果是这种情况,您将需要研究目标操作系统的初始序列号生成器的细节。
几乎所有主要操作系统都存在广泛宣传的漏洞,因为它们的 ISN 生成器是可预测的。我没有密切关注后果,但我的理解是大多数供应商发布了补丁来随机化他们的 ISN 增量。
小智 5
我有同样的工作要做.首先,初始seq#将随机生成(0-4294967297).然后,接收方将计算它收到的数据的长度,并将ACK发送seq# + length = x给发送方.然后序列将为x,发送方将发送数据.类似地,接收器将计算长度x + length = y并发送ACK y等等......它是如何生成seq/ack的......
如果你想显示它实际上尝试在Wireshark中嗅探数据包并遵循TCP流并查看方案......
| 归档时间: |
|
| 查看次数: |
24498 次 |
| 最近记录: |