在做大学最后的毕业设计了,无线局域网络远程安全监控策略
那么抓包是这个系统设计的基础
以前一直都是知道用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. Navisworks Api Tool

    用Google 翻译的..做个参考 None  无有效的选择  Select  选择 SelectBox 选择框 RedlineFreehand  红线写意 RedlineLine 红线线 Redli ...

  2. macOS 升级到了10.12.1

    除了明面上的一些更新,但我感觉最重要的是触摸板的行为特征又还原了.

  3. Springl利用Aspectj的扩展实现Aop

    1. Spring为什么要使用Aspectj Spring Aop:Spring自己原生的Aop,只能用一个词来形容:难用. 你需要实现大量的接口,继承大量的类,所以spring aop一度被千夫所指 ...

  4. Java - I/O

    File类 java.io 操作文件和目录,与平台无关.具体的常用实例方法: File file = new File("."); // 以当前路径创建名为 ".&quo ...

  5. 【夯实PHP基础】PHP的反射机制

    本文地址 分享提纲: 1. 介绍 2. 具体例子 2.1 创建Persion类 2.2 反射过程 2.3 反射后使用 1. 介绍 -- PHP5添加了一项新的功能:Reflection.这个功能使得p ...

  6. [连载]《C#通讯(串口和网络)框架的设计与实现》- 11.调试器的设计

    目       录 第十一章     调试器设计... 2 11.1         调试接口... 2 11.2         界面方式调试... 3 11.3         命令行方式调试.. ...

  7. 【笔记】LAMP 环境无脑安装配置 Centos 6.3

    p.p1 { margin: 0.0px 0.0px 5.0px 0.0px; font: 12.0px Times; color: #ff2500 } p.p2 { margin: 0.0px 0. ...

  8. position总结图

  9. NSURLConnection学习笔记

    虽说现在都用三方库来获取网络数据,再不济也会用苹果官方的NSURLSession,但有些东西还是要先学会才有资格说不好不用,不是么? NSURLConnection发送请求是分为同步和异步两种方式的, ...

  10. java 执行 jar 包中的 main 方法

    java 执行 jar 包中的 main 方法 通过 OneJar 或 Maven 打包后 jar 文件,用命令: java -jar ****.jar执行后总是运行指定的主方法,如果 jar 中有多 ...