阅读:3010回复:9
自填充TCP协议头结构
请教高人,我该怎样填充下面这个TCP协议头结构,急,不胜感激。
typedef u_int tcp_seq; typedef struct udp_hdr { u_short src_portno; /* source port */ u_short dst_portno; /* destination port */ tcp_seq th_seq; /* sequence number */ tcp_seq th_ack; /* acknowledgement number */ #if BYTE_ORDER == LITTLE_ENDIAN u_char th_x2:4, /* (unused) */ th_off:4; /* data offset */ #endif #if BYTE_ORDER == BIG_ENDIAN u_char th_off:4, /* data offset */ th_x2:4; /* (unused) */ #endif u_char th_flags; #define TH_FIN 0x01 #define TH_SYN 0x02 #define TH_RST 0x04 #define TH_PUSH 0x08 #define TH_ACK 0x10 #define TH_URG 0x20 u_short th_win; /* window */ u_short tcp_checksum; /* checksum */ u_short th_urp; /* urgent pointer */ }TCP_HDR; |
|
最新喜欢:![]() |
沙发#
发布于:2003-01-27 11:59
你要干什么?
|
|
板凳#
发布于:2003-01-28 09:07
呵呵,不知道你用过TroubNote没有,小弟闲来无聊,更为了报复别人,截获了它发出的数据包,然后自己写国个程序循环发同样结构的数据包,让他满屏幕都是Note,哈哈。(已实现)不过我发现它所接受的包中除了一些定义消息外只有电脑名,没有包括IP地址。就是说我无法改变对方看到的我的IP。
所以我要修改IP头(我用2000S),同时就要自己填TCP协议头数据了。(不知道是不是一定要,如果不,好象是不可以)。还请fracker 高手多加指点。先谢谢了。 |
|
地板#
发布于:2003-05-14 09:54
用你截获的包来填充
|
|
|
地下室#
发布于:2003-05-17 21:28
那样改不了IP,你的IP会在他那里显示
|
|
5楼#
发布于:2003-05-18 10:05
那样改不了IP,你的IP会在他那里显示 怎么会呢?你把源IP改了,然后重新计算校验就可以了呀 ! |
|
|
6楼#
发布于:2003-05-18 12:13
理论上是,但是接收端不是我们可以控制的。总是发送不成功。
不知道用RAW_SOCK在TCP/IP协议上,有什么要注意的,还请高人指教 我试了很久,一直都不行。 不知道你有没有RAW_SOCK在TCP协议上的例子。 不盛感激!!! |
|
7楼#
发布于:2003-05-19 21:53
理论上是,但是接收端不是我们可以控制的。总是发送不成功。 我回去试了一下,好象也不行。不知道为什么。包肯定没有问题,然后也发送出去了,可是就是没有回应。郁闷! |
|
|
8楼#
发布于:2003-05-20 18:16
该不是要用RAW_SOCK模拟一次TCP/IP连接吧,那工程也太大了点。
而且我一直没搞定。^_^ |
|
9楼#
发布于:2003-05-28 17:05
该不是要用RAW_SOCK模拟一次TCP/IP连接吧,那工程也太大了点。 tcp是有连接的,所以你要给对方发包就一定要先建立连接才行,否则对方的应用程序不能收到你发送的数据包,当你发送一个ack包给对方的系统,因为他的系统认为之前没有这个连接存在,所以系统tcp/ip栈就把包丢弃了。 然而你也不能用raw socket 来模拟先建立tcp连接,再发包,why?当你发送一个你自己的真实ip的tcp syn包给对方,对方发送syn/ack给你的系统,你的系统因为自己没有发起过这个连接的建立,因此它返回rst给对方,你的应用程序没有机会返回ack给对方,这个连接就失败了。更不要说还假冒其他人的ip了。 目前好像没有好的解决办法 |
|