X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=secure.c;h=41347752218f9757e8e5a38b2448f88a72e46c76;hb=7ca0c329125614fd191db809987a364a7538bcaa;hp=47d5e80ecd9d9a37077cf3413ae64270601cf611;hpb=97533ab1c16cf7dc2ce2314579816bd1c620733e;p=rdpsrv diff --git a/secure.c b/secure.c index 47d5e80..4134775 100644 --- a/secure.c +++ b/secure.c @@ -259,12 +259,12 @@ sec_encrypt(uint8 * data, int length) if (use_count == 4096) { - sec_update(sec_encrypt_key, sec_encrypt_update_key); - RC4_set_key(&rc4_encrypt_key, rc4_key_len, sec_encrypt_key); + sec_update(sec_decrypt_key, sec_decrypt_update_key); + RC4_set_key(&rc4_decrypt_key, rc4_key_len, sec_decrypt_key); use_count = 0; } - RC4(&rc4_encrypt_key, length, data, data); + RC4(&rc4_decrypt_key, length, data, data); use_count++; } @@ -276,12 +276,12 @@ sec_decrypt(uint8 * data, int length) if (use_count == 4096) { - sec_update(sec_decrypt_key, sec_decrypt_update_key); - RC4_set_key(&rc4_decrypt_key, rc4_key_len, sec_decrypt_key); + sec_update(sec_encrypt_key, sec_encrypt_update_key); + RC4_set_key(&rc4_encrypt_key, rc4_key_len, sec_encrypt_key); use_count = 0; } - RC4(&rc4_decrypt_key, length, data, data); + RC4(&rc4_encrypt_key, length, data, data); use_count++; } @@ -763,6 +763,22 @@ sec_recv(void) { printf("Received logon packet!\n"); rdp_get_logon_info(s); + + // demand activity + { + STREAM s; + + s = sec_init(g_encryption ? SEC_ENCRYPT : 0, 10); + out_uint16_le(s, 10); + out_uint16_le(s, (RDP_PDU_DEMAND_ACTIVE | 0x10)); + out_uint16_le(s, 1001); + + out_uint32_le(s, 0x103ea); + s_mark_end(s); + sec_send(s, g_encryption ? SEC_ENCRYPT : 0); + } + + continue; } if (sec_flags & SEC_CLIENT_RANDOM) { @@ -794,7 +810,7 @@ sec_recv(void) printf("\n"); // now we can generate the keys - sec_generate_keys(inr + SEC_RANDOM_SIZE, cacert, 8); + sec_generate_keys(inr + SEC_RANDOM_SIZE, cacert, 1); continue; } }