I have a kinda problem about john in Kali x86. To make long story short, I can't allow to run john under Kali Linux 2.0 installed into LV, but as I remember I was able to run in older Kali and older version of john in VM. The error is:

Sorry, SSE2 is required for this build

Well the Kali runs with an enough cpu I think, so I looked it and for each core came out as:

root@kali:~# cat /proc/cpuinfo

 model name : Intel(R) Core(TM)2 Duo CPU     T5800  @ 2.00GHz
 microcode  : 0xa4
 cpu MHz    : 800.000
 cache size : 2048 KB
 flags      : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat 
              pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm 
              constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor
              ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm dtherm

And, the result of dmidecode:

root@kali:~# dmidecode -t 4

 # dmidecode 2.12
 SMBIOS 2.4 present.

  Handle 0x001E, DMI type 4, 35 bytes
  Processor Information
  Socket Designation: CPU
  Type: Central Processor
  Family: Pentium M
  Manufacturer: Intel(R) Corporation
  ID: FD 06 00 00 FF FB EB BF
  Signature: Type 0, Family 6, Model 15, Stepping 13
    FPU (Floating-point unit on-chip)
    VME (Virtual mode extension)
    DE (Debugging extension)
    PSE (Page size extension)
    TSC (Time stamp counter)
    MSR (Model specific registers)
    PAE (Physical address extension)
    MCE (Machine check exception)
    CX8 (CMPXCHG8 instruction supported)
    APIC (On-chip APIC hardware supported)
    SEP (Fast system call)
    MTRR (Memory type range registers)
    PGE (Page global enable)
    MCA (Machine check architecture)
    CMOV (Conditional move instruction supported)
    PAT (Page attribute table)
    PSE-36 (36-bit page size extension)
    CLFSH (CLFLUSH instruction supported)
    DS (Debug store)
    ACPI (ACPI supported)
    MMX (MMX technology supported)
    FXSR (FXSAVE and FXSTOR instructions supported)
    SSE (Streaming SIMD extensions)
    SSE2 (Streaming SIMD extensions 2)
    SS (Self-snoop)
    HTT (Multi-threading)
    TM (Thermal monitor supported)
    PBE (Pending break enabled)
Version: Intel(R) Core(TM)2 Duo CPU     T5800  @ 2.00GHz
Voltage: 1.6 V
External Clock: 800 MHz
Max Speed: 2000 MHz
Current Speed: 1200 MHz
Status: Populated, Enabled
Upgrade: <OUT OF SPEC>
L1 Cache Handle: 0x0021
L2 Cache Handle: 0x001F
L3 Cache Handle: Not Provided
Serial Number: Not Specified
Asset Tag: FFFF
Part Number: Not Specified

The result of uname

root@kali:~# uname -a
  Linux kali 4.0.0-kali1-686-pae #1 SMP Debian 4.0.4-1+kali2 (2015-06-03) i686 GNU/Linux

The result of gcc version

root@kali:~# gcc --version
  gcc (Debian 4.9.2-10) 4.9.2

However I installed John the Ripper 1.8 besides the one came preloaded with Kali Linux distribution and I didn't meet any benchmark for SSE2 during the compiling process.

  • So, what is SSE2 in general?
  • Can SS2E be used in x86 processors?
  • Why do those builds like john need SSE2?


  • Why can not those builds be run on a system which has SSE2 specification?

Thanks in advance.

  • According to the posted cpuinfo, sse2 is supported. How do you install john? I couldn't find the string Sorry, SSE2 is required for this build in the sources for 1.8.0
    – sebix
    Aug 22, 2015 at 9:49
  • 1
    And john does support plattforms without SSE2 when compiled from source, according to the Makefile.
    – sebix
    Aug 22, 2015 at 9:50
  • Give the result of uname -a and gcc --version.
    – perror
    Aug 22, 2015 at 10:22
  • For me it seems there's an error in the build, as SSE2 is clearly available.
    – sebix
    Aug 22, 2015 at 13:32
  • I agree with sebix, you have everything installed to get SSE2 instructions, there is probably a bug in the build-system of John.
    – perror
    Aug 22, 2015 at 13:43

2 Answers 2

  • What is SSE2 in general ?

SSE2 is a extended specialized instructions sub-set of Intel x86 instruction set. They are dedicated to SIMD (Single-Instruction Multiple Data) which means that in one instruction they can handle several data thanks to specific extra-wide registers (namely the XMM registers which are 128-bits wides).

The possible splits of the XMM registers are as shown in the following picture.

SIMD Extension sets

  • Can SS2E be used in x86 processors ?

Any relatively recent Intel x86 processor has SSE2 instruction set. If you want to check if you CPU has it, just do:

$> cat /proc/cpuinfo | grep flags | tail -n 1
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
        clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb
        rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology
        nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx
        est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt
        tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb pln
        pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust
        bmi1 avx2 smep bmi2 erms invpcid xsaveopt

You can see here all the instruction sub-sets that your processor has built-in. You should find sse2 in the list (it is the case here).

  • Why do those builds like john need SSE2 ?

SEE are really useful for handling signal processing and highly parallelized algorithms. In the case of John the Ripper, SSE2 instruction set is used to parallelized the hash-function brute-force algorithm. It computes several hash attempts in one instruction to speed-up the exploration of the key-space (or to exhaust the dictionnary).

  • Why can not those builds be run on a system which has SSE2 specification ?

It is very likely linked to a software reason. Either you installed 32bits system over a 64bits CPU (i386 over amd64), or you may not have the compile tools that are able to handle SSE2 instruction sets. It also may be because the build-system of John has a flaw and failed to detect properly the ability of your system.

But, you do not give enough information about your system to solve the problem.

If you want to install john, you better use the pre-compiled package that comes with your distribution (this is a standard package in almost any mainstream distribution now).

  • I see. Now I understood what it is exactly and what it is used for with this simple and quality explanation. But still something blur in my mind; If the cpu has SSE2 instruction sub-set or flag, why the build - john returns the SSE2 error? Am I missing something here?
    – cagcak
    Aug 21, 2015 at 22:51
  • First, check that you have SSE2 in your CPU. If you have it, it may be a problem at the software level (e.g. you have install a 32bits system over a 64bits processor, or you do not have install the full GCC suite, ... or many other software cause to not be able to handle SSE2).
    – perror
    Aug 22, 2015 at 6:11
  • Okey I have checked the flags before and I'm now pretty sure about SSE2 is supported and it exists. The cpu has i686 and I have gcc (Debian 4.9.2-10). I think something else I can't understand has been making the trouble. Anyway, thanks for response, I also think the error may cause in software level too.
    – cagcak
    Aug 22, 2015 at 8:29
  • While it is true what you are saying, you do not answer the question.
    – sebix
    Aug 22, 2015 at 9:52
  • I did but the question got almost totally rewritten, and I can't write as many answers as the asker's need...
    – perror
    Aug 22, 2015 at 10:16

Either Install old or newer version of john the ripper on kali linux 2.0 except which is installed on your system.Your Problem will solve.

  • Tried it and failed.
    – cagcak
    Aug 17, 2016 at 13:24

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .