Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sun, 17 Jul 2011 12:56:07 +0400
From: "(GalaxyMaster)" <galaxy@...nwall.com>
To: john-users@...ts.openwall.com
Subject: Re: jtr for android

Guys,

I'm sorry that it took so long, I obviously had no spare time during the
last couple of weeks.  Anyway, I've uploaded the Android binary of John
to the Wiki
(http://openwall.info/wiki/john/custom-builds#Compiled-for-Android).

On Fri, Jun 24, 2011 at 09:19:09PM +0300, kalgecin wrote:
> Yeah I'll test the app. I'm also a dev so could help with some stuff

The uploaded binary is the "generic" build of JtR, so you shouldn't
expect it to squeeze the maximum of your Android device.  I've tested it
on my Samsung Galaxy S (rooted) with Gingerbread (2.3.4) and got the
following benchmark results (this was taken with CPU running at 1Ghz):
===
Benchmarking: Traditional DES [32/32 BS]... DONE
Many salts:     63239 c/s real, 77667 c/s virtual
Only one salt:  60748 c/s real, 74047 c/s virtual

Benchmarking: BSDI DES (x725) [32/32 BS]... DONE
Many salts:     2174 c/s real, 2667 c/s virtual
Only one salt:  2162 c/s real, 2624 c/s virtual

Benchmarking: FreeBSD MD5 [32/32 X2]... DONE
Raw:    1062 c/s real, 1306 c/s virtual

Benchmarking: OpenBSD Blowfish (x32) [32/32 X2]... DONE
Raw:    28.0 c/s real, 34.1 c/s virtual

Benchmarking: Kerberos AFS DES [24/32 128K]... DONE
Short:  17033 c/s real, 22285 c/s virtual
Long:   42308 c/s real, 52906 c/s virtual

Benchmarking: LM DES [32/32 BS]... DONE
Raw:    803500 c/s real, 984570 c/s virtual

Benchmarking: dummy [N/A]... DONE
Raw:    7804K c/s real, 9421K c/s virtual
===

If anybody wants to compile John for Android, you will need Android NDK
and the following two files:
===[ Application.mk ]===
APP_PROJECT_PATH := $(call my-dir)
APP_MODULES := john
===

and

===[ Android.mk ]===
LOCAL_PATH := $(call my-dir)/src
include $(CLEAR_VARS)
LOCAL_MODULE := john
LOCAL_SRC_FILES := DES_fmt.c DES_std.c DES_bs.c DES_bs_b.c \
	BSDI_fmt.c \
	MD5_fmt.c MD5_std.c \
	BF_fmt.c BF_std.c \
	AFS_fmt.c \
	LM_fmt.c \
	dummy.c \
	batch.c bench.c charset.c common.c compiler.c config.c cracker.c \
	crc32.c external.c formats.c getopt.c idle.c inc.c john.c list.c \
	loader.c logger.c math.c memory.c misc.c options.c params.c path.c \
	recovery.c rpp.c rules.c signals.c single.c status.c tty.c wordlist.c \
	unshadow.c \
	unafs.c \
	unique.c
include $(BUILD_EXECUTABLE)
===

Then, you create a standard Android project in Eclipse (or you can just create
a project directory under the NDK tree, check the sample to see the directory
structure), create the 'jni' directory under your project's root and
unpack JtR sources there, then put 'Application.mk' into your project's
root and 'Android.mk' into the jni directory.

After the above is done you are almost ready to compile John for Android
with the ndk-build script (included in NDK).  However, there is one
obstacle -- the arch.h header file is usually generated during the build
process (the detect binary is compiled and then it populates the
mentioned header file with values), but this won't work with NDK.

As a workaround, change directory to 'jni/src/', then execute 'make
generic' -- this will build a generic version of John for your system.
Save generic.h file somewhere outside the src directory, execute 'make
clean', then copy the saved 'generic.h' file back to src directory under
the arch.h name.

That's all, you are now ready to compile John for Android by launching
'ndk-build' from your project's root (I'm usually adding V=1 to make the
script more verbose).

Once the build process finishes, grab the binary from libs/armeabi/john
and upload to your Android device (along with the run directory from JtR
distribution).  You will need to put the 'john' binary to /system/xbin/
on your Android device since /mnt/sdcard is usually mounted with noexec.

I hope this was of any help to somebody.

-- 
(GM)

Powered by blists - more mailing lists

Your e-mail address:

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