【问题标题】:SharpPcap Encoding.UTF8.GetBytesSharpPcap 编码.UTF8.GetBytes
【发布时间】:2011-03-21 19:02:54
【问题描述】:

有人知道在这些字节中获取实际文本的正确方法是什么吗? 我在这里做错了。

还有一个问题:utf-8 是最通用的编码,可以正确显示大部分字符吗?

TY

    private void device_OnPacketArrival(object sender, SharpPcap.CaptureEventArgs e)
    {
        string str = string.Empty;

        var time = e.Packet.Timeval.Date;
        var len = e.Packet.Data.Length;

        str = "time.Hour: " + time.Hour + " time.Minute: " + time.Minute + " time.Second: " + time.Second + " time.Millisecond: " + time.Millisecond + "len: " + len;
        str += Environment.NewLine + e.Packet.ToString();
        str += Environment.NewLine + " Message: " + BitConverter.ToString(e.Packet.Data);
        //str +=  e.Packet.Data + Environment.NewLine + Environment.NewLine;

        Packet p = Packet.ParsePacket(e.Packet);
        str += e.Packet.Data + Environment.NewLine + Environment.NewLine;

        byte[] utf8Bytes = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, e.Packet.Data);

        str += Encoding.UTF8.GetBytes(utf8Bytes.ToString()).ToString();
        //txtOutput.Text += "time.Hour: " + time.Hour + "time.Minute: " + time.Minute + "time.Second: " + time.Second + "time.Millisecond:" + time.Millisecond + "len:" + len;
        //txtOutput.Text += e.Packet.ToString();
        //txtOutput.Text += Environment.NewLine;

        WriteToFile(str,null);
       // WriteToFile("",c);

【问题讨论】:

    标签: winpcap sharppcap


    【解决方案1】:

    如果数据实际上是 UTF-8,您正在寻找的是 Encoding.UTF8.GetString()。

    这完全取决于数据字段包含的内容。如果它是另一个协议有效负载,您需要使用 SharpPcap/Packet.Net 解析器来解析它,或者,如果特定的解析器尚不存在,那么您需要查找协议规范并构建您自己的解析器那个。

    在解析之前,所有传入的数据包都只是一个无意义数据的大字节数组。有时编写解析器很容易,有时可能需要数周时间(取决于协议的复杂性或已经存在哪些工具来解析特定协议)。 SharpPcap/Packet.Net 是一个用于解析数据包数据的非常广泛的协议,但它远未涵盖所有现有的常见/使用的协议。

    【讨论】:

      【解决方案2】:

      数据包包含二进制数据而不是文本数据。

      数据包的某些部分可能包含文本,但您应该只尝试将这些部分转换为文本(而不是整个数据包数据),并且您应该知道文本编码是什么。

      没有“通用”编码。 UTF8 比 ASCII 更通用,因为 ASCII 中的所有文本都将使用 UTF8 进行转换,但通常没有“通用”编码,您应该知道数据的编码是什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-07
        • 2012-07-26
        • 2013-03-02
        相关资源
        最近更新 更多