第十三章 网络协议和管理
抓app访问的域名和ip
1、环境准备
工具:
https://github.com/H4NM/WhoYouCalling?tab=readme-ov-file
操作
1、CallMapper下载https://github.com/H4NM/WhoYouCalling/releases/download/v1.5/CallMapper-1.5.zip
2、WhoYouCalling下载https://github.com/H4NM/WhoYouCalling/releases/download/v1.5/CallMapper-1.5.zip

把WhoYouCalling的启动exe加入path变量

2、完成抓包
管理员运行cmd

获取流量接口

开始抓包
ipconfig /flushdns # 这个很关键,可以让你的dns请求抓的全一点
# 抓特定的app
wyc -e "E:\Trae CN\Trae CN.exe" -i 4 -o "C:\Users\oneye\Desktop\cap001" --name "Trae"
# 抓所有的
wyc --illuminate -i 4 -o "C:\Users\oneye\Desktop\cap001"

wyc直接打开这个程序,启动后直接使用对话编程一段时间,这样可以抓全:启动、登录、交互的全部流量就有了
对话

退出-登录都操作一遍

同时可以抓一部分浏览操作阶段的域名的,当然这部分操作也应该被包含在wcy抓包软件中了

再聊记录

关闭wyc抓包,ctrl c就可以

进入到上图所示输出文件

直奔主体,summary.txt就是我们要的域名和ip清单,

上图,summary.txt里有域名和ip了,其他

就是各个trae子进程下的统计(每个进程下分别有dns、tcp记录的),Result.json和summary.txt都是汇总的,summary给人看的。
3、处理文本
然后把summary.txt传到linux里处理下


结构化的数据,过滤出Domains层级就行了

sed -rn '/Domains:/,/Record/p' Summary.txt |grep '-' |awk '{print $2}' |sort |uniq |grep -Evi undefined

再确认下summary.txt全不全,看看Result.json里也是一样15个域名,基本判断只看summary就是可以了。

写入dns前的格式化
cat 10.2.needadd | xargs -I {} bash -c 'ip=$(dig +short @223.5.5.5 {} | grep -E "([0-9]+\.){3}[0-9]+" | head -1); echo "$ip {}"' |grep -Ev '^ +'

写入dns server的/etc/hosts给dnsmasq用即可。
4、报错处理
如果遇到报错的,处理就是git clone下载源码,然后打开trae进入该目录,把报错发给trae,让他直接修改后再给你编译,你就坐享其成吧。---已跑通,具体如下
1、下载编译好的报错👇

2、直接让trae处理,发现是编译后的,没有源文件无法处理,就下载了源码,重新让trae进去新的工作目录进行沟通,同时也阅读github上的说明安装了pncap和net8。

最后就OK了

以上就是抓windows某个软件的 访问哪些域名和ip的最佳实践。
wyc的gui的debug
使用方法
把 CallMapper的内容复制到抓包文件里去,人家github上说了要同目录

但是有错误,所以要先修复一下,这个也是用trae直接处理的,汇总如下:
在CallMapper\lib\下找到functions.py文件
========================================
错误发生在 lib/functions.py:95 的 convert_to_datetime_object 函数中。问题是:
- Result.json 中的时间字符串格式为: 2026-01-14T15:12:36.06432+08:00
- 微秒部分只有 5 位( 06432 ),但 Python 的 datetime.fromisoformat() 要求微秒必须是 6 位
修复方案

在 lib/functions.py:91,93 中,将:
fraction = fraction[:6]
修改为:
fraction = fraction[:6].ljust(6,
'0')
这样会将微秒部分补齐到 6 位(例如 06432 → 064320 ),使其符合 ISO 8601 标准格式。
打开GUI

