【发布时间】: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