首页 > 编程语言 >C#实现抓包,并过滤UDP

C#实现抓包,并过滤UDP

时间:2023-11-17 11:32:53浏览次数:34  
标签:UDP Console C# udpPacket return ipPacket using data 抓包

C#实现抓包,并过滤UDP

using PacketDotNet;
using SharpPcap;
using SharpPcap.LibPcap;
using System;
using System.Linq;
using System.Net.Sockets;
using System.Text;

namespace ConsoleAppSharppcap
{
    internal class Program
    {
        static void Main(string[] args)
        {

            LibPcapLiveDeviceList devices = LibPcapLiveDeviceList.Instance;

            string ToHex(byte[] data)
            {
                return BitConverter.ToString(data).Replace("-", string.Empty);
            }

            string GetRoomNumber(byte[] data)
            {
                return data[26].ToString() + data[27].ToString("D2");
            }
            bool IsSOS(byte[] data)
            {
                return (data[72] == 1);
            }

            void auto_msg_5e00(byte[] data)
            {
                if (ToHex(data.Take(2).ToArray()) != "5E00")
                {
                    return;
                }
                //bool bIsSOS = IsSOS(data);
                if (true)
                {
                    Console.WriteLine("{0},{1}", GetRoomNumber(data), data[72]);
                }
                Response.DataContractData rdata = new Response.DataContractData();
                rdata.Id = GetRoomNumber(data);
                rdata.IsSOS = data[72];
                byte[] data2 = Encoding.UTF8.GetBytes(JSON.Stringify(rdata));
                UdpClient udpClient = new UdpClient();
                udpClient.Send(data2, data2.Length, "172.19.19.0", 12388);
            }

            void Device_OnPacketArrival(object s, PacketCapture e)
            {
                RawCapture ePacket = e.GetPacket();
                Packet packet = Packet.ParsePacket(ePacket.LinkLayerType, ePacket.Data);
                if (packet is EthernetPacket ethernetPacket)
                {
                    if (ethernetPacket.PayloadPacket is IPPacket ipPacket)
                    {
                        //Console.WriteLine($"From {ipPacket.SourceAddress} To {ipPacket.DestinationAddress}");
                        if (ipPacket.PayloadPacket is UdpPacket udpPacket)
                        {
                            if (udpPacket.DestinationPort == 2388)
                            {
                                auto_msg_5e00(udpPacket.PayloadData);
                                return;
                                Console.WriteLine($"From {ipPacket.SourceAddress}:{udpPacket.SourcePort} To {ipPacket.DestinationAddress}:{udpPacket.DestinationPort}");
                                Console.WriteLine($"Packet Length: {udpPacket.PayloadData.Length} bytes");
                                Console.WriteLine();
                            }
                        }
                    }
                }
            }

            foreach (LibPcapLiveDevice device in devices)
            {
                device.Open();
                device.OnPacketArrival += Device_OnPacketArrival;
                device.StartCapture();
            }


            Console.ReadLine();
        }
    }
}

 

标签:UDP,Console,C#,udpPacket,return,ipPacket,using,data,抓包
From: https://blog.51cto.com/xiangxisheng/8438620

相关文章

  • How To Delete Reservations Using Standard API INV_RESERVATION_PUB.Delete_Reserva
    SolutionSummary:ThereservationAPIINV_RESERVATION_PUB.Delete_Reservationwilldeletereservationsacceptingthereservationidandoptionallyserialnumberstolocateandremovereservations.Careshouldbetakentoensurerelatedobjectslikesaleso......
  • 35个超实用excel快捷键
    以下是一些常用的Excel快捷键,希望对你有所帮助。如果你想要了解更多快捷键,可以参考Excel的官方文档或者在网上搜索相关信息。Ctrl+C:复制选定的单元格或单元格范围。Ctrl+X:剪切选定的单元格或单元格范围。Ctrl+V:粘贴复制或剪切的内容。Ctrl+Z:撤销上一步操作。Ctrl+......
  • [MRCTF2020]千层套路
    压缩包需要密码,暴力破解得知为0573发现里面压缩包的密码也是文件名0114估计是套娃题,拿脚本解压importzipfilename='0573'whileTrue:fz=zipfile.ZipFile(name+'.zip','r')fz.extractall(pwd=bytes(name,'utf-8'))name=fz.filelist[0].file......
  • ! (空引用忽略判断) 操作符 (C# reference)
    ref: https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-forgiving主要是.Net6开始判断引用类型是否空,在项目文件中  PropertyGroup节点下  <Nullable>enable</Nullable,代表开启 ,在这个情况我想某个变量或者属性引用不要......
  • 搭建apache服务
    一.web概述基于B/S(Browser/Server)架构的网页服务,服务端提供网页,浏览器下载并显示网页http协议:超文本传输协议Daemon(守护进程)实现Web服务的软件:httpd(Apache)、Nginx、tomcat等Hyper Text Markup Language,超文本标记语言Hyper Text Transfer Protocol,超文本......
  • implement a parallel batch processing in X++ of Dynamics 365 F&O
    OneofthepowerfulfeaturesofDynamics365FinanceandOperationsisaBatchframework.Inthispost,Iexplainhowyoucanconvertyourexistingbatchjobtomulti-threadedtoincreaseitsperformance.InitialexampleLet'sconsiderthefollowing......
  • CentOS7安装强制使用gpt分区
    安装CentOS时,系统默认会使用mbr模式。如果磁盘大于2T,则需要如下操作,在开机启动画面按tab键,以便输入核心参数,在行末输入空格后inst.gpt,回车: 可以如下模式分区,其中根分区既可以是基本的xfs或者ext3,也可以是lvm格式: ......
  • binarySearch
     JavawhilepublicclassA{publicstaticintbinarySearch(int[]array,intaim){intlow=0,high=array.length-1,mid;while(low<=high){mid=(low+high)/2;if(aim<array[mid]){......
  • Pycharm安装之后-简单配置
    简单配置,配置完成后,使用起来一点不简单。第一步,为.py文件添加头部信息路径:File->Setting->Editor->FileandCodeTemplates->PthonScript内容:#!/usr/bin/python3#coding=utf-8#@Time:${DATE}${TIME}#@Author:作者以上内容可以根据自己喜欢,自行调整第二步,常用插件1......
  • “技能兴鲁”职业技能大赛-网络安全赛项-学生组初赛 Crypto WP
    babyRSA查看代码fromgmpy2import*fromCrypto.Util.numberimport*flag='flag{I\'mnotgonnatellyoutheFLAG}'#这个肯定不是FLAG了,不要交这个咯p=getPrime(2048)q=getPrime(2048)m1=bytes_to_long(bytes(flag.encode()))e1=3247473589e2......