Example #1
0
static int process_auth_entry(char *auth_entry, const char *user,
			      u8 *dst_hash, u32 dst_len)
{
	char *auth_token, *auth_save;
	const char *auth_delim = ":";
	u32 centry = 0, found = 0, auth_tok_len;

	for (auth_token = strtok_r(auth_entry, auth_delim,
				   &auth_save); auth_token;
	     auth_token = strtok_r(NULL, auth_delim,
				   &auth_save)) {
		auth_tok_len = strlen(auth_token);
		if (!centry) {
			if (!strncmp(auth_entry, user, auth_tok_len)) {
				found = 1;
			}
		} else {
			if (found) {
				return string_to_digest(auth_token,
						        strlen(auth_token),
							dst_hash, dst_len);
			}
		}
		centry++;
	}

	return VMM_EFAIL;
}
Example #2
0
int main(int argc,char *argv[]) {
  char *md_str_1;
  unsigned char md_value_1[EVP_MAX_MD_SIZE];
  unsigned char md_value_2[EVP_MAX_MD_SIZE];
  unsigned int md_len_1,md_len_2;
  int j;
  int hint_len;

  if(argc!=3) {
    fprintf(stderr,"usage: bruteforce <hint> <md5sum of the password>\n");
    exit(1);
  }

  hint_len=strlen(argv[1]);
  md_str_1=argv[2];

  if(strlen(md_str_1)!=32) {
    fprintf(stderr,"md5sum has wrong length\n");
    exit(1);
  }
  string_to_digest(md_value_1,&md_len_1,md_str_1);
  if(md_len_1!=16) {
    fprintf(stderr,"digest has wrong length\n");
    exit(1);
  }

  try_buffer=malloc(strlen(argv[1])+50);
  try_buffer[0]=0;
  try_len=0;

  for(;;) {
    for(j=0;j<=hint_len;++j) {
      strcpy(try_buffer+try_len,argv[1]+j);
      calculate_md5_of(try_buffer,try_len+hint_len-j,md_value_2,&md_len_2);
      if(compare_digest(md_value_1,md_value_2,16)==0) {
	printf("The password is %s\n",try_buffer);
	return 0;
      }
    }
    increment_try_buffer();
  }
}
Example #3
0
int authenticate_user(const char *user, char *passwd)
{
	hash_digest_t passwd_sig, match_against;
	int i;

	calculate_hash(passwd, passwd_sig);

	memset(match_against, 0 , sizeof(match_against));

#if CONFIG_LIBAUTH_DEFAULT_USER
	if (!strncmp(user, CONFIG_LIBAUTH_DEFAULT_USERNAME, strlen(user))) {
		if (string_to_digest(libs_common_libauth_passwd_data_start,
				     libs_common_libauth_passwd_data_size,
				     (u8 *)&match_against,
				     sizeof(match_against)) != VMM_OK)
			return VMM_EFAIL;

		for (i = 0; i < HASH_LEN; i++) {
			if (match_against[i] != passwd_sig[i]) {
				return VMM_EFAIL;
			}
		}

		return VMM_OK;
	}
#endif

	if (get_user_hash(user,
		(u8 *)&match_against, sizeof(match_against)) == VMM_OK) {
		for (i = 0; i < HASH_LEN; i++) {
			if (match_against[i] != passwd_sig[i]) {
				return VMM_EFAIL;
			}
		}

		return VMM_OK;
	}

	return VMM_EFAIL;
}