Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 14 Mar 2013 15:08:39 +0100
From: "Costin Enache" <e_costin@...oo.com>
To: <john-dev@...ts.openwall.com>
Subject: RE: clock err in timers (alarm, status ...) and fix

Err, a timer set at 10 sec will abort after approx. 15 sec. See below:


uname -a
Linux ea1 3.2.0-4-amd64 #1 SMP Debian 3.2.35-2 x86_64 GNU/Linux
ldd --version
ldd (Debian EGLIBC 2.13-37) 2.13
git clone git://github.com/magnumripper/JohnTheRipper -b bleeding-jumbo
JohnTheRipper-x

If I build with "make linux-x86-64-native", then I get this:
./john x --format=des --max-run-time=20 --progress-every=5         
Loaded 1 password hash (Traditional DES [128/128 BS SSE2-16])
guesses: 0  time: 0:00:00:04 0.00% (3)  c/s: 2228K  trying: 0563849 -
0563207
guesses: 0  time: 0:00:00:09 0.00% (3)  c/s: 2524K  trying: ml9948 - ml91es
guesses: 0  time: 0:00:00:14 0.00% (3)  c/s: 2633K  trying: scrrann1 -
scrrarth
guesses: 0  time: 0:00:00:19 0.00% (3)  c/s: 2697K  trying: kodgme - kodn19
guesses: 0  time: 0:00:00:21 0.00% (3)  c/s: 2704K  trying: 26749553 -
26749605
Session stopped (max run-time reached)

With "make linux-x86-64-opencl" I get this:
./john x --format=des --max-run-time=20 --progress-every=5
Loaded 1 password hash (Traditional DES [128/128 BS SSE2-16])
guesses: 0  time: 0:00:00:06 0.00% (3)  c/s: 2292K  trying: ggotiN - ggot33
guesses: 0  time: 0:00:00:14 0.00% (3)  c/s: 2566K  trying: mecyg - mew!i
guesses: 0  time: 0:00:00:21 0.00% (3)  c/s: 2671K  trying: 29637545 -
29637357
guesses: 0  time: 0:00:00:28 0.00% (3)  c/s: 2720K  trying: Sod47 - Soa9s
guesses: 0  time: 0:00:00:30 0.00% (3)  c/s: 2727K  trying: koty89 - kotyg5
Session stopped (max run-time reached)

In the first case, OS_TIMER=1,in the second one OS_TIMER=0 (as per arch.h,
disabled for OpenCL). I guess we should have some more precise timers for
OpenCL builds too :)

Cheers,
Costin

-----Original Message-----
From: Solar Designer [mailto:solar@...nwall.com] 
Sent: 14 March 2013 10:50
To: john-dev@...ts.openwall.com
Subject: Re: [john-dev] clock err in timers (alarm, status ...) and fix

On Thu, Mar 14, 2013 at 09:15:27AM +0100, Costin Enache wrote:
> John uses for the alarm, status, save and probably other timers the
> sysconf(_SC_CLK_TCK) value, which, at least on Linux, is hard coded to 
> a value of 100.

Actually, it varies by arch, and glibc obtains the value from the AT_CLKTCK
element in the auxiliary vector passed by the kernel on the stack of the
newly started program.  (This avoids having to make a syscall to find this
value out from the kernel.)  The hard-coded value of 100 in glibc is only a
fallback for the case that AT_CLKTCK is somehow not present.  On recent
kernels, this fallback should not be occurring.

Then, this value is not used by JtR as extensively as you seem to imply.
It is used to convert the values returned by times(2) to seconds.
I think this is correct.  It is also used in a few other places (relatively
unimportant), but it is not used for setting up timer intervals with the
kernel.  Instead, TIMER_INTERVAL (normally 1) is passed directly into
setitimer() via the tv_sec field.

> This means that the timers do not really work. On my system, an abort 
> timer set at 10 sec will abort after approx. 8 seconds.

Hmm.  Does your system somehow use HZ=125?  What arch?  What kernel build? -
a distro's or your custom (is the config custom too)?  What glibc version
and build?

Does your build of JtR have OS_TIMER enabled?

Thanks,

Alexander

Powered by blists - more mailing lists

Your e-mail address:

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