Example #1
0
boolean rdp_send_data_pdu(rdpRdp* rdp, STREAM* s, uint8 type, uint16 channel_id)
{
	uint16 length;
	uint32 sec_bytes;
	uint8* sec_hold;

	length = stream_get_length(s);
	stream_set_pos(s, 0);

	rdp_write_header(rdp, s, length, MCS_GLOBAL_CHANNEL_ID);

	sec_bytes = rdp_get_sec_bytes(rdp);
	sec_hold = s->p;
	stream_seek(s, sec_bytes);

	rdp_write_share_control_header(s, length - sec_bytes, PDU_TYPE_DATA, channel_id);
	rdp_write_share_data_header(s, length - sec_bytes, type, rdp->settings->share_id);

	s->p = sec_hold;
	length += rdp_security_stream_out(rdp, s, length);

	stream_set_pos(s, length);
	if (transport_write(rdp->transport, s) < 0)
		return false;

	return true;
}
Example #2
0
BOOL rdp_send_message_channel_pdu(rdpRdp* rdp, wStream* s, UINT16 sec_flags)
{
    UINT16 length;
    UINT32 sec_bytes;
    int sec_hold;

    length = Stream_GetPosition(s);
    Stream_SetPosition(s, 0);

    rdp_write_header(rdp, s, length, rdp->mcs->messageChannelId);

    sec_bytes = rdp_get_sec_bytes(rdp);
    sec_hold = Stream_GetPosition(s);
    Stream_Seek(s, sec_bytes);

    Stream_SetPosition(s, sec_hold);
    length += rdp_security_stream_out(rdp, s, length, sec_flags);

    Stream_SetPosition(s, length);
    Stream_SealLength(s);

    if (transport_write(rdp->transport, s) < 0)
        return FALSE;

    return TRUE;
}
Example #3
0
BOOL rdp_send_data_pdu(rdpRdp* rdp, wStream* s, BYTE type, UINT16 channel_id)
{
    UINT16 length;
    UINT32 sec_bytes;
    int sec_hold;

    length = Stream_GetPosition(s);
    Stream_SetPosition(s, 0);

    rdp_write_header(rdp, s, length, MCS_GLOBAL_CHANNEL_ID);

    sec_bytes = rdp_get_sec_bytes(rdp);
    sec_hold = Stream_GetPosition(s);
    Stream_Seek(s, sec_bytes);

    rdp_write_share_control_header(s, length - sec_bytes, PDU_TYPE_DATA, channel_id);
    rdp_write_share_data_header(s, length - sec_bytes, type, rdp->settings->ShareId);

    Stream_SetPosition(s, sec_hold);
    length += rdp_security_stream_out(rdp, s, length, 0);

    Stream_SetPosition(s, length);
    Stream_SealLength(s);

    if (transport_write(rdp->transport, s) < 0)
        return FALSE;

    return TRUE;
}
Example #4
0
BOOL rdp_send(rdpRdp* rdp, wStream* s, UINT16 channel_id)
{
	int secm;
	UINT16 length;
	UINT32 sec_bytes;

	length = Stream_GetPosition(s);
	Stream_SetPosition(s, 0);

	rdp_write_header(rdp, s, length, channel_id);

	sec_bytes = rdp_get_sec_bytes(rdp);
	secm = Stream_GetPosition(s);
	Stream_Seek(s, sec_bytes);

	Stream_SetPosition(s, secm);
	length += rdp_security_stream_out(rdp, s, length);

	Stream_SetPosition(s, length);
	Stream_SealLength(s);

	if (transport_write(rdp->transport, s) < 0)
		return FALSE;

	return TRUE;
}
Example #5
0
BOOL rdp_send_data_pdu(rdpRdp* rdp, STREAM* s, BYTE type, UINT16 channel_id)
{
	UINT16 length;
	UINT32 sec_bytes;
	BYTE* sec_hold;

	length = stream_get_length(s);
	stream_set_pos(s, 0);

	rdp_write_header(rdp, s, length, MCS_GLOBAL_CHANNEL_ID);

	sec_bytes = rdp_get_sec_bytes(rdp);
	sec_hold = s->p;
	stream_seek(s, sec_bytes);

	rdp_write_share_control_header(s, length - sec_bytes, PDU_TYPE_DATA, channel_id);
	rdp_write_share_data_header(s, length - sec_bytes, type, rdp->settings->ShareId);

	s->p = sec_hold;
	length += rdp_security_stream_out(rdp, s, length);

	stream_set_pos(s, length);
	if (transport_write(rdp->transport, s) < 0)
		return FALSE;

	return TRUE;
}
Example #6
0
BOOL rdp_send(rdpRdp* rdp, STREAM* s, UINT16 channel_id)
{
	UINT16 length;
	UINT32 sec_bytes;
	BYTE* sec_hold;

	length = stream_get_length(s);
	stream_set_pos(s, 0);

	rdp_write_header(rdp, s, length, channel_id);

	sec_bytes = rdp_get_sec_bytes(rdp);
	sec_hold = s->p;
	stream_seek(s, sec_bytes);

	s->p = sec_hold;
	length += rdp_security_stream_out(rdp, s, length);

	stream_set_pos(s, length);

	if (transport_write(rdp->transport, s) < 0)
		return FALSE;

	return TRUE;
}
Example #7
0
BOOL rdp_send(rdpRdp* rdp, wStream* s, UINT16 channel_id)
{
    UINT16 length;

    length = Stream_GetPosition(s);
    Stream_SetPosition(s, 0);

    rdp_write_header(rdp, s, length, channel_id);

    length += rdp_security_stream_out(rdp, s, length, 0);

    Stream_SetPosition(s, length);
    Stream_SealLength(s);

    if (transport_write(rdp->transport, s) < 0)
        return FALSE;

    return TRUE;
}
Example #8
0
boolean rdp_send(rdpRdp* rdp, STREAM* s, uint16 channel_id)
{
	uint16 length;
	uint32 sec_bytes;
	uint8* sec_hold;

	length = stream_get_length(s);
	stream_set_pos(s, 0);

	rdp_write_header(rdp, s, length, channel_id);

	sec_bytes = rdp_get_sec_bytes(rdp);
	sec_hold = s->p;
	stream_seek(s, sec_bytes);

	s->p = sec_hold;
	length += rdp_security_stream_out(rdp, s, length);

	stream_set_pos(s, length);
	if (transport_write(rdp->transport, s) < 0)
		return false;

	return true;
}