简体   繁体   English

解码在C#中通过TCP套接字收到的二进制文件?

[英]Decoding binary received over tcp socket in c#?

I have several linux routers setup that sniff nearby traffic. 我有几个嗅探附近流量的Linux路由器。 They have sockets open in order for an application to be connected over tcp, through the sockets data is streamed in binary. 它们具有开放的套接字,以便通过套接字通过二进制流传输数据的方式通过tcp连接应用程序。

I've built a simple application to check if data is being received, and it is, however, it's giberish. 我已经构建了一个简单的应用程序来检查是否正在接收数据,但是它很酷。 Seems like binary isn't decoded properly. 好像二进制文件未正确解码。 Does anyone have any clue? 有人有任何线索吗?

        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();
        }

What I see in my console app upon running it : 运行后在控制台应用程序中看到的内容:

在此处输入图片说明

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM