
上个月一个做网络运维的朋友跟我聊起说他儿子在家庭群里炫耀自己用Wireshark抓到了同桌的IP地址还顺手用火绒查了微信里某个卖货人的地址。他觉得这事儿听起来又酷又不靠谱跑来问我到底能抓到什么哪些是谣言这一问倒让我把这么多年摸过的抓包工具又从里到外折腾了一遍。这篇就记录一下这轮实验里最典型的两个场景怎么用Wireshark看QQ语音通话时可能暴露的对端IP以及怎么用火绒的联网监控反向定位微信视频通话的远端地址。顺便把过程中容易翻车的几个点都整理出来给同样对抓包感兴趣、又不想被教程带偏的朋友当个参考。先说结论QQ和微信的IP并不是完全抓不到但能抓到的场景非常有限。聊天消息、朋友圈、文件收发这些常规操作基本只能看到腾讯服务器的地址真正能把好友的公网IP翻出来的几乎只有语音视频通话建立P2P直连的那一刻。所以整篇文章会围绕这个核心场景展开先讲原理再讲操作最后给一份可以照着抄的排查手册。1. 先弄明白QQ和微信的IP平时根本不在你眼前1.1 聊天消息走的是服务器中转很多人第一次打开Wireshark满心期待能看到好友家里的宽带IP结果抓了一堆包发现全是腾讯机房的地址顿时觉得被骗了。其实这不是工具不行而是即时通讯软件的设计本来就如此。QQ和微信的文字消息走的是典型的C/S架构。你发出的字先上传到腾讯的接入服务器服务器再转发给好友。整个过程中你的电脑和好友电脑之间没有直接建立的网络连接所以从抓包视角看你看到的永远是“你和腾讯服务器在通信”根本看不到“你和好友在通信”。这个设计是有现实原因的大量用户处在复杂的NAT网络后面两个客户端不一定能互相找到对方服务器中转反而是最可靠的保证。1.2 语音通话为什么能暴露IP既然平时看不到那所谓的“抓到好友IP”又是怎么回事答案是语音、视频通话场景。通话对实时性和带宽消耗更敏感。如果每一路音频都让腾讯服务器中转服务器带宽成本会高得离谱延迟也扛不住。所以QQ和微信在建立通话时会尝试在两个客户端之间开一条P2P直连通道。这里有一个特别好的比喻想象两个人分别坐在各自学校的门卫室NAT设备后面彼此不知道对方的电话。两个人想直接通话就得先通过一个共同认识的总机腾讯服务器交换联系方式。服务器告诉A“B的临时电话是xxxx”告诉B“A的临时电话是yyyy”然后两边同时拨号建立一条绕过总机的直达线路。这条P2P通道一旦建立成功双方在数据包里的源IP地址就会真实暴露Wireshark自然就能抓到。需要特别说明的是P2P并不是每次都能成功。如果双方的网络类型太严格比如其中一方在企业防火墙后面或者运营商网络做了额外限制打洞失败后通话会自动降级为服务器中继。这种时候你抓到的IP依然是腾讯的教学视频里那种“一抓一个准”的美事在真实网络里并不保证发生。1.3 看懂五元组后面所有过滤规则都靠它开始实操之前建议先把网络工程师常说的“五元组”搞清楚。一个IP数据包的头里最重要的五个字段是源IP、目标IP、源端口、目标端口、协议类型。Wireshark里面写的过滤表达式本质都是在跟这五个字段打交道。比如你看到一条UDP记录显示192.168.1.100:5000 - 123.45.67.89:8000意思就是本机192.168.1.100的5000端口正在向远端123.45.67.89的8000端口发送UDP数据。在后面的抓包过程中你要做的就是在海量连接里找出这个“远端IP”究竟是谁。理解了五元组你就不会在抓到一堆杂乱数据包时慌神了。2. 工具选型和环境准备2.1 Wireshark和火绒到底谁更适合干这件事有朋友会问既然Wireshark能抓到包为什么还要用火绒这两个工具的定位完全不同用对地方效率才能翻倍。我做了一张对比表方便你根据场景选择对比维度Wireshark火绒火绒剑抓包能力完整抓取数据包可看载荷内容不抓包仅显示进程建立的连接列表协议分析强内置几百种协议解析器弱只有连接五元组信息定位进程需要靠端口反查PID步骤繁琐直接按进程名查看一目了然上手难度较高过滤器和界面有学习门槛较低打开界面就能看懂典型场景分析协议、排查网络故障、抓取数据包取证快速知道“某个软件在连哪些IP”简单说Wireshark负责“看得深”火绒负责“看得快”。抓QQ好友IP时如果你想知道这个IP是不是好友本人的设备建议用Wireshark看完整包流向如果只是想知道当前微信这个进程连着哪些远程地址火绒剑两秒钟就能给你答案。后面我会把两条路线都走一遍。2.2 Wireshark安装时最容易踩的两个坑Wireshark的安装本身不复杂但从我给别人远程指导的经验看有两个坑几乎人人都会遇到。第一个坑是装的时候没有勾选Npcap新版叫Npcap老教程叫WinPcap。Wireshark本身只是一个“看包”的图形界面真正负责从网卡上采集数据的是Npcap这个底层驱动。安装过程中会出现一个让你选安装组件的界面很多人一路点Next结果没装上Npcap打开Wireshark后会发现一个网卡都列不出来。如果已经装完才发现不用卸载重装可以去Npcap官网单独补一个安装包。第二个坑是没以管理员身份运行。Wireshark要读取网卡的原始数据包在Windows上必须有管理员权限。双击图标打开是普通权限正确姿势是右键图标选择“以管理员身份运行”。否则你大概率会看到网卡列表是空的或者虽然能开始抓包但一个数据包都显示不出来。2.3 火绒这边需要准备哪些模块火绒不需要额外下载任何插件但默认情况下“火绒剑”这个工具可能没有被启用。打开方式很简单火绒主界面点击“安全工具”在工具列表里找到“火绒剑”首次使用会弹一个确认提示点允许就行。火绒剑是一个系统诊断工具里面有好几个标签页我们只需要其中的“网络”页。这一页会列出当前系统里所有进程的网络连接情况包括进程名、协议、本地地址、远程地址、状态。也就是说你不用去猜微信连了哪个IP它会直接告诉你WeChat.exe正在和哪些IP通信。这在排查某些流氓软件后台偷偷上传数据时也特别管用。3. Wireshark抓取QQ好友IP的完整实操3.1 选对网卡过滤规则先别急着填Wireshark启动后第一步是选择监听哪个网卡。常见的选项有“以太网”和“WLAN”。如果你用的是网线就选以太网用Wi-Fi就选WLAN。这里有个小细节如果电脑同时开着虚拟机网卡、蓝牙网卡列表会很长不确定就对比“已连接”状态或者看“描述信息”里带“Virtual”“Bluetooth”字样的直接忽略。选好网卡后双击开始抓包先不要急着输入过滤规则。我见过很多人一上来就填一条复杂的过滤表达式结果抓了一堆不相关的包反而无从下手。正确做法是先裸抓几秒确认数据包在滚动、能看到UDP包说明采集链路没问题。然后再选择菜单栏的“统计” - “对话”这里会按IP和端口聚合流量非常直观。3.2 给好友打个QQ语音电话制造“暴露窗口”数据不会凭空出现你得让好友配合你产生点流量。最有效的办法就是打个QQ语音电话。打电话之前先在Wireshark的过滤栏里输入一个基础过滤条件udp ip.src 你的本机IP把“你的本机IP”替换成实际地址比如192.168.1.100。这个过滤条件的意思是只看从你本机发出的UDP数据包。之所以限定UDP是因为语音通话走的是UDP用TCP是另一套逻辑。打电话的过程中Wireshark里会突然冒出来大量目的地端口在10000到50000之间的UDP包这些大概率就是通话数据。通话时间不需要太长十几秒就够了。通话时查看“统计” - “对话”窗口按字节数从大到小排序你会发现有一个远端IP的字节数在疯狂增长。这个IP就是当前通话的对端地址。3.3 从一大把UDP包里锁定可疑IP如果你在“对话”窗口里看到一个陌生IP的流量特别大别急着高兴还得确认它是不是腾讯的中转服务器。方法很简单直接用过滤表达式锁定这个地址看看它和你之间的通信模式。ip.addr 对方IP地址 udp然后右键这条记录选择“追踪流” - “UDP流”。如果追踪出来的内容是一堆无法识别的二进制数据这通常就是加密的通话载荷。接下来去查这个IP的归属地。正常情况下如果P2P直连成功你看到的是好友宽带或手机网络的出口IP如果看到的是腾讯云机房的IP说明这次通话走了服务器中继。我自己实测的一个有效验证办法是电话挂断后立刻把过滤条件改成ip.addr 对方IP地址看看还有没有包。如果挂断后这个IP瞬间安静了那就基本确定它就是通话对端。因为如果是腾讯机房这类长期服务地址即使不打电话偶尔也会有心跳包。3.4 验证抓到的IP是不是好友本人抓到IP之后还有一个更关键的环节验证。IP归属地查询只能精确到城市级别而且移动网络的出口IP经常跨越好几个省所以不要看到归属地是某个城市就拍板说“好友就在那里”。我一般会做三个交叉验证第一看时间相关性。IP出现在通话开始后、消失于通话结束时这是最强的证据。第二用nslookup 对方IP做一次反向解析如果解析出来的是xx.qq.com或者某个IDC机房域名那基本是中继服务器如果没有任何域名解析只是一个裸IPP2P直连的可能性更大。第三让好友在自己那边也抓一次包。如果他在Wireshark里也看到了同一个IP两边证据对上了这才是铁证。需要特别提醒单凭一个IP地址并不能定位到具体的人。IP是网络层面的设备标识不是现实世界的地理坐标做到“判断出大概地区、确认是直连还是中转”这个程度就已经是这项技术的天花板了。4. 用火绒抓取微信IP的实操方案4.1 火绒剑的“网络”页面就是一个进程级连接表如果你觉得Wireshark的界面太复杂只想快速知道“我电脑上某个软件正在连哪些IP”火绒剑的方案更简单粗暴。打开火绒剑后切到“网络”标签页你会看到一个实时刷新的列表每一行都包含进程名、协议、本地地址、远程地址、状态。找到列表里的WeChat.exe新版本微信可能叫Weixin.exe它对应的远程地址就是当前微信在连接的所有服务器。这里唯一要做一点功课的是区分TCP和UDP。微信的登录、消息同步、文件传输大多是TCP连接而视频通话走UDP。4.2 打视频电话前后做三次对比新出现的UDP地址就是目标火绒剑的网络列表是动态的单看某一瞬间很难判断哪个IP是好友。我的方法是做三次对比。第一次在打视频电话之前截图记录下WeChat.exe的所有远程地址。第二次视频通话中再截一张图。第三次挂断后立刻再看一眼。对比这三张截图通话中多出来的那个UDP远程地址就是本次通话的对端。这个方法比Wireshark的“对话”窗口还要直接因为它已经帮你把进程过滤好了你只需要关注变化。按照我的测试微信视频通话的UDP端口通常落在10000到20000或者40000到50000这两个区间。当然微信版本升级后端口策略有调整也很正常关键是记住“对比变化”这个思路而不是死记端口号。4.3 直连、中继、代理三种情况的判断通过火绒剑看到IP后下一步就是判断这条连接的性质。我整理了一个简单特征表连接类型目标IP特征端口特征判断依据P2P直连归属地显示为好友所在城市非IDC机房UDP高端口动态变化通话期间出现挂断后消失服务器中继归属地为腾讯云等机房骨干IP端口相对固定通话前后一直存在流量平稳经第三方出口归属地与好友显示地区完全对不上任意端口对方网络可能有额外的出口节点转发需要说明的是第三种情况里的“第三方出口”并不等于我在教你怎么绕过限制它只是网络环境中客观存在的一种转发方式。现实世界里企业办公网络、校园网出口、运营商强制中转都会导致你看到的IP不是好友本机直连IP。碰到这种情况别钻牛角尖换个网络环境再测试往往就成了。4.4 不装火绒也能看的替代方案火绒确实方便但如果你手头没有它Windows自带的工具其实也能完成类似任务。最简单的是资源监视器。快捷键WinR输入resmon回车切到“网络”标签展开“网络活动”就能看到每个进程的连接列表。它和火绒剑的网络页非常像只是界面风格老气一点。另外一个命令行方案是netstat。以管理员身份打开命令提示符执行netstat -ano | findstr 你的微信PIDPID可以在任务管理器“详细信息”标签页里找到找到之后再用tasklist /FI PID eq 你的PID确认进程名最后拿PID去对比netstat的输出。这个方法的好处是什么系统都能用缺点是输出是静态快照不如火绒剑实时刷新那么直观。5. 高频翻车现场与排查手册5.1 抓了半天全是TCP包一个UDP都没有这个现象很常见尤其当你用的网络环境对UDP限制比较严格时。语音通话要建立P2P前提是UDP能通。如果UDP被防火墙或路由器规则挡掉了QQ和微信会自动改用TCP或直接依赖服务器中转你自然就看不到UDP流量。遇到这个情况先检查自己的抓包过滤条件是不是太严格。先把过滤栏清空裸抓几秒看有没有UDP包。如果裸抓都没有说明你用的网卡本身就没有UDP流量如果裸抓有、通话时没有那就说明P2P打洞失败这次实验取消换个网络再试。5.2 看到的全是腾讯机房地址IP跟好友一点关系都没有这是最打击人的结果但也是真实网络里最常见的结局。P2P打洞的成功率取决于双方网络环境并不是每次都能成功。如果对方的网络在对称型NAT里面或者运营商做了端口限制打洞失败通话流量就会全部走腾讯的中继服务器。你抓到的IP看起来五花八门其实都是腾讯在不同地区的机房入口。我个人的经验是两个人都用家庭宽带、都是动态公网IP时成功率较高有一方在4G/5G网络下也经常能直连但如果两个人都处于大型局域网内那基本别抱太大期望。5.3 抓到的IP归属地和好友定位完全对不上有一条经验要记住IP归属地查询显示的是“该IP注册地”或“该IP出口所在城市”不等于使用者就在那里。移动网络的出口经常由省际核心网调度你在广州用手机网络出口IP显示在长沙完全正常。宽带网络偶尔也会因为IDC的BGP路由出现跨区域出口。所以不要拿IP归属地来下“对方在哪里”的结论。这条结论对做网络运维的人尤其重要不然排障时会被数据带偏方向。5.4 Wireshark里数据包长度老是显示520字节这是不是我漏了什么很多新手看到单包长度只有几百字节担心是不是抓包不完整。Wireshark显示的长度一般指的是这个包在网络层或传输层的有效载荷长度不是完整的应用层文件长度。以太网的MTU上限是1500字节扣掉IP头和TCP/UDP头的开销真正能放数据的空间也就1460字节左右。语音通话的一个音频帧本身很小落到包里显示几百字节再正常不过。如果你确实要调整捕获长度可以到“编辑” - “首选项” - “数据包大小限制”里改默认262144字节完全够用。真正影响抓包完整性的是抓包时缓冲区是否溢出、磁盘写入是否来不及而不是单包显示长度。所以看到“520字节”别慌这是数据包的正常形态不是丢了数据。5.5 抓包工具和安全软件互相较劲怎么办Wireshark需要Npcap驱动火绒也包含网络过滤驱动两套驱动同时存在时偶尔会出现兼容性问题表现为打开Wireshark后无法抓包或者火绒提示网络防护异常。如果你遇到这种情况优先重启一次系统让驱动重新加载。如果还不行可以先退出火绒的“网络防护”相关功能试试抓完包再开回来。另外要提一句火绒剑在做系统诊断时权限很高操作不当确实存在误杀正常进程的可能。最容易遇到的状况是误杀explorer.exe导致桌面图标消失解决办法也很简单WinR运行explorer.exe重新启动资源管理器或者到火绒的“恢复区”把误拦的文件恢复。我的建议是用火绒剑只做“看”的动作别随便点“结束进程”。5.6 常见问题速查表现象可能原因解决办法Wireshark网卡列表为空未安装Npcap或非管理员运行安装Npcap右键以管理员身份启动抓包没有UDP流量网络限制UDP或过滤条件错误清空过滤条件裸抓验证只有腾讯机房IPP2P打洞失败换网络环境重试归属地和位置对不上移动网络出口或跨区域路由放弃精确定位只做参考单包长度只有几百字节MTU和协议载荷决定了正常包长无需处理火绒剑误杀explorer安全工具误报系统进程恢复区恢复或重启explorer.exe局域网内IP冲突导致抓包混乱有人手动设置和你相同的IP改变自己IP或协调对方修改6. 边界与合规抓包能力应该用在哪儿6.1 抓包合法性的核心是授权聊完技术必须把边界说清楚。抓包这个能力本身没有任何问题但使用场景的合规性直接决定了行为是否踩线。抓自己电脑上的流量研究自己账号的通信过程这是合理的技术学习作为公司网络管理员在制度明确授权的前提下去排查网络故障这也是正常运维范畴。但如果你把从QQ或微信里抓到的IP用于骚扰、骚扰式定位、人肉搜索那就是性质完全不同的行为没必要为了证明技术能力把自己搭进去。我特别想强调一点QQ和微信的IP能不能抓到是一回事抓到了之后能不能做是另一回事。技术在大多数时候是一把工具用什么方向完全取决于使用者的目的。这篇文章把原理和操作写出来是希望读者理解网络通信的底层逻辑而不是教大家去监控他人。6.2 学会这些到底能干什么那这些技能在正经场景里有什么用按我自己的经验至少有这几个方向可以参考。排查网络故障时你可以通过抓包确认某个设备是不是真的在联网通信还是一直在重传数据。验证应用程序的隐私行为时你可以用火绒剑看看某个App在后台到底连了哪些服务器有没有在偷传数据。处理局域网问题时通过抓包你能发现哪些设备在蹭网哪些IP地址发生了冲突。在测试自己的程序时你可以用Wireshark确认协议字段是否正确、数据是否按预期发送。掌握五元组、P2P、NAT这些概念之后你会发现这些技能不是用来“盯人”的而是用来理解网络、保护自己的。我自己现在的习惯是抓包工具平时不常开但每次遇到“这个App是不是在偷跑流量”“这个设备连上了什么奇怪服务器”“这个游戏为什么突然延迟高”这类疑问时就会顺手做一次小实验。这套方法跑下来多数问题都能看到答案。你如果按这篇文章的步骤操作成功了一次说明你已经具备最基本的抓包分析思维了以后再面对更复杂的网络问题也能少走很多弯路。