wangwolue1
驱动牛犊
驱动牛犊
  • 注册日期2002-10-19
  • 最后登录2008-11-26
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1691回复:4

在IP Filter Driver Hook 中怎么样得到端口号?

楼主#
更多 发布于:2002-11-13 11:36
在IP Filter Driver Hook 中可以得到发送方和接收方的ip,
但是应该怎么样才能得到它们的端口号?
ss
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2002-11-13 13:05
你有我的例子吧?看
IfHookProc( unsigned char   *PacketHeader,
                         unsigned char   *Packet,
                         unsigned int    PacketLength,
                         unsigned int    RecvInterfaceIndex,
                         unsigned int    SendInterfaceIndex,
                         IPAddr          RecvLinkNextHop,
                         IPAddr          SendLinkNextHop
                         );
第二个参数Packet就是IP的数据,根据DDK的说明,这部分不包括IP头,使用IPHeader * pHdr = ( IPHeader * )PacketHeader;
根据pHdr->iph_protocol,你可以知道这个包是个什么包,比方说吧,如果是TCP,那么你定义一个TCP头的结构TcpHead,用TcpHead * pTcp = ( TcpHead * )Packet;这样就可以得到端口了。
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-13 13:06
在IP Filter Driver Hook 中可以得到发送方和接收方的ip,
但是应该怎么样才能得到它们的端口号?


如果是tcp/udp协议,那么紧跟原目的ip后的就是双方的各两个字节的端口号!

嘿嘿。。。
给分! :o
[color=red]大头鬼! :P[/color]
wangwolue1
驱动牛犊
驱动牛犊
  • 注册日期2002-10-19
  • 最后登录2008-11-26
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-13 23:37
我定义了一个TCP头的结构:

typedef struct tcp_hdr //定义TCP首部
{
USHORT th_sport; //16位源端口
USHORT th_dport; //16位目的端口
unsigned int th_seq; //32位序列号
unsigned int th_ack; //32位确认号
unsigned char th_lenres; //4位首部长度/6位保留字
unsigned char th_flag; //6位标志位
USHORT th_win; //16位窗口大小
USHORT th_sum; //16位校验和
USHORT th_urp; //16位紧急数据偏移量
}TCPHEADER;
 
//////在这里取源端口
if(pHdr->iph_protocol==6)
{
TCPHEADER * pTcp = ( TCPHEADER * )Packet;
int tsport =pTcp->th_sport;
}

不知为什么取源端口的值不对,应该怎么样改?
ss
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地下室#
发布于:2002-11-14 10:21
不是要改,而是因为有一个网络字节顺序的问题。用htons转换一下,就可以看到你熟悉的端口了。
游客

返回顶部