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); }
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()); } } }
/// <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(); }
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); } } }