Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <BLU0-SMTP60137B7CE1512C0A3E8238FD270@phx.gbl>
Date: Sat, 5 Jan 2013 11:48:38 +0100
From: Frank Dittrich <frank_dittrich@...mail.com>
To: john-dev@...ts.openwall.com
Subject: Trying to build john without *_fmt_plug.c

I wanted to test whether building a binary without support for any
unnecessary formats would result in better performance.
So I first got the latest git changes (including 018ddb99).
Then I uncommented HAVE_KRB5, HAVE_NSS and HAVE_GMP in Makefile.
Then I did

(unstable-jumbo)src $ make clean > /dev/null
(unstable-jumbo)src $ mkdir plugins
(unstable-jumbo)src $ mv *_fmt_plug.c plugins/
(unstable-jumbo)src $ make linux-x86-native > /dev/null
make[1]: *** No rule to make target `*_fmt_plug.c', needed by
`fmt_externs.h'.  Stop.
make: *** [linux-x86-native] Error 2

(I removed the irrelevant rawSHA1_ng_fmt.c warning about not using
sse4.1 from the output.)

So, I need to provide at least some *_fmt_plug.c.

(unstable-jumbo)src $ touch empty_fmt_plug.c
(unstable-jumbo)src $ make clean > /dev/null
(unstable-jumbo)src $ make linux-x86-native > /dev/null
[...]
x86-sse.o: In function `nt_crypt_all_sse2':
(.text+0xb758): undefined reference to `nt_buffer1x'
x86-sse.o: In function `nt_crypt_all_sse2':
(.text+0xb7a9): undefined reference to `nt_buffer4x'
[...]
x86-sse.o: In function `nt_crypt_all_sse2':
(.text+0xbf82): undefined reference to `output4x'
x86-sse.o: In function `nt_crypt_all_sse2':
(.text+0xbf87): undefined reference to `output1x'
[...]
collect2: ld returned 1 exit status
make[1]: *** [../run/john] Error 1

All these variables are defined in NT_fmt_plug.c

Next attempt:
(unstable-jumbo)src $ mv plugins/NT_fmt_plug.c .
(unstable-jumbo)src $ make clean > /dev/null
(unstable-jumbo)src $ make linux-x86-native > /dev/null
cracker.o: In function `crk_process_guess':
cracker.c:(.text+0x6db): undefined reference to `mediawiki_fix_salt'
inc.o: In function `do_incremental_crack':
inc.c:(.text+0x2c36): undefined reference to `fmt_NETLM'
inc.c:(.text+0x2c41): undefined reference to `fmt_NETHALFLM'
loader.o: In function `ldr_load_pot_line':
loader.c:(.text+0x171f): undefined reference to `mediawiki_fix_salt'
collect2: ld returned 1 exit status
make[1]: *** [../run/john] Error 1
make: *** [linux-x86-native] Error 2

So, cracker.c and loader.c need mediawiki_fix_salt, and inc.c needs
fmt_NETLM and fmt_NETHALFLM.

(unstable-jumbo)src $ cd plugins/
(unstable-jumbo)plugins $ mv mediawiki_fmt_plug.c NETLM_fmt_plug.c
NETSPLITLM_fmt_plug.c ..
(unstable-jumbo)plugins $ cd ..
(unstable-jumbo)src $ make clean > /dev/null
(unstable-jumbo)src $ make linux-x86-native > /dev/null

This finally worked.

I managed to get rid of more than 100 plugin formats.
But currently, 4 plugin formats are required to build john:

(unstable-jumbo)src $ ls plugins/|wc -l
102
(unstable-jumbo)src $ cat fmt_registers.h
john_register_one(&fmt_NETHALFLM);
john_register_one(&fmt_NETLM);
john_register_one(&fmt_NT);
john_register_one(&fmt_mediawiki);

It would be nice if you could build john without any plugin format.
But I don't thin I'll find time for any fixes over the weekend.

Frank

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.