yc.cf
驱动牛犊
驱动牛犊
  • 注册日期2002-11-01
  • 最后登录2006-03-06
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2877回复:9

自填充TCP协议头结构

楼主#
更多 发布于:2003-01-27 11:26
请教高人,我该怎样填充下面这个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;

最新喜欢:

baoyibao99baoyib...
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2003-01-27 11:59
你要干什么?
yc.cf
驱动牛犊
驱动牛犊
  • 注册日期2002-11-01
  • 最后登录2006-03-06
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-28 09:07
呵呵,不知道你用过TroubNote没有,小弟闲来无聊,更为了报复别人,截获了它发出的数据包,然后自己写国个程序循环发同样结构的数据包,让他满屏幕都是Note,哈哈。(已实现)不过我发现它所接受的包中除了一些定义消息外只有电脑名,没有包括IP地址。就是说我无法改变对方看到的我的IP。
所以我要修改IP头(我用2000S),同时就要自己填TCP协议头数据了。(不知道是不是一定要,如果不,好象是不可以)。还请fracker 高手多加指点。先谢谢了。
ysdes
驱动牛犊
驱动牛犊
  • 注册日期2001-11-20
  • 最后登录2005-11-16
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-14 09:54
用你截获的包来填充
清泉
yc.cf
驱动牛犊
驱动牛犊
  • 注册日期2002-11-01
  • 最后登录2006-03-06
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-17 21:28
那样改不了IP,你的IP会在他那里显示
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-18 10:05
那样改不了IP,你的IP会在他那里显示



怎么会呢?你把源IP改了,然后重新计算校验就可以了呀 !
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
yc.cf
驱动牛犊
驱动牛犊
  • 注册日期2002-11-01
  • 最后登录2006-03-06
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-18 12:13
理论上是,但是接收端不是我们可以控制的。总是发送不成功。
不知道用RAW_SOCK在TCP/IP协议上,有什么要注意的,还请高人指教
我试了很久,一直都不行。
不知道你有没有RAW_SOCK在TCP协议上的例子。
不盛感激!!!
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-19 21:53
理论上是,但是接收端不是我们可以控制的。总是发送不成功。
不知道用RAW_SOCK在TCP/IP协议上,有什么要注意的,还请高人指教
我试了很久,一直都不行。
不知道你有没有RAW_SOCK在TCP协议上的例子。
不盛感激!!!


我回去试了一下,好象也不行。不知道为什么。包肯定没有问题,然后也发送出去了,可是就是没有回应。郁闷!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
yc.cf
驱动牛犊
驱动牛犊
  • 注册日期2002-11-01
  • 最后登录2006-03-06
  • 粉丝0
  • 关注0
  • 积分34分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-20 18:16
该不是要用RAW_SOCK模拟一次TCP/IP连接吧,那工程也太大了点。
而且我一直没搞定。^_^
bingle
驱动牛犊
驱动牛犊
  • 注册日期2002-07-03
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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了。

目前好像没有好的解决办法
游客

返回顶部