Wireshark中PIDs与网络包的关联
默认情况下,在Wireshark中记录跟踪时,在其中找不到进程id。有时这些信息对于调查你所面临的问题是必要的。我这周碰到了这样的一个问题。我需要在虚拟机(本地地址10.0.2.5)上找到一个进程,该虚拟机仍在使用TLSv1连接到我们的负载平衡器。起初,我只在Wireshark中记录了跟踪并对其进行了过滤(ssl.record.version==”TLS 1.0“):
显然,他们的要求是有的。由于整个通信量(握手除外)是加密的,因此无法猜测是谁发送了这些数据包。幸运的是,TLS在底层使用TCP,每个TCP包都有一个端口号,该端口号在给定时间唯一地标识一个进程。因此,如果我们在记录Wireshark跟踪时收集这些信息,我们将能够完成分析。我首选的方法是使用过程监视器。由于进程监视器跟踪可能会快速增长,因此最好删除除TCP/IP类别之外的所有事件(Filter -> Drop Filtered Events):
运行procmon后,我们可以在Wireshark中重新记录网络流量。完成后,我们需要将Wireshark中的默认时间格式(View->time Display format->time of Day或只需按Ctrl+Alt+2)更改为Process Monitor中使用的格式。现在,是时候找出其中一个可疑事件并节省时间和源端口:
利用这些信息,我们可以在procmon跟踪中找到相应的事件,并通过检查其属性,了解创建给定网络数据包的过程。事件的时间略有不同(Wireshark使用WinPcap/npcap驱动程序,而Process Monitor依赖ETW TCP/IP事件),但通常情况下,这不应该是个问题。如果您查看上面的procmon屏幕截图,您将看到我正在查找的进程是ImageVerifier.exe。
如果需要远程执行此类诊断,并且只能访问远程计算机上的命令行,则可以考虑使用TShark和wtrace(带参数:–filter TCPIP–nosummary)代替Wireshark和Process Monitor。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构