FreeRDP
|
#include <freerdp/config.h>
#include "nla.h"
#include "aad.h"
#include "mcs.h"
#include "tpkt.h"
#include "../codec/bulk.h"
#include "fastpath.h"
#include "tpdu.h"
#include "nego.h"
#include "input.h"
#include "update.h"
#include "license.h"
#include "errinfo.h"
#include "autodetect.h"
#include "heartbeat.h"
#include "multitransport.h"
#include "security.h"
#include "transport.h"
#include "connection.h"
#include "redirection.h"
#include "capabilities.h"
#include "channels.h"
#include <freerdp/freerdp.h>
#include <freerdp/settings.h>
#include <freerdp/log.h>
#include <freerdp/api.h>
#include <winpr/stream.h>
#include <winpr/crypto.h>
Data Structures | |
struct | rdpRdp |
#define DEBUG_RDP | ( | rdp, | |
... | |||
) |
#define PDU_TYPE_CONFIRM_ACTIVE 0x3 |
#define PDU_TYPE_DATA 0x7 |
#define PDU_TYPE_DEACTIVATE_ALL 0x6 |
#define PDU_TYPE_DEMAND_ACTIVE 0x1 |
#define PDU_TYPE_FLOW_RESPONSE 0x42 |
#define PDU_TYPE_FLOW_STOP 0x43 |
#define PDU_TYPE_FLOW_TEST 0x41 |
#define PDU_TYPE_SERVER_REDIRECTION 0xA |
#define RDP_PACKET_HEADER_MAX_LENGTH (TPDU_DATA_LENGTH + MCS_SEND_DATA_HEADER_MAX_LENGTH) |
#define RDP_SECURITY_HEADER_LENGTH 4 |
#define RDP_SHARE_CONTROL_HEADER_LENGTH 6 |
#define RDP_SHARE_DATA_HEADER_LENGTH 12 |
#define RDP_TAG FREERDP_TAG("core.rdp") |
#define SEC_AUTODETECT_REQ 0x1000 |
#define SEC_AUTODETECT_RSP 0x2000 |
#define SEC_ENCRYPT 0x0008 |
#define SEC_EXCHANGE_PKT 0x0001 |
FreeRDP: A Remote Desktop Protocol Implementation RDP Core
Copyright 2011 Marc-Andre Moreau marca Copyright 2014 DI (FH) Martin Haimberger ndre .more au@g mail. commarti n.ha imber ger@ thinc ast. com
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
#define SEC_FLAGSHI_VALID 0x8000 |
#define SEC_HEARTBEAT 0x4000 |
#define SEC_IGNORE_SEQNO 0x0020 |
#define SEC_INFO_PKT 0x0040 |
#define SEC_LICENSE_ENCRYPT_CS 0x0200 |
#define SEC_LICENSE_ENCRYPT_SC 0x0200 |
#define SEC_LICENSE_PKT 0x0080 |
#define SEC_PKT_CS_MASK (SEC_EXCHANGE_PKT | SEC_INFO_PKT) |
#define SEC_PKT_MASK (SEC_PKT_CS_MASK | SEC_PKT_SC_MASK) |
#define SEC_PKT_SC_MASK (SEC_LICENSE_PKT | SEC_REDIRECTION_PKT) |
#define SEC_REDIRECTION_PKT 0x0400 |
#define SEC_RESET_SEQNO 0x0010 |
#define SEC_SECURE_CHECKSUM 0x0800 |
#define SEC_TRANSPORT_REQ 0x0002 |
#define SEC_TRANSPORT_RSP 0x0004 |
#define STREAM_HI 0x04 |
#define STREAM_LOW 0x01 |
#define STREAM_MED 0x02 |
#define STREAM_UNDEFINED 0x00 |
enum rdpFinalizePduType |
enum rdpPduType |
const char* data_pdu_type_to_string | ( | UINT8 | type | ) |
const char* pdu_type_to_str | ( | UINT16 | pduType, |
char * | buffer, | ||
size_t | length | ||
) |
FREERDP_LOCAL BOOL rdp_channel_send_packet | ( | rdpRdp * | rdp, |
UINT16 | channelId, | ||
size_t | totalSize, | ||
UINT32 | flags, | ||
const BYTE * | data, | ||
size_t | chunkSize | ||
) |
FREERDP_LOCAL int rdp_check_fds | ( | rdpRdp * | rdp | ) |
FREERDP_LOCAL wStream* rdp_data_pdu_init | ( | rdpRdp * | rdp | ) |
Decrypt an RDP packet.
rdp | RDP module |
s | stream |
pLength | A pointer to the result variable, must not be NULL |
securityFlags | the security flags to apply |
const char* rdp_finalize_flags_to_str | ( | UINT32 | flags, |
char * | buffer, | ||
size_t | size | ||
) |
BOOL rdp_finalize_is_flag_set | ( | rdpRdp * | rdp, |
UINT32 | flag | ||
) |
BOOL rdp_finalize_reset_flags | ( | rdpRdp * | rdp, |
BOOL | clearAll | ||
) |
BOOL rdp_finalize_set_flag | ( | rdpRdp * | rdp, |
UINT32 | flag | ||
) |
FREERDP_LOCAL void rdp_free | ( | rdpRdp * | rdp | ) |
Free RDP module.
rdp | RDP module to be freed |
void rdp_free_rc4_decrypt_keys | ( | rdpRdp * | rdp | ) |
void rdp_free_rc4_encrypt_keys | ( | rdpRdp * | rdp | ) |
FREERDP_LOCAL void* rdp_get_io_callback_context | ( | rdpRdp * | rdp | ) |
FREERDP_LOCAL const rdpTransportIo* rdp_get_io_callbacks | ( | rdpRdp * | rdp | ) |
FREERDP_LOCAL BOOL rdp_io_callback_set_event | ( | rdpRdp * | rdp, |
BOOL | reset | ||
) |
void rdp_log_build_warnings | ( | rdpRdp * | rdp | ) |
FREERDP_LOCAL wStream* rdp_message_channel_pdu_init | ( | rdpRdp * | rdp | ) |
FREERDP_LOCAL rdpRdp* rdp_new | ( | rdpContext * | context | ) |
Instantiate new RDP module.
FREERDP_LOCAL BOOL rdp_read_header | ( | rdpRdp * | rdp, |
wStream * | s, | ||
UINT16 * | length, | ||
UINT16 * | channelId | ||
) |
Read an RDP packet header.
rdp | rdp module |
s | stream |
length | RDP packet length |
channelId | channel id |
Some servers like Windows Server 2008 R2 do not send the error info pdu when the user logs off like they should. Map DisconnectProviderUltimatum to a ERRINFO_LOGOFF_BY_USER when the errinfo code is ERRINFO_SUCCESS.
FREERDP_LOCAL BOOL rdp_read_security_header | ( | rdpRdp * | rdp, |
wStream * | s, | ||
UINT16 * | flags, | ||
UINT16 * | length | ||
) |
Read RDP Security Header. msdn{cc240579}.
s | stream |
flags | security flags |
FREERDP_LOCAL BOOL rdp_read_share_control_header | ( | rdpRdp * | rdp, |
wStream * | s, | ||
UINT16 * | tpktLength, | ||
UINT16 * | remainingLength, | ||
UINT16 * | type, | ||
UINT16 * | channel_id | ||
) |
FREERDP_LOCAL BOOL rdp_read_share_data_header | ( | rdpRdp * | rdp, |
wStream * | s, | ||
UINT16 * | length, | ||
BYTE * | type, | ||
UINT32 * | share_id, | ||
BYTE * | compressed_type, | ||
UINT16 * | compressed_len | ||
) |
FREERDP_LOCAL state_run_t rdp_recv_callback | ( | rdpTransport * | transport, |
wStream * | s, | ||
void * | extra | ||
) |
FREERDP_LOCAL state_run_t rdp_recv_data_pdu | ( | rdpRdp * | rdp, |
wStream * | s | ||
) |
FREERDP_LOCAL state_run_t rdp_recv_message_channel_pdu | ( | rdpRdp * | rdp, |
wStream * | s, | ||
UINT16 | securityFlags | ||
) |
FREERDP_LOCAL state_run_t rdp_recv_out_of_sequence_pdu | ( | rdpRdp * | rdp, |
wStream * | s, | ||
UINT16 | pduType, | ||
UINT16 | length | ||
) |
FREERDP_LOCAL BOOL rdp_reset | ( | rdpRdp * | rdp | ) |
BOOL rdp_reset_rc4_decrypt_keys | ( | rdpRdp * | rdp | ) |
BOOL rdp_reset_rc4_encrypt_keys | ( | rdpRdp * | rdp | ) |
BOOL rdp_reset_runtime_settings | ( | rdpRdp * | rdp | ) |
const char* rdp_security_flag_string | ( | UINT32 | securityFlags, |
char * | buffer, | ||
size_t | size | ||
) |
FREERDP_LOCAL BOOL rdp_send | ( | rdpRdp * | rdp, |
wStream * | s, | ||
UINT16 | channel_id | ||
) |
Send an RDP packet.
rdp | RDP module |
s | stream |
channel_id | channel id |
FREERDP_LOCAL BOOL rdp_send_channel_data | ( | rdpRdp * | rdp, |
UINT16 | channelId, | ||
const BYTE * | data, | ||
size_t | size | ||
) |
FREERDP_LOCAL BOOL rdp_send_data_pdu | ( | rdpRdp * | rdp, |
wStream * | s, | ||
BYTE | type, | ||
UINT16 | channel_id | ||
) |
BOOL rdp_send_error_info | ( | rdpRdp * | rdp | ) |
FREERDP_LOCAL BOOL rdp_send_message_channel_pdu | ( | rdpRdp * | rdp, |
wStream * | s, | ||
UINT16 | sec_flags | ||
) |
FREERDP_LOCAL BOOL rdp_send_pdu | ( | rdpRdp * | rdp, |
wStream * | s, | ||
UINT16 | type, | ||
UINT16 | channel_id | ||
) |
FREERDP_LOCAL wStream* rdp_send_stream_init | ( | rdpRdp * | rdp | ) |
FREERDP_LOCAL wStream* rdp_send_stream_pdu_init | ( | rdpRdp * | rdp | ) |
BOOL rdp_set_backup_settings | ( | rdpRdp * | rdp | ) |
BOOL rdp_set_error_info | ( | rdpRdp * | rdp, |
UINT32 | errorInfo | ||
) |
FREERDP_LOCAL BOOL rdp_set_io_callback_context | ( | rdpRdp * | rdp, |
void * | usercontext | ||
) |
FREERDP_LOCAL BOOL rdp_set_io_callbacks | ( | rdpRdp * | rdp, |
const rdpTransportIo * | io_callbacks | ||
) |
FREERDP_LOCAL BOOL rdp_write_header | ( | rdpRdp * | rdp, |
wStream * | s, | ||
size_t | length, | ||
UINT16 | channelId | ||
) |
Write an RDP packet header.
rdp | rdp module |
s | stream |
length | RDP packet length |
channelId | channel id |
FREERDP_LOCAL BOOL rdp_write_security_header | ( | rdpRdp * | rdp, |
wStream * | s, | ||
UINT16 | flags | ||
) |
Write RDP Security Header. msdn{cc240579}
s | stream |
flags | security flags |