1_测试端_Win7版\启动.cmd,
不需要浏览器(浏览器版仅支持 Win10 / Win11)。
| 路线 | 用什么 | 适合什么情况 | 需要什么 |
|---|---|---|---|
| A Win7 首选 | 1_测试端_Win7版\启动.cmd |
现场是 Win7;或不想折腾浏览器 | Windows 自带组件,不需要安装任何东西 |
| B | 1_测试端\测试端.html(或用在线直链) |
现场是 Win10 / Win11 且浏览器较新,想要图形界面 | Chrome / Edge 86+。Win7 用不了 |
| C | 3_备用_脚本版读头\ 里的 ChipSim |
想用命令行长时间挂着;或只做纯嗅探 | Windows 自带脚本环境 + 虚拟串口对 |
| D | 只跑 ChipReader(4_读卡工具\) |
不是做替代,只是想看真读头到底回什么、留一份原始字节 | 真实读头接着 |
用管理员身份运行这个文件:
2_虚拟串口驱动\com0com-3.0.0.0-Win-x64_Setup-Signed.exe
它会装好驱动和两个配套工具:setupc.exe(命令行)、setupg.exe(图形界面)。
装完在「设备管理器」里应能看到 com0com - serial port emulators。
2_虚拟串口驱动\com0com-3.0.0.0-Win-x86_x64_ManualInstall-Signed.zipamd64\ 和 i386\ 两套完整文件(含 com0com.sys、
com0com.cat、各 .inf、以及 setupc.exe / setupg.exe),
按包内 ReadMe.txt 手动安装。这套文件也逐个验过签,同样有效。
2_虚拟串口驱动\一键建虚拟串口.cmd:
它会先列出已有配对,再问你要建哪两对(默认 COM2↔COM12、COM3↔COM13),
然后调用 setupc 建好并复验。必须用管理员身份运行。
下面的方法一是它的手动替代。目标:造出 COM2 ↔ COM12、COM3 ↔ COM13。
软件填 COM2 / COM3,本包工具开 COM12 / COM13。
(端口号只是举例,只要「成对」且空闲就行。)
方法一:图形界面(推荐,简单)
C:\Program Files (x86)\com0com)setupg.exeCOM2/COM12 和 COM3/COM13
(在端口上右键 → Change → 勾选 PortName 填新名字)方法二:命令行(管理员)
cd "C:\Program Files (x86)\com0com" setupc install PortName=COM2 PortName=COM12 EmuBR=yes setupc install PortName=COM3 PortName=COM13 EmuBR=yes setupc list
setupc.exe 必须在它自己的安装目录里运行(它要去找同目录的 com0com.inf)。
在别的目录下运行会找不到 inf,然后弹出一个模态对话框——无人值守时会卡在那里。
双击本包里的 3_备用_脚本版读头\CheckPairs.cmd,应看到:
CNCA0 PortName=COM2 <--> CNCB0 PortName=COM12 CNCA1 PortName=COM3 <--> CNCB1 PortName=COM13
双击 1_测试端_Win7版\检查环境.cmd,或在测试端菜单里选 [7] 环境自检。
它会检查五项,并把结果整份写成报告文件:
| 检查项 | 看什么 |
|---|---|
| 系统版本与位数 | 决定装 x64 驱动还是 i386 驱动 |
| 本机串口列表 | 机器上有哪几个口、虚拟对到底建了没有 |
| 端口占用探测 | 哪些口打不开 —— 很可能就是喷码机软件正在用的那两个 |
| com0com 驱动 | 装没装、有没有建配对、安装目录在哪 |
| 软件进程 | MainForm / RFReader 是不是在运行 |
报告存在同目录,文件名以 环境自检报告_ 开头。
把它整份发回来,就能直接接着判断。
确认驱动装好后,双击 2_虚拟串口驱动\一键建虚拟串口.cmd(管理员身份)。
它会先列出已有配对,再问你端口名,默认建 COM2 ↔ COM12 与 COM3 ↔ COM13,
建完自动再列一次复验。看到 COM12 和 COM13 出现在串口列表里就算成功。
再打开 启动.cmd,选 [3] 嗅探 试一下:弹出来的串口列表里应该能看到
COM12 / COM13,后面标着「空闲」。按编号选就行,不用再手打端口号。
可以填多个(例:2,3);输入 A = 全部端口;
直接回车 = 取消退出(不会误开真实端口)。
检查环境.cmd 一键入口2_虚拟串口驱动\一键建虚拟串口.cmd-LogDir "%HERE%" 的
\" 被当转义引号)→ 每个端口都误报「打开失败」,最后进程崩掉。
现在启动器与程序两侧都会归一化,日志写入失败也绝不拖垮程序,并加了全局异常兜底| 文件 | 作用 |
|---|---|
1_测试端_Win7版\启动.cmd | 双击这个。菜单式入口,所有功能从菜单里选。 |
1_测试端_Win7版\TestEnd.ps1 | 脚本版引擎(Win7 自带的脚本宿主 2.0 版本即可运行) |
1_测试端_Win7版\TestEnd.cs1_测试端_Win7版\启动_CSharp版.cmd |
备用方案:脚本宿主被组策略禁用时用它,会用系统自带的编译程序现场编译一个独立小程序 |
1_测试端_Win7版\使用说明_Win7.txt | 同一份说明的纯文本版,可打印 |
启动.cmd。菜单顶部会先列出本机串口,先确认端口号对不对。启动_CSharp版.cmd)。它会找系统自带的编译程序现场编译;
Win7 一般自带 .NET Framework 3.5,里面就有。58、应答帧尾 1F、帧长 8 / 22,与真机采集一致。1_测试端_Win7版\启动.cmd。
1_测试端\测试端.html。
file://)且页面提示不支持,就用在线直链。
| 页签 | 干什么 | 什么时候用 |
|---|---|---|
| 嗅探(只听) | 一个字都不回,只显示软件发了什么命令、发到哪个地址 | 第一次上手先用它,确认「端口对通了」 |
| 虚拟读头(应答) | 收到命令就应答,编码区可自己填 | 本次实验的主场 |
| 手动发命令 | 自己组一条命令发出去;也能粘一整串十六进制做反向解析 | 想单独验证某个命令或分析一段记录时 |
| 结果判定 | 选两个现象,自动给结论 + 判读表 + 三步实验 | 做完实验要出结论时 |
日志可以随时「导出日志」,导成 txt 留档。
目录:3_备用_脚本版读头\。能力与路线 A 的「虚拟读头」等价,用命令行方式跑。
ChipSim.cmdChipSim.cmd -Port COM12,COM13 -Profile auto -Code "04 24 0D 1C 04 24 0D 1C 04 24 0D 1C 04 24 0D" -Seconds 0
-Code 后面是 15 个字节的十六进制(卡号重复 3 遍再加 3 个字节)。
-Seconds 0 是一直跑,不会自己退出。
ChipSim.cmd -Port COM12 -DumpOnly
记录会写到 ChipSim_日期时间\sim.log,可以整份留档。
| 档位 / 参数 | 行为 |
|---|---|
| auto(启动器默认) | 已知的 4 组命令按实测复刻,其余命令一律回状态 100 |
| measured | 严格复刻真机:只答地址 0/1 的 3C/3D,其余完全沉默 |
| chip | 任何命令都回,编码区填卡号 04 24 0D 1C |
| always100 / empty / silent | 调档位时用来排除问题 |
| CheckPairs.cmd | 一键列出虚拟串口配对关系 + 本机已注册串口 |
直接开机,看软件界面提示什么。什么都别改。
打开工具(auto 档 + 编码区全 0)→ 确认串口已开 → 重启软件 → 看提示。
关掉串口 → 点「全非零(推荐)」 → 重新打开 → 再重启软件 → 看提示。
| 项目 | 填写 |
|---|---|
| 日期 / 记录人 | |
| 机器序列号 / 生产线号 | |
| 软件安装目录 | |
| 软件「串口设置」里的端口号 | |
| 虚拟串口配对(例 COM2↔COM12) | |
| 墨水型号 / 稀释剂型号 | |
| 第 1 步 基线现象 | 报「无法通讯」 / 报「空」 / 正常不报错 / 其它: |
| 第 2 步 全 0 编码区现象 | 报「无法通讯」 / 报「空」 / 正常不报错 / 其它: |
| 第 3 步 全非零编码区现象 | 报「无法通讯」 / 报「空」 / 正常不报错 / 其它: |
| 工具窗口里看到的命令 | |
| 导出的日志文件名 | |
| 结论 |
| 你看到的 | 说明什么 | 下一步 |
|---|---|---|
| 不开工具就正常(两个墨盒没芯片也不报错,能喷印) | 这台机器的耗材识别没有被启用(或已被关掉)。 | 结论已出:不需要芯片。手里那组抓包数据与这台机器无关。 |
| 不开工具报无法通讯 → 开了还报无法通讯 | 链路没通:端口没配成一对,或软件没重启。 | 回去查第 2 章:软件端口号是否等于配对的一端;改完是否重启了软件。 |
| 不开工具报无法通讯 → 开了改报空 | 第一道关卡(通讯)通了,卡在第二道(编码校验)。 | 把编码区改成全非零再试一次,这是关键变量。 |
| 第 2 步报空,第 3 步(全非零)不报 | 理想结果软件靠「编码非零」放行。 | 抓包数据判定为有效;虚拟读头可以长期替代芯片使用。 |
| 第 3 步(全非零)仍然报空 | 还有一层条件没满足(软件里还有两个前置标志由读卡程序侧设置, 本包工具只回应答帧、管不到)。 | 把导出的日志整份留档(含工具窗口内容),需要继续分析这一层。 |
%~dp0 的结尾反斜杠紧贴引号,\" 被当作转义引号,
日志目录末尾多出一个双引号)。本版已修:启动器去掉结尾反斜杠、
程序侧自动归一化、日志写入全程保护。详见 2.5 节。检查环境.cmd 看诊断,再双击 2_虚拟串口驱动\一键建虚拟串口.cmd。
详见 2.5 节。这条跟软件、跟抓包数据无关。CheckPairs.cmd 看配对关系。| 建好的虚拟串口对 | 软件用 | 测试端选 |
|---|---|---|
COM2 ↔ COM12 | COM2 | COM12 |
COM3 ↔ COM13 | COM3 | COM13 |
注意:只有在你改过软件「串口设置」之后,才需要重启软件。
setupc remove / setupg 里删掉),
或把软件「串口设置」改回它原来的号并重启软件。
MainForm.exe 已确认被 XRed 蠕虫注入过
(特征串:XRed、Synaptics)。不要运行它、不要把它拷到干净机器或生产机上。
所有「打开软件观察现象」的操作,都请在那台已经装有软件的机器上做。
| 路径 | 是什么 | 本次要不要用 |
|---|---|---|
操作手册.html | 你正在看的这份 | ★ 先读 |
一页速查.txt | 压缩到一页的现场速查,可打印 | ★ 现场带着 |
1_测试端_Win7版\启动.cmd | Win7 版测试端(菜单式,推荐) | ★ 路线 A |
1_测试端_Win7版\TestEnd.ps1 / TestEnd.cs | Win7 版引擎(脚本版 + C# 备用版) | ★ |
1_测试端_Win7版\使用说明_Win7.txt | Win7 版使用说明(可打印) | ★ |
1_测试端\测试端.html | 浏览器版测试端(仅 Win10 / Win11) | 路线 B |
1_测试端\打开说明.txt | 浏览器版的打开方式与浏览器要求 | 路线 B |
2_虚拟串口驱动\com0com-3.0.0.0-Win-x64_Setup-Signed.exe |
虚拟串口驱动安装程序(已内置,已验签) | ★ 必做前置 |
2_虚拟串口驱动\com0com-3.0.0.0-Win-x86_x64_ManualInstall-Signed.zip |
手动安装备用包(含 amd64/i386 全量文件 + setupc/setupg) | 装不上时用 |
1_测试端_Win7版\检查环境.cmd | 一键环境自检(端口/驱动/占用),结果写成报告文件 | ★ 出问题先跑这个 |
2_虚拟串口驱动\一键建虚拟串口.cmd | 一键建虚拟串口对(默认 COM2↔COM12、COM3↔COM13,可自定义) | ★ 必做前置 |
2_虚拟串口驱动\Install_Com0com.cmd |
原脚本:走 SourceForge 官方 zip 那条路(本包已内置驱动,一般用不到) | 备用 |
3_备用_脚本版读头\ChipSim.cmd / .ps1 | 脚本版虚拟读头 | 路线 B |
3_备用_脚本版读头\CheckPairs.cmd | 查看虚拟串口配对 | ★ 排障常用 |
4_读卡工具\ReadChip.cmd / ReadChip_CSharp.cmd | 读真实芯片的号码 / 验证串口通信 | 路线 C |
4_读卡工具\Diag_Serial.cmd | 串口诊断 | 排障 |
5_参考资料\墨水空与溶剂空报警逻辑逆向.html | 软件为什么报「空」的完整分析 | 想搞懂原理时读 |
5_参考资料\交接文档.md | 整个项目的历史与结论汇总 | 交接/存档用 |
5_参考资料\驱动来源与验签记录.txt | 驱动的下载来源、大小、SHA-256、签名信息 | 复核用 |
| 方向 | 格式 | 说明 |
|---|---|---|
| 软件 → 读头 | 01 08 A3 <地址> <命令> 01 00 <校验> | 8 字节。地址 30=墨水、31=溶剂 |
| 读头 → 软件 | 01 16 A3 <地址> 00 <状态> <编码区 15 字节> <校验> | 22 字节。状态 64(=100) / 00 |
| 校验 | 末字节 = ~(本帧前面所有字节逐字节异或) & 0xFF | 已逐样本核对 |
| 串口参数 | 9600 / 8 数据位 / 无校验 / 1 停止位 | 固定 |
软件开机后实际会发的命令(实测抓到):
01 08 A3 30 3C 01 00 58 地址0 + 0x3C 开机问一次 01 08 A3 31 3D 01 00 58 地址1 + 0x3D 开机问一次 01 08 A3 30 01 01 00 65 地址0 + 0x01 之后每秒轮询(心跳) 01 08 A3 31 01 01 00 64 地址1 + 0x01 之后每秒轮询(心跳)
| 项目 | 内容 |
|---|---|
| 软件名 | com0com(Null-modem emulator,GPL 开源虚拟串口驱动) |
| 版本 | 3.0.0.0(x64 中文说明:32+64 位签名版) |
| 本包内的文件 | com0com-3.0.0.0-Win-x64_Setup-Signed.exe(261,544 字节) |
| 来源 | GitHub 上的 com0com 二进制归档仓库 BrickBot/Archive 的 com0com release (该 release 明确说明这些安装包来自 SourceForge 的 signed-drivers 项目) |
| 与官方对照 | 官方 SourceForge 3.0.0.0 zip 里的 Setup_com0com_v3.0.0.0_W7_x64_signed.exe 为 261,544 字节, 与本包内文件大小逐字节一致;签名者与指纹也一致 → 即同一个文件 |
| 签名状态 | Valid(有效) |
| 签署者 | CN=CyberCircuits, O=CyberCircuits, C=NZ |
| 签发者 | COMODO RSA Code Signing CA(含 COMODO 时间戳) |
| 证书指纹 | 24D85DC7025D8BBE83778C6BFF78E715F4E59CD0 |
| SHA-256 | 26486b28604b49a9008c54feb11b9ece0008a8287ee5caf0bcf2a62f4317128f |
| 手动包内文件 | amd64 下的 com0com.sys、 setupc.exe、setupg.exe、 setup.dll 均为 Valid,签署者同为 CyberCircuits |
| 你想知道 | 看哪份 | 看哪节 |
|---|---|---|
| 为什么软件会报「墨水空 / 溶剂空」 | 5_参考资料\墨水空与溶剂空报警逻辑逆向.html |
「0. 白话版:三个最常见的问题」 |
| 每个字节代表什么 | 白话版第 2 问(含两帧逐字节表) | |
| 能不能自己买卡做卡 | 白话版第 3 问 | |
| 整套工具的设计思路、为什么用虚拟读头 | 5_参考资料\交接文档.md |
第 2 章「系统架构」、第 7 章「工具清单」 |
| 项目还没解决的问题有哪些 | 5_参考资料\交接文档.md |
第 9 章「待办 / 未解决」 |
本手册与包内工具均为现场测试用途。
协议常量与包内既有的脚本版虚拟读头(ChipSim)实现完全一致,两者可交叉验证。
全程不修改设备、不修改任何配置文件。