Пример #1
0
        private void Sniffer_PacketReceived(object sender, W2PacketEventArgs e)
        {
            if (toolsPauseLogging.Checked)
            {
                return;
            }

            if (m_ignoredPackets.ContainsOpCodeAndSize(e.PacketHeader.PacketId, e.PacketHeader.Size))
            {
                return;
            }

            if (dgvPacketLog.RowCount > 1000)
            {
                dgvPacketLog.Rows.Clear();
            }

            int currentRow = dgvPacketLog.Rows.Add(
                DateTime.Now,
                e.Direction.ToString(),
                e.IPHeader.SourceAddress,
                e.IPHeader.DestinationAddress,
                e.PacketHeader.Size,
                string.Format("0x{0:X2}", e.PacketHeader.PacketId),
                e.PacketHeader.ClientId);

            dgvPacketLog.Rows[currentRow].Tag = e;

            logPacket(e);
        }
Пример #2
0
        private void logPacket(W2PacketEventArgs packet)
        {
            bool autoSave = Properties.Settings.Default.AutoSavePackets;

            if (autoSave)
            {
                var directory = Properties.Settings.Default.SavePacketDirectory;
                if (string.IsNullOrEmpty(directory))
                {
                    directory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                }

                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }

                var logFilePath = directory + Path.DirectorySeparatorChar + "packetLog.txt";

                var binaryPacketFilePath = string.Format("{0}{1} - 0x{2} - {3}.bin",
                                                         directory,
                                                         packet.Direction.ToString(),
                                                         packet.PacketHeader.PacketId.ToString("X2"),
                                                         packet.PacketHeader.Size);

                using (var file = File.OpenWrite(binaryPacketFilePath))
                    file.Write(packet.Buffer, 0, packet.Buffer.Length);


                using (var logStream = new StreamWriter(File.Open(logFilePath, FileMode.Append)))
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append("--------------------------------------------\n")
                    .Append(DateTime.Now.ToString("dd/MM/yyyy - HH:mm:ss"))
                    .Append($"\n - Packet: Direction {packet.Direction}\n")
                    .Append($"From {packet.IPHeader.SourceAddress}:{packet.TCPHeader.SourcePort}  ")
                    .Append($"To {packet.IPHeader.DestinationAddress}:{packet.TCPHeader.DestinationPort}\n\n")
                    .Append($"Header: Size {packet.PacketHeader.Size} PacketId 0x{packet.PacketHeader.PacketId.ToString("X2")} ")
                    .Append($"ClientId {packet.PacketHeader.ClientId} TimeStamp {packet.PacketHeader.TimeStamp}\n\n");

                    logStream.Write(sb.ToString());
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Initializes the details form with the given packet data.
        /// </summary>
        /// <param name="packet"></param>
        public void InitializePacketDetails(W2PacketEventArgs packet)
        {
            hexPacketView.ByteProvider = new DynamicByteProvider(packet.Buffer);

            StringBuilder sb = new StringBuilder();

            sb.Append("Details of Packet: ")
            .Append($"0x{packet.PacketHeader.PacketId.ToString("X2")} ")
            .Append(packet.Direction.ToString())
            .Append($" Size: {packet.PacketHeader.Size}");


            txtPacketCheckSum.Text  = packet.PacketHeader.Checksum.ToString();
            txtPacketClientId.Text  = packet.PacketHeader.ClientId.ToString();
            txtPacketKey.Text       = packet.PacketHeader.Key.ToString();
            txtPacketOpCode.Text    = packet.PacketHeader.PacketId.ToString("X2");
            txtPacketSize.Text      = packet.PacketHeader.Size.ToString();
            txtPacketTimeStamp.Text = packet.PacketHeader.TimeStamp.ToString();

            this.Text = sb.ToString();
        }
Пример #4
0
        private void SavePacketToFile(W2PacketEventArgs packet)
        {
            if (saveDialog == null)
            {
                saveDialog = new SaveFileDialog();
                saveDialog.CheckPathExists = true;
                saveDialog.Filter          = "Binary File|*.bin";
                saveDialog.Title           = "Select where to save the packet binary data:";
                saveDialog.ValidateNames   = true;
                saveDialog.AddExtension    = true;
                saveDialog.DefaultExt      = "bin";
            }
            var result = saveDialog.ShowDialog(this);

            if (result == DialogResult.OK)
            {
                using (var fstream = saveDialog.OpenFile())
                    using (var bw = new BinaryWriter(fstream))
                    {
                        bw.Write(packet.Buffer);
                    }
            }
        }