v1.3.1
v1.3.1
兼容 DPI 版本:v1.0.7.0
Bug 修复(抓包停止/启动,capture.py)
- tcpdump_stop:幂等 + 信号升级 SIGINT→SIGTERM→SIGKILL + 精确 PID kill(
os.kill)。原pkill -f把客户端传入的
path当扩展正则,存在注入风险且 SIGKILL 会误杀无关同名进程。 - tcpdump_isrun:改用
pgrep -x精确匹配进程名 +/proc/{pid}/cmdline字面子串校验 path,返回(running, pids)
元组,杜绝误杀同名 tcpdump/dumpcap。 - Tcpdump_scapy._sniff:删除
_sniff开头self.e=False的竞态覆盖(冷导入期间stop()设的 True 被覆盖);分段
sniff 循环(每轮≤1s),解决无包到达时stop_filter不触发导致 stop 卡死 30s。 - flush 校验:改用
_wait_file_stable轮询文件大小稳定(连续两次相同)。原getsize/os.access对 root
恒真,是空操作。
sudo 兼容(netutils.py)
_strip_sudo_if_root:root 下剥离裸sudo前缀,规避目标机 sudo 损坏(libldap/OpenSSL ABI 不匹配导致sudoers.so
加载失败)。
子进程环境清理(netutils.py)
_clean_subprocess_env:清除 PyInstaller 注入的LD_LIBRARY_PATH和_PYI_*,避免 DPI 的 xsa 从临时目录加载错版本
libcrypto 启动即崩、被 dpi_monitor 反复重启。
Shell 注入修复(客户端可控参数全部改 list args + shell=False)
tcpdump_start:path/extended/ethmtu:eth(同时去掉 grep/awk 管道,改 Python 解析)unzip:filename/passwd/outdirhandlers datatype 131:chromium_path
其他
wait_until/wait_not_until异常分支补sleep,避免 CPU 空转handlers datatype 122处理stop()返回值,停止失败时返回错误 JSON- 新增
test_e2e.py用于部署后回归测试
完整变更:v1.3.0...v1.3.1