Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SharpPcap-从数据包获取信息_C#_Hex_Packet Sniffers_Sharppcap_Packetdotnet - Fatal编程技术网

C# SharpPcap-从数据包获取信息

C# SharpPcap-从数据包获取信息,c#,hex,packet-sniffers,sharppcap,packetdotnet,C#,Hex,Packet Sniffers,Sharppcap,Packetdotnet,我试图从数据包中获取信息,比如使用SharpPcap和PacketDotNet获取/发布请求。我在这里查看了有关stackoverflow的不同信息,但我有编码问题。数据包中的信息并没有在每个编码系统中正确显示 我的代码如下: using System.Text; using System.Threading; using PacketDotNet; using SharpPcap; using System; namespace ConsoleApplication2 { class

我试图从数据包中获取信息,比如使用SharpPcap和PacketDotNet获取/发布请求。我在这里查看了有关stackoverflow的不同信息,但我有编码问题。数据包中的信息并没有在每个编码系统中正确显示

我的代码如下:

using System.Text;
using System.Threading;
using PacketDotNet;
using SharpPcap;
using System;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string ver = SharpPcap.Version.VersionString;
            Console.WriteLine("SharpPcap {0}", ver);

            // Retrieve the device list
            CaptureDeviceList devices = CaptureDeviceList.Instance;

            ICaptureDevice myDevice = devices[3];
            myDevice.OnPacketArrival += new PacketArrivalEventHandler(device_OnPacketArrival);
            myDevice.Open(DeviceMode.Promiscuous, 1000);
            //Console.WriteLine("trst = {0}", myDevice.MacAddress);
            //myDevice.Filter = "tcp and dst host 10.11.16.80";


            Console.WriteLine("-- Listening on {0}, hit 'Enter' to stop...",
                          myDevice.Description);
            myDevice.StartCapture();
            Console.ReadLine();
            myDevice.StopCapture();
            myDevice.Close();

        }

        private static void device_OnPacketArrival(object sender, CaptureEventArgs e)
        {
        // парсинг всего пакета
            Packet packet = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data);
        // получение только TCP пакета из всего фрейма
            var tcpPacket = TcpPacket.GetEncapsulated(packet);
        // получение только IP пакета из всего фрейма
            var ipPacket = IpPacket.GetEncapsulated(packet);
            if (tcpPacket != null && ipPacket != null)
            {
                DateTime time = e.Packet.Timeval.Date;
                int len = e.Packet.Data.Length;

            // IP адрес отправителя
                var srcIp = ipPacket.SourceAddress.ToString();
            // IP адрес получателя
                var dstIp = ipPacket.DestinationAddress.ToString();

            // порт отправителя
                var srcPort = tcpPacket.SourcePort.ToString();
            // порт получателя
                var dstPort = tcpPacket.DestinationPort.ToString();
            // данные пакета
                var hex = BitConverter.ToString(tcpPacket.PayloadData);

                hex = hex.Replace("-", "");
                byte[] raw = new byte[hex.Length / 2];
                for (int i = 0; i < raw.Length; i++)
                {
                    raw[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16);
                }

                string data = Encoding.ASCII.GetString(raw);

                Console.WriteLine("{0}:{1}:{2}",srcPort,dstPort, data);
                Thread.Sleep(1000);
            }
        }
    }
}
使用System.Text;
使用系统线程;
使用PacketDotNet;
使用sharpcap;
使用制度;
命名空间控制台应用程序2
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串ver=SharpPcap.Version.VersionString;
Console.WriteLine(“sharpcap{0}”,版本);
//检索设备列表
CaptureDeviceList设备=CaptureDeviceList.Instance;
ICaptureDevice myDevice=设备[3];
myDevice.OnPacketArrival+=新的PacketArrivalEventHandler(设备\u OnPacketArrival);
myDevice.Open(DeviceMode.Promiscuous,1000);
//WriteLine(“trst={0}”,myDevice.MacAddress);
//myDevice.Filter=“tcp和dst主机10.11.16.80”;
WriteLine(“--在{0}上侦听,点击“回车”停止…”,
我的设备(说明);
myDevice.StartCapture();
Console.ReadLine();
myDevice.StopCapture();
myDevice.Close();
}
私有静态无效设备\u OnPacketArrival(对象发送方、CaptureEventArgs e)
{
// парсинг всего пакета
Packet Packet=Packet.ParsePacket(e.Packet.LinkLayerType,e.Packet.Data);
//TCP协议
var tcpPacket=tcpPacket.GetEncapsulated(数据包);
//知识产权
var ipPacket=ipPacket.getenclosed(数据包);
if(tcpPacket!=null&&ipPacket!=null)
{
DateTime time=e.Packet.Timeval.Date;
int len=e.Packet.Data.Length;
//知识产权
var srcIp=ipPacket.SourceAddress.ToString();
//知识产权
var dstIp=ipPacket.DestinationAddress.ToString();
// порт отправителя
var srcPort=tcpPacket.SourcePort.ToString();
// порт получателя
var dstPort=tcpPacket.DestinationPort.ToString();
// данные пакета
var hex=BitConverter.ToString(tcpPacket.PayloadData);
十六进制=十六进制。替换(“-”,“”);
字节[]原始=新字节[hex.Length/2];
for(int i=0;i
结果显示在屏幕截图上: