(更新しました)
Lua コード内では、物理アクセスに対するセキュリティはありません。他の回答に加えて、ESPにはwifi設定を保存するオプションがあります。したがって、これにより、資格情報を lua ファイルに入れる必要がなくなります。資格情報を一度プログラムしてから、資格情報コードを削除します。これにより、資格情報の取得が少し難しくなります。コードを読んだ人は少なくともそれを見ることはありません。(ただし、もちろん、このため、完全なセキュリティ オプションではありません。) esp が再起動するか、wifi ネットワークが範囲内にあるたびに、同じ ssid とネットワークに接続します。これはデフォルトでオンになっています。
wifi.setmode(wifi.STATION)
wifi.sta.config("SSID", "password")
wifi.sta.connect()
これを行う別の方法は、MAC アドレスの登録です。AP でステーションの MAC アドレスを登録できる場合は、パスワードを取得するだけでは Wi-Fi ネットワークに接続できないため、もう 1 つのセキュリティ レイヤーが提供されます。これはパスワードを保護していません! これを行うには、AP を構成する必要があります。
もう 1 つの方法: これには、より多くのコードが必要になります。安全性が高いとは言えませんが、発見が難しくなります。これを使用するには、lua ファイルをコンパイルする必要があります。パスワードを ssid で XOR し、xor したバージョンをコードに入れるだけです。ネットワークを調査し、ネットワークごとにパスワードを作成します。作成されたパスで全員を接続してみてください。一致するペアは正常に接続されます。他は失敗します。これにより、接続シーケンスが少し長くなります。
--encode
--retuns a table containing bytes
--also prints what should be in code
-- s is ssid, p is password
function encode(s,p)
key = s..s --encoding key, must be longer than password
enc = {} --new table
uart.write(0,"Key output: {")
for i=1,string.len(p) do
c = bit.bxor(p:byte(i),key:byte(i))
table.insert(enc,c)
if i == string.len(p) then
uart.write(0,c.."}")
else
uart.write(0,c..",")
end
end
return enc
end
--decode
--tries to decode password with table enc
--s is ssid (got from survey) encval is byte table
function decode(s,encval)
key=s..s
pass=""
for ii,i in ipairs(encval) do
c = bit.bxor( key:byte(ii),i)
pass = pass..string.char(c)
end
print("password: "..pass)
return pass
end
-- lets say ssid="network" and password="psswrd12"
encodedpass = encode("network","psswrd12")
-- this will print: Key output: {30,22,7,0,29,22,90,92}
-- this will be included in code
-- and to decode
print(decode("network",encodedpass))
-- will print: password: psswrd12