Sniffer 实现之二——用 WinPcap 实现 Sniffer

税控发票开票软件(税控盘版)开票组件-百旺开票组件 百旺开票组件 本程序适用于 税控发票开票软件税控盘版 Sniffer文件夹内有三个工程 SnifferLib.dpr 这个为hookdll工程 SnifferApp.dpr 这个为exe工程 提供调用实例 Sniff.dpr 这个是为了方便调用进行的封装 进销存系统可以调用里面的function SayHello( title:PChar; mx:PChar):PChar;stdcall; 即可完成单据的导入 第一个参数为单据信息 第二个参数为明细信息 返回值为增值税票信息 这里面有一个查找窗口的代码要根据不同省份进行修改 FindWindow('TCustomBaseForm', '河南增值税普通发票开具'); 使用时要注意先打开开票窗口 立即下载
Sniffer 实现之二——用 WinPcap 实现 Sniffer

○、序

  这篇文章写于1年前,因为某些原因,没有把它完成。今天整理一下 shadowstar's home,偶然发现这篇未完的文章。虽是年前的东西,但现在仍没有过时,对想了解 Sniffer 的朋友应该有所帮助。爸爸说做事情要有始有终,今天是端午节,谨以此文给远隔千里的亲人送一份心意。

一、引言

  上一次介绍了用 Raw Socket 实现 Sniffer 的方法,实现起来比较简单,但有个缺点就是只能截获 IP 层以上的包,数据包头不含帧信息。对一些特殊的要求就不能满足了,其中很重要的一条就是不能对 ARP 包进行处理。用 NDIS 驱动程序可以实现对整个以太网包的截获,但复杂的驱动程序让好多人望而却步。没关系,有现成的东西干嘛不好好利用呢?在微软的 DDK 里提供了一个 Packet 的例子,Packet.sys 可以对网卡进行任意的操作,Packete32.dll 提供给应用程序一个方便的接口,而与驱动程序通讯相关的复杂的内部操作由 DLL 完成,面向应用层的程序员不需要了解这些细节。可惜我按 Packet32.dll 的提供的接口一步一步的做下去,却总也得不到想要的结果,一抓包就死在那儿不动了。看来它是不想给我干活了:(还是不想自已写驱动程序……

  幸运的是有一套 WinPcap 的东东,专门用来在 Win32 平台下抓包的,可以在 http://winpcap.polito.it 上下载到。而且接口基本上和微软的 Packet 是一样的。哈哈,这下好了,原来的代码还可以用,一试就灵!下面就介绍怎样利用 WinPcap 直接对网卡进行操作及对接收到的数据进行分析。

二、Windows 系统中的网络通信结构

1.Windows 系统中的网络通信结构

  图1的上层应用程序包括 IE、Outlook 等各种基于网络的软件,网络驱动协议?TCP/IP、NETBEUI 等各种 Windows 支持的网络层、传输层协议,NDIS 是 Windows 操作系统网络功能驱动的关键部分,下面对 NDIS 进行介绍。

2.NDIS及其特点

  NDIS(Network Driver Interface Specification) 是 Microsoft 和 3Com 公司联合制定的网络驱动规范,并提供了大量的操作函数。它为上层的协议驱动提供服务,屏蔽了下层各种网卡的差别。

  NDIS 向上支持多种网络协议,比如 TCP/IP、NWLink IPX/SPX、NETBEUI 等,向下支持不同厂家生产的多种网卡。NDIS 还支持多种工作模式,支持多处理器,提供一个完备的 NDIS 库(Library)。 但库中所提供的各个函数都是工作在核心模式下的,用户不宜直接操作,这就需要寻找另外的接口。

三、WinPcap 简介

1. WinPcap结构图

2. WinPcap 包括三个部分

  • 第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。
  • 第二个模块packet.dll为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。
  • 第三个模块 Wpcap.dll是不依赖于操作系统的。它提供了更加高层、抽象的函数。

3. packet.dll和Wpcap.dll

  • packet.dll直接映射了内核的调用。
  • Wpcap.dll提供了更加友好、功能更加强大的函数调用。

4. WinPcap的优势

  • 提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来
    便于开发各种网络分析工具
  • 充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持
  • 支持内核态的统计模式
  • 提供了发送数据包的能力

四、Packet.dll 的使用

  WinPcap的主页:http://winpcap.polito.it/你可以到这里下载它的驱动、DLLs和开发包。这里只是对WinPcap实现Sniffer做一个简单的介绍,不做深入研究。你只需要把下载回来的驱动安装到你的计算机上,用你的程序调用Packet.dll就可以了。Packet.dll在安装的时候会被拷贝到你的系统目录下,也可以用WinRAR打开安装包,可以看到里面的文件,直接提取你想要的Packet.dll。

  Packet.dll提供了一套完整的、功能强大的API,其接口形式与Microsoft DDK提供的Packet32.dll基本一致。开发过Windows应用程序的人,对调用DLL一定不会莫生,如果你还不知道怎么使用DLL请参考相关书籍,这里不多讲了。新建一个DLL工程命名为sniffer2,保存到硬盘。把开发包里的include、lib目录拷贝到工程目录中。如果你用的是Visual C++,可以直接使用lib里面的引入库。shadowstar用的是C++Builder,需要用C++Builder提供的implib工具为Packet.dll生成一个lib文件,命令行如下:

  implib -a packet.lib packet.dll

五、简单实现

  shadowstar用C++Builder写了一个简单的演示程序,这里只给出主要部分的代码,完整的代码可以到http://shadowstar.126.com/下载。

void __fastcall TMainForm::btnCtrlClick(TObject *Sender)
{
    //define a pointer to an ADAPTER structure
    LPADAPTER  lpAdapter = 0;

    //define a pointer to a PACKET structure
    LPPACKET   lpPacket;

    int        i;
    DWORD      dwErrorCode;

    DWORD dwVersion;
    DWORD dwWindowsMajorVersion;

    //unicode strings (winnt)
    WCHAR       AdapterName[8192]; // string that contains a list of the network adapters
    WCHAR       *temp,*temp1;

    //ascii strings (win95)
    char        AdapterNamea[8192]; // string that contains a list of the network adapters
    char        *tempa,*temp1a;


    int         AdapterNum=0,Open;
    ULONG       AdapterLength;

    char buffer[256000];  // buffer to hold the data coming from the driver

    struct bpf_stat stat;

    // obtain the name of the adapters installed on this machine
    AdapterLength=4096;

    ShowMessage(AnsiString("Packet.dll test application. Library version: ") + PacketGetVersion());

    ShowMessage("Adapters installed:");
    i=0;

    // the data returned by PacketGetAdapterNames is different in Win95 and in WinNT.
    // We have to check the os on which we are running
    dwVersion=GetVersion();
    dwWindowsMajorVersion =  (DWORD)(LOBYTE(LOWORD(dwVersion)));
    if (!(dwVersion >= 0x80000000 && dwWindowsMajorVersion >= 4))
    {  // Windows NT
        if(PacketGetAdapterNames((PTSTR)AdapterName,&AdapterLength) == FALSE)
        {
            ShowMessage("Unable to retrieve the list of the adapters!/n");
            return;
        }
        temp=AdapterName;
        temp1=AdapterName;
        while ((*temp!='/0')||(*(temp-1)!='/0'))
        {
            if (*temp=='/0')
            {
                memcpy(AdapterList[i],temp1,(temp-temp1)*2);
                temp1=temp+1;
                i++;
            }
            temp++;
        }

        AdapterNum=i;
        for (i=0;i<AdapterNum;i++)
            ShowMessage(Format(L"/n%d- %s/n",ARRAYOFCONST((i+1, AdapterList[i]))));
    }

    else    //windows 95
    {
        if(PacketGetAdapterNames((PTSTR)AdapterNamea,&AdapterLength) == FALSE)
        {
            ShowMessage("Unable to retrieve the list of the adapters!/n");
            return;
        }
        tempa=AdapterNamea;
        temp1a=AdapterNamea;

        while ((*tempa!='/0')||(*(tempa-1)!='/0'))
        {
            if (*tempa=='/0')
            {
                memcpy(AdapterList[i],temp1a,tempa-temp1a);
                temp1a=tempa+1;
                i++;
            }
            tempa++;
        }

        AdapterNum=i;
        for (i=0;i<AdapterNum;i++)
            ShowMessage(Format("/n%d- %s/n", ARRAYOFCONST((i+1,AdapterList[i]))));
    }

    lpAdapter = PacketOpenAdapter(AdapterList[0]);

    if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE))
    {
        dwErrorCode=GetLastError();
        ShowMessage(Format("Unable to open the adapter, Error Code : %lx/n",
                ARRAYOFCONST(((int)dwErrorCode))));
        return;
    }

    // set the network adapter in promiscuous mode
    if(PacketSetHwFilter(lpAdapter,NDIS_PACKET_TYPE_PROMISCUOUS)==FALSE)
    {
            ShowMessage("Warning: unable to set promiscuous mode!/n");
    }
    // set a 512K buffer in the driver
    if(PacketSetBuff(lpAdapter,512000) == FALSE)
    {
        ShowMessage("Unable to set the kernel buffer!/n");
        return;
    }
    // set a 1 second read timeout
    if(PacketSetReadTimeout(lpAdapter,1000)==FALSE)
    {
        ShowMessage("Warning: unable to set the read tiemout!/n");
    }

    //allocate and initialize a packet structure that will be used to
    //receive the packets.
    if((lpPacket = PacketAllocatePacket()) == NULL)
    {
        ShowMessage("/nError: failed to allocate the LPPACKET structure.");
        return;
    }
    PacketInitPacket(lpPacket,(char*)buffer,256000);

    if (btnCtrl->Caption == "&Start")
    {
        bStop = false;
        btnCtrl->Caption = "&Stop";
    }
    else
    {
        bStop = true;
        btnCtrl->Caption = "&Start";
    }

    int nIndex = 0;
    LPIP ip;
    LPTCP tcp;
    TListItem *Item;
    struct bpf_hdr *hdr;
    int off;
    BYTE* buf;

    //main capture loop
    while(!bStop)
    {
        // capture the packets
        if(PacketReceivePacket(lpAdapter,lpPacket,TRUE)==FALSE)
            ShowMessage("Error: PacketReceivePacket failed");

        off = 0;
        buf = (BYTE*)lpPacket->Buffer;

        while(off<lpPacket->ulBytesReceived & !bStop)
        {
            nIndex++;
            hdr = (struct bpf_hdr *)(buf+off);
            off+= hdr->bh_hdrlen;
            ip  = (IP*)(buf + off + ETHERNET_HEADER_LENGTH);
            tcp = (TCP*)((BYTE*)ip + (ip->HdrLen & IP_HDRLEN_MASK));
            off = Packet_WORDALIGN(off+hdr->bh_caplen);

            Item = lsvPacket->Items->Add();
            Item->Caption = nIndex;
            Item->SubItems->Add(GetProtocolTxt(ip->Protocol));
            Item->SubItems->Add(inet_ntoa(*(in_addr*)&ip->SrcAddr));
            Item->SubItems->Add(inet_ntoa(*(in_addr*)&ip->DstAddr));
            Item->SubItems->Add(tcp->SrcPort);
            Item->SubItems->Add(tcp->DstPort);
            Item->SubItems->Add(hdr->bh_datalen);

            Application->ProcessMessages();
        }
    }

    //print the capture statistics
    if(PacketGetStats(lpAdapter,&stat)==FALSE)
        ShowMessage("Warning: unable to get stats from the kernel!/n");
    else
        ShowMessage(Format("/n/n%d packets received./n%d Packets lost",
                ARRAYOFCONST(((int)stat.bs_recv,(int)stat.bs_drop))));

    PacketFreePacket(lpPacket);

    // close the adapter and exit
    PacketCloseAdapter(lpAdapter);

    return;
}

六、结束语

  如果在一个繁忙的网络上进行截获,而且不设置任何过滤,那得到的数据包是非常多的,可能在一秒钟内得到上千的数据包。如果应用程序不进行必要的性能优化,那么将会大量的丢失数据包,下面就是我对性能的一个优化方案。

  这个方案使用了多线程来处理数据包。在程序中建立一个公共的数据包缓冲池,这个缓冲池是一个LILO的队列。程序中使用三个线程进行操作:一个线程只进行捕获操作,它将从驱动程序获得的数据包添加到数据包队列的头部;另一个线程只进行过滤操作,它检查新到的队尾的数据包,检查其是否满足过滤条件,如果不满足则将其删除出队列;最后一个线程进行数据包处理操作,象根据接收的数据包发送新数据包这样的工作都由它来进行。上面三个线程中,考虑尽可能少丢失数据包的条件,应该是进行捕获操作的线程的优先级最高,当然具体问题具体分析,看应用的侧重点是什么了。

2003-06-04 08:03

sniffer抓包驱动 支持多无线网卡的sniffer抓包驱动,内部使用。Philips,Gemtek,Linksys,Linktek,Cisco,Ralink等使用。 立即下载

相关推荐

SE-0526激光避障雷达扫描传感器输入输出连线方法及PLC联机实例说明

SE-0526激光避障雷达扫描传感器广泛应用于原材料运输与处理、移动装配、托盘或货架运输、产成品自动运输、生产线自动对接,餐厅自助送餐等AGV小车、服务机器人、仓储机器人、无人叉车导航、避障、定位等。 本文重点介绍SE-0526激光避障雷达扫描传感器输入输出连线方法及PLC联机实例说明。

华翔天诚科技 2695

影响网络监控应用运行:最新缺少wpcap.dll的修复方法

wpcap.dll是Windows系统中用于网络数据包捕获的关键文件,缺失或损坏会影响网络监控工具的运行。

2401_89984890的博客 1635

OpenFoam实用技巧——starccm网格高效转换openfoam格式全解析

本文详细解析了如何利用OpenFOAM官方工具`ccm26toFoam`,将STAR-CCM+生成的高质量网格高效、稳定地转换为OpenFOAM格式。内容涵盖从STAR-CCM+正确导出网格、执行转换命令、解读转换日志,到转换后关键的边界条件修复与网格质量检查等全流程,旨在帮助用户规避常见错误,实现无缝工作流衔接。

weixin_28309571的博客 456

【亲测免费】 Windows Packet Filter 项目推荐

Windows Packet Filter 项目推荐 项目基础介绍和主要编程语言 Windows Packet Filter(简称NDISAPI)是一个用于网络数据包拦截和操作的Windows库。该项目主要使用C++和C语言进行开发,同时也包含一些批处理文件和Makefile。NDISAPI旨在为开发者提供一个简单、安全和高效的接口,以便在Windows网络堆栈的NDIS层进行数据包过滤。 项目核...

gitblog_00298的博客 694

Win10/Win11系统下冒险岛V128单机版一键搭建教程(含MySQL配置避坑指南)

本文提供Win10/Win11系统下冒险岛V128单机版一键搭建的详细教程,涵盖服务端部署、MySQL配置优化及常见问题解决方案。通过本指南,玩家可轻松实现单机版冒险岛的一键启动,重温经典游戏体验,同时避免常见的技术陷阱。

weixin_29261711的博客 648

AI漫剧全套万能提示词合集

今天给大家整理一套已经跑通爆款漫剧的万能提示词库!覆盖:豆包剧本人设词 + 分镜生成词 + 即梦绘图词 + 动态优化词 + 防翻车固定词直接复制粘贴,新手也能做出稳定、高清、统一、有质感的AI漫剧!你是资深短视频漫剧编剧,擅长制作60秒竖屏爆款AI漫剧,请为我创作一集完整漫剧内容。要求:开头3秒高能抓眼,中段有冲突转折,结尾留强悬念钩子,节奏紧凑、适合短视频流量。首先生成固定统一人物人设:包含脸型、五官、发色、发型、穿搭、身材、气质、画风、光影细节,要求足够精细,保证全程角色不变脸。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1877

Windows下使用USB网卡抓WiFi报文/空口抓包(虚拟机+Wireshark抓包)

实现了一种简易、低成本、适用性广的Windows下空口抓包方案。通过VMware虚拟机启用一个Kali虚拟机,在Kali下开启无线网卡的监听模式,并使用rpcapd暴露虚拟机种的网卡接口,最后在Windows下使用Wireshark的远程抓包功能即可实现空口抓包。

网洞的博客 1万+

Windows 11中wpcap.dll文件加载失败?快速解决网络监控问题

如果命令成功执行,会显示“DllRegisterServer in C:\Windows\System32\wpcap.dll succeeded”的消息。按 Win + X 快捷键,选择“命令提示符(管理员)”或“Windows PowerShell(管理员)”。确认 wpcap.dll 文件是否存在。访问 WinPcap 的官方网站或相关软件的官方网站下载最新版本的 WinPcap。打开“控制面板” > “系统和安全” > “系统” > “系统保护”。打开“设置” > “应用” > “应用和功能”。

leleshengh520的博客 1838

EtherCAT主站SOEM -- 0 -- 该EtherCAT主站SOEM专栏后续安排

SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站库,允许开发者构建自定义的EtherCAT主站应用程序。EtherCAT是一种实时以太网通信协议,广泛应用于工业自动化和机器控制领域。开源性质:SOEM是一个开源项目,这意味着开发者可以自由地查看、修改和分发代码。这使其成为工业自动化领域的一个强大工具,可以根据具体需求进行定制。EtherCAT主站实现:SOEM库提供了一个完整的EtherCAT主站实现,允许主站与多个EtherCAT从站设备进行通信。

常驻客栈的博客--嵌入式EtherCAT 6664

论文翻译:Automatic Lesson Plan Generation via Large Language Models with Self-critique Prompting

在本文中,我们利用大型语言模型(LLMs)的理解和生成能力来自动生成定制化的课程计划。这解决了传统计划可能无法充分满足不同教学环境和学生群体的特定需求的常见挑战。我们提出了一个新颖的三阶段过程,包括使用检索增强生成(RAG)逐步生成课程计划的每个关键组成部分,通过LLMs进行自我批评,以及随后的细化。我们使用这种方法为小学2至5年级生成了涵盖80多个主题的数学课程计划。邀请了三位经验丰富的教育工作者制定全面的课程计划评估标准,然后使用这些标准将我们的LLM生成的课程计划与同一主题的实际课程计划进行基准比较。

CSPhD-winston的博客 1101

WinSniffer

在以太网中,所有的通信都是广播的,也就是说通常在同一个网段的所有网络接口都可以访问在物理媒体上传输的所有数据,而每一个网络接口对哦有一个唯一的硬件地址,这个硬件地址也就是网卡的MAC地址。在硬件地址和IP地址间使用ARP和RARP协议进行相互转换。 在正常情况下,一个网络接口只响应这样两种数据帧:与自己硬件地址相匹配的数据帧;向所有计算机的广播数据帧。 在一个系统中,数据...

weixin_33775572的博客 283

43、FMCW雷达高度计仿真

本文介绍了FMCW雷达高度计的波形级建模与仿真过程,重点模拟了着陆和倾斜两种飞行场景以评估其性能。通过结合高程数据和飞行轨迹构建雷达场景,使用自定义信号处理器分析IQ样本并估计高度。结果表明,该高度计在多数情况下满足性能要求,但也存在误差较大的点,提出了地面检测算法优化的潜在方向。

neovim7hacker的博客 135

一步一步开发sniffer(Winpcap+MFC)(一)工欲善其事,必先配环境——配置winpcap开发环境

0、说在前面的话 1) 本文将以一个初学者的角度,一步一步几乎是从0开始讲述如何完成一个基于winpcap+MFC的sniffer(嗅探器)当然我指的“0”并不是指连编程都不会,如果C/C++不知为何物那么还是别看这篇文章了,本文只有那么几点小小要求:          a.懂基本的编程语法,只会java的没关系,语言这东西语法差别不大,看着看着就懂了          b.懂一点点网络知识

litingli的专栏 4万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

用winsock和winpcap分别实现嗅探器

1.两者实现的区别 用 Raw Socket 实现 Sniffer 的方法,实现起来比较简单,但有个缺点就是只能截获 IP 层以上的包,数据包头不含帧信息。但是相对于来说实现起来会比较简单。使用的话就见仁见智了,根据自己的需要去选择即可。 2.Raw Socket 操作环境:vs2005 其他的环境下代码有可能需要改动 #include &lt;stdio.h&gt; #i...

h123x1的博客 2687

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

一步一步开发sniffer(Winpcap+MFC)(四)要想从此过,留下协议头——各层网络协议头的实现

这一章实际上没什么讲的,就是把协议的标准搞懂,然后用数据结构将其实现就行。直接上代码吧,由底层到高层逐步实现。这些协议头是怎么使用的,将在下一章做出解释。 #ifndef PROTOCOL_H #define PROTOCOL_H #define PROTO_ICMP 1 #define PROTO_TCP 6 #define PROTO_UDP 17 #define

litingli的专栏 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

sniffer

sniffer中文翻译过来就是嗅探器,在当前网络技术中使用得非常得广泛。sniffer既可以做为网络故障的诊断工具,也可以作为黑客嗅探和监听的工具。最近两年,网络监听(sniffer)技术出现了新的重要特征。传统的sniffer技术是被动地监听网络通信、用户名和口令。而新的sniffer技术出现了主动地控制通信数据的特点,把sniffer技术扩展到了一个新的领域。Sniffer 技术除了目前在传统

1496

Sniffer 实现之 用 Raw Socket 实现 Sniffer(2)[转]

 ○、序  这篇文章写于1年前,因为某些原因,没有把它完成。今天整理一下 shadowstars home,偶然发现这篇未完的文章。虽是年前的东西,但现在仍没有过时,对想了解 Sniffer 的朋友应该有所帮助。爸爸说做事情要有始有终,今天是端午节,谨以此文给远隔千里的亲人送一份心意。一、引言  上一次介绍了用 Raw Socket 实现 Sniffer 的方法,实现起来比较简单,但有个缺点就是

tiaozao56的专栏 895

网络嗅探器sniffer功能的实现

@网络嗅探器sniffer功能的实现 import jpcap.*; import jpcap.packet.Packet; import jpcap.packet.IPPacket; import jpcap.packet.TCPPacket; import jpcap.packet.ICMPPacket; import jpcap.packet.UDPPacket; import java.nio.charset.StandardCharsets;// import java.util.Scanner

weixin_45680347的博客 704

sniffer技术原理及应用,包括编程方法和工具使用

    sniffer中文翻译过来就是嗅探器,在当前网络技术中使用得非常得广泛。sniffer既可以做为网络故障的诊断工具,也可以作为黑客嗅探和监听的工具。最近两年,网络监听(sniffer)技术出现了新的重要特征。传统的sniffer技术是被动地监听网络通信、用户名和口令。而新的sniffer技术出现了主动地控制通信数据的特点,把sniffer技术扩展到了一个新的领域。Sniffer 技术除了目

kantala的专栏 1151

java sniffer_用Java来实现的Sniffer

【摘要】没有办法, 不得不做啊, 还得靠这个东西混学分呢。老师给的例子是用VC写的, 说心里话, 俺对VC不感兴趣, 所以就想用Java来实现。但是java是无法直接访问raw socket的, 所以如果要实现sniffer的功能的话, 只能通过jni调用本地的接口, 实际上还是要用VC来写。 不过从网上搜了搜, 发现已经有前人做过了,所以俺就省事儿了, 直接拿过来用吧。看到有两个地方介绍的, 一...

weixin_36290287的博客 650

C实现的网络数据包捕获工具Sniffer

C#实现的网络数据包捕获工具Sniffer 去发现同类优质开源项目:https://gitcode.com/ 此项目为基于开源项目Sharppcap开发的网络监听工具,主要功能是实现数据包的捕获与数据库包分析。通过将数据包捕获与数据库包分析分别运行在两个独立的工作线程上,大幅提高了数据包捕获的实时性。 特点 采用C#语言开发,易于维护与扩展 基于Sharppcap,稳定可靠 数据包捕获与数据库包...

gitblog_06768的博客 374

简易sniffer演示程序

这是网络攻防课的一次实验,完成之后简单整理一下发布到博客中。 实验内容: 开发出一个任意平台上的Sniffer(嗅探器)工具,能显示所捕获的局域网数据包并能做相应的分析和统计。主要内容如下: 列出监测主机的所有网卡,选择一个网卡,设置为混杂模式(网卡能够接收所有经过它的数据流,而不论其目的地址是否是它。) 进行监听。捕获所有流经网卡的数据包,并利用WinPcap函数库设置过

Mr.Buffoon 2432

一个简易网络嗅探器的实现

引言  目前,已经有不少的Sniff工具软件,如Windows环境下,最富盛名的工具是Netxray和Sniffer pro,用它们在 Windows环境下抓包来分析,非常方便。在UNIX环境下如Sniffit,Snoop,Tcpdump,Dsniff 等都是比较常见的。这里介绍一个用C语言和网络数据包和分析开发工具libpcap及winpcap实现的简易网络Sniffer。  网络嗅探器程序框图

Crab的足迹 2604
上一篇: 用 UltraEdit 建立汇编集成环境
下一篇: 在 C++Builder 工程里使用 Visual C++ DLL——第1部分:C函数
shadowstar
博客等级 码龄26年 32粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值