MetaMask 密钥救援:30 行代码寻回 30 万美元 ETH 与 NFT

·

“一条缺失单词的助记词,能否靠 30 行脚本在 2048 种可能中定位正确组合?”
下面是我的亲历记录——从一通深夜电话到 BIP39 暴力破解的全过程,中间穿插可复制的核心思路防丢技巧

故事开端:电话那头的慌乱

“Alexis,我 MetaMask 登不上了……22 个 ETH 加一堆 Doodles、无聊猿全锁里头,合计 30 万美金!”

我朋友在电话里嗓音发颤。他把 Chrome 扩展卸载重装后,才惊觉当初 只手抄了 11 个单词,漏写了一个。雪上加霜的是,为了干扰旁人,他还额外插入了“emotions”“pelican”两词,导致最终手里只剩 11 条有效词。

我第一反应:钱包基本等同于“烧毁”。但工程师的固执战胜绝望——先研究再认输。

抢救第一阶段:Vault Decryptor 的死胡同

朋友朋友的朋友甩来一个“官方救星”MetaMask Vault Decryptor。借助远程截图,我们按文档操作:

  1. 打开浏览器开发者工具的 Console。
  2. chrome.storage.local.get('data', …) 尝试拉取 vault 数据。

结果:keyringController.vault 为空。通过 MacOS Finder 去 ~/Library/Application Support/Google/Chrome/Default/… 找本地 .ldb 文件时,发现扩展重装后旧文件已被新文件覆盖。
结论:Vault 这条线失败,方案归档。


FAQ:Vault 解密到底靠不靠谱?


抢救第二阶段:手动暴力失败的 2048 次点击

我本体不常用 MetaMask,于是本地装了一份旁路测试,索性打开 BIP39 英文词库——共 2048 个词汇,排列出 11 + 1 的组合。

先假设缺失词在第 4 位,用 abandon, ability, able… 一路试过去。
第 6 次就生成了“有效”的 12 词钱包,但 ETH 余额 0。再往下,“accident”“acid”“alarm”等等也撞出有效地址——只是都不是目标钱包。
粗略算得:6% 的 BIP39 词在随机位置能被 MetaMask 识别,想靠人工穷举 2048×12 ≈ 2.5 万次点击,显然不现实。

👉 想知道自动化脚本怎写?下节 30 行代码一次看懂!


FAQ:为什么 MetaMask 会认可那么多无效私钥?


抢救第三阶段:Node.js 30 行脚本直击链上

思路转化为自动化:

最小可运行代码(核心 20 行):

const ethers = require('ethers');
const fs = require('fs');
const bip39Words = fs.readFileSync('./bip39.txt', 'utf8').split('\n').map(w => w.trim());

const known11 = 'apple banana cat dog elephant frog grape house ice juice king'.split(' ');
const targetAddr = '0x82...'; // 朋友的真实地址

for (let pos = 0; pos < 12; pos++) {
  for (const w of bip39Words) {
    const seed = [...known11];
    seed.splice(pos, 0, w);
    const phrase = seed.join(' ');
    try {
      const wallet = ethers.Wallet.fromMnemonic(phrase);
      if (wallet.address.toLowerCase() === targetAddr.toLowerCase()) {
        console.log('🎉 命中文本:', phrase);
        console.log('🔐 私钥:', wallet.privateKey);
        process.exit(0);
      }
    } catch {}
  }
}

早上 9 点 21 分,循环到 缺失词在第八位 时命中,magic word = “remind”——极富戏剧性的单词!OpenSea 一刷新,22 ETH、Doodles、无聊猿安然无恙。


FAQ:这把戏人人能用吗?


终局与彩蛋:再提一次“remind”

钱包找回后,我们与朋友的共同决策:

  1. 生成全新助记词,全部资产一次性转入。
  2. 把旧助记词彻底吊销,任何照片、即时通讯记录全部删除。
  3. 冷钱包+助记词金属板 为长期方案,杜绝下一次“remind”事件。

👉 想亲手学会打造冷钱包的最简教程?点击解锁步骤详解。


一份小小清单:保护助记不翻车

  1. 书写时请 一字一词核对,确认 12/18/24 个完整无遗漏。
  2. 两份离线备份:一份防火金属板,一份防火塑料袋隐身存放。
  3. 永远不要让第二个人临时保管你的见证纸条,即使是家人。
  4. 有人替你恢复钱包,完成后立刻换新钱包,视同旧助记泄露
  5. 每半年做一次“纸上备份巡检”,如有模糊痕迹就重新抄写并销毁旧版。

如果你对 BIP39 暴力逻辑、自定义脚本、或冷钱包选型还想深挖,继续阅读本站后续“安全系列”。愿你永远不需要“remind”第二次。