Windows密码忘了?自制U盘工具几秒清除SAM密码,保留全部数据

发布时间:2026/10/13 10:20:57

Windows密码忘了?自制U盘工具几秒清除SAM密码,保留全部数据 前阵子一位朋友抱着笔记本来找我Windows 登录密码彻底想不起来了里面还有一堆没来得及备份的期末资料急得差点直接格式化重装。其实这种情况完全不用走到重装那一步。我写了一个免费的 BIOS 级小工具做成启动 U 盘后插在电脑上开机从 U 盘引导几秒钟就能把本地账户密码清掉然后正常进系统、保留全部数据。这篇文章就把工具背后的原理、制作步骤、实测过程和容易翻车的点一次性讲清楚适合忘记密码的普通用户也适合想搞明白 Windows 登录认证机制的技术爱好者。先说明一点这套方法只能用于自己的电脑或者在对方明确授权的前提下使用别拿它干不该干的事。1. 忘密码后的那点事与其折腾登录框不如直接改 SAM 台账1.1 登录校验的真相系统比对的是哈希不是密码明文很多人以为 Windows 登录时是拿你输入的密码去“对照数据库里的密码”如果一样就放行但其实不是这么回事。Windows 本地账户的密码信息存放在一个叫SAMSecurity Account Manager的文件里路径是C:\Windows\System32\config\SAM。这个文件里不会存你设置的明文密码而是存密码经过哈希算法处理后的“指纹”一般叫 NTLM 哈希。登录的时候系统把你输入的密码也做一次同样的哈希计算再和 SAM 里存的哈希比对一致就通过。打个比方SAM 文件就像小区门卫手里的住户登记台账但台账上记的不是“钥匙长什么样”而是“钥匙插进锁芯后留下的齿痕特征”。门卫只认齿痕不认钥匙本身。这里最关键的一点是只要台账上的齿痕特征被改掉或抹掉原来的钥匙就失效甚至不需要钥匙都能进门。所以清密码的本质不是在登录界面破解什么而是绕过登录界面直接去改 SAM 这个台账文件。1.2 系统没运行时SAM 是一份“睡着”的文件平时 SAM 文件被 Windows 锁死你就算拿到管理员权限也很难直接改它因为系统正在运行文件在被占用且被特殊保护。但换个思路Windows 没启动的时候这个文件不过就是硬盘上的一份普通数据。只要我们能从另一个独立的系统启动电脑挂载起这块硬盘就可以直接读取、修改这份“睡着”的文件。这就是我一开始说“BIOS 工具”的含义。严格来讲它不是一个运行在 BIOS 里的程序而是一个基于 UEFI/BIOS 引导阶段的独立微型系统。电脑开机先走 BIOS 或 UEFI 固件固件决定从哪个设备启动。如果此时插着我们的 U 盘、并将启动顺序调到 U 盘优先那么机器就不会进入 Windows而是进入 U 盘里的微系统。在这个微系统里Windows 还没运行SAM 对我们就完全开放了。把这个“黄金窗口”利用好密码问题就变成了一个简单的文件编辑问题。1.3 常见的替换法、粘滞键法和命令行法为什么不理想网上流传比较广的做法有几个但各有毛病粘滞键替换法在登录界面按五次 Shift 触发粘滞键实际上是把sethc.exe替换成cmd.exe。这招的前提是电脑能正常启动到登录界面而且系统文件没被严格保护。实测中经常遇到 Windows 更新后替换失败、系统文件校验拦截、甚至误操作导致系统损坏的情况而且操作过程啰嗦。PE 下用net user命令重置如果你用的是 Windows PE 环境在里面敲net user 用户名 新密码大概率会失败因为net user针对的是当前正在运行的系统账户数据库而不是离线状态下另一块硬盘里的 SAM。真要在 PE 下改得借助读取离线 SAM 的工具普通用户根本不会操作。直接替换 SAM 备份文件有人想用C:\Windows\System32\config\RegBack里的备份覆盖现有 SAM。这方法非常暴力会丢掉原有所有本地账户和密码策略而且不同镜像版本的 SAM 结构还有差异搞不好系统直接起不来。相比之下定点清除 SAM 里目标账户的密码哈希是最精准、副作用最小的路。我的工具走的就是这条线。2. 工具链路拆解从 U 盘引导到 SAM 清密每一环都要稳2.1 启动介质选型为什么我选了轻量 Linux 微环境而不是完整 PE做这个工具之前我先对比了几类启动介质方案。这里直接给结论方案体积引导速度NTFS 读写SAM 解析能力制作难度兼容性完整 Windows PE2GB 以上慢加载一堆驱动原生支持需要额外工具中好但体积大定制 Linux 微系统50MB 以内快需 NTFS-3G自己有工具链中很好可裁剪老式 DOS 工具几 MB极快较弱有限高对 UEFI 不友好我最终选择了基于 Linux 的轻量微系统理由很直接它足够小U 盘启动快NTFS 读写有成熟的 NTFS-3GSAM 解析逻辑我可以自己写而且 Linux 微系统对主板的 UEFI 支持远胜 DOS 老工具。完整 PE 当然也能干这事但你得先准备一个大 U 盘启动还要等半天做成一个“开机几秒清掉密码”的轻量工具根本不现实。2.2 SAM 里的“手术”到底做了什么工具运行后做的事可以拆成五步扫描并挂载系统盘识别出哪块硬盘哪个分区装着 Windows一般是C:所在的分区格式是 NTFS。定位并加载 SAM 配置单元找到Windows\System32\config\SAM将其作为一个注册表配置单元加载到内存。枚举本地账户读取SAM\SAM\Domains\Account\Users下的键列出所有本地账户比如 Administrator 和你日常用的账户。清除目标账户的密码哈希把该账户注册表项中记录的 NTLM 哈希值抹掉同时把账户状态调整为“密码为空”的正常状态。卸载配置单元并安全退出确保写回磁盘后数据落盘然后重启。这里特别说明一点我刻意避免了“替换整个 SAM 文件”的做法。因为一个完整的 SAM 里不止有密码信息还有账户 SID、组成员关系、密码策略、最近登录时间等。整文件替换等于把这些新老信息全部弄乱很容易引发账户丢失或权限错乱。而定点清除只改动密码哈希这一个区域对系统其他部分毫无影响。下面是我在工具里实现核心逻辑时的伪代码思路真实工程实现会更复杂但骨架就是这样的# 概念性伪代码真实实现需处理注册表 hive 的底层结构 def clear_user_password(sam_file, target_user): hive load_registry_hive(sam_file) # 加载 SAM 配置单元 users_root hive[SAM\\Domains\\Account\\Users] for user_key in users_root.keys(): if get_username(user_key) target_user: v_value user_key[V] # 密码信息存储在 V 值中 v_value.clear_password_hash() # 将 NTLM 哈希字段清空 user_key.set_password_required(False) # 标记为无需密码 hive.unload() # 写回并卸载2.3 “几秒清完”的时间账标题用了“几秒钟”这个说法得解释清楚整个流程包括开机引导和重启真正操作其实非常快。我实测的典型时间线如下阶段耗时UEFI固态硬盘开机进引导菜单约 2-3 秒选定 U 盘启动并加载微系统约 3-5 秒自动扫描硬盘分区并识别 Windows约 1-3 秒挂载 NTFS 分区并定位 SAM约 2-5 秒清除密码并写回约 1 秒重启进入 Windows约 5-8 秒也就是说选完 U 盘启动到清完密码通常在 15 秒上下加上重启大概 20 多秒就能看到登录界面直接按回车进入系统。如果是老机械硬盘扫描和挂载时间会长一点但整体也就一两分钟。3. 制作启动 U 盘与实操步骤把每一步都拆开来看3.1 制作启动盘的三个前置准备第一件事是准备一个 U 盘容量不用大256MB 都绰绰有余因为整个启动环境很精简。但 U 盘格式有讲究建议格式化成 FAT32 或 FAT因为 UEFI 固件对这两种格式兼容性最好。用 exFAT 或 NTFS 格式的 U 盘在某些主板的 UEFI 引导下可能会直接识别不到。第二件事是制作引导盘时一定要看清目标设备。写盘操作会清空 U 盘全部数据如果机器上同时挂着好几块 U 盘或移动硬盘一不留神就会写错目标把重要数据盘变成启动盘那就得不偿失了。我自己的习惯是写盘前拔掉所有无关存储设备只留目标 U 盘和系统盘。第三件事是提前确认电脑的Secure Boot安全启动状态。定制微系统如果没做签名在开启 Secure Boot 的机器上会被拦在引导阶段直接黑屏或提示无法验证签名。要么临时关闭要么给引导文件签名。我做的版本内置了第二种处理思路但保守起见实测新机器时我还是建议先临时关闭清完密码再打开。3.2 完整操作流程从开机到登录界面这里我把整个操作串一遍跟着做就行把写好的 U 盘插入目标电脑的 USB 接口优先机箱后置接口稳定。开机立刻按启动热键进入引导菜单。常见的键是F12、F2、Del、Esc具体看开机画面底部提示。这一步进不了系统无所谓反正本来也进不去。在引导菜单里选择 U 盘对应的启动项命名为 USB 或品牌型号字符串选择后回车。等待几秒进入工具的菜单界面。界面会列出检测到的硬盘分区自动标出哪个是 Windows 系统分区。选中 Windows 系统分区工具会自动加载 SAM 并枚举本地账户逐个列出用户名。用键盘上下键选中你忘了密码的那个账户回车确认。工具会弹出一个风险提示问你是否确认清除该账户密码。确认后看到进度提示一秒左右完成。拔掉 U 盘重启电脑。此时 Windows 登录界面里这个账户的密码已经为空直接回车或点击登录就能进入桌面。进入系统后第一时间去“设置-账户-登录选项”给账户设置一个新密码别让账户继续处于空密码状态。整个过程最麻烦的其实是第一步到第三步后面几乎都是自动的。3.3 我把工具界面设计成“傻瓜式”的原因写工具的时候我特意把交互做成最简单的菜单式而不是命令行式原因很简单面对“密码忘记”这个场景的人往往不是技术高手可能是家里长辈、同学、同事他们在那种焦急状态下再面对一串命令行只会更慌。菜单式界面加上大字体提示能让任何人照着屏幕选来选去就完成操作。同时菜单式交互也降低了误操作风险任何人都不会因为多敲一个字符引发不可逆的破坏。3.4 最容易翻车的地方其实不在工具本身工具本身的逻辑跑了很多次都没出问题真正的坑都在外围环境。我列几个最常见的UEFI 和 Legacy 启动模式不匹配。有些老电脑默认 Legacy传统 BIOS模式而有些工具镜像默认按 UEFI 引导导致插上 U 盘后启动项里看不到它。解决办法进 BIOS 看Boot Mode把模式切换成对应选项或者在 CSM 兼容模式下再试。NVMe 固态硬盘驱动缺失。如果目标是新电脑系统装在 NVMe 固态里而启动环境缺少 NVMe 驱动挂载硬盘时会找不到分区。我后来在镜像里预置了通用 NVMe 驱动才解决了新机兼容问题。多硬盘多系统。机器上装了多块硬盘、多个 Windows工具自动识别时可能选错系统分区。遇到这种情况我的建议是在选择分区时先看容量和启动标识别只看盘符就确定。4. 实测记录老笔记本、新台式机、虚拟机三种典型环境4.1 老笔记本电脑Legacy BIOS 机械硬盘最早测试是在一台十年前的老笔记本上做的配置是传统 BIOS 机械硬盘。第一次跑的时候工具能正常引导但扫描分区特别慢而且一度识别不到硬盘。排查后发现是硬盘的 SATA 控制器被设成了兼容模式后来在 BIOS 里把 SATA 模式从 IDE 切到 AHCI工具才正常挂载系统盘。整个流程耗时约 50 秒比新机器慢不少主要慢在机械硬盘的扫描和 NTFS 挂载上。密码清除本身仍是秒级完成重启后直接进系统资料完好。4.2 新台式机UEFI NVMe 固态 Secure Boot 开启第二次测试是朋友的一台较新台式机系统装在 NVMe 固态里出厂默认开启 Secure Boot预装的是 Windows 11。第一次插上 U 盘启动菜单里能看到引导项但选完直接提示安全校验失败。把 Secure Boot 临时关闭后重启再次选中 U 盘引导顺利进入工具界面。因为系统盘没有启用全盘加密工具读到的 SAM 是明文状态的直接选账户、清除、重启整个流程 20 秒不到。这里要强调的是清完密码后记得回去把 Secure Boot 重新打开。4.3 虚拟机拿来调工具开发最省事开发阶段我其实主要用虚拟机跑测试不占用实体机而且可以随时回滚快照。虚拟机里可以模拟 UEFI 引导、模拟多分区也能挂载虚拟磁盘直接检查修改后的 SAM 是否正常。虽然虚拟机环境少了硬件驱动的变数但胜在开发效率高、调试方便。等你把自己的工具在里面跑通了再到实体机验证兼容性就行。4.4 几组数据与规律环境引导方式是否需要关 Secure Boot从选中 U 盘到清完结果老笔记本机械盘Legacy BIOS不需要约 45-60 秒成功新台式机NVMe 固态UEFI需要约 10-15 秒成功虚拟机模拟 UEFIUEFI可不关约 10 秒成功测试下来我发现启动方式不匹配才是最高频的失败原因其次才是 Secure Boot 拦截。工具内在逻辑几乎没出过问题。5. 翻车预警全盘加密、安全引导、固件锁这些情况别硬来5.1 全盘加密是最大的变数这是所有情况里最需要警惕的一点。如果你的 Windows 开启了系统自带的整盘加密功能而且密钥被绑定在 TPM 芯片上那么外部工具看到的硬盘内容是密文不是明文。这时候你尝试去修改 SAM看到的是加密后的垃圾数据改了没有任何效果甚至可能破坏加密卷的完整性。遇到这种情况唯一正确的路径是先通过你保存的恢复密钥解锁磁盘或者提前在 Windows 设置里关闭该加密功能然后再做密码清除。所以在动手清密码之前先想清楚这台机器到底有没有开全盘加密。别等到工具显示找不到 SAM 时才意识到问题。5.2 Secure Boot 与驱动签名前面实测里已经演示过 Secure Boot 的影响。简单说定制微系统如果没有正确的引导签名Secure Boot 会拒绝执行它。我的建议是一律先临时关闭 Secure Boot操作完成后再打开。另外有些新主板已经取消 CSM 兼容模块老式 Legacy 引导的 U 盘插上去连启动项都看不到。这时候你需要确保工具镜像本身支持 UEFI 引导我做的时候就特意做了双模式支持。5.3 企业管理策略和硬件级密码不是这套工具能解决的如果电脑是单位发的办公设备账户走的是企业域账号或设备管理方案那密码策略可能完全不在本地 SAM 控制范围内清掉本地哈希也没用。还有一类情况是 BIOS 固件密码本身忘了那是硬件层级的锁开机就直接卡在固件自检阶段U 盘根本没机会引导。这属于另一个话题需要联系设备制造商或售后处理不是这套工具能覆盖的范围。5.4 使用边界这是给“自己的电脑”用的再强调一次这个工具只能用在你自己拥有的设备上或者经过明确授权需要协助的设备上。用它去搞别人的电脑不管初衷是什么都可能触碰法律边界和他人隐私。工具永远没有立场用的人心里得有红线。我把工具免费放出来帮助的是那些被自己密码困住的人而不是给别有用心的人提供方便。6. 从清密码到扩展工具集源码骨架和改造思路6.1 给工具加“重置为指定密码”的功能清空密码是最直接的方案但有时候你并不想让账户处于空密码状态而是想直接把密码改成自己指定的值。这样进系统后就不用再额外设置一次了。实现上需要构造一个合法的 NTLM 哈希值把这个哈希作为新密码写入 SAM。注意 NTLM 哈希是定长的直接乱填会破坏哈希字段导致账户状态异常。如果你想让工具支持这个功能研究重点是如何正确生成并写入定长哈希。6.2 顺手加上备份和启动修复能力既然这个微系统能挂载 Windows 分区那它的能力就不止清密码这一件事。我后来给工具加了两个扩展功能一个是把 SAM 文件备份出来万一用户后悔或者操作异常可以恢复原状另一个是修复 Windows 引导记录很多“开不了机”的问题其实是引导坏了跟密码没关系。这些功能共用一套挂载和分析模块加起来的成本不高但对用户的价值却翻倍。6.3 核心代码骨架伪代码级下面是一个理解工具核心逻辑的骨架示例我用 Python 风格写伪代码实际工程实现要考虑注册表数据结构、字节序、偏移量等细节# 核心流程加载 SAM - 枚举用户 - 清除哈希 - 写回 def process_system_drive(drive_path): # 1. 挂载系统分区 mount_point mount_ntfs(drive_path) sam_file mount_point /Windows/System32/config/SAM # 2. 加载 SAM hive hive open_sam_hive(sam_file) # 3. 枚举本地账户 users hive.enumerate_users() # 返回用户名 RID # 4. 清除指定账户的密码哈希 for user in users: if user.rid selected_rid: user.clear_password_hash() # 5. 卸载 hive确保数据持久化 hive.flush() unmount_ntfs(mount_point)代码逻辑不复杂难的是底层文件格式的处理和兼容性测试这部分需要大量真实系统的验证。6.4 为什么免费开放以及获取时要注意什么我做这个工具的起因很简单身边隔三差五就有人忘密码我自己也忘过。后来发现它其实能帮到更多人就直接开源了。免费意味着没有商业售后也意味着任何人都能审计代码不存在隐藏后门的空间。你可以从托管平台搜索相关关键词找到项目下载后先比对发布页面给出的校验值确保镜像没被篡改。拿到手先在自己不重要的旧电脑或虚拟机里试一遍确认明白了再应对正式场景。最后分享几点实际使用中的体会。清完密码第一次进系统后别急着干别的先创建一个新密码并确认密码策略正常。启动 U 盘最好单独保存好别随手乱插它就像一个备用钥匙放在可靠的地方关键时刻才有意义。如果你平时怕忘密码建议提前做一个密码重置盘或者定期把重要资料备份到云盘比啥时候都等到“最后一刻”再折腾稳妥得多。工具再方便也只是应急的路子真正省心的习惯还是靠谱的备份与密码管理。
延伸阅读

更多相关文章

2026/10/13 10:15:56

接口测试之fiddler

fiddler介绍 一、fiddler介绍(抓包工具)安卓版本 fiddler 是 C# 开发免费web调试工具之一,记录所有客户端和服务端常见的 http 以及 https 请求,可监视设断点,甚至修改输入输出数据,它还包含了一个强大的基…

2026/10/13 13:21:41

色彩规范落地指南:从团队协作到对比度检查的完整推演

做网页设计这些年,我越来越确认一件事:色彩规范不是一个色板文档,而是一套团队的“公共决策协议”。没有这套协议,设计稿里每个人都是自己的“配色大师”,开发还原全靠肉眼对齐,最后页面上永远充斥着四个不…

2026/10/13 13:21:41

用原生JS打造微博信息流Demo:DOM操作与数据驱动实战

很多人第一次看到“js微博制作”这个标题,第一反应是要做一个什么大平台,其实完全不是。它就只是一个前端练手项目:用JavaScript做一个类似微博信息流风格的网页Demo。核心是你要有能力把一个输入框里的话,实时渲染到页面上&#…

2026/10/13 13:21:41

Flutter 自定义底部导航栏:从原理到仿闲鱼动效完整实现

做 Flutter 仿闲鱼底部导航栏,这个标题我一看就来劲。说实话,Flutter 官方提供的 BottomNavigationBar 应付常规业务场景绰绰有余,但想把闲鱼那种中间发布按钮凸起、选中项下方有小横条滑动、点击发布按钮还能旋转变成关闭态的交互还原出来&a…

2026/10/13 13:21:41

vLLM多模型并发部署实战:DeepSeek-R1与Qwen3显存分配与调度调优

1. 为什么多模型并发部署是个"看起来简单、做起来要命"的活先把场景摆出来。你手里有一台或者几台推理服务器,显卡可能是 A100、H800、L40S 或者消费级的 4090 集群,业务侧要求同时对外提供 DeepSeek-R1 和 Qwen3 两个系列模型的推理服务。Dee…

2026/10/13 13:21:41

双狐软件构造成图全流程:从数据加载到批量出图的避坑指南

简介:这份资源围绕双狐软件在地质成图与地球物理勘探中的应用展开,面向地质、石油工程领域的技术人员及需要编制构造图的学习者,帮助解决从基础数据准备到成图输出的完整流程问题。压缩包内共1个PDF文件,约646KB,以图文…

2026/10/13 13:16:40

对称二叉树判断:递归与迭代的镜像匹配核心逻辑详解

1. 先搞清楚这道题到底在考什么1.1 题目定位与常见误区对称二叉树这道题在 LeetCode 上编号 101,属于二叉树章节的经典入门题,同时也是“热门 100 题”里的常客。我印象里几乎所有大厂面试题库里都有它,而且往往不是考你能不能写出来&#xf…

2026/10/13 5:19:27

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/12 12:01:26

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/12 12:54:07

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/13 0:04:41

基于Triton部署YOLO目标检测:从训练脚本到线上服务

简介:这份资源面向希望将目标检测模型落地到生产环境的深度学习开发者与算法工程师,聚焦于用 Triton Inference Server 部署 YOLOv9 的完整实战方案,解决从训练权重到线上推理服务之间的工程化难题。压缩包共 16 个文件,约 886KB&…

2026/10/13 0:04:41

手把手教你云端部署Qwen-Image-2.1:从GPU选型到在线文生图服务

Qwen-Image-2.1 这个开源的图像生成模型,最近在内容创作和 AI 应用圈子里热度相当高。它属于通义 Qwen 系列里的视觉生成分支,让我眼前一亮的是它对中文长文本的理解能力——以前用那些老方案生成带中文文字的图,十个里九个是“乱码印刷体”&…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑