Question

Y at-il une fonction existante pour générer la clé de réponse du serveur dans Lua? Voici la solution en python: websocket problème handshake

J'ai les deux chiffres clés capturés, les espaces comptés, la troisième chaîne capturée et en espérant que les mensonges de repos dans une fonction existante ...

Était-ce utile?

La solution

Si besoin la poignée de main plus (protocole 0), vous pouvez utiliser le code suivant pour obtenir la valeur de prise de contact des deux touches:

md5 = require 'md5'

function getnumbers(str)
    local num = ""
    str:gsub('%d', function(d) num = num .. d end)
    return tonumber(num)
end
function countspaces(str)
    return select(2, str:gsub(' ', ' '))
end
function to32bitint(i)
    return string.char(i/256^3 % 256, i/256^2 % 256, i/256 % 256, i % 256)
end
function websocketresponse(key1, key2, end8)
    local n1, s1 = getnumbers(key1), countspaces(key1)
    local n2, s2 = getnumbers(key2), countspaces(key2)
    local cat = to32bitint(n1/s1) .. to32bitint(n2/s2) .. ending8
    return md5.sum(cat)
end

websocket_key1 = "18x 6]8vM;54 *(5:  {   U1]8  z [  8"
websocket_key2 = "1_ tx7X d  <  nw  334J702) 7]o}` 0"
ending8 = "Tm[K T2u"
print(websocketresponse(websocket_key1, websocket_key2, ending8))
--> fQJ,fN/4F4!~K~MH

Ce produit la même valeur que l'exemple donné dans le projet de protocole . Cet exemple utilise la bibliothèque MD5 pour calculer la somme de contrôle et est disponible compilé dans LuaForWindows

La mise en œuvre pour la version du protocole WebSocket 6 est beaucoup plus simple:

crypto = require 'crypto'
mime = require 'mime'

function websocketresponse6(key)
    local magic = key .. "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
    return (mime.b64(crypto.digest('sha1', magic, true)))
end 

key6 = "x3JJHMbDL1EzLkh9GBhXDw=="
print(websocketresponse6(key6))
--> HSmrc0sMlYUkAGmm5OPpG2HaGWk=

Cet exemple utilise le LuaCrypto somme SHA1 et MIME de luasocket.

Autres conseils

Jetez un oeil à la mise en œuvre lua-websockets . Voici le SHA1 choses .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top