Ejemplo n.º 1
0
void rfbDesText(unsigned char *inblock, unsigned char *outblock, unsigned long length,
                unsigned char *key) {
    for (unsigned int i = 0; i < 8; i++) {
        inblock[i] ^= key[i];
    }
    rfbDes(inblock, outblock);
    for (unsigned int i = 8; i < length; i += 8) {
        for (int j = 0; j < 8; j++) {
            inblock[i + j] ^= outblock[i + j - 8];
        }
        rfbDes(inblock + i, outblock + i);
    }

}
Ejemplo n.º 2
0
void rfbEncryptBytes(unsigned char *bytes, char *passwd)
{
    unsigned char key[8];
    unsigned int i;

    /* key is simply password padded with nulls */

    for (i = 0; i < 8; i++) {
	if (i < strlen(passwd)) {
	    key[i] = passwd[i];
	} else {
	    key[i] = 0;
	}
    }

    rfbDesKey(key, EN0);

    for (i = 0; i < CHALLENGESIZE; i += 8) {
	rfbDes(bytes+i, bytes+i);
    }
}
Ejemplo n.º 3
0
Archivo: env.c Proyecto: cuzz/xrdp
int DEFAULT_CC
env_check_password_file(char* filename, char* password)
{
  char encryptedPasswd[16];
  int fd;

  g_memset(encryptedPasswd, 0, 16);
  g_strncpy(encryptedPasswd, password, 8);
  rfbDesKey(g_fixedkey, 0);
  rfbDes((unsigned char*)encryptedPasswd, (unsigned char*)encryptedPasswd);
  fd = g_file_open(filename);
  if (fd == -1)
  {
    log_message(&(g_cfg->log), LOG_LEVEL_WARNING,
                "can't read vnc password file - %s",
                filename);
    return 1;
  }
  g_file_write(fd, encryptedPasswd, 8);
  g_file_close(fd);
  return 0;
}