Openwall Project   /home  Owl  JtR  Pro  crypt  pam_passwdqc  tcb  phpass  scanlogd  popa3d  msulogin  /  Linux  BIND  /  advisories  presentations  /  services  donations  /  wordlists  passwords  /  news  community  lists  wiki  CVSweb  mirrors  signatures
bringing security into open environments
 
Password Recovery Resources on the Net
[<prev] [next>] [month] [year] [list]
Date: 12 Jun 2006 20:08:41 -0000
From: madfran <madfran@....alias.net>
To: john-users@...ts.openwall.com
Cc:
Subject: Re: Charset for NON english language

Hi,....

Solar Designer wrote,

>Yes, these two questions (as well as some others) are candidates for
>addition to the FAQ.

Well,... perhaps isn't Shakespeare, is very short explanation and include
the script wrote by Solar but can be the start point to add something to the
existing FAQ.

madfran

*************************************************************************

Q: How can I crack a hash that has non English characters?
A: In some aspects the question can be translate to: "How can I introduce, 
in the characters set used to crack, characters over the classical US-ASCII 
7bit"
These characters are the 96 original used in the old terminal since 1986.
But today, the world is growing and the NET is acceded from computer across
the countries in many different letters. Finding a solution, cleaver 
engineers, use the less needed ASCII characters, like #, to insert they
local characters. This solution is only useful for a local country, but
give many ambiguities when you exchange information with people across the 
world. The solution was to create the 8bit standard. It was a very good
solution for the roman writers but very bad for the hash crackers. The
characters set to try it is more than 236 in the case you want to try the
completed set.
If you want to do this you must,

1-Use the external mode.
2-Include in your john.conf the following code.
  [List.External:8bit]
  int length;				// Current length

  void init()
  {
	word[0] = 0x20 - 1;		// Start with " "
	word[length = 1] = 0;
  }

  void generate()
  {
	int i;

	i = length - 1;			// Start from the last character
	while (++word[i] > 0xff)	// Try to increase it
	if (i)				// Overflow here, any more positions?
		word[i--] = 0x20;	// Yes, move to the left, and repeat
	else				// No
	if (length < 8) {
		word[i = ++length] = 0;	// Switch to the next length
		while (i--)
			word[i] = 0x20;
		return;
	} else {
		word = 0; return;	// We're done
	}
  }

  void restore()
  {
	length = 0;			// Calculate the length
	while (word[length]) length++;
  }

3-Invoke it with "--external=8bit"  
*****************************************************************************

Hosted by DataForce ISP - Powered by Openwall GNU/*/Linux