我正在使用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);
    }
}
有帮助吗?

解决方案

一个关键特征的一个 TCP 是“丢弃重复数据包”

因此,要解决WinPCAP解决问题,您必须捕获一个MSN消息的所有数据包,并将其重新发送到新数据包中。希望MSN不会接受。

在这种情况下,学习如何处理MSN协议可以为此问题带来解决方案。

codeproject howto: Connect_TO_MSN_MESSENGER

也许这个c#lib msnp-sharp 以某种方式解决您的问题,或者至少使您更好地了解 Microsoft通知协议

其他提示

这是我的怀疑...

您正在重新发送数据包,我相信这将使网络驱动程序认为它已收到了两次相同的数据包。在各种情况下,这可能会发生,例如第一次发生的情况需要一段时间才能到达,因此发件人在丢失的情况下恢复。

然后,网络驱动程序(或MSN)将发现重复的内容并丢弃 - 毕竟,已经看到了该数据,因此它不需要冗余副本。因此,再次明确发送同一数据包基本上没有目的。

您还必须考虑到您在 溪流 数据的。不能保证该数据包包含 确切地 一个命令说“这是一个消息”。例如,它可能以下一条消息的第一位结尾。仅将额外数据插入流不仅很难,而且您还需要理解协议才能正确执行。


现在,当您说“我的MSN上什么都没出现”时,你是说不 额外的 消息,还是第一条消息没有出现?如果您只是没有重复,那么上述解释了。如果您有效 阻止 MSN通过运行此程序,然后显然有所不同。

我认为MSN具有某种应用程序级数据包编号,完整性检查和欺骗检查。对于这种备受瞩目的目标,其他任何事情都是无能的。

假设MSN将链式的流加密应用于其发送的数据包...在这种情况下,接收重复数据包仅会导致垃圾,因为加密算法的状态将有所不同(数据包的解密设置了解密状态,对于序列中的下一个数据包)。因此,重复的数据包看起来像是MSN的不良数据包,它将被忽略。

因此,重播数据包可能会起作用,但是MSN将确保在应用程序级别忽略它们。除非您了解MSN应用程序级协议,否则您将无法以任何简单的方式复制消息。

您不能重复一个TCP数据包,并期望套接字接收它,每个数据包上都有订单号。如果是UDP,它可能会起作用,但您也不能依靠数据包来表示整个消息UDP或TCP。

您的工作量太低,使用分层服务提供商在接口和套接字之间获得,就像通过TCP实现协议一样,您可以重复数据包,并且很可能在应用程序端没有检查。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top