mirror of https://github.com/FreeRDP/FreeRDP
channels/remdesk: add PassStub generation
This commit is contained in:
parent
f6d1d083e9
commit
21571eea88
|
@ -59,6 +59,7 @@ extern "C" {
|
|||
FREERDP_API BYTE* freerdp_assistance_hex_string_to_bin(const char* str, int* size);
|
||||
FREERDP_API char* freerdp_assistance_bin_to_hex_string(const BYTE* data, int size);
|
||||
|
||||
FREERDP_API char* freerdp_assistance_generate_pass_stub(DWORD flags);
|
||||
FREERDP_API char* freerdp_assistance_construct_expert_blob(const char* name, const char* pass);
|
||||
FREERDP_API BYTE* freerdp_assistance_encrypt_pass_stub(const char* password, const char* passStub, int* pEncryptedSize);
|
||||
|
||||
|
|
|
@ -25,6 +25,55 @@
|
|||
|
||||
#define REMDESK_SVC_CHANNEL_NAME "remdesk"
|
||||
|
||||
#define REMDESK_ERROR_NOERROR 0
|
||||
#define REMDESK_ERROR_NOINFO 1
|
||||
#define REMDESK_ERROR_LOCALNOTERROR 3
|
||||
#define REMDESK_ERROR_REMOTEBYUSER 4
|
||||
#define REMDESK_ERROR_BYSERVER 5
|
||||
#define REMDESK_ERROR_DNSLOOKUPFAILED 6
|
||||
#define REMDESK_ERROR_OUTOFMEMORY 7
|
||||
#define REMDESK_ERROR_CONNECTIONTIMEDOUT 8
|
||||
#define REMDESK_ERROR_SOCKETCONNECTFAILED 9
|
||||
#define REMDESK_ERROR_HOSTNOTFOUND 11
|
||||
#define REMDESK_ERROR_WINSOCKSENDFAILED 12
|
||||
#define REMDESK_ERROR_INVALIDIPADDR 14
|
||||
#define REMDESK_ERROR_SOCKETRECVFAILED 15
|
||||
#define REMDESK_ERROR_INVALIDENCRYPTION 18
|
||||
#define REMDESK_ERROR_GETHOSTBYNAMEFAILED 20
|
||||
#define REMDESK_ERROR_LICENSINGFAILED 21
|
||||
#define REMDESK_ERROR_ENCRYPTIONERROR 22
|
||||
#define REMDESK_ERROR_DECRYPTIONERROR 23
|
||||
#define REMDESK_ERROR_INVALIDPARAMETERSTRING 24
|
||||
#define REMDESK_ERROR_HELPSESSIONNOTFOUND 25
|
||||
#define REMDESK_ERROR_INVALIDPASSWORD 26
|
||||
#define REMDESK_ERROR_HELPSESSIONEXPIRED 27
|
||||
#define REMDESK_ERROR_CANTOPENRESOLVER 28
|
||||
#define REMDESK_ERROR_UNKNOWNSESSMGRERROR 29
|
||||
#define REMDESK_ERROR_CANTFORMLINKTOUSERSESSION 30
|
||||
#define REMDESK_ERROR_RCPROTOCOLERROR 32
|
||||
#define REMDESK_ERROR_RCUNKNOWNERROR 33
|
||||
#define REMDESK_ERROR_INTERNALERROR 34
|
||||
#define REMDESK_ERROR_HELPEERESPONSEPENDING 35
|
||||
#define REMDESK_ERROR_HELPEESAIDYES 36
|
||||
#define REMDESK_ERROR_HELPEEALREADYBEINGHELPED 37
|
||||
#define REMDESK_ERROR_HELPEECONSIDERINGHELP 38
|
||||
#define REMDESK_ERROR_HELPEENEVERRESPONDED 40
|
||||
#define REMDESK_ERROR_HELPEESAIDNO 41
|
||||
#define REMDESK_ERROR_HELPSESSIONACCESSDENIED 42
|
||||
#define REMDESK_ERROR_USERNOTFOUND 43
|
||||
#define REMDESK_ERROR_SESSMGRERRORNOTINIT 44
|
||||
#define REMDESK_ERROR_SELFHELPNOTSUPPORTED 45
|
||||
#define REMDESK_ERROR_INCOMPATIBLEVERSION 47
|
||||
#define REMDESK_ERROR_SESSIONNOTCONNECTED 48
|
||||
#define REMDESK_ERROR_SYSTEMSHUTDOWN 50
|
||||
#define REMDESK_ERROR_STOPLISTENBYUSER 51
|
||||
#define REMDESK_ERROR_WINSOCK_FAILED 52
|
||||
#define REMDESK_ERROR_MISMATCHPARMS 53
|
||||
#define REMDESK_ERROR_PASSWORDS_DONT_MATCH 61
|
||||
#define REMDESK_ERROR_SHADOWEND_BASE 300
|
||||
#define REMDESK_ERROR_SHADOWEND_CONFIGCHANGE 301
|
||||
#define REMDESK_ERROR_SHADOWEND_UNKNOWN 302
|
||||
|
||||
struct _REMDESK_CHANNEL_HEADER
|
||||
{
|
||||
UINT32 DataLength;
|
||||
|
|
|
@ -374,6 +374,54 @@ char* freerdp_assistance_construct_expert_blob(const char* name, const char* pas
|
|||
return ExpertBlob;
|
||||
}
|
||||
|
||||
char* freerdp_assistance_generate_pass_stub(DWORD flags)
|
||||
{
|
||||
UINT32 nums[14];
|
||||
char* passStub = NULL;
|
||||
char set1[64] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*_";
|
||||
char set2[12] = "!@#$&^*()-+=";
|
||||
char set3[10] = "0123456789";
|
||||
char set4[26] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
char set5[26] = "abcdefghijklmnopqrstuvwxyz";
|
||||
|
||||
passStub = (char*) malloc(15);
|
||||
|
||||
if (!passStub)
|
||||
return -1;
|
||||
|
||||
/**
|
||||
* PassStub generation:
|
||||
*
|
||||
* Characters 0 and 5-13 are from the set A-Z a-z 0-9 * _
|
||||
* Character 1 is from the set !@#$&^*()-+=
|
||||
* Character 2 is from the set 0-9
|
||||
* Character 3 is from the set A-Z
|
||||
* Character 4 is from the set a-z
|
||||
*
|
||||
* Example: WB^6HsrIaFmEpi
|
||||
*/
|
||||
|
||||
RAND_bytes((BYTE*) nums, sizeof(nums));
|
||||
|
||||
passStub[0] = set1[nums[0] % sizeof(set1)]; /* character 0 */
|
||||
passStub[1] = set2[nums[1] % sizeof(set2)]; /* character 1 */
|
||||
passStub[2] = set3[nums[2] % sizeof(set3)]; /* character 2 */
|
||||
passStub[3] = set4[nums[3] % sizeof(set4)]; /* character 3 */
|
||||
passStub[4] = set5[nums[4] % sizeof(set5)]; /* character 4 */
|
||||
passStub[5] = set1[nums[5] % sizeof(set1)]; /* character 5 */
|
||||
passStub[6] = set1[nums[6] % sizeof(set1)]; /* character 6 */
|
||||
passStub[7] = set1[nums[7] % sizeof(set1)]; /* character 7 */
|
||||
passStub[8] = set1[nums[8] % sizeof(set1)]; /* character 8 */
|
||||
passStub[9] = set1[nums[9] % sizeof(set1)]; /* character 9 */
|
||||
passStub[10] = set1[nums[10] % sizeof(set1)]; /* character 10 */
|
||||
passStub[11] = set1[nums[11] % sizeof(set1)]; /* character 11 */
|
||||
passStub[12] = set1[nums[12] % sizeof(set1)]; /* character 12 */
|
||||
passStub[13] = set1[nums[13] % sizeof(set1)]; /* character 13 */
|
||||
passStub[14] = '\0';
|
||||
|
||||
return passStub;
|
||||
}
|
||||
|
||||
BYTE* freerdp_assistance_encrypt_pass_stub(const char* password, const char* passStub, int* pEncryptedSize)
|
||||
{
|
||||
int status;
|
||||
|
|
Loading…
Reference in New Issue