private void mFileImportMenu_Click(object pSender, EventArgs pArgs) { if (mImportDialog.ShowDialog(this) != DialogResult.OK) { return; } PcapOfflineDevice device = new PcapOfflineDevice(mImportDialog.FileName); device.Open(); Packet packet = null; SessionForm session = null; while ((packet = device.GetNextPacket()) != null) { TCPPacket tcpPacket = packet as TCPPacket; if (tcpPacket == null) { continue; } if ((tcpPacket.SourcePort < Config.Instance.LowPort || tcpPacket.SourcePort > Config.Instance.HighPort) && (tcpPacket.DestinationPort < Config.Instance.LowPort || tcpPacket.DestinationPort > Config.Instance.HighPort)) { continue; } if (tcpPacket.Syn && !tcpPacket.Ack) { session = NewSession(); session.BufferTCPPacket(tcpPacket); } else if (session.MatchTCPPacket(tcpPacket)) { session.BufferTCPPacket(tcpPacket); } } }
void ParseImportedFile() { while (device.Opened) { RawCapture packet = null; SessionForm session = null; while ((packet = device.GetNextPacket()) != null) { if (!started) { continue; } TcpPacket tcpPacket = TcpPacket.GetEncapsulated(Packet.ParsePacket(packet.LinkLayerType, packet.Data)); if (tcpPacket == null) { continue; } if ((tcpPacket.SourcePort < Config.Instance.LowPort || tcpPacket.SourcePort > Config.Instance.HighPort) && (tcpPacket.DestinationPort < Config.Instance.LowPort || tcpPacket.DestinationPort > Config.Instance.HighPort)) { continue; } this.Invoke((MethodInvoker) delegate { try { if (tcpPacket.Syn && !tcpPacket.Ack) { session = NewSession(); var res = session.BufferTCPPacket(tcpPacket, packet.Timeval.Date); if (res == SessionForm.Results.Continue) { session.Show(mDockPanel, DockState.Document); } } else if (session != null && session.MatchTCPPacket(tcpPacket)) { var res = session.BufferTCPPacket(tcpPacket, packet.Timeval.Date); if (res == SessionForm.Results.CloseMe) { session.Close(); } } } catch (Exception) { session.Close(); session = null; } }); } this.Invoke((MethodInvoker) delegate { mSearchForm.RefreshOpcodes(false); }); } }
private void mTimer_Tick(object pSender, EventArgs pArgs) { Packet packet = null; try { while ((packet = mDevice.GetNextPacket()) != null) { TCPPacket tcpPacket = packet as TCPPacket; SessionForm session = null; if (tcpPacket.Syn && !tcpPacket.Ack) { session = NewSession(); } else { session = Array.Find(MdiChildren, f => (f as SessionForm).MatchTCPPacket(tcpPacket)) as SessionForm; } if (session != null) { session.BufferTCPPacket(tcpPacket); } } } catch { } }
private void mTimer_Tick(object sender, EventArgs e) { try { RawCapture packet = null; mTimer.Enabled = false; DateTime now = DateTime.Now; foreach (SessionForm ses in MdiChildren) { if (ses.CloseMe(now)) { closes.Add(ses); } } closes.ForEach((a) => { a.Close(); }); closes.Clear(); while ((packet = mDevice.GetNextPacket()) != null) { if (!started) { continue; } TcpPacket tcpPacket = (TcpPacket)PacketDotNet.Packet.ParsePacket(packet.LinkLayerType, packet.Data).Extract(typeof(TcpPacket)); SessionForm session = null; try { if (tcpPacket.Syn && !tcpPacket.Ack && tcpPacket.DestinationPort >= Config.Instance.LowPort && tcpPacket.DestinationPort <= Config.Instance.HighPort) { session = NewSession(); var res = session.BufferTCPPacket(tcpPacket, packet.Timeval.Date); if (res == SessionForm.Results.Continue) { int hash = tcpPacket.SourcePort << 16 | tcpPacket.DestinationPort; waiting[hash] = session; } } else { int hash = tcpPacket.DestinationPort << 16 | tcpPacket.SourcePort; session = Array.Find(MdiChildren, f => (f as SessionForm).MatchTCPPacket(tcpPacket)) as SessionForm; if (session != null) { var res = session.BufferTCPPacket(tcpPacket, packet.Timeval.Date); if (res == SessionForm.Results.CloseMe) { waiting.Remove(hash); session.Close(); } continue; } if (waiting.TryGetValue(hash, out session)) { var res = session.BufferTCPPacket(tcpPacket, packet.Timeval.Date); switch (res) { case SessionForm.Results.Show: session.Show(mDockPanel, DockState.Document); break; case SessionForm.Results.Continue: continue; } waiting.Remove(hash); } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); session.Close(); session = null; } } mTimer.Enabled = true; } catch (Exception) { if (!mDevice.Opened) { mDevice.Open(DeviceMode.Promiscuous, 1); } } }
void ParseImportedFile() { RawCapture packet = null; SessionForm session = null; this.Invoke((MethodInvoker) delegate { while ((packet = device.GetNextPacket()) != null) { if (!started) { continue; } TcpPacket tcpPacket = (TcpPacket)PacketDotNet.Packet.ParsePacket(packet.LinkLayerType, packet.Data).Extract(typeof(TcpPacket)); if (tcpPacket == null) { continue; } if ((tcpPacket.SourcePort < Config.Instance.LowPort || tcpPacket.SourcePort > Config.Instance.HighPort) && (tcpPacket.DestinationPort < Config.Instance.LowPort || tcpPacket.DestinationPort > Config.Instance.HighPort)) { continue; } try { if (tcpPacket.Syn && !tcpPacket.Ack) { if (session != null) { session.Show(mDockPanel, DockState.Document); } session = NewSession(); var res = session.BufferTCPPacket(tcpPacket, packet.Timeval.Date); if (res == SessionForm.Results.Continue) { // mDockPanel.Contents.Add(session); //session.Show(mDockPanel, DockState.Document); } } else if (session != null && session.MatchTCPPacket(tcpPacket)) { var res = session.BufferTCPPacket(tcpPacket, packet.Timeval.Date); if (res == SessionForm.Results.CloseMe) { session.Close(); } } } catch (Exception ex) { Console.WriteLine("Exception while parsing logfile: {0}", ex); session.Close(); session = null; } } if (session != null) { session.Show(mDockPanel, DockState.Document); } if (session != null) { mSearchForm.RefreshOpcodes(false); } }); }
private void ProcessPacketQueue() { while (!Terminate) { bool bSleep = true; lock (QueueLock) { if (PacketQueue.Count != 0) { bSleep = false; } } if (bSleep) { Thread.Sleep(250); } else { List <RawCapture> CurQueue; lock (QueueLock) { CurQueue = PacketQueue; PacketQueue = new List <RawCapture>(); } foreach (var pPacket in CurQueue) { this.Invoke((MethodInvoker) delegate { var packet = PacketDotNet.Packet.ParsePacket(pPacket.LinkLayerType, pPacket.Data); TcpPacket tcpPacket = (TcpPacket)packet.Extract(typeof(TcpPacket)); SessionForm session = null; if (tcpPacket != null) { try { if ((tcpPacket.SourcePort < Config.Instance.LowPort || tcpPacket.SourcePort > Config.Instance.HighPort) && (tcpPacket.DestinationPort < Config.Instance.LowPort || tcpPacket.DestinationPort > Config.Instance.HighPort)) { return; } if (tcpPacket.Syn && !tcpPacket.Ack && tcpPacket.DestinationPort >= Config.Instance.LowPort && tcpPacket.DestinationPort <= Config.Instance.HighPort) { session = NewSession(); var res = session.BufferTCPPacket(tcpPacket, pPacket.Timeval.Date); if (res == SessionForm.Results.Continue) { int hash = tcpPacket.SourcePort << 16 | tcpPacket.DestinationPort; waiting[hash] = session; } } else { int hash = tcpPacket.DestinationPort << 16 | tcpPacket.SourcePort; session = Array.Find(MdiChildren, f => (f as SessionForm).MatchTCPPacket(tcpPacket)) as SessionForm; if (session != null) { var res = session.BufferTCPPacket(tcpPacket, pPacket.Timeval.Date); if (res == SessionForm.Results.CloseMe) { waiting.Remove(hash); session.Close(); } return; } if (waiting.TryGetValue(hash, out session)) { var res = session.BufferTCPPacket(tcpPacket, pPacket.Timeval.Date); switch (res) { case SessionForm.Results.Show: session.Show(mDockPanel, DockState.Document); break; case SessionForm.Results.Continue: return; } waiting.Remove(hash); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } } }); } } } }
private void mTimer_Tick(object sender, EventArgs e) { try { RawCapture packet = null; mTimer.Enabled = false; DateTime now = DateTime.Now; foreach (SessionForm ses in MdiChildren) { if (ses.CloseMe(now)) { closes.Add(ses); } } closes.ForEach((a) => { a.Close(); }); closes.Clear(); while ((packet = mDevice.GetNextPacket()) != null) { if (!started) { continue; } TcpPacket tcpPacket = TcpPacket.GetEncapsulated(Packet.ParsePacket(packet.LinkLayerType, packet.Data)); SessionForm session = null; try { if (tcpPacket.Syn && !tcpPacket.Ack && tcpPacket.DestinationPort >= Config.Instance.LowPort && tcpPacket.DestinationPort <= Config.Instance.HighPort && tcpPacket.DestinationPort != 9301) { session = NewSession(); var res = session.BufferTCPPacket(tcpPacket, packet.Timeval.Date); if (res == SessionForm.Results.Continue) { session.Show(mDockPanel, DockState.Document); } } else { session = Array.Find(MdiChildren, f => (f as SessionForm).MatchTCPPacket(tcpPacket)) as SessionForm; if (session != null) { var res = session.BufferTCPPacket(tcpPacket, packet.Timeval.Date); if (res == SessionForm.Results.CloseMe) { session.Close(); } } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); session.Close(); session = null; } } mTimer.Enabled = true; } catch (Exception) { if (!mDevice.Opened) { mDevice.Open(DeviceMode.Promiscuous, 1); } } }