/* 
 * Crack MySQL passwords with wordlist.
 * by Narcotic - <narcotic@motdlabs.org>
 *
 */
#include <stdio.h>
#include <string.h>


typedef unsigned char uchar;
typedef unsigned long ulong;


/* 
 * riped of MySQL source code
 * file: libmysql/password.c
 */
void hash_password(ulong *result, const char *password)
{
  register ulong nr = 1345345333L, add=7, nr2=0x12345671L;
  ulong tmp;
  
  for (; *password ; password++)
  {
    if (*password == ' ' || *password == '\t')
       continue;			/* skipp space in password */
       
    tmp  = (ulong) (uchar) *password;
    nr  ^= (((nr & 63)+add)*tmp)+ (nr << 8);
    nr2 += (nr2 << 8) ^ nr;
    add += tmp;
  }
  
  result[0] = nr  & (((ulong) 1L << 31) -1L); /* Don't use sign bit (str2int) */
  result[1] = nr2 & (((ulong) 1L << 31) -1L);
}

void print_hash(char *pass)
{
	ulong result[2];
	
	hash_password(result,pass);
	printf("0x%8x%8x\n",result[0],result[1]);
	
}

int main()
{
	char str[10];
	int i;
	
	str[1] = 0;
	
	for(i = 240; i < 255; i++)
	{
		str[0] = i;
		print_hash(str);
	}
	
	return 0;
}

