TCP,HTTP原始套接字疑问?本帖最后由 VisualEleven 于 2012-10-08 09:41:00 编辑1、TCP连接需要设计到ack跟s
TCP,HTTP原始套接字疑问?
本帖最后由 VisualEleven 于 2012-10-08 09:41:00 编辑 1、TCP连接需要设计到ack跟seq,如果我使用原始套接字,填入的是一个非本地的源IP地址,那么我该怎么知道服务器返回的seq和ack呢?如果不知道的话,那么就TCP无法正常建立,无法欺骗到服务器了。
2、如果上面的问题解决了,那么我使用这种办法修改源IP地址,是否可以刷某些网站的访问记录?因为源IP改变了,那么就相当于一个新的访问者。此办法是否可行呢?
[解决办法]
要靠运气,猜seq,是二班的难度
要刷某些网站的访问记录,还是掏点银子,买些肉鸡干活
[解决办法]
关键是ISN算法问题
[解决办法]
你不能使用假的源IP,这是rule,必须遵守。
违反rule就是犯罪。
[解决办法]
1) 第1步:客户端向服务器发送一个同步数据包请求建立连接,该数据包中,初始序列号(ISN)是客户端随机产生的一个值,确认号是0;
2) 第2步:服务器收到这个同步请求数据包后,会对客户端进行一个同步确认。这个数据包中,序列号(ISN)是服务器随机产生的一个值,确认号是客户端的初始序列号+1;
3) 第3步:客户端收到这个同步确认数据包后,再对服务器进行一个确认。该数据包中,序列号是上一个同步请求数据包中的确认号值,确认号是服务器的初始序列号+1。
关键是第二步,获取不到服务器随机生成的ISN值,啥事都干不了的呢。
[解决办法]在这个帖子上有答案,不能用raw socket发送TCP数据,这是协议栈处理的.
http://topic.csdn.net/u/20120926/09/afb2d58d-a89f-4981-95de-b84f0684cee6.html
===================
在Windows 7、Windows Vista、Windows XP带有Service Pack 2或3上,使用原始套接口时有下面两个限制:
(1)不能发送TCP数据,创建协议类型为IPPROTO_TCP的原始套接口,调用bind或sendto函数时会失败,错误码为WSAEINVAL;
(2)协议类型为IPPROTO_UDP的原始套接口,输出UDP数据报的源IP地址必须是本机网络接口的地址,如果源IP地址不是本机的,调用sendto时会失败。
===================
[解决办法]seq 和 ack 是有规律的
但问题时 ,如果你是通信的第三方 ,你如何知道 第一方和第二方只讲的seq 和ack
但如果被你知道 seq和ack,说不定你就可以进行rst攻击了
[解决办法]我用winpcap实现应该没问题吧?就是通信第三方无法获知seq跟ack
[解决办法]wincap是链路层的,没有限制,可以实现.但你需要自己解析IP,TCP首部和数据.
[解决办法]这些报文构造都没有问题,我最关键的是要怎么要获取服务器返回到虚假源地址的seq。