无法输入包含“!”的 BIOS 密码

xav*_*m02 113 bios passwords reset

昨天,我!在 BIOS 中添加了一个包含 a 的密码。不幸的是,在您启动时要求输入密码的密码提示不允许您写一个!(即*没有添加小密码,它告诉我这是错误的密码)。

因此,我在 Google 上搜索了如何删除该密码并偶然发现了上一个问题

所以我有3个选择:

  • 奇迹般地找到了进入一个的方法 !

  • 在华硕找可以给我救援密码的人

  • 打开电脑,移除所有可以为主板供电的东西,并希望它要么移除密码,要么将日期重置为已知救援密码的日期

  • 不知何故使用上一个问题中链接的一长串代码对生成代码的算法进行逆向工程,并使用它来生成今天的代码

欢迎任何方向的任何帮助。


关于寻找一种方法来写的!,我的电脑有一个QWERTY键盘那么!Shift + 1。我也尝试使用Caps Lock它来编写它,但它没有用。由于我的键盘最初是 AZERTY 并且我对其进行了更改,因此我也尝试将其用作 AZERTY 或插入 USB AZERTY 键盘,但两者都被视为 QWERTY 键盘(或至少作为键盘,其中添加小*s的键完全相同就像在 QWERTY 键盘上一样)。

我也尝试过(如答案中所建议的那样)使用 ASCII 代码33!Alt看起来它被忽略了,因为它添加了两个*s。

所以这个方向的解决方案似乎不太可能。


关于在华硕找人,我在法国通过电话尝试了客户支持,在北美通过聊天尝试了客户支持。两个人都告诉我,我必须将它送到维修中心,这将是保修期外维修,因为它涉及 BIOS。要么他们不知道救援代码的存在,要么甚至不允许他们提及它的存在。

我还尝试询问华硕 Twitter 提要。我得到的答案告诉我直接联系客户支持,华硕法国的一个答案告诉我登录 Windows 并将日期更改为他们拥有救援密码的特定日期。不幸的是,每当我启动时都会提示我输入密码,因此我无法进入 Windows。

我还向我发现的每个客户支持部门发送了电子邮件,但到目前为止我没有收到任何其他答复。


我可以打开电脑,我已经做过一次更换键盘了。但我真的不想再把我不明白的事情搞砸了。另外,我什至不确定它会重置密码还是日期。所以这是我最后的解决方案。


我无法识别救援密码序列中的任何模式。

这是我到目前为止所拥有的(顶行是字符,左列是它出现在字符串中的索引处的索引):

          0     1     2     4     9     A     B     C     D     H     L     O
    0   237   246   106   109   106  1243   575   109   215   105   355   244
    1   220   215    95   100   125  1265   575   120   245   140   310   240
    2   200   240   120   120   120  1201   620   110   280   110   299   230
    3   230   190   130   130   140  1240   561   110   209   100   370   240
    4   280   210   120   110   100  1170   620   100   240   100   340   260
    5   120   360     0     0    60  1171   949    60   120   240   480    90
    6   240     0   111     0     0  1260   720     0   600     0   719     0
    7   190   240   120     0   120  1079   941   120   480     0   360     0
Total  1717  1701   802   569   771  9629  5561   729  2389   795  3233  1304
Run Code Online (Sandbox Code Playgroud)

尝试过的其他事情:

可能的相关资料:

  • 这是大约一年前购买的华硕 RoG G751JY

  • 我重新安装了 Windows(所以没有更多的恢复分区)

就是这样。在此先感谢您的帮助。

tmn*_*mnt 154

(不是标题中所述问题的答案,而是解决潜在问题的一种方法)。

我想我设法(主要是)对从过去密码列表中生成救援密码的算法进行了逆向工程。不幸的是,我没有华硕主板,所以我无法验证这是否正确预测了新密码,但是在知道密码的日期运行下面发布的代码段总是会给出正确的结果。如果你试一试它对你有用或不适合你,请告诉我。

仅通过以各种方式查看给定数据(例如,通过为一个月中的固定日期制作一张密码表),就可以看到一些模式出现。

如果我们像这样标记密码中的字母: 01234567,那么很容易看出字母 6 和 7 是由月份中的某一天唯一确定的(因此完全独立于月份或年份)。对于字母 7,只需使用月份中从零开始的日期作为字符串的索引AAAABLDDBB0LB211C9BAAAAABLDDBB0。同样,对于字母 6,它是 string LBAL0AL0ADLADLADLADBADBABBAB2AA

对于字母 5,也很容易看出,除了月中的第几天,月的奇偶校验(即除以 2 的余数)也很重要。对于奇数个月,必须使用参考字符串BADBOA01AAH1ABBALLBABLBAH1ADL1A,对于偶数个月,它是A0CAABALBBALBBAH1ABH1ABLABL9ABO.

字母 2、3 和 4 非常相似,只需每个月使用不同的查找表(即每个字母都有十二个查找表)。

字母 1 还考虑了当年的平价。所以这里总共有 24 个查找表,12 个用于奇数年,12 个用于偶数年。许多这些查找表实际上包含相同序列中的相同字母,它们只是在该序列中的不同点开始。我想这表明我还没有完全弄清楚一些潜在的模式。

字母 0 有点复杂,我还不能完全确定一个模式。似乎根据月份和年份,选择了 4 个基本序列 ( OLLAA1AO, ADBA4CAL, AD2AH9AB, AB1A0BB0) 中的一个并按特定量旋转。然而,2002-2009 年似乎也遵循与 2010 年和 2011 年不同的模式(实际上,2010 年与 2008 年表现出相同的行为,2011 年与 2009 年表现出相同的行为),因此无论如何都很难预测这个序列将如何继续。

相反,由于此时我们已经确定了 8 个字母中的 7 个,而最后一个字母似乎只有 12 种可能性,因此可以尝试暴力破解密码。如果您在前面提到的 4 个序列中按频率系统地尝试丢失的字母,则在 2 次尝试后您应该已经有 50% 的机会获得正确的密码。

下面是一段 Javascript 代码片段,它在运行时会询问您一个日期并显示该日期的 12 个可能的密码,按可能性排序。对于今天的日期 (2016-02-28),这会给你X0BLB9BDX作为ABLOD10942CH.

(function() {
    let today = new Date();
    let date = prompt("Enter a date", today.toISOString().substring(0, 10));
    let tables = [
        [["AAAABLDDBB0LB211C9BAAAAABLDDBB0"]],
        [["LBAL0AL0ADLADLADLADBADBABBAB2AA"]],
        [["BADBOA01AAH1ABBALLBABLBAH1ADL1A", "A0CAABALBBALBBAH1ABH1ABLABL9ABO"]],
        [["A49BLA0ODBLA0OD1ALAOD2ALABCA0OA", "BCA0AHBL20A4BLBAOADLBA0AD1ABA", "1ABAA9BLAAACBLA0OD2LAHBD2ALABL2", "ALAB1A0AHB1A0A4BLBAA49BBA0AD1L", "0AD1ABAA91ALAACBLAHACA0AHBD2AAH", "BD2AOAB1AAOAB1A0A491ABA49BBA0A", "BBA0OD1AB0OD1ALAACAALABCA0AHB1A", "0AHBL2AOABLBAOAB1ABOAD1ABA49BAB", "A49BLA0ODBLA0OD1ALAOD2ALABCA0O", "0AHBL2AOABLBAOAB1ABOAD1ABA49BAB", "A49BLA0ODBLA0OD1ALAOD2ALABCA0O", "BCA0AHBL20A4BLBAOADLBA0AD1ABAOD"]],
        [["DA1HABBDAA24ABBLA244A9LLABAA99O", "9LLA2AA9LLBABAACOBAALBACOAALB", "BACOBALBAA10AALDA100AO0DA1HAOOB", "O0DA1HAO00DA1HABBDAA24ABBLA244", "4ABBDA24AA9LLA2AA9LLBABAACOBAAL", "ABAA9OBABBBACOBALBAA10AALDA100", "0AALBA10AAO0DA1HAO00DA1HABBDAA2", "A1HAOBDA114ABBDA24AA9LLA2AA9LLB", "LLA24A9LLLABAA9OBABBBACOBALBAA", "LA24A9LLAABAA9LBABAAACOBALBACC0", "COBABBACOOAALBA10AAA0DA10AO0DD", "DA10AO0DAA1HAO0DA1HHABBDA24ABBL"]],
        [["LA24ABBDAA1HAO0DA1H0AALBA10AAAB", "1HAOBDA1H0AALDA10AAABAACOBABA", "AO0DA10AAALBACOBABAAA9LLA24ABBB", "LBACOBABAAA9LLA24ABBBDA1HAO0DD", "A9LLA24A9BBDA1HAOBDDA10AA0DA1CO", "BDA14ABBDDA10AO0DA1COBALBACOBL", "A1HAO0DA110AALBACOBBABAA9LLA224", "0AALBACOBBABAA9LLA224ABBDA1HAAO", "ABAA9LLAB24ABBDA14AAO0DA1HAO0L", "AO0DA10AAALBACOBABAAA9LLA24ABBB", "LBACOBABBAA9LLA24A9BBDA1HABBDD", "A9LLABAA9BBDA24ABBDDA1HAO0DA1CO"]],
        [["BL4AA20BAAAA2HBA1LDBHBA1ODA90A1", "ODA9BBAOBACBDAOL4AADABLAAA20B", "AA2HBA1LDBHAA1ODA9BA1OLACBBAOLA", "CBDABL4AADABLAAA2HB0AAABHBA1OO", "HAA1ODA9BA10LACBDAOLACLDABLAALD", "AB0AAA2HB0BAABHAA1OOB4AA1OLACA", "10LACBDABBACLDABLAALDA90AAABH90", "BAOBHAA1OOB4AA10LACAA20LACLDA0B", "A1LDAB0AALDA90BAABH9BBAOB4AA1A", "OLA9BBAOLACBDABL4AADABLAAA2HB0A", "AA2HBA1ODBHAA1ODA9BA1OLACBDAOL", "CBDABLAAADAB0AAA2HB0AAABHAA1OOB"], ["BAABHAA1OOB4AA1OLACAA10LACLDA0B", "ACLDAB0AALDA90AAABH90BAOB4AA", "L4AA10LACAA20LACLDAHBA1LDAB0A1O", "DA90BAABH9BBAOB4AA1AOL4AA10LAA", "A20BACLDAHBA1LDA90A1ODA90BAOBAC", "BBAOB4AA1ABL4AA20LAAAA2HBA1LDB", "BA1ODA90B1ODA9BBAOBACBDAOL4AADA", "BLAAA20BAAAA2HBA1LDBHAA1ODA90A1", "OLA9BBAOBACBDABL4AADABLAAA20B0", "A1LDAB0AALDA90BAABH9BBAOB4AA1AO", "L4AA10LACAA20BACLDAHBA1LDA90A1", "DA90BAOBH9BBAOB4AA1AOL4AA20LAAA"]]
    ];

    let match = date.match(/^(\d{4})-(\d{2})-(\d{2})/);
    if (!match) {
        alert("Invalid date: " + date);
        return;
    }

    let [_, y, m, d] = match.map((a,b) => +a)

    let pass = "";
    for (let i = 6; i >= 0; --i) {
        let letters_map = tables[i];
        let year_map = letters_map[y % letters_map.length];
        let month_map = year_map[(m - 1) % year_map.length];
        pass += month_map[d - 1];
    }

    let final_letters = "ABLOD10942CH";

    let output = []
    for (let x = 0; final_letters[x]; ++x)
        output.push(final_letters[x] + pass);

    alert(output.join("\n"));
})();
Run Code Online (Sandbox Code Playgroud)

  • @xavierm02:对于窃取电脑的人来说,简单地移除 BIOS 电池的解决方案是迄今为止最简单的解决方案。 (40认同)
  • 实际上,您设法弄清了这一点,这是非常了不起的。 (28认同)
  • @xavierm02:感谢您对 JS 问题的确认和抱歉 - 在将其粘贴到 Firefox 浏览器控制台时,剪切应该可以正常工作。另外我必须同意 Joey,如果有人可以物理访问机器,那么像 BIOS 密码这样的原始保护不会阻止他们使用机器。 (11认同)
  • 棒极了。我可以确认第 5 个密码确实有效。(但我确实必须修复一些括号不匹配,添加“使用严格”并用一系列 let 替换 let array-let) (8认同)
  • @xavierm02 如果他花了一天时间来计算出算法,那么它表明的主要问题是,拥有如此简单的救援密码首先会使整个事情变得不安全。如果华硕读到这篇文章,它应该会提示他们采取这样一个愚蠢的后门。 (2认同)
  • @JamesRyan 是的,他们*应该*。但大公司似乎往往更喜欢起诉发现安全漏洞的人,而不是感谢他们。 (2认同)
  • @JamesRyan:对于消费类设备,您必须在安全性与普通攻击者和便利性(或缺乏便利性)之间取得平衡。人们总是忘记密码——我敢打赌,这比试图偷笔记本电脑和闯入的人更容易忘记。因此,要么是华硕让人们对忘记密码的人感到生气,要么是将设备丢失给某些对手的人。我想说第一组要大得多。为了防止小偷进入您的计算机,有更安全的方法来确保这一点,例如全盘加密和更长的密码短语。BIOS 密码的存在是为了阻止不那么老练的攻击者。 (2认同)
  • @Joey 使用谷歌搜索救援密码并不需要任何复杂性。使用可派生的后门并没有增加更多的便利,有很多方法可以安全地做到这一点。目前,这一切所做的都是误导客户认为有保护,而没有保护。如果这是故意的,那么这肯定是欺诈/疏忽吗? (2认同)
  • “但是,我不确定该算法是否应该公开发布。” 如果人们知道这种“安全功能”可以轻松绕过,他们还会使用吗?在我看来,这就像用一些专有的字符串(弱算法)锁定你的棚子,而不是依靠法律(专利和 DMCA)来真正保护你。如果算法不安全,就应该向公众公开。 (2认同)

Pra*_*nna 115

经验证的选项
我一直成功地通过移除 CMOS 电池来重置 BIOS。我建议断开笔记本电脑的电源,然后取出 CMOS 电池。bios 电池看起来像这样,它会跟踪时间和 BIOS 内容。
在此处输入图片说明

等待几分钟。此操作将重置 BIOS 的内容,并让您无需任何密码即可进入。

如果您需要有关如何打开笔记本电脑的说明,可以在此处查看 YouTube 视频

  • @xavierm02 它不仅会重置日期,还会将 BIOS 重置为出厂默认设置,从而重置密码。 (21认同)
  • 我也有这样的印象,密码和 bios 现在存储在闪存中,而不是电池供电的内存中,专门用于提高安全性。再说一次,我很惊讶它会接受您无法输入的密码,所以我倾向于认为您输入错误。 (11认同)
  • 许多基于 UEFI 的现代系统确实将配置存储在 EFI 变量中,这些变量存储在 Flash 中,移除 CMOS 电池时不会重置。 (10认同)
  • @NateKerkhofs 哦。我以为我在某处读到过,在新计算机中,密码有时会存储在不会重置的某个地方... (8认同)
  • 它当然应该被删除。我从未听说或见过 BIOS 在其设置实用程序中具有此类功能。 (2认同)
  • 在某些主板上(我目前可以使用的所有 8 块主板,它们都是从 5 年前到全新的)都有某种形式的 CMOS 重置跳线。在我的华硕 UEFI 主板上,此跳线清除 RTC memirt(在现代主板上实际上没有任何作用),但也向固件发出信号以清除其 EFI NVRAM。所以它仍然提供相同的功能,但方式不同。 (2认同)

xav*_*m02 31

好吧,我又让它工作了。

我打开了后面的插槽,在那里你可以看到硬盘和一些记忆棒。在记忆棒旁边,有两个小东西,分别标有 JRST2001 和 JRST2002。我首先尝试将一个连接到另一个,然后我的计算机甚至无法启动,唯一亮起的是键盘旁边的 LED。所以我然后尝试连接 JRST2001 的两个“侧面”(有某种线穿过它),对于 JRST2002 也是如此。然后将日期重置为 2009-01-01,其救援密码为 1BLDABLA。请注意,当您输入救援密码时,计算机会死机,您必须手动重新启动。然后,由于它无缘无故地一直启动到 bios,我开始随机更改设置,直到它工作为止。显然,好的设置是我需要启用的 CSM。


为了记录,这是我从华硕得到的答案(强调我的):

(我不确定这是否应该出现在我的问题或我的回答中,但我认为人们不想滚动整个事情来回答,所以我把它放在这里)

你好亲爱的泽维尔,

感谢您联系我们的华硕支持。

根据您的要求,对于型号为G751JY的计算机,我了解到您无法输入“!” 传递 Bios 密码,您想要救援密码

Xavier 先生,首先,我非常抱歉地通知您,BIOS 密码只能在我们的车间中被破解,而且很遗憾,您的计算机将在保修期内退回

因此,为了将您的电脑送回华硕专家进行诊断和维修,感谢您完成以下链接中的移除表格:

https://eu-rma.asus.com/pick_eu/fr/

单击产品类型 << Notebook >> 以完成所有必填字段。

我邀请您尽可能准确地描述“问题描述”课程,以便我们的技术人员能够最好地检测和修复您产品的故障。

要验证您的选择表格,必须填写所有必填字段,并且您必须检查“提供的保证协议”。

我强烈建议您点击超链接访问华硕保修条款并仔细阅读,尤其是第 2.2.3 节。

一旦您的申请获得批准,您将收到我们发送的一封电子邮件,其中包含您的保修期外退货协议编号和拆卸说明(包装说明和售后服务的一般条件)。

你应该已经通知了一个手机号码。您将自动收到有关每个阶段维修状态的信息。

要跟踪修复状态,您可以选中“我同意接收有关我的修复文件夹状态的 SMS 信息”框。

在我们的服务中收到产品后,技术人员将对故障进行诊断,并向您发送维修估价

然后,您可以直接与车间沟通您希望继续或不修理您的产品。

如果拒绝报价,我会通知您诊断费和运费将由您负责。(~ 75 欧元)

泽维尔先生,我随时为您解答任何其他问题,祝您一切顺利。

  • 此外,您通常不想尝试将主板上的金属东西随机连接在一起。首先获取手册并找出可以安全修改的内容,否则您最终不仅会重置 BIOS,还会炸毁板子。 (70认同)
  • “我开始随机更改设置”这正是导致发布另一个超级用户问题的原因:“救命啊,我的电脑又不能工作了!” (36认同)
  • 在完全不知道它们是什么(更不用说它们做什么)的情况下随意连接电子元件并不是世界上最聪明的想法。也许不要管电子产品,直到您可以超越将所有东西称为“东西”! (31认同)
  • 以后这种东西会出现在手册中,非常值得一读。如果您将任何类型的 + 和 - 电压接头短路,我会添加它们通常彼此相邻,那可能很糟糕。 (14认同)
  • 您正在描述用于重置 BIOS 的跳线,我相信 (10认同)
  • 这不是真正的工作方式^_^ (8认同)
  • @JourneymanGeek 我发现这些天的计算机手册非常不完整,如果有的话。我的没有“重置BIOS”部分。 (6认同)
  • 就像@Prasanna 所说的,“东西”是 [jumpers](https://en.wikipedia.org/wiki/Jumper_%28computing%29)。 (3认同)
  • 总而言之 - 一个很好的问题和一个很好的自我找到的答案。走的路@xavierm02 (3认同)
  • @DavidRicherby 是肯定的,但是再次这样做会教给您的不仅仅是正常路线。值得?不是真的,但作为一个孩子,我一直这样做。 (3认同)
  • @PreferenceBean 我听了有人在论坛上说的话。我理解跳投背后的概念。我只是不确定那些特定的跳线是做什么用的,而且我也不知道正确的词。另外,如果你真的可以通过连接这些跳线的部分来破坏东西,他们可能会将它们隐藏在主板的另一侧。 (2认同)
  • @njzk2 确实,这些跳线根本不在华硕手册中 http://dlcdnet.asus.com/pub/ASUS/nb/G751JY/0409_E9959_A.pdf。大多数主板都会有一个完整的列表,但大多数消费者不会看到它们,所以我想它们会让它们更完整 (2认同)