做NDIS驱动截获封包 但是遇到了一个问题,求大神回复?

web112345 2018-12-03 05:28:01
在截取封包数据头 的IP头

typedef struct _IP_HEADER
{
char cVersionAndHeaderLen;   //版本信息(前4位),头长度(后4位)
char cTypeOfService;       // 服务类型8位
short sTotalLenOfPacket;     //数据包长度
short sPacketID;         //数据包标识
short sSliceinfo;         //分片使用
char cTTL;           //存活时间
char Protocol;       //协议类型
short sCheckSum;        //校验和
unsigned int uiSourIp;      //源ip
unsigned int uiDestIp;      //目的ip
} __attribute__((packed))IP_HEADER, *PIP_HEADER ;

Protocol成员的这个不是说数是上层协议类型么 17 UDP 6 TCP 为什么我在这里打印输出的全是17呢? 包明明是基于TCP的 求大神回复
...全文
436 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
taianmonkey 2019-04-11
  • 打赏
  • 举报
回复
#define PROTOCOL_TCP 0x06 #define PROTOCOL_UDP 0x11 if( pIpHeader->Protocol == PROTOCOL_TCP ){ //TCP } else if( pIpHeader->Protocol == PROTOCOL_UDP ){ //UDP }
CubieZhou 2019-02-23
  • 打赏
  • 举报
回复
首先要明确你这里的NDIS驱动具体指的是哪个层面的驱动: NDIS协议驱动、NDIS中间层驱动还是NDIS微端口驱动。
然后在确认你自身程序没有问题的前提下,要确保你的驱动收发的数据没有被其他过滤驱动Attach其上或者直接Hook修改。你可以使用相关的设备对象堆栈查看工具(如Device Tree、WinDBG等)检验一下。
web112345 2018-12-06
  • 打赏
  • 举报
回复
引用 1 楼 aabbabababaa 的回复:
确定都是用tcp连接?没用地IP_HEADER,来学习下
确实是TCP的包 现在更离谱了 我用户层用LSP拦截的IP地址 到内核里判断 除了几个IP对的上 其余的和LSP全部对不上 360的一些包对的上 想放弃了。。。。
aabbabababaa 2018-12-05
  • 打赏
  • 举报
回复
确定都是用tcp连接?没用地IP_HEADER,来学习下

9,506

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 安全技术/病毒
社区管理员
  • 安全技术/病毒社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧