Websockets Javascript DES代码问题

时间:2015-12-05 09:17:17

标签: javascript c websocket des

以下是noVNC代码的摘录,

            if (this._sock.rQwait("auth challenge", 16)) { return false; }

        // TODO(directxman12): make genDES not require an Array
        var challenge = Array.prototype.slice.call(this._sock.rQshiftBytes(16));
            Util.Warn("Challenge " + challenge);
        var response = RFB.genDES(this._rfb_password, challenge);
            Util.Warn("Response " + response);
        this._sock.send(response);
            Util.Warn("Response " + response);
        this._updateState("SecurityResult");
        return true;

我的理解是客户端要求服务器用代码发送质询

this._sock.rQwait("auth challenge", 16)

然后,服务器正在发送客户端在代码

中收到的质询
this._sock.rQshiftBytes(16)

然后使用RFB.genDES对密码进行DES加密,并通过套接字发送响应。

然而,在服务器端,这是一个XVP代理程序,代码看起来像

unsigned int major, minor, type, res, challenge[4], response[16];

...

        case XVP_STATE_CHALLENGE_AUTH:
        srandom((unsigned int)(time(NULL) ^ 0xdf214a30));
        for (i = 0; i < 4; i++) {
            challenge[i] = (random() ^ 0x51a488ce);
        }
        if (!xvp_write_all(client_sock, challenge, sizeof(challenge)))
            return 1;
        xvp_proxy_state = XVP_STATE_RESPONSE_AUTH;
        xvp_proxy_writing = false;
        break;
    case XVP_STATE_RESPONSE_AUTH:
        if (!xvp_read_all(client_sock, response, 16))
            return 1;
        authok = (vm == xvp_multiplex_vm || wrongvm) ? false :
            xvp_password_vnc_ok(vm->password, client_ip,
                                (char *)challenge, (char *)response);
        xvp_proxy_state = XVP_STATE_CONFIRM_AUTH;
        xvp_proxy_writing = true;
        break;

挑战数组只有4个字节,正在使用代码

发送
!xvp_write_all(client_sock, challenge, sizeof(challenge))

但是,我的以下代码中的javascript日志显示了16个数字的数组。

Util.Warn("Challenge " + challenge);

e.g。挑战100,139,246,69,3,120,162,81,179,57,13,48,56,106,4,19

我的问题是java脚本是否真的使用this._sock.rQshiftBytes(16)从套接字读取16个字节,服务器在同一个套接字上只发送4个字节?

0 个答案:

没有答案