Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 13 Mar 2012 07:44:31 -0700
From: Alain Espinosa <alainesp@...il.com>
To: john-dev@...ts.openwall.com
Subject: Re: Compile john in Windows 64 bits

On 2/21/12, Alain Espinosa <alainesp@...il.com> wrote:
> I will try mingw only first. VC express is free to use, but user need
> to download GB of data.

Hi. This is an email reporting progress in Mingw-x64 compilation of john.

Requirements downloaded from Mingw-x64 Sourceforge website:
1- MSYS binaries(used MSYS-20111123): a working command line with
required commands(cp, sed...)
2- GCC toolchain(used x86_64-w64-mingw32-gcc-4.7.0-2_rubenvb):
compiler, assembler...
3- OpenSSL(used OpenSSL-1.0.0a-bin-x64): general cryptography functions.
4- zlib(used zlib-1.2.5-bin-x64): library supporting deflate
compression/decompression

Added new make target:
----------------------------------------------------------
win32-mingw-x64:
	$(CP) x86-64.h arch.h
	@echo "#define JOHN_BLD" '"'$@... > john_build_rule.h
	$(MAKE) $(PROJ_WIN32_MINGW) \
		JOHN_OBJS="$(JOHN_OBJS) x86-64.o sse-intrinsics.o" \
		CFLAGS="$(CFLAGS) -Wall -mpreferred-stack-boundary=4 -m64" \
		LDFLAGS="$(LDFLAGS) -lgdi32 -llibeay32 -lWs2_32"
----------------------------------------------------------
Off topic question: Why OpenSSL need GDI, CreateDC, BitBlt and related
funtions? Why need socket support?

Compilation give some warnings(ignored) and some errors:
----------------------------------------------------------
bench.c: In function 'benchmark_format':
bench.c:123:19: error: storage size of 'it' isn't known
bench.c:196:2: warning: implicit declaration of function 'setitimer'
[-Wimplicit-function-declaration]
bench.c:196:16: error: 'ITIMER_REAL' undeclared (first use in this function)
bench.c:196:16: note: each undeclared identifier is reported only once
for each function it appears in
----------------------------------------------------------

Solved changing to: #define OS_TIMER 0 in "x86-64.h" file.

Compilation finishes fine and when execute:
$ ../run/john.exe --test
Benchmarking: Traditional DES [128/128 BS SSE2-16]...
john crashed. A look at disassembly(image attached) show access in SSE
code to a memory unaligned at 16 byte. Other formats works (testing in
a Celeron 430 1.8GHz CPU, Win7 SP1 64 bits):
----------------------------------------------------------
Released jumbo
----------------------------------------------------------
C:\Users\alain\Desktop\john179j5\run>john.exe --test --format=nt
Benchmarking: NT MD4 [128/128 SSE2 + 32/32]... DONE
Raw:    13582K c/s real, 13860K c/s virtual

C:\Users\alain\Desktop\john179j5\run>john.exe --test --format=nt2
Benchmarking: NT v2 [SSE2i 12x]... DONE
Raw:    15078K c/s real, 15505K c/s virtual

C:\Users\alain\Desktop\john179j5\run>john.exe --test --format=mscash
Benchmarking: M$ Cache Hash [Generic 1x]... DONE
Many salts:     10865K c/s real, 10865K c/s virtual
Only one salt:  4135K c/s real, 4197K c/s virtual
----------------------------------------------------------
Mingw-x64 compiled
----------------------------------------------------------
alain@...eronPC /c/Users/alain/Desktop/john-1.7.9-jumbo-5/src
$ ../run/john.exe --test -format=nt
Benchmarking: NT MD4 [128/128 X2 SSE2-16]... DONE
Raw:    16545K c/s

alain@...eronPC /c/Users/alain/Desktop/john-1.7.9-jumbo-5/src
$ ../run/john.exe --test -format=nt2
Benchmarking: NT v2 [SSE2i 12x]... DONE
Raw:    17537K c/s

alain@...eronPC /c/Users/alain/Desktop/john-1.7.9-jumbo-5/src
$ ../run/john.exe --test -format=mscash
Benchmarking: M$ Cache Hash [Generic 1x]... DONE
Many salts:     10051K c/s
Only one salt:  4135K c/s
----------------------------------------------------------

I do not test OMP support. Some formats as dummy, raw-sha* and others
increase performance by ~2x.

saludos,
alain

Download attachment "disassembly.zip" of type "application/zip" (16083 bytes)

Powered by blists - more mailing lists

Your e-mail address:

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