Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [day] [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"  
*****************************************************************************

Powered by blists - more mailing lists

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ