リモートデスクトップ

  • TCPポート3389で通信する.
  • RDP(Remote Desktop Protocol)は通信内容をRC4で暗号化するらしいが,コネクションの一部は暗号化されていない.Cookie: mstshash=に続いてユーザー名が含まれている.
  • rdesktopのiso.cファイルにあるiso_send_connection_request関数の内容.
static void
iso_send_connection_request(char *username)
{
        STREAM s;
        int length = 30 + strlen(username);

        s = tcp_init(length);

        out_uint8(s, 3);        /* version */
        out_uint8(s, 0);        /* reserved */
        out_uint16_be(s, length);       /* length */

        out_uint8(s, length - 5);       /* hdrlen */
        out_uint8(s, ISO_PDU_CR);
        out_uint16(s, 0);       /* dst_ref */
        out_uint16(s, 0);       /* src_ref */
        out_uint8(s, 0);        /* class */

        out_uint8p(s, "Cookie: mstshash=", strlen("Cookie: mstshash="));
        out_uint8p(s, username, strlen(username));

        out_uint8(s, 0x0d);     /* Unknown */
        out_uint8(s, 0x0a);     /* Unknown */

        s_mark_end(s);
        tcp_send(s);
}