24.12.2020, 05:27
(24.12.2019, 06:48)admin Wrote: First, you need to encrypt password using PBKDF2. Go to https://8gwifi.org/pbkdf.jsp and input the following data:Hi
Code:Master Password: your pairing code (BK2AT22Y)
Salt: Y2G4DpvcpmONByDyzFaPuQ==
Iteration: 16384
dkLen: 128
PBE Ciphers: PBKDF2WithHmacSHA256
Use aes.lua from this post: https://forum.logicmachine.net/showthrea...7#pid12807
Save it as a user library named aes
Example, change key to the one that you've generated. Change ip and cmd as needed. \r is added to command automatically.
Code:ip = '192.168.1.100'
key = 'm7mRFt3BM+CwW3bYunE6sA=='
cmd = 'POWER off'
function encrypt(key, data)
-- padding
local rem = #data % 16
if rem ~= 0 then
rem = 16 - rem
local ch = string.char(rem)
data = data .. string.rep(ch, rem)
end
-- generate iv
local iv = ''
local ts, tu = os.microtime()
math.randomseed(ts - tu)
for i = 1, 16 do
local ch = math.random(0, 255)
iv = iv .. string.char(ch)
end
local aes = require('user.aes')
-- encrypt iv
local aes_128_ecb, err = aes:new(key, nil, aes.cipher(128, 'ecb'), { iv = string.rep('\0', 16) }, nil, 0)
local ivenc = aes_128_ecb:encrypt(iv)
-- encypt data
local aes_128_cbc, err = aes:new(key, nil, aes.cipher(128, 'cbc'), { iv = iv }, nil, 0)
local dataenc = aes_128_cbc:encrypt(data)
return ivenc .. dataenc
end
function send(ip, key, cmd)
local sock = require('socket').tcp()
sock:settimeout(3)
local res, err = sock:connect(ip, 9761)
if res then
key = require('encdec').base64dec(key)
cmd = cmd .. '\r'
local data = encrypt(key, cmd)
res, err = sock:send(data)
if res then
reply = sock:receive(16)
end
end
sock:close()
return res, err
end
res, err = send(ip, key, cmd)
log(res, err)
i have the above all working, Many Thanks, how can i decrypt the response from the command sent, i added log (reply) and this is the result
string %9����i���%r4
do i need to use
Code:
local aes_128_cbcc, err = aes:new(key, nil, aes.cipher(128, 'cbc'), { iv = iv }, nil, 0)
local datadec = aes_128_cbcc:decrypt(reply)
where do i get the iv from, the doc say to use received iv as below?
5)
Receiver applies decryption with received IV, and encrypted message. For “VOLUME_MUTE on” command, the response from the server is: ce 53 7c e4 b8 82 98 c6 a4 3e 21 89 af 5f 20 2f and after decryption: 4f 4b 0a 00 7d 7d 7d 7d 7d 7d 7d 7d 7d 7d 7d 7d. O K ‘\n’ } } } } } } } } } } } } For now, just ignore characters after ‘\n’