deepseek网站前端密码加密逻辑分析与离线复现工具
网站前端密码加密逻辑分析与离线复现工具
请在我的 Windows 本机完成一个“网站前端密码加密逻辑分析与离线复现工具”项目。
工作目录固定为:
C:\WebCryptoLab
目标系统是我有权测试的专用测试环境。我授权你使用我随后提供的:
测试地址
测试用户名
测试密码
进行登录流程分析。
允许为了确认密码转换逻辑,按需重复点击登录、提交登录表单以及向正常登录接口提交测试数据。
重复登录验证应保持正常人工测试频率,避免触发账号锁定、验证码、风控或影响系统正常运行。
一、真实性要求
本任务要求实际操作和实际验证。
不得:
假装已经打开页面
假装已经读取 JavaScript
假装已经捕获请求
假装已经执行本地代码
假装已经验证候选密文
仅依据密文长度猜测算法
将浏览器捕获到的密码字段直接冒充为本地计算结果
如果当前运行环境无法直接操作我的 Windows 本机、无法控制浏览器、无法读取文件或无法执行命令,可以自行安装软件或者工具。
只能报告真正执行过和真正观察到的结果。
所有结论必须尽可能附带证据来源,并区分:
confirmed:已经通过源码、运行时或实际请求验证inferred:有较强证据,但尚未直接验证unknown:目前无法确定not used:已经确认该步骤不存在或未参与登录密码处理
最终报告中原则上只把 confirmed 作为确定结论。
一-A、授权与重复确认
用户在对话中已经明确授权访问目标、下载资源、执行本地代码、提交测试登录后,对同一授权范围内的相同操作不要反复确认。
只有出现新的、超出已授权范围的高风险动作(例如修改系统配置、上传文件、删除数据)时才再次确认。
二、严格的两阶段执行流程
整个任务严格分为两个阶段。
阶段一:分析和确认
阶段一只进行分析、取证、本地复现和候选密文验证。
需要完成:
检查必要环境。
使用当前可用的受控浏览器(优先已安装 chatgpt 扩展的 Edge,也可使用 Chrome 或其他受控浏览器)打开测试标签页。
自动获取前端资源(HTML、JavaScript、动态 chunk、接口)。
分析 HTML、DOM、JavaScript、动态 chunk、接口和运行时调用。
定位密码处理函数。
定位公钥或其他密钥材料来源。
还原完整密码转换调用顺序。
使用我提供的测试明文在本地独立计算候选密文。
必要时使用正常登录请求验证分析结果。
向我输出候选密文、完整参数和证据摘要。
停止执行,等待我的人工确认。
阶段一不得提前创建最终交付目录,不得生成正式报告、GUI、批量工具或最终交接包。
阶段一硬停止条件
当已经获得一个具有充分证据支持的候选算法,并完成至少一次本地计算后:
立即向我提交候选结果。
然后停止。
只有当我明确回复:
密文正确
才允许进入阶段二。
如果我回复:
不正确
则继续阶段一分析,不得开始最终交付。
阶段二:最终交付
只有收到我明确回复:
密文正确
之后,才能开始阶段二。
阶段二包括:
最终分析报告
独立 Python 加密适配器
批量转换工具
拖拽工具
Tkinter GUI
原始 JavaScript 归档
AI 复现交接包
自动化测试
最终目录清理
三、环境检查
开始阶段一后,首先检查:
Windows 版本。
PowerShell 版本。
Python 3 及版本。
Node.js 及版本。
npm 及版本。
npx 及版本。
Chrome。
Edge。
Playwright 或当前环境实际可用的浏览器自动化工具;若是浏览器扩展类受控环境,同时确认是否可直接使用 CDP(
Runtime.evaluate/Network/Input)驱动页面、读取真实 DOM 与抓取网络。是否具备打开目标页面、读取 DOM、执行页面 JavaScript、查看控制台、捕获网络请求、读取响应内容、保存 JavaScript、执行本地 Python/Node.js 的能力(其中 DOM/JS/控制台/网络/保存 JS 的具体要求见第七、八、八-A、十节)。
已经安装并可用的组件不得重复安装。
遵循:
检测 → 确认缺失 → 确认确实需要 → 再安装
不得为了“可能会用到”而安装无关工具。
如果缺少 Python、Node.js、Playwright 或必要浏览器控制组件,可以安装,但安装前必须简要说明:
为什么需要
将安装什么
修改什么位置
是否影响系统全局环境
如果 npm.ps1 被 PowerShell 执行策略阻止,只允许修改:
CurrentUser
范围。
不得为了本项目修改整个系统的 PowerShell 执行策略。
四、明确不检查和不安装的组件
除非后续分析明确证明必需,否则不要检查或安装:
Java
JDK
Gradle
Maven
Burp Suite
OWASP ZAP
数据库
Docker
虚拟机软件
五、系统修改限制
内网自签名 HTTPS 证书只允许在本项目专用浏览器会话中忽略或接受。
如果要在本机脚本或命令行中访问该自签名 HTTPS,同样只允许在本次任务范围内使用一次性忽略方式(例如 curl -k、Invoke-WebRequest -SkipCertificateCheck、Python 的 ssl._create_unverified_context()),不得写入系统证书信任库。
不得为了本项目修改:
Windows 全局证书信任
系统代理
系统防火墙
系统路由
DNS
hosts
全局网络配置
除确实必要的软件安装和当前用户级设置外,不修改与本项目无关的系统配置。
六、凭据和敏感数据保护
测试用户名和密码只用于本次授权测试。
最终文件中不得保存:
明文测试密码
有效 JWT
有效 Session
Cookie 完整值
Authorization 完整值
Refresh Token
Access Token
CSRF Token 的有效完整值
其他可以直接复用的认证凭据
报告中的这些值必须脱敏。
例如:
Authorization: JWT eyJ...<redacted>
Cookie 只记录:
Cookie 名称
是否存在
是否参与认证
除非某个值本身是密码转换算法必需参数,否则不要保存完整敏感值。
六-A、测试密码字符确认
遇到 \@、\ (反斜杠+空格)、首尾空格、全角/半角、Unicode 形近字符(例如 l/I、0/O、·/•)等可能歧义时,先做一次字符级确认:回显实际字符与字节长度,并确保所有工具使用同一 UTF-8 字节序列。
不 strip、不把反斜杠当转义、不做大小写或全半角归一化,除非目标站点明确这样做。
只在确实存在字符歧义时确认,不逐条打断。
七、浏览器分析要求
使用受控 Chrome 或 Edge 打开登录页面。
如果受控浏览器通过扩展/插件提供自动化,且其 evaluate 是隔离只读上下文(例如看不到 fetch/performance,或读到旧的 DOM 值),则改用 CDP 的 Runtime.evaluate 读取真实页面状态、用 CDP Input 或原生事件驱动表单,并用 CDP Network 抓包;不要只依赖该隔离上下文判定交互是否生效。
首先记录:
页面 URL
页面标题
页面路径
HTTP 状态
是否发生重定向
是否存在 iframe
是否为 SPA
使用的主要前端框架(如果能够确认)
读取 DOM 并定位:
用户名输入框
密码输入框
验证码输入框
登录按钮
登录 Form
登录事件处理逻辑
记录对应:
selector
id
name
type
autocomplete
绑定事件
八、JavaScript 和资源分析
记录与登录有关的:
HTML
JavaScript
动态 chunk
runtime chunk
vendor chunk
Source Map
配置接口
公钥接口
登录接口
Source Map:
如果网站提供 .map 文件,则获取并分析。
如果网站未公开 Source Map:
标记:
Source Map: not available
不得将 Source Map 不存在视为任务失败。
保存登录加密相关 JavaScript 的网站原始响应内容。
原始 JS 必须记录:
原始 URL
原始文件名
HTTP Content-Type
文件大小
SHA-256
获取时间
如果 URL 包含 query hash,也需要记录完整资源 URL。
资源获取与下载失败处理见第八-A节。
八-A、资源获取优先级和下载失败处理
禁止只依赖浏览器下载列表中的“重试、保留”来获取前端资源。
当浏览器阻止 .js 下载,或命令行请求返回 404/错误页时,按以下优先级自动切换:
受控浏览器内直接抓取网络响应(CDP
Network.enable+ 刷新页面 +Network.getResponseBody)。从页面解析出资源完整 URL 后,用本机 HTTP 客户端获取,并携带必要的
Referer、User-Agent、Sec-Fetch-*、临时会话信息、Accept-Encoding,再按压缩编码解压。若目标是自签名 HTTPS,仅在本次任务范围内忽略证书校验。
同时必须处理:
相对 URL 转绝对 URL
压缩编码(
Content-Encoding)动态 chunk 的懒加载
把 404/错误页当作“获取失败”,不得当有效资源
保存时按浏览器实际执行的解压后 JS 落盘,同时记录 Content-Encoding 和原始完整 URL。用字节方式落盘(如 curl -o 或 Invoke-WebRequest -OutFile),不要向终端打印原始 JS 正文。
九、重点搜索关键词
先按以下顺序反向定位,避免无差别顺序通读大型压缩 JS:
先反查登录接口、请求字段名和事件处理函数(例如
token_auth、login、submit、click handler)。再定位算法库与密钥相关函数(例如
JSEncrypt、setPublicKey、SM2、SM3、SM4、AES、CryptoJS)。
至少搜索:
password
passwd
pwd
encrypt
decrypt
JSEncrypt
RSAKey
setPublicKey
setPublic
PUBLIC_KEY
PUBLIC KEY
publicKey
modulus
exponent
nonce
timestamp
salt
hash
digest
PBKDF
SM2
SM3
SM4
AES
RSA
crypto
CryptoJS
login
signin
token_auth
同时根据实际源码继续扩展关键词。
搜索方法:对压缩成单行的 webpack 产物,用 rg -o '...{0,N}(关键词).{0,M}' 提取关键词上下文窗口,避免整行大输出;在 PowerShell 下不要用 *.js 通配符直接传给 rg,改为对整个目录或具体文件搜索。
十、运行时分析
不能只依赖静态搜索。
必要时使用浏览器运行时调试分析:
登录按钮 click handler
Form submit handler
密码读取位置
加密函数入口
加密函数参数
加密函数返回值
公钥设置位置
HTTP 请求构造位置
可以在专用测试浏览器会话中临时观察或 hook:
fetchXMLHttpRequest登录提交函数
密码加密函数
JSEncrypt.prototype.encryptsetPublicKeysetKeyCryptoJS 对应函数
如果受控浏览器通过扩展提供,且 Playwright 的 evaluate 为隔离只读上下文,运行时观察应优先使用 CDP:Runtime.evaluate 读真实状态、Network 抓请求与响应体。给 React/受控输入框赋值时,使用原生 HTMLInputElement.prototype.value 的 setter 并派发 input 事件,再通过 Network 确认请求是否真实发出。
hook 只能用于观察浏览器本地运行过程。
不得修改服务端程序。
最终结论必须回到原始源码和实际网络请求进行对应验证。
十一、公钥和密钥来源分析
必须确认密码算法使用的密钥来自哪里。
可能包括:
JavaScript 硬编码
HTML 内嵌
配置文件
API 返回
LocalStorage
SessionStorage
Cookie
全局变量
页面初始化接口
登录前动态接口
如果存在多个候选公钥,必须确认最终传递给加密函数的是哪一个。
特别检查是否发生:
默认公钥 → 接口返回新公钥 → setPublicKey() 覆盖
如果发生动态覆盖,需要保存证据。
至少比较:
初始源码中的公钥。
初始化接口返回的公钥。
运行时传递给加密函数的最终公钥。
十二、密码转换链必须完整确认
必须还原从密码输入框到最终请求字段的完整链路。
例如:
用户输入
→ 读取 input.value
→ 字符处理
→ 拼接随机参数
→ UTF-8
→ Hash
→ RSA
→ Base64
→ URL encode
→ application/x-www-form-urlencoded
这只是示例,不得预设目标实际流程。
必须逐项确认:
输入
原始字符编码
JavaScript String 行为
UTF-8 / UTF-16 等编码
是否 trim
是否 lowercase
是否 uppercase
是否截取
是否拼接
是否增加固定前后缀
Hash / KDF
检查:
MD5
SHA-1
SHA-256
SHA-512
SM3
PBKDF2
HMAC
自定义 Hash
如果不存在则标记:
not used
对称加密
检查:
AES
SM4
DES
3DES
自定义算法
如果不存在:
not used
非对称加密
检查:
RSA
SM2
EC
其他算法
确认:
密钥长度
指数
modulus
公钥格式
填充
RSA 填充至少区分:
PKCS#1 v1.5
OAEP
Raw RSA
unknown
OAEP 必须进一步确认:
OAEP Hash
MGF Hash
Label
随机参数
检查:
随机 padding
nonce
salt
timestamp
IV
session key
输出
确认:
Hex
Base64
Base64URL
URL Encode
Form Encode
JSON String
二次编码
并确认编码顺序。
十三、公钥格式
必须区分实际格式,例如:
PEM SubjectPublicKeyInfo
PEM PKCS#1 RSA PUBLIC KEY
DER
modulus + exponent
Hex
Base64 DER
保存的:
登录加密公钥.pem
必须对应浏览器实际最终使用的公钥。
如果浏览器最终不是 PEM 形式,也需要生成等价 PEM 供 Python 使用,同时在报告中明确:
网站原始格式
转换后的 PEM 格式
转换方法
十四、登录请求分析
使用提供的测试账号进入密码提交阶段并捕获正常登录请求。
记录:
HTTP Method
Scheme
Host
Port
Path
Query
Content-Type
请求字段名称
密码字段名称
其他必要字段名称
例如只记录脱敏结构:
POST /xxx/login
Content-Type:
application/x-www-form-urlencoded
username=<test-user>
password=<encrypted-value>
captcha=<redacted>不得在最终报告保存有效认证 Token。
十五、同一明文重复测试
至少对同一测试明文执行多次本地加密。
确认:
encrypt(P)
是否每次产生相同结果。
如果不同:
分析差异来自:
PKCS#1 v1.5 随机 padding
OAEP seed
SM2 随机 k
nonce
salt
timestamp
IV
其他随机值
例如 RSA PKCS#1 v1.5 与 SM2 均属随机加密,每次密文通常不同;候选密文无需与浏览器历史密文逐字相同。
随机算法产生不同密文属于正常情况。
不能使用:
浏览器密文 == Python 密文
作为随机算法唯一正确性判断。
十六、候选密文必须在本地计算
阶段一最终候选密文必须由分析出的算法在 Windows 本机生成。
可以捕获浏览器实际请求中的密码字段作为对照。
但是必须明确区分:
浏览器捕获值
来自目标网站原始 JavaScript。
本地候选值
来自本地独立实现。
不得把浏览器抓到的字段复制后声称是本地算法计算结果。
十七、候选密文验证
可以使用本地候选密文向目标正常登录接口进行验证。
验证只允许使用:
用户提供的测试用户名
用户提供的测试密码
正常登录接口
正常登录流程所需字段
必须区分:
本地结构验证:密文长度、字节结构、输出格式、算法参数、与站点 JS 的交叉验证。
服务端接受验证:只有实际提交登录并观察到服务端响应,才能报告“服务端返回 X”。若服务端对错误密码统一返回同一消息(例如
用户名或密码错误),不得据此声称“服务端已接受”,只能如实记录响应。
如果算法是随机算法:
候选密文与浏览器密文字符串不同不能直接判定失败。
应综合验证:
解码后的密文 byte 长度
密钥长度
算法参数
输出格式
浏览器执行路径
请求格式
目标服务器返回的响应
十八、阶段一输出格式
阶段一得到候选算法后,向我输出:
测试明文标签:
不要再次打印实际测试密码,可写:
用户提供的测试密码
字符编码:
预处理:
Hash / KDF:
加密算法:
密钥长度:
公钥格式:
公钥指数:
填充方式:
OAEP Hash:
随机参数:
nonce:
salt:
timestamp:
输出编码:
URL/Form 编码:
密文字节长度:
密文字符串长度:
候选密文:
随机加密:是 / 否
最终请求接口:
密码字段:
确定项:
推断项:
不确定项:
关键源码证据:
运行时证据:
本地实现验证结果:
然后明确提示:
等待你回复“密文正确”或“不正确”。
并立即停止阶段一。
十九、阶段二最终目录
只有收到:
密文正确
后创建:
C:\WebCryptoLab\最新版本\
最终目录结构:
C:\WebCryptoLab\最新版本\
├─ 目标名称_登录密码加密分析报告.html
├─ 使用说明.html
├─ 密码转换工具\
│ ├─ 加密适配器.py
│ ├─ 批量加密.py
│ ├─ 拖拽加密.cmd
│ └─ 测试\
│ ├─ 单条加密图形工具.py
│ └─ 自动化测试.py
└─ 原始文件\
├─ 文件清单与复现入口.html
├─ 给AI的完整复现说明.html
├─ 复现参数.json
├─ 登录加密公钥.pem
├─ 目标名称_登录密码加密分析报告.html
├─ 前端JS\
│ └─ 网站返回的原始 JavaScript 文件
└─ 参考实现\
├─ 加密适配器.py
├─ 批量加密.py
├─ 拖拽加密.cmd
└─ 自动化测试.py目录和人工阅读文件使用中文名称。
二十、Windows 文件名规范
目标地址不得直接原样作为 Windows 文件名。
必须将:
https://http:///\:?*"<>|
转换为 Windows 合法名称。
例如:
https://10.10.187.187:8443/login
可以生成:
10.10.187.187_8443_登录密码加密分析报告.html
二十一、HTML 报告
分析报告必须是:
UTF-8
自包含 HTML
无外部 CDN 依赖
双击即可阅读
至少包含:
测试时间。
目标地址。
登录页面路径。
结论摘要。
完整密码转换流程。
字符编码。
输入预处理。
Hash/KDF。
加密算法。
密钥长度。
公钥格式。
modulus。
exponent。
填充。
随机数。
nonce。
salt。
timestamp。
输出编码。
URL/Form 编码。
JavaScript 文件 URL。
JavaScript 文件名。
SHA-256。
模块编号。
函数名。
函数作用。
调用顺序。
必要的关键代码片段。
请求 Method。
请求 Path。
Content-Type。
请求字段。
脱敏请求结构。
验证向量。
密文 byte 长度。
密文字符串长度。
用户确认结果。
自动化测试结果。
已知限制。
所有关键参数分别标记:
confirmedinferrednot usedunknown
不得将推测写成确认结果。
二十二、最终 Python 加密适配器
最终:
加密适配器.py
必须是独立实现。
目标是:
无需访问目标网站即可完成同等密码转换。
如果算法依赖固定公钥:
公钥本地保存。
如果算法确实依赖服务器每次动态下发:
必须在阶段一明确说明,这种情况下不得虚假宣称工具“完全离线”。
应区分:
完全离线可复现部分
必须动态获取部分
适配器、批量工具、GUI 默认不产生任何网络请求;只有当用户显式要求联网验证时才允许提交登录。
除非已经证明必要,最终 Python 代码不得依赖:
Chrome
Edge
Playwright
Selenium
目标网站 JavaScript
Node.js
在线 CDN
二十三、批量转换工具
批量加密.py
读取:
UTF-8 或 UTF-8 BOM TXT。
格式:
每行一个明文。
必须正确支持:
CRLF
LF
UTF-8 BOM
中文
特殊字符
普通空格
重复项
必须保留:
行顺序
重复项
首部普通空格
尾部普通空格
不得对密码执行:
.strip()
默认:
空行 = 空密码。
支持:
--skip-empty
跳过空行。
单行失败不得导致整个任务退出。
必须限制:
最大输入文件大小
最大行数
具体限制写入:
使用说明.html
二十四、批量工具命令
调用:
python 批量加密.py "C:\路径\passwords.txt"输出到输入 TXT 同目录:
原文件名_encrypted.txt
原文件名_results.jsonencrypted.txt
每行一个成功生成的密文。
results.json
记录:
原始行号
状态
密文
错误原因
例如:
{
"line": 3,
"status": "success",
"ciphertext": "..."
}或者:
{
"line": 4,
"status": "error",
"error": "message too long"
}即使某行失败,也必须继续处理后续行。
二十五、RSA 明文长度限制
如果最终算法为 RSA 等存在最大明文长度限制的算法:
必须计算并实现正确的最大输入限制。
超长输入应:
返回清晰错误
写入 results.json
不影响后续行
自动化测试中的“超长输入”允许预期失败。
这种预期失败应视为测试通过。
二十六、拖拽工具
把 TXT 文件拖到:
拖拽加密.cmd
上必须正常运行。
必须实际测试:
中文目录
中文 TXT 文件名
带空格路径
多个空格
CRLF
UTF-8 BOM
CMD 为避免代码页问题:
内容尽量保持纯 ASCII。
不在 CMD 内直接硬编码中文 Python 脚本文件名。
自动识别同目录中的批量处理 Python 文件。
使用
%*保留完整拖拽参数。保留双引号。
设置:
PYTHONDONTWRITEBYTECODE=1Python 不存在时显示明确错误。
执行失败时保持窗口。
成功时显示输出文件位置。
二十七、GUI
创建:
单条加密图形工具.py
使用:
Tkinter
必须:
输入一条明文。
点击按钮进行加密。
显示最终密文。
显示密文字符串长度。
显示密文字节长度。
提供复制按钮。
提供清空按钮。
错误时显示清晰信息。
与批量工具共用同一个
加密适配器.py。不复制第二套算法代码。
默认不产生任何网络请求。
程序结构必须包含:
def main():
...
if __name__ == "__main__":
main()二十八、原始文件交接包
原始文件
文件夹必须能够单独交给另一名 AI。
另一名 AI 不访问本次聊天记录,也应该能够重新制作出等价工具。
二十九、文件清单与复现入口
创建:
文件清单与复现入口.html
说明:
每个文件的用途。
推荐阅读顺序。
从哪里开始复现。
如何运行参考实现。
如何运行自动化测试。
关键 JS 在哪里。
公钥在哪里。
参数 JSON 在哪里。
三十、给 AI 的完整复现说明
创建:
给AI的完整复现说明.html
必须明确说明:
目标登录接口
HTTP Method
Content-Type
请求字段
密码字段
JavaScript 完整调用顺序
输入字符编码
预处理
Hash/KDF
算法
密钥长度
modulus
exponent
padding
公钥来源
公钥动态覆盖逻辑
nonce
salt
timestamp
随机行为
输出编码
URL/Form 编码
JavaScript 关键文件
模块编号
函数名
Python 对应实现
测试入口
已知限制
三十一、复现参数.json
复现参数.json
必须是机器可读 JSON。
至少包含:
target
login_page
login_endpoint
http_method
content_type
username_field
password_field
character_encoding
preprocessing
hash
kdf
encryption_algorithm
key_size
public_exponent
public_key_format
padding
oaep_hash
nonce
salt
timestamp
output_encoding
transport_encoding
randomized
public_key_source
public_key_dynamic_override
javascript_files
javascript_modules
functions
call_chain
validation
limitations不存在的参数填写:
null
并通过独立状态字段标记:
confirmed
inferred
not_used
unknown
三十二、原始 JavaScript
原始文件\前端JS\
保存服务器实际返回的、与登录加密相关的原始 JavaScript。
必须保留网站原文件名。
如果发生同名冲突,可以追加原始文件内容 SHA-256 前 8 位。
同时在交接说明中维护映射:
URL
→ 本地文件名
→ SHA-256
→ 模块
→ 相关函数禁止只保存 prettify 后版本而丢失原文件。
三十三、参考实现
原始文件\参考实现\
必须包含可独立运行的:
加密适配器.py
批量加密.py
拖拽加密.cmd
自动化测试.py
测试必须能够直接从:
原始文件\参考实现
目录运行。
不得依赖:
密码转换工具
中的文件。
不得依赖项目根目录中的临时文件。
三十四、自动化测试
至少覆盖:
空文件。
单个空行。
多个空行。
默认空行为密码。
--skip-empty。首部空格。
尾部空格。
多个连续空格。
中文。
特殊字符。
Unicode。
超长输入。
UTF-8。
UTF-8 BOM。
CRLF。
LF。
重复密码。
单行失败隔离。
输出顺序。
输出数量。
随机加密行为。
中文目录。
中文文件名。
带空格目录。
带空格文件名。
拖拽 CMD。
GUI Python 语法。
HTML UTF-8 解析。
JSON 合法性。
公钥解析。
从原始文件\参考实现独立运行。
反斜杠作为真实字符保留。
Admin@123与Admin\@123必须被识别为不同输入。离线工具默认不产生任何网络请求。
如果算法属于随机加密:
自动化测试不能要求两次密文字符串完全相等。
应测试:
两次加密均成功
密文字节长度正确
Base64/Hex 解码正确
明文不直接出现在密文中
如果可以进行私钥测试,则验证可恢复明文
如果没有私钥,则使用其他算法结构验证方法
三十五、最终清理
只有:
阶段二全部文件已经生成;
自动化测试已经执行;
关键交付文件已经确认存在;
之后才能执行清理。
清理范围只允许是:
C:\WebCryptoLab
中由本项目本次执行创建的文件和目录。
如果 C:\WebCryptoLab 在任务开始前已经存在用户文件:
不得删除这些文件。
任务开始时应记录原有内容,以区分:
用户原有文件
本项目新建文件
最终目标是项目自身只保留:
C:\WebCryptoLab\最新版本\
删除本项目产生的:
旧版本目录
重复目录
重复报告
临时测试输入
临时测试输出
调试文件
Markdown 说明
__pycache__.pyc浏览器临时下载文件
不得删除无法确认属于本项目的文件。
三十六、最终验收检查
阶段二完成后逐项检查:
最新版本目录存在
分析报告存在
使用说明存在
加密适配器存在
批量工具存在
拖拽工具存在
GUI 存在
自动化测试存在
原始 JS 存在
JS SHA-256 已记录
公钥存在
复现参数.json 合法
AI 复现说明存在
原始文件参考实现可以独立运行
中文路径测试通过
空格路径测试通过
拖拽测试通过
GUI 语法检查通过
HTML UTF-8 解析通过
不存在 pycache
不存在 Markdown 说明
不包含有效密码、JWT、Cookie 或 Session
除用户原有文件外,不残留本项目临时文件
三十七、最终执行报告
全部完成后向我报告:
Windows 和 PowerShell 版本。
Python 版本。
Node.js/npm/npx 版本。
使用的浏览器及版本。
使用的浏览器自动化工具及版本。
浏览器是否成功访问目标。
最终确认算法。
输入字符编码。
预处理。
Hash/KDF。
密钥长度。
公钥格式。
公钥来源。
公钥是否动态覆盖。
exponent。
padding。
nonce/salt/timestamp。
输出编码。
Form/URL 编码。
使用的 JS 文件。
JS SHA-256。
模块编号。
函数名。
完整调用顺序。
登录接口。
密码字段。
报告路径。
批量工具路径。
GUI 路径。
原始文件交接包路径。
自动化测试通过数量。
自动化测试失败数量。
拖拽测试结果。
中文路径测试结果。
空格路径测试结果。
已知限制。
所有路径使用绝对 Windows 路径。
三十八、开始方式
现在不要提前安装工具,也不要开始猜测算法。
测试地址、测试用户名、测试密码三项一旦在对话中给齐,就直接开始阶段一,不再索取。
只对真正缺失或存在字符歧义的内容追问。
在我明确回复:
密文正确
之前,绝对不要进入阶段二。