C#使用sharppcap实现网络抓包-----2

虽然网上已经有了SharpSniffer

这一个SharpSniffer还是原创的
无他,唯为学习
工程文件下载:SharpSniffer.rar

1、创建套接字
2、绑定到本机
3、设置IOControl
4、接收数据
5、处理(显示)数据

1、创建套接字

创建socket ,据MSDN,IOControlCode.ReceiveAll(后面要使用到)使用时有以下限制:

ReceiveAll
启用对网络上的所有 IPv4 数据包的接收。套接字必须有 InterNetwork地址族,套接字类型必须是Raw,

并且协议类型必须为 IP。当前用户必须属于本地计算机上的 Administrators 组,并且套接字必须绑定到特定端口。

Windows 2000 及更高版本的操作系统支持此控制代码。此值等于 Winsock 2 SIO_RCVALL 常数。

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP); //直接new一个

2、绑定到本机

绑架到本机,只有绑定到本机才可以监听数据包:

socket.Bind(new IPEndPoint(GetHostAdress(), 0));

3、设置IOControl
获取本机IP地址,从一个主机名可能解析到好几个地址,这要看你电脑的网络适配器的状态了,这里只取第一个:

private static IPAddress GetHostAdress()

{

string hostName=Dns.GetHostName();

var hostAddreses=Dns.GetHostAddresses(hostName);

return hostAddreses[0];

}

很关键的一步,对IOControl进行设置。这里输入参数为1表示RCVALL_ON(启用接收所有包),当输入参数为0时表示RCVALL_OFF,具体定义在MSDN中WSAIoctl函数的Remark中说的很清楚:

byte[] outValue = BitConverter.GetBytes(0);

byte[] inValue = BitConverter.GetBytes(1);

socket.IOControl(IOControlCode.ReceiveAll,inValue, outValue); //对IO设置为可以接受所有包

很关键的,接收数据:

int recvedSize = socket.ReceiveFrom(buf, ref ep); //用ReceiveFrom接受数据

// socket.Receive(buf);

//用Receive也能接受到数据,不过使用ReceiveFrom可以直接获取发送方IP地址

接下来要显示数据了,这里只是简单的把数据打印出来,如果想获取该数据包的更多信息则就需要按IP数据包的格式来解析包的内容了:

string s = GetByteArrayHexString(buf, 0, recvedSize); //此函数把字节数组格式化,详细参考源代码

PrintLine(s);

详细过程参考源代码
本程序在WinXP sp3, VS2010, .Net Framework 4.0 Client & .Net Framework 2.0下编译运行通过
能成功抓包,如ping发出和收到的数据包能抓到,打开网页的数据包也能抓到。

时间: 2024-08-02 09:55:53

C#使用sharppcap实现网络抓包-----2的相关文章

HttpWatch网络抓包工具的使用

HttpWatch网络抓包工具是专为IE浏览器集成的一款网络拽包工具. 是一款强大的网页数据分析软件,是最好用的抓包工具,httpwatch可以抓到上传视屏图片的包,一般的抓包软件是抓不到的.打开IE浏览器,选择工具“再选择“HttpWatch Professional”即可.建议用专业版进行网络数据抓取. 网络爬虫是捜索引擎抓取系统的重要组成部分.爬虫技术可以应用在很多方面,当然是好的方面.用HttpWatch结合网络爬虫技术就可以很轻松的实现网络数据的抓取. 然后实现一些应用. (1)下载H

iOS系统网络抓包方法

在进行iOS开发过程中,经常会遇到各种各样的网络访问问题,以前苦于没有抓包工具,很多网络问题解决起来很痛苦.现在终于好了,本文提供两种方式进行网络抓包: 1. 网络共享 + 可视化抓包工具 基本原理 原理比较简单,ios设备通过代理方式共享连接mac电脑的无线网卡,使用抓包工具抓包,然后进行分析(我们推荐使用Wireshark,在MAC系统上也可以使用Paros工具). 现在以MAC系统下Paros工具为例,详细描述下抓包过程: 操作步骤 1)  首先将MAC电脑的以太网共享给airport,使

工欲善其事,必先利其器 – 网络抓包

抓包(packet capture)就是将网络传输发送与接收的数据包进行截获.分析,甚至可以用来转发,重传等等,抓包可使用的场景很多,排错.验证.测试.核对等,我就举几个例子来说明吧. 场景一.在一台存储上启用了SNMP服务,随后想通过验证UDP161/162的侦听状态来确认服务是否确实启动了. 详情:最简单的方式就是用进入存储的OS运行类似netstat –anop查看UDP端口状态,还有些同学会条件反射的说telnet一下呗或者用nmap的工具做端口扫描,但是最后发现结果是Open | Fi

网络抓包指南

网络抓包指南 1.交换机配置流量镜像接口 1.1登录交换机备份相关配置,执行以下操作 mirroring-group 2 mirroring-port GigabitEthernet 1/0/4 to GigabitEthernet 1/0/14 GigabitEthernet 1/0/18 to GigabitEthernet 1/0/21 both mirroring-group 2 monitor-port GigabitEthernet 1/0/17 quit save ### Giga

网络抓包wireshark(转)

转自 网络抓包wireshark 抓包应该是每个技术人员掌握的基础知识,无论是技术支持运维人员或者是研发,多少都会遇到要抓包的情况,用过的抓包工具有fiddle.wireshark,作为一个不是经常要抓包的人员,学会用Wireshark就够了,毕竟它是功能最全面使用者最多的抓包工具. Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换

CatchPacket网络抓包软件

CatchPacket网络抓包软件  qq  22945088431.技术特点:基于WinPcap库,c# winform2.实现获取机器所有网卡,可任意选择监听3.可以捕获常见网络协议arp dns http icmp igmp ftp pop3 smtp telnet udp tcp dhcp4.抓取数据包的信息内容,安装网络层,结构化展现数据信息5.16进制数据内容解析6.数据保存,方便下次分析7.网络数据统计,方便分析8.提供一些常见的网络协议测试工具 技术特点:基于WinPcap库,c

iOS开发——使用Charles进行https网络抓包详解

我在前面两篇博客中<网络抓包工具Charles的介绍与使用><iOS开发--使用Charles进行http网络抓包详解>对Charles的http抓包进行了详细的讲解.今天我们来实现一下进行https的抓包,比http抓包稍微麻烦一点. (1)https初级的配置请参考<网络抓包工具Charles的介绍与使用>中的https配置部分. (2)由于目前iOS9更改了对于https网络的安全机制,所以还需要在iPhone上安装一个证书,安装方式如下: 在iPhone的Saf

python编写网络抓包分析脚本

python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 decoder,但是它的架构并不灵活,如果你要加入一个自己定义的的解码器,得去修改Ethereal的代码,再重新编译,相当的烦琐 对于一般的明文协议,没有什么问题,但是对于加密协议,比如网络游戏,客户端程序一般会在刚连接上的时候,发送一个随机密钥,而后的报文都会用这个密钥进 行加密,诸如此类.要想

网络抓包工具Charles的介绍与使用

在复杂的App开发过程中,我们会涉及各种复杂的网络操作,各种API的调用和数据接收.如果我们只是通过控制台来查看网络的输入输出,就会非常麻烦.在Mac上有一款非常优秀的网络抓包工具--Charles,在iOS开发中也是常常用到.今天我们就来介绍如何安装使用Charles.关于Charles安装包.破解包和证书我已经上传至网盘:http://pan.baidu.com/s/1numMoTr    .大家可以下载直接安装.操作步骤如下: (1)直接安装dmg文件,安装过程很简单,就不赘述了.由于Ch