将CMOS内容从一台PC复制到许多其他PC

时间:2013-05-04 17:18:51

标签: c++ windows automation bios

我们在2010年制造了大约100台相同品牌和型号的PC。我需要通过BIOS定期和手动更换所有这些PC,系统和用户密码,并希望通过软件自动执行此程序。有以下想法:

主板制造商给我发了一个程序来读写CMOS。我首先在一台PC上设置这些密码,将所有内容保存到一个文件中,然后在这个程序之后,我将de CMOS写入其他机器。详细信息:此程序将与DOS的启动盘一起使用。

我希望通过中央服务器执行此过程,将带有新CMOS数据的文件复制到所有计算机上存在的特定文件夹中。在每台PC上都有一个在Windows XP SP3上运行的进程,只要收到文件,就可以读取内容,在CMOS中写入新密码,从文件夹中删除文件并自行重启。该理论应该有效,但不包括在我创建文件的同一台机器上。所发生的情况是,每次更新CMOS时,都会保留更改的设置,但密码总是会恢复干净,即没有任何保护来访问BIOS。

现在我的工作基于一个名为CmosPwd的程序,该程序可以在www.cgsecurity.org网站上找到,但我们的主板上没有任何选项可以正常工作。我们的平台显然使用Award BIOS 6.00 PG作为这些中国母板的基础。尝试与制造商的新联系,但他们没有提供CMOS结构的地图。我发现,比较各种文件,密码不是以ASCII模式写入,只有偏移量为0x40的5个字节,我认为是你的CRC,如下所示:

CMOS DUMP WITH PASSWORDS:

SYSTEM: 11111111
USER  : 22222222

CMOS Bank 0:
    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
    -----------------------------------------------
 0: 59 00 55 00 14 00 05 02 05 13 26 02 40 80 08 00 
 1: 40 f0 00 00 02 80 02 00 04 14 00 00 00 00 00 00 
 2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 fc 
 3: 00 04 20 80 00 00 00 00 00 00 00 00 00 00 00 00 
 4: **59 00 55 00 14 00** 05 02 05 13 26 02 40 80 08 00 
 5: 40 f0 00 00 02 80 02 00 04 14 00 00 00 00 00 00 
 6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 fc 
 7: 00 04 20 80 00 00 00 00 00 00 00 00 00 00 00 00 

CMOS Bank 1:
    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
    -----------------------------------------------
 0: 59 00 55 00 14 00 05 02 05 13 26 02 40 80 08 00 
 1: 40 f0 00 00 02 80 02 00 04 14 00 00 00 00 00 00 
 2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 fc 
 3: 00 04 20 80 00 00 00 00 00 00 00 00 00 00 00 00 
 4: **59 00 55 00 14 00** 05 02 05 13 26 02 40 80 08 00 
 5: 40 f0 00 00 02 80 02 00 04 14 00 00 00 00 00 00 
 6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 fc 
 7: 00 04 20 80 00 00 00 00 00 00 00 00 00 00 00 00 

    系统:AAAAAAAA     用户:BBBBBBBB

 CMOS Bank 0:
    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
    -----------------------------------------------
 0: 51 00 01 00 15 00 05 02 05 13 26 02 00 80 08 00 
 1: 40 f0 00 00 02 80 02 00 04 14 00 00 00 00 00 00 
 2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 fc 
 3: 00 04 20 80 00 00 00 00 00 00 00 00 00 00 00 00 
 4: **51 00 01 00 15 00** 05 02 05 13 26 02 40 80 08 00 
 5: 40 f0 00 00 02 80 02 00 04 14 00 00 00 00 00 00 
 6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 fc 
 7: 00 04 20 80 00 00 00 00 00 00 00 00 00 00 00 00 

CMOS Bank 1:
    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
    -----------------------------------------------
 0: 51 00 01 00 15 00 05 02 05 13 26 02 40 80 08 00 
 1: 40 f0 00 00 02 80 02 00 04 14 00 00 00 00 00 00 
 2: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 fc 
 3: 00 04 20 80 00 00 00 00 00 00 00 00 00 00 00 00 
 4: **51 00 01 00 15 00** 05 02 05 13 26 02 40 80 08 00 
 5: 40 f0 00 00 02 80 02 00 04 14 00 00 00 00 00 00 
 6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 fc 
 7: 00 04 20 80 00 00 00 00 00 00 00 00 00 00 00 00 

有没有人对此有任何疑问,并获得了一个简单而廉价的解决方案,或者对此有任何暗示?我很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

要记住的一些事项:

  • 在大多数现代芯片组中,您现在正在阅读的核心70h / 71h之外有多个CMOS字节库。查看芯片组的数据表并阅读"扩展CMOS"。它的确切实现从芯片组到芯片组不等,但可能在72h / 73h。这可能是你的问题。

  • 对于现代UEFI BIOS,CMOS的内容仅用于传统兼容性。 "真实" BIOS设置存储在BIOS闪存芯片中。

  • Joachim Pileborg是对的。 CMOS位的内部结构从BIOS的修订版改为修订版。几乎可以保证不同主板之间的便携性。它可能无法在BIOS转速之间移植。为了使其可靠地工作,所有主板应该是相同的,具有相同的BIOS版本。