我目前正在編寫一個C#程序,它具有與wireshack類似的功能,使用SharpPcap捕獲數據包並使用PacketDotNet獲取有關數據包的信息。我想知道如何獲得與數據包關聯的進程的名稱?SharpPcap獲取進程名稱
1
A
回答
2
您可以通過從netstat -o
解析輸出得到ProcessId
然後從Process.GetById
得到進程名。
可能是這樣的代碼將是有益的,但我不是很強勁,正則表達式:)
var proc = new Process {
StartInfo = new ProcessStartInfo {
FileName = "netstat",
Arguments = "-on",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
proc.Start();
Regex r = new Regex(@"\S+\s+(?<address>\S+)\s+\S+\s+\S+\s+(?<pid>\d+)");
while (!proc.StandardOutput.EndOfStream) {
var res = r.Match(proc.StandardOutput.ReadLine());
if (res.Success) {
var pid = int.Parse(res.Groups["pid"].Value);
var address = res.Groups["address"].Value;
Console.WriteLine("{0} - {1}", address, Process.GetProcessById(pid).ProcessName);
}
}
+0
這真的是唯一的選擇嗎?在確定哪個瀏覽器正在使用端口80時,我不認爲這會工作得很好? – Nuzzolilo 2014-03-20 04:48:00
+0
不能肯定地說,但我認爲你也可以嘗試使用[TcpView](http://technet.microsoft.com/en-US/sysinternals/bb897437.aspx),它具有圖形界面和命令行工具與netstat非常相似 – user20140268 2014-03-21 10:53:58
相關問題
- 1. 從進程名稱獲取進程ID
- 2. Sharppcap - 如何獲取traffiqued文件名?
- 3. 從進程名稱獲取應用程序名稱
- 4. 如何從進程名稱獲取應用程序名稱?
- 5. 通過PID獲取進程名稱
- 6. 通過名稱獲取進程ID
- 7. 獲取進程名稱,使用AppleScript
- 8. 獲取模塊名稱和進程名稱在LINUX C++
- 9. 獲取進程名稱窗口標題名稱和安裝的軟件名稱
- 10. 如何從進程名稱獲取進程ID?
- 11. 從進程ID獲取進程可執行文件名稱
- 12. 獲取進程的ID從進程名稱
- 13. 通過圖像名稱獲取進程的進程句柄
- 14. 如何在QT中獲取加載進程的進程名稱
- 15. 按進程名稱獲取進程句柄
- 16. 從進程ID獲取進程名稱(win32)
- 17. 獲取程序集名稱
- 18. 從不同的進程中獲取線程名稱
- 19. 如何從c程序獲取進程名稱?
- 20. 以編程方式獲取給定進程名稱和ppid
- 21. Volume Mixer - 獲取應用程序名稱及其進程ID
- 22. 如何從進程C#獲取應用程序名稱
- 23. 如何獲取應用程序的進程名稱?
- 24. 如何獲取所有線程ID和進程的名稱
- 25. 如何從android中的進程獲取應用程序名稱?
- 26. 如何在Windows中獲取進程的應用程序名稱?
- 27. 獲取由進程名
- 28. Coldfusion進程名稱
- 29. C#名稱進程
- 30. 從進程ID /對象獲取進程實例名稱(更快的方法)
請包括一些示例代碼,以幫助解釋的問題! – PearsonArtPhoto 2013-03-10 11:32:18