基于winpcap嗅探器的问题

问题描述

基于winpcap嗅探器的问题

在网上找到的实例中有关于初始化IP头信息的代码,看不太懂,求大神指教。
我自己要写关于OSPF部分的代码。代码如下

unsigned char *pos;
pos=(unsigned char *)buf;
m_nVersion=*pos/16;
m_nHeaderLength = *pos%16;

pos++;
m_nServiceType=*pos;
m_nPrecedence=(*pos & 16)*4+(*pos & 8)*2+(*pos & 4);
if(*pos & 16)
    m_bDelay = true;
else
    m_bDelay = false;
if(*pos & 8)
    m_bThroughtPut = true;
else
    m_bThroughtPut = false;
if(*pos & 4)
    m_bReliability = true;
else
    m_bReliability = false;

pos++;
m_uTotalLength=(*pos)*256+(*(pos+1));

pos+=2;
m_nIdentification=(*pos)*256+(*(pos+1));

pos+=2;
if(*pos & 64)
    m_bDF=true;
else
    m_bDF=false;
if(*pos & 32)
    m_bMF=true;
else
    m_bMF=false;
m_nFragOffSet=(*pos%32)*256+(*(pos+1));

pos+=2;
m_nTTL = *pos;

pos++;
m_nProtocol = *pos;

pos++;
m_nCheckSum = (*pos)*256+(*(pos+1));

pos+=2;
m_lSrcIP = (*pos)*0x1000000+(*(pos+1))*0x10000+(*(pos+2))*0x100+(*(pos+3));

pos+=4;
m_lDestIP = (*pos)*0x1000000+(*(pos+1))*0x10000+(*(pos+2))*0x100+(*(pos+3));

if(m_nHeaderLength > 5)
{
    pos += 4;
    m_nOptLength=(m_nHeaderLength-5)*4;
    m_pOptions=new unsigned char[m_nOptLength];
    memcpy(m_pOptions,buf+20,m_nOptLength);
}
else
{
    m_nOptLength = 0;
    m_pOptions = NULL;
}

pos=(unsigned char *)(buf+m_nHeaderLength*4);
m_nDataLength = m_uTotalLength-m_nHeaderLength*4;
if(m_nDataLength > 0)
{
    m_pData=new unsigned char[m_nDataLength];
    memcpy(m_pData,buf+m_nHeaderLength*4,m_nDataLength);
}
else
    m_pData = NULL;

解决方案

你需要先看协议的数据格式定义,你就知道各个字段的大小,数据类型等,对着就可以看明白代码中的各种偏移处理。

解决方案二:

楼上说得对,如果你是想对IP协议层“嗅探”的话,建议用Raw Socket。

时间: 2016-01-12
Tags: 嗅探器

基于winpcap嗅探器的问题的相关文章

c++-基于winpcap的arp中间人攻击(使用C++),目前无法转发数据包

问题描述 基于winpcap的arp中间人攻击(使用C++),目前无法转发数据包 为了方便叙述,称目标机器为B机器.本机为A机器. 实现思路如下: A机器一直向路由发送arp请求包,问路由的MAC地址,但是arp包里的发送方IP是B机器的,这样就完成了欺骗路由.达到获取B机器数据返回包的目的. 我程序抓包时候解析包了,判断出来HTTP包打印到屏幕上 目前可以成功的看到B机器打开网站后,从路由返回过来的HTTP包 现在的问题主要有两个: 1.设置过滤器的问题 利用winpcap设置过滤器后,就看不

界面-基于WinPcap,编写一个简单的数据包捕获程序

问题描述 基于WinPcap,编写一个简单的数据包捕获程序 * 功能要求: 1) 要求提供图形界面(类似Wireshark),可以捕获网络数据包:提供包过滤功能,可以输入过滤表达式:可以指定时段抓包:显示指定数据包的内容: 2) 提供网络数据包统计功能:提供输入IP地址,向指定IP地址发送数据包 3) 提供数据转储功能,将捕获到的数据包存储到磁盘文件,并可以读取转储的文件 4) 界面美观.大方 解决方案 一个简单的摄像头视频浏览和捕获的程序(转载)WinPcap捕获数据包 解决方案二: ** 看

头初始化 嗅探器-winpcap嗅探器中IP头初始化问题

问题描述 winpcap嗅探器中IP头初始化问题 在下边的代码中我知道它们分别代表IP数据包的什么字段,但是它们的具体格式我还是不太清楚.本人菜鸟,求大神指教啊. 1.m_nVersion=*pos/16; m_nHeaderLength = *pos%16; //这里的"/"和"%"是什么含义? 2.m_nPrecedence=(*pos & 16)*4+(*pos & 8)*2+(*pos & 4); //这里的"*4"

基于winpcap的网络嗅探器

问题描述 如题,功能:1使用WinPCap的接口,实现一个网络嗅探器2完成截获数据包的功能.并具备分析数据包的功能.提供个源码啊!谢谢啦 解决方案 解决方案二:没人会吗?解决方案三:我的毕业设计就是做这个企业信息安全防范系统还有代码哦解决方案四:是吗?我也是!帮忙发过来参考参考[email protected]不胜感激!谢谢!解决方案五:发了看看不知道合不合要求解决方案六:unitProtohdr;{PROTOHDR.PASOriginalsourceisPROTOHDR.HWritt

winpcap常见安装和运行错误

说明:WinPcap共有安装程序和开发包 如果只运行基于WinPcap的应用程序,只须安装WinPcap安装程序; 如果要编写和调试基于WinPcap的应用程序,除安装WinPcap,还须指定开发包中的头文件目录(Include)和静态链接库目录(Lib) 1.运行WinPcap 程序,出现"无法找到组件"对话框错误: 没有找到wpcap.dll,因此这个应用程序未能启动.重新安装应用程序可能会修复此问题. 解决方法: 安装WinPcap 2.在VC6.0中编译WinPcap程序,出现

在linux下,python怎么才能抓到网卡上的所有TCP数据包?

问题描述 在linux下,python怎么才能抓到网卡上的所有TCP数据包? 网卡已经设置为混杂模式,能够收到mac不是本机mac的数据包,但是程序只能收到和本机ip一样的数据包,不能收到和本机ip不一样的数据包,求助.代码如下: sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) packet_base = sock.recvfrom(1024)[0] print "receive a packet

Ubuntu安装配置指南:西厢计划

西厢计划提供一组工具,使得用户在一次设置之后,能够以普通程序直连目标网络,而避免GFW的大部分影响.其命名是为了向中国古典文学史上翻墙的先驱者张某致敬.西厢计划现在已经达到alpha可用状态,在初步的测试中可以让用户以普通浏览器无障碍地直连Youtube. 特性 西厢计划要解决GFW造成的两个方面的问题:TCP连接重置和DNS劫持(污染).为此西厢计划提供了两种特性: TCP连接混淆:在每次连接中,通过对GFW的入侵检测系统进行注入,混淆连接,使得GFW无法正确解析连接和检测关键词,从而在有关键

Windows Server 2003 IDS入门级构架指南

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   IDS的技术手段其实并不很神秘,接下来本文会用一种"顺藤摸瓜"的脉络,给大家介绍一个较简单的IDS入门级构架.从市场分布.入手难易的角度来看,选择NIDS作为范例进行部署,比较地恰当.本文以完全的Windows平台来贯穿整个入侵检测流程,由于篇幅所限,以定性分析角度来陈述. 预备知识 IDS:Intrusion Detection Syste

视频内容共享平台的那些事儿

数据共享存在的问题 共享是当下非常流行的一个词汇.在我们掌握资源不充足的情况下,通过其他资源的拥有者提供有价值的资源和信息形成合力是共享的现实目的.视频内容共享平台(以下称共享平台)大致位于PAAS层,其必然以视频为核心共享资源,以数据为主要接入领域,以共享为核心精神理念,突出了能力开放,并且可以内嵌数据碰撞技术. 共享平台的任务应该是将资源分门别类地管理起来,将获取的非视频类数据存入数据湖进行存储.碰撞和关联,并且提供能力开放中间件,针对各种应用场景提供最大限度的开放能力特别是视频和数据能力,