【问题标题】:Decoding binary received over tcp socket in c#?在 C# 中解码通过 tcp 套接字接收的二进制文件?
【发布时间】:2015-03-26 05:53:57
【问题描述】:

我有几个 linux 路由器设置来嗅探附近的流量。它们打开了套接字,以便通过 tcp 连接应用程序,通过套接字数据以二进制形式传输。

我已经构建了一个简单的应用程序来检查是否正在接收数据,但是它是乱码。似乎二进制未正确解码。有人知道吗?

        try
        {
            TcpClient ourMagicClient = new TcpClient();
            ourMagicClient.Connect("192.168.0.101", Port);
            NetworkStream ourStream = ourMagicClient.GetStream();
            byte[] data = new byte[ourMagicClient.ReceiveBufferSize];
            int offset = 0;

            for (int i = 0; i < 20; i++)
            {
                int bytesRead = ourStream.Read(data, 0, System.Convert.ToInt32(ourMagicClient.ReceiveBufferSize));
                output += Encoding.ASCII.GetString(data, 0, bytesRead);

                Console.WriteLine(output);
                //Console.WriteLine(encoding.); 
                Console.WriteLine("\n");
                offset = bytesRead;
            }

            System.IO.File.WriteAllText(@"C:\Users\qweik_000\Desktop\WriteText.txt", output, Encoding.UTF8);

            Console.WriteLine("Press enter to close...");
            Console.ReadLine();
        }
        catch (Exception e)
        {
            Console.WriteLine("Error : " + e.Message);
            Console.WriteLine("Error : " + e.StackTrace);
            Console.ReadLine();
        }

我在控制台应用程序中看到的内容:

【问题讨论】:

  • 如果正在接收二进制数据,为什么要将其转换为字符串?您希望看到什么?
  • 嗅探到的流量往往是不可读的二进制数据...询问这些来自 NSA 的专家如何理解它...
  • @Qweick 你确定对方正在给你发送一个长字符串,而不是某个对象吗?
  • @DanielKelley 收到的数据应该是代表嗅探流量的字符串。包括发送方、接收方mac地址、rssi等
  • 他好像不知道..你不知道什么对象正在发送给你......?那么你不知道如何阅读它....这是一个沉重的问题..你在嗅什么..?

标签: c# sockets tcp binary tcpclient


【解决方案1】:

您可能会查找有效 ASCII 范围(即 0x20 到 0x7f)中的字节字符串(一行中的一些字节),然后提取并显示此“可读文本”作为开始...

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多