Exemple #1
0
    // Analyze: modify and/or log a pocket
    private static Packet Analyze(Packet packet, IPEndPoint endPoint, Direction direction)
    {
        if (modifiedPackets.Contains(packet.Layout.Name))
        {
            try {
                Hashtable changes = (Hashtable)modifiedPackets[packet.Layout.Name];
                Hashtable blocks  = PacketUtility.Unbuild(packet);
                foreach (BlockField blockField in changes.Keys)
                {
                    PacketUtility.SetField(blocks, blockField.block, blockField.field, changes[blockField]);
                }
                packet = PacketBuilder.BuildPacket(packet.Layout.Name, protocolManager, blocks, packet.Data[0]);
            } catch (Exception e) {
                Console.WriteLine("failed to modify " + packet.Layout.Name + ": " + e.Message);
                Console.WriteLine(e.StackTrace);
            }
        }

        if (loggedPackets.Contains(packet.Layout.Name))
        {
            LogPacket(packet, endPoint, direction);
        }

        return(packet);
    }