2017-10-08 21:45:01 +00:00
|
|
|
_G.requireInjector()
|
2017-09-05 06:09:31 +00:00
|
|
|
|
|
|
|
local Crypto = require('crypto')
|
|
|
|
local Security = require('security')
|
|
|
|
local SHA1 = require('sha1')
|
|
|
|
local Socket = require('socket')
|
2017-05-06 01:43:17 +00:00
|
|
|
local Terminal = require('terminal')
|
2017-05-05 11:34:20 +00:00
|
|
|
|
2017-10-08 21:45:01 +00:00
|
|
|
local os = _G.os
|
|
|
|
|
2017-05-05 11:34:20 +00:00
|
|
|
local remoteId
|
|
|
|
local args = { ... }
|
|
|
|
|
|
|
|
if #args == 1 then
|
|
|
|
remoteId = tonumber(args[1])
|
|
|
|
else
|
|
|
|
print('Enter host ID')
|
2017-10-08 21:45:01 +00:00
|
|
|
remoteId = tonumber(_G.read())
|
2017-05-05 11:34:20 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
if not remoteId then
|
|
|
|
error('Syntax: trust <host ID>')
|
|
|
|
end
|
|
|
|
|
2017-05-06 01:43:17 +00:00
|
|
|
local password = Terminal.readPassword('Enter password: ')
|
|
|
|
|
|
|
|
if not password then
|
|
|
|
error('Invalid password')
|
|
|
|
end
|
2017-05-05 11:34:20 +00:00
|
|
|
|
|
|
|
print('connecting...')
|
2017-10-11 15:37:52 +00:00
|
|
|
local socket, msg = Socket.connect(remoteId, 19)
|
2017-05-05 11:34:20 +00:00
|
|
|
|
|
|
|
if not socket then
|
2017-10-11 15:37:52 +00:00
|
|
|
error(msg)
|
2017-05-05 11:34:20 +00:00
|
|
|
end
|
|
|
|
|
2017-09-05 06:09:31 +00:00
|
|
|
local publicKey = Security.getPublicKey()
|
2017-05-05 11:34:20 +00:00
|
|
|
|
2017-10-08 21:45:01 +00:00
|
|
|
socket:write(Crypto.encrypt({ pk = publicKey, dh = os.getComputerID() }, SHA1.sha1(password)))
|
2017-05-05 11:34:20 +00:00
|
|
|
|
2017-05-19 23:00:23 +00:00
|
|
|
local data = socket:read(2)
|
2017-05-05 11:34:20 +00:00
|
|
|
socket:close()
|
2017-05-19 23:00:23 +00:00
|
|
|
|
|
|
|
if data and data.success then
|
|
|
|
print(data.msg)
|
|
|
|
elseif data then
|
|
|
|
error(data.msg)
|
|
|
|
else
|
|
|
|
error('No response')
|
|
|
|
end
|