【发布时间】:2016-03-10 14:41:04
【问题描述】:
我有一个连接到 wifi 网络的 Lua 程序。 wifi 密码是硬编码在 Lua 代码中的。我将 Lua 代码放在运行在 NodeMCU 固件上的 ESP8266 上。
这是我使用的代码:
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID", "password")
wifi.sta.connect()
srv = net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive", function(conn, payload)
print(payload)
local response = "HTTP/1.1 200 OK\r\n\r\n<h1> Hello, NodeMcu.</h1>"
conn:send(response, function()
conn:close()
end)
end)
end)
当我将此设置用于室外传感器时,任何人都可以获取 ESP8266、阅读 Lua 脚本并获取我的 WiFi 密码。
- 有什么地方可以用 Lua 加密 ESP8266 上的密码吗?
- 是否可以使用一些外部加密单元?
- 编译的 Lua 代码有什么改变吗?
【问题讨论】:
-
物理访问是完全访问。您无法在攻击者无法逆向工程的同一台设备上同时加密和使用密码。
-
将您的程序存储为字节码,但不要将您的密码公开为字符串文字:
wifi.sta.config("SSID",(('948197979B939684'):gsub('..',function(s)return s.char(tonumber(s,12))end))) -
@EgorSkriptunoff 你是什么意思我的“作为字节码”你的意思是把代码编译成
.lc?您能否详细回答一下您将如何处理密码问题? -
@confile - 编译字节码:
luac -s -o program.luac program.lua。您可以使用对密码进行评估的任何重要表达式。这不是一个完整的解决方案,它只会让您的密码更难提取。 -
@confile - 您不能在字符串文字中插入密码,因为它会在 .luac 文件中可见。这就是为什么您需要一些表达式,它将在运行时进行评估以获取您的密码。