blj28

导航

windows wireshark 自动抓包并保存到本地

问题注意使用的有些版本的wireshark时间戳为开机启动时间如何解决

Wireshark 本身不生成时间戳,它使用的是 Npcap(或旧版 WinPcap)驱动从内核获取的时间。驱动层面的问题主要有以下几种:

  • Npcap 时间戳冻结 Bug:这是最常见的原因,时间戳会停留在系统启动时间,因为驱动的性能计数器(Performance Counter)异常,导致其值停留在初始零值或无法正常递增。该问题在某些 Npcap 版本中较为突出,例如 1.71 版本。可以尝试升级 Npcap 到最新版本来修复。

  • 时间戳模式冲突:在 Windows 上,切换不同的时间戳模式(如从高精度切换到系统时钟)可能导致后续捕获的时间戳冻结。重启电脑有时可以暂时恢复,但根本的解决方法是确保使用兼容性更好的 Npcap 版本。

  • 混合模式(Promiscuous Mode)问题:在某些 Npcap 版本中,如果抓包时启用了混合模式,可能会引发时间戳异常。可以尝试在 Wireshark 的接口设置中取消勾选“启用混合模式”,然后重新开始抓包,看时间是否恢复正常。

image

 

1、查看网卡名称(一般中文不支持因此需要直接填序号)

"C:\Program Files\Wireshark\dumpcap.exe" -D

上述命令不能执行的情况下直接到目录下运行

.\dumpcap.exe  -D

各个网卡显示为乱码如何识别具体哪一个网卡?

image

图中 \Device\NPF_{76C73182-3998-4CF1-B3D9-384B75A09339} 这种名称,可以拆成两部分理解或者(getmac /v /fo list)

2、如何找到对应网卡

1. NPF 是什么

NPF 是 NetGroup Packet Filter 的缩写,是 Npcap(或旧版 WinPcap)安装的内核级抓包驱动。
Wireshark / dumpcap 不能直接访问物理网卡,而是通过 Npcap 暴露出来的 \Device\NPF_{...} 设备来抓包。所以每个能被抓包的网卡,都会在系统里生成一个对应的 NPF 设备。

2. 花括号里的 GUID 是什么

{76C73182-3998-4CF1-B3D9-384B75A09339} 是 网络接口的全局唯一标识符(Interface GUID)。
Windows 为每个网络适配器(包括物理网卡、虚拟网卡、回环接口等)分配一个唯一的 GUID。Npcap 就用这个 GUID 来标识对应的抓包设备。这个 GUID 和网卡的 MAC 地址、连接名称是一一对应的,但它是软件层面的标识。

3. 如何把 GUID 和“以太网”对应起来

由于你截图里的中文已经乱码,直接看名称不可靠。可以用下面任一方法找到“以太网”对应的 GUID:

方法 A:PowerShell(推荐)

Get-NetAdapter | Format-List Name, InterfaceDescription, InterfaceGuid, MacAddress

image

3、抓包bat脚本(set "INTERFACE_INDEX=9"1和2解决这几具体哪个网卡的问题)


@echo off
setlocal enabledelayedexpansion


REM ========== User Config ==========
REM 1. Base output directory
set "OUTPUT_DIR=D:\Wireshark_Captures"


REM 2. Interface index (use number from "dumpcap -D")
set "INTERFACE_INDEX=9"


REM 3. Capture duration in minutes
set "DURATION_MINUTES=30"


REM Convert minutes to seconds
set /a DURATION_SECONDS=DURATION_MINUTES*60


REM 4. Wireshark install path
set "WIRESHARK_DIR=C:\Program Files\Wireshark"
REM =================================


REM Get current date in YYYY-MM-DD format
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "datetime=%%a"
set "year=%datetime:~0,4%"
set "month=%datetime:~4,2%"
set "day=%datetime:~6,2%"
set "DATE_FOLDER=%year%-%month%-%day%"


REM Build full output directory with date folder
set "FULL_OUTPUT_DIR=%OUTPUT_DIR%\%DATE_FOLDER%"


if not exist "%WIRESHARK_DIR%\dumpcap.exe" (
echo [ERROR] dumpcap.exe not found. Check Wireshark path.
pause
exit /b 1
)


if not exist "%FULL_OUTPUT_DIR%" (
echo Creating output directory: %FULL_OUTPUT_DIR%
mkdir "%FULL_OUTPUT_DIR%"
)


echo ========================================
echo Wireshark Auto Capture Started
echo Interface : %INTERFACE_INDEX%
echo Save Dir : %FULL_OUTPUT_DIR%
echo Duration : %DURATION_MINUTES% minutes (%DURATION_SECONDS% seconds)
echo File Limit: unlimited (watch disk space)
echo ========================================
echo Press Ctrl+C to stop...
echo.


"%WIRESHARK_DIR%\dumpcap.exe" -i %INTERFACE_INDEX% -b duration:%DURATION_SECONDS% -w "%FULL_OUTPUT_DIR%\capture.pcapng"


if errorlevel 1 (
echo.
echo [ERROR] dumpcap failed. Check interface index or run as Administrator.
pause
)


endlocal

 

 4、设置为开机启动

🥇 方法一:任务计划程序(功能最强,最推荐)

这种方法可以配置管理员权限、设置延迟启动,并能轻松实现后台隐藏运行。

  1. 打开工具:按 Win + R 键,输入 taskschd.msc 后回车,打开“任务计划程序”。

  2. 创建任务:在右侧操作栏点击“创建任务”(不要选“创建基本任务”,前者选项更全)。

  3. 配置常规:在“常规”选项卡中,勾选“使用最高权限运行”。如果需要脚本在无人登录时也运行,可选择“不管用户是否登录都要运行”。

  4. 设置触发器:切换到“触发器”选项卡,点击“新建”,在“开始任务”下拉菜单中,根据需要选择“登录时”(推荐,用户登录后执行)或“启动时”。

    • 💡 实用技巧:建议在下方勾选“延迟任务”,并设置 30秒到2分钟。这可以避免因开机时系统服务或网络尚未就绪,导致脚本执行失败。

  5. 配置操作:切换到“操作”选项卡,点击“新建”,在“程序或脚本”一栏中,不要直接选 bat 文件,而是填入 cmd.exe。然后在“添加参数”中填入 /c "你的脚本完整路径"(例如 /c "D:\Scripts\start.bat")。这样能确保脚本被正确调用。

  6. 保存并测试:点击“确定”保存任务。无需重启电脑,在任务列表中右键点击刚创建的任务,选择“运行”,即可立即测试脚本是否生效。

方法二:启动文件夹(最简单,适合普通用户)——实际测试可行

这是最直观的方式,但仅在当前用户登录后触发,且不方便配置管理员权限。

  1. 打开启动文件夹:按 Win + R 键,输入 shell:startup 后回车。这会打开当前用户的启动文件夹。

  2. 创建快捷方式:找到你的 bat 脚本,右键点击它,选择“创建快捷方式”。不要直接把 bat 文件拖进去,放置快捷方式才是正确的做法。

  3. 放入文件夹:将创建好的快捷方式剪切或复制,粘贴到刚才打开的“启动”文件夹中即可。

⚠️ 关于管理员权限:如果脚本需要管理员权限,可以右键点击启动文件夹里的快捷方式,选择“属性”,在“快捷方式”选项卡中点击“高级”,然后勾选“以管理员身份运行”。

posted on 2026-09-28 11:04  bailinjun  阅读(21)  评论(0)    收藏  举报