在做大学最后的毕业设计了,无线局域网络远程安全监控策略
那么抓包是这个系统设计的基础
以前一直都是知道用winpcap的,现在网上搜了一下,有用C#封装好了的,很好用
下面是其中的几个用法
这个类库作者的主页:http://www.tamirgal.com/home/default.aspx

PcapOpen()有下面几个方法

  • PcapOpen()
  • PcapOpen(bool promiscuous_mode)
  • PcapOpen(bool promiscuous_mode, int read_timeout)

promiscuous_mode:在普通的抓取模式下,我们只抓取那些目的地为目标网络的包,而处于promiscuous_mode时,则抓取所有的包,包括转发的包.通常我们都是开启这种模式的

下面是示例:

//Extract a device from the list

PcapDevice device = devices[i];

//Register our handler function to the 

//'packet arrival' event

device.PcapOnPacketArrival += 

  new SharpPcap.PacketArrivalEvent(device_PcapOnPacketArrival);

//Open the device for capturing

 //true -- means promiscuous mode

//1000 -- means a read wait of 1000ms

device.PcapOpen();

Console.WriteLine(

    "-- Listenning on {0}, hit 'Enter' to stop...",

    device.PcapDescription);

//Start the capturing process

device.PcapStartCapture();

//Wait for 'Enter' from the user.

Console.ReadLine();

//Stop the capturing process

device.PcapStopCapture();

//Close the pcap device
device.PcapClose();

PcapStartCapture()对应PcapStopCapture()

使用PcapCapture(int packetCount)时我们可以使用SharpPcap.INFINITE,来达到持续抓包的功能

Note:通常CRC的数据是不在数据包的中的,因为通常错误的CRC包会被自动丢弃.

上面的需要注册一个event handle,这在很多时候是不可行的,所以我们推荐使用下面这个方法PcapGetNextPacket()

//Extract a device from the list

PcapDevice device = devices[i];

//Open the device for capturing
//true -- means promiscuous mode
//1000 -- means a read wait of 1000ms
device.PcapOpen();
Console.WriteLine();
Console.WriteLine("-- Listenning on {0}...",
device.PcapDescription);
Packet packet = null;

//Keep capture packets using PcapGetNextPacket()
while( (packet=device.PcapGetNextPacket()) != null )

{

    // Prints the time and length of each received packet

    DateTime time = packet.PcapHeader.Date;

    int len = packet.PcapHeader.PacketLength;

    Console.WriteLine("{0}:{1}:{2},{3} Len={4}", 

              time.Hour, time.Minute, time.Second, 

              time.Millisecond, len);

}

//Close the pcap device

device.PcapClose();

Console.WriteLine("-- Capture stopped, device closed.");

PcapSetFilter() 设置过滤条件

 

string filter = "ip and tcp";
device.PcapSetFilter( filter );

下面这个例子通过抓取TCP包,输出他们的时间,长度,源IP,源端口,目的IP,目的端口

/// <SUMMARY>

/// Prints the time, length, src ip, 

/// src port, dst ip and dst port

/// for each TCP/IP packet received on the network

/// </SUMMARY>

private static void device_PcapOnPacketArrival(
                       object sender, Packet packet)

{            

    if(packet is TCPPacket)

    {                

        DateTime time = packet.Timeval.Date;

        int len = packet.PcapHeader.len;

        TCPPacket tcp = (TCPPacket)packet;

        string srcIp = tcp.SourceAddress;

        string dstIp = tcp.DestinationAddress;

        int srcPort = tcp.SourcePort;

        int dstPort = tcp.DestinationPort;

        Console.WriteLine("{0}:{1}:{2},

            {} Len={} {}:{} -> {}:{}", 

            time.Hour, time.Minute, time.Second, 

            time.Millisecond, len, srcIp, srcPort, 

            dstIp, dstPort);

    }

 }

使用SharpPCap在C#下进行网络抓包的更多相关文章

  1. iOS Paros 连接在同一WIFI下的网络抓包

    图文详解: 说说网络抓包,几天前的事了,想抓个包看看 某爱网(全名自己脑补)的数据,就上网找了一下抓包,以前经常抓接口,时间长了忘了.那时候也不是用苹果手机抓取的,前几天试着抓了一下,今天不适合敲代码 ...

  2. Android 下使用tcpdump网络抓包方法

    Android 下使用tcpdump网络抓包方法 抓包需要tcpdump以及Root权限,tcpdump在本文后有下载. 首先把tcpdump传进手机,用adb命令(放SD卡有时会有问题,我一次可以用 ...

  3. 网络抓包wireshark(转)

    转自 网络抓包wireshark   抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经 ...

  4. Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布

    来自官方日志的喜悦 被誉为全新开始的消息分析器时代,由MMA为您开启,博客原文写的很激动,大家可以点击这里浏览:http://blogs.technet.com/b/messageanalyzer/a ...

  5. 网络抓包--Wireshark

    Wireshark 是一款非常棒的Unix和Windows上的开源网络协议分析器.它可以实时检测网络通讯数据,也可以检测其抓取的网络通讯数据快照文件.可以通过图形界面浏览这些数据,可以查看网络通讯数据 ...

  6. Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布

    Microsoft Message Analyzer (微软消息分析器,“网络抓包工具 - Network Monitor”的替代品)官方正式版现已发布 来自官方日志的喜悦 被誉为全新开始的消息分析器 ...

  7. iOS安全攻防之使用 Charles 进行网络数据抓包 和 Paros 网络抓包

    Charles 是 Mac 系统下常用的网路抓包工具(Paros 也不错),windows 下常用 fiddler.正版的 Charles 是收费的(PS:支持正版),天朝人民比较喜欢破解版的Char ...

  8. 开源网络抓包与分析框架学习-Packetbeat篇

    开源简介packbeat是一个开源的实时网络抓包与分析框架,内置了很多常见的协议捕获及解析,如HTTP.MySQL.Redis等.在实际使用中,通常和Elasticsearch以及kibana联合使用 ...

  9. 笔记-网络-抓包-wireshark

    笔记-网络-抓包-wireshark 1.      开始 环境:win8笔记本,无线网 1.1.    无线网卡设置 因为需抓捕无线网卡上的数据包,需要进行一项设置,如捕获有线网卡,无需设置. 打开 ...

随机推荐

  1. Asp.Net Core 项目实战之权限管理系统(0) 无中生有

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  2. 一位同事对 Rafy 框架的一些建议及我的回复

    下面是一位同事对当前的产品开发框架提出的一些建议,以及我的回复.我觉得一些问题提得有一定的代表性,在征得本人同意后,将本邮件发布在博客中. 同时,也非常希望对框架.产品有好的建议的小伙伴,都可以给我发 ...

  3. Node学习笔记(二):事件驱动

    接触Node,提得最多的可能就是回调,异步非阻塞处理,思前想后,JavaScript从前端语言过渡到服务器端,最大的劣势可能就是线程,当然这方面的不足现在也被慢慢弥补起来了(很多第三方的npm包可供下 ...

  4. GridView中显示时间日期格式问题

    以下都是GridView基本常用的日期,时间格式 形式 语法 结果 注释 数字 {0:N2} 12.36   数字 {0:N0} 13   货币 {0:c2} $12.36   货币 {0:c4} $ ...

  5. EC笔记:第4部分:19、设计class犹如设计type

    设计一个class,应该考虑以下问题: 新type的对象应该怎样创建和销毁? 构造函数 析构函数 内存分配 内存释放 对象的初始化和对象的赋值应该有什么样的差别? 拷贝构造函数 赋值运算符 新对象如果 ...

  6. Yii2.X 多语言-类图

  7. ASP.NET MVC搭建项目后台UI框架—11、自动加载下拉框查询

    ASP.NET MVC搭建项目后台UI框架—1.后台主框架 需求:在查询记录的时候,输入第一个字,就自动把以这个字开头的相关记录查找出来,输入2个字就过滤以这两个子开头的记录,依次类推. 突然要用到这 ...

  8. GJM : Unity3D HIAR -【 快速入门 】 六、导出 iOS 工程

    导出 iOS 工程 在开始之前,请务必先保存您的工程.由于 Unity 无法直接生成 ipa 文件,您需要先导出 iOS 工程文件,然后通过 Xcode 编译生成. Step 1. 选择平台 在 Un ...

  9. Linux命令-文件文本操作grep

    文件文本操作 grep 在文件中查找符合正则表达式条件的文本行 cut 截取文件中的特定字段 paste 附加字段 tr 字符转换或压缩 sort 调整文本行的顺序,使其符合特定准则 uniq 找出重 ...

  10. Android中点击隐藏软键盘最佳方法——Android开发之路4

    Android中点击隐藏软键盘最佳方法 实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏: 1.重写dispatchTouchEve ...