隐藏密码以从.o文件或.hex文件中读取

时间:2012-04-26 03:09:50

标签: c++ c arrays arduino password-protection

我在arduino上编写项目,并且我在密码数组中存储密码。此密码写在代码中,我想隐藏有权访问.o文件和.hex文件的恶意读者的密码。

有没有人碰巧知道如何隐藏它?

我已经尝试将它存储在const字节数组而不是const char数组中,但它似乎并没有解决我的问题...

3 个答案:

答案 0 :(得分:3)

棘手的部分是,无论如何,因为你需要使用密码,(我假设你每次启动时都不能输入密钥),你的代码将同时包含锁,以及打开它的关键。真正的问题是这有多好?

如果它不一定非常好,您可以通过某个值xor密码,并将其用作源中的密码。然后,当您需要使用它时,然后用相同的值对它进行xor和ta-da ......

如果你想要一些不那么简单的东西(并且arduino适合它),你可以用你的私钥签名密码,并将你的公钥存储在源代码中。取消密码的算法要比简单的xor复杂得多(因此难以发现)。

无论如何,任何需要使用明文密码的自包含系统都是可以妥协的。

答案 1 :(得分:1)

您可以将密码存储在EEPROM中,您可以使用avrdude或代码内部写入密码。在后一种情况下,您需要在闪烁后的某个时刻为您的设备提供密码。

有权访问该设备的任何人都可以访问该密码,但只有那些只能访问.o.hex个文件的人才能访问该密码。

我不确定Arduino引导程序是否允许您通过avrdude读取和写入EEPROM,但如果没有,您可以编写一个初始的Arduino草图,将密码写入EEPROM,然后用实际的草图覆盖它只读取它

答案 2 :(得分:1)

只需哈希密码并存储哈希值即可。比您散列用户输入密码以尝试匹配它们。

现在,如果您需要将密码存储到其他服务,并且您不得不在其API中使用普通密码,那么您几乎没有可能的选择。