C#抓包

工具:SharpPcap 4.2.0

vs工程:控制台应用程序


关于C#抓包,我只找到SharpPcap 这个dll,相关的资料不多,而且都是挺老的,所以就顺手记一下自己的代码,给有同样需求的人一个参考吧。

当然,代码可能存在问题,请见谅。


一、获取连接设备

// 获取连接列表
CaptureDeviceList devices = CaptureDeviceList.Instance;

// 无连接
if (devices.Count < 1)
{
    Console.WriteLine("No devices were found on this machine");
    return;
}

Console.WriteLine("\n以下为本机连接:");
Console.WriteLine("--------------\n");

int j=0;
string temp = "";
Regex r = new Regex("FriendlyName: .*\n"); //匹配连接的FriendlyName
Match m;
// 打印连接设备
foreach (ICaptureDevice dev in devices)
{
    temp = dev.ToString();
    m = r.Match(temp);
    Console.WriteLine("{0}:{1}\n", j++, m.ToString());
}
Console.Write("输入设备号");
string input = Console.ReadLine();
int i = 0;
try
{
    i = Int32.Parse(input);
}
catch (Exception e)
{
    Console.WriteLine("非法输入!"+e.Message);
    return;
}
if (devices.Count < 1 || i == -1)
{
    Console.WriteLine("变量非法!");
    return;
}
// 得到指定连接设备
ICaptureDevice device = devices[i];


二、打开连接

// 定义“包到达”事件
device.OnPacketArrival +=new SharpPcap.PacketArrivalEventHandler(device_OnPacketArrival);

// 打开连接
int readTimeoutMilliseconds = 1000;
device.Open(DeviceMode.Promiscuous, readTimeoutMilliseconds);


三、设置过滤

// 设置仅获取目标端口为1234的tcp包
string filter = "tcp dst port 1234";
device.Filter = filter;


四、开始获取

// 开始无限期捕获包
device.Capture();


五、包处理方法

private static void device_OnPacketArrival(object sender, CaptureEventArgs e)
{
    //获取以太网(Ethernet)的帧
    var ent = PacketDotNet.EthernetPacket.ParsePacket(LinkLayers.Ethernet, e.Packet.Data);
    //获取ip包
    var ip = ent.PayloadPacket;
    //获取tcp包
    var tcp = ip.PayloadPacket;
    //格式化tcp包,可直接读取tcp包中的相应值
    var tcp_packet = new TcpPacket(new ByteArraySegment(tcp.Bytes));
    if (tcp != null)
    {
        DateTime time = e.Packet.Timeval.Date;
        if (tcp.PayloadData != null)
        {
            //根据需要,获取tcp的data数据
            string str = BitConverter.ToString(tcp.PayloadData);
            /*
            *
            其他数据处理
            *
            */
        }
    }
}


六、技术有限,只做到这样的程度

转载于:https://my.oschina.net/u/1260893/blog/322939

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fiddler是一种网络调试工具,用于分析、监视和修改HTTP和HTTPS流量。它可以捕获网络流量,并提供详细的请求和响应的信息,包括请求头、响应头、主体内容等。Fiddler可以用于检查和修改请求和响应,以便进行调试和分析。 Fiddler具有许多有用的功能。首先,它可以捕获浏览器和其他应用程序发送和接收的所有HTTP和HTTPS流量,无论是本地应用程序还是远程服务器。这使得开发人员可以深入了解网络请求和响应的细节,包括请求的方法、路径和参数,以及响应的状态码和内容。 此外,Fiddler还可以模拟服务器的响应,以便测试客户端如何处理不同的响应。开发人员可以修改请求的头部、主体和URL,并观察客户端的反应。这对于调试和测试特定场景下的应用程序非常有帮助。 Fiddler还提供了一些额外的功能,如自定义脚本和自动化测试。开发人员可以使用其自带的FiddlerScript编写自定义脚本,以便对请求和响应进行处理。这使得开发人员可以在请求和响应中添加或删除特定的信息,或执行其他自定义的操作。 总而言之,Fiddler是一个功能强大的网络调试工具,可以帮助开发人员分析、监视和修改HTTP和HTTPS流量。它提供了丰富的功能和易于使用的界面,使开发人员能够更轻松地调试和分析网络应用程序。无论是开发人员还是测试人员,都可以从Fiddler中受益,并节省调试和测试的时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值