dev*_*ium 0 .net c# packet-capture winpcap packet-sniffers
我正在使用Tamir的SharpPCap尝试将数据发送到我的msn.
目前,出于测试目的,我的想法是等待mymsn@msn.com收到的任何消息,然后再次发送数据包,也就是说,在我的msn上永远重复显示任何消息.我认为这必须工作,因为我只是收到我收到的数据包,然后重新发送它.
出于某种原因,我的msn上没有任何内容,虽然我会在控制台中看到很多"抓住数据,重新发送".有任何想法吗?谢谢
class Program {
static PcapDevice device;
static void Main(string[] args) {
device = SharpPcap.GetAllDevices()[0];
device.PcapOnPacketArrival +=
new SharpPcap.PacketArrivalEvent(device_PcapOnPacketArrival2);
device.PcapOpen(true, 1000);
device.PcapStartCapture();
Console.ReadKey();
}
static void device_PcapOnPacketArrival2(object sender, Packet packet) {
TCPPacket tcpPacket = packet as TCPPacket;
if (tcpPacket == null) {
return;
}
string data = Encoding.Default.GetString(tcpPacket.Data);
if (!data.StartsWith("MSG mymsn@msn.com")) {
return;
}
Console.WriteLine("caught data, resending it");
device.PcapSendPacket(tcpPacket);
}
}
Run Code Online (Sandbox Code Playgroud)
TCP的一个关键特性是"丢弃重复的数据包"
因此,要使用WinPcap解决您的问题,您必须捕获一个MSN消息的所有数据包并将其重新发送到新数据包中.希望MSN不会接受.
在这种情况下,学习如何处理MSN协议可以解决这个问题.
CodeProject Howto:Connect_To_MSN_Messenger
也许这个C#lib MSNP-Sharp以某种方式解决了您的问题,或者至少让您更好地理解Microsoft通知协议
| 归档时间: |
|
| 查看次数: |
1594 次 |
| 最近记录: |