开膛手约翰的 SSE2 要求

cag*_*cak 4 x86 kali-linux john-the-ripper

john在 Kali x86 中有点问题。长话短说,我不允许john在安装到 LV 的 Kali Linux 2.0 下运行,但我记得我能够在 VM 中运行旧版 Kali 和旧版 john。错误是:

抱歉,此版本需要 SSE2

好吧,我认为 Kali 以足够的 CPU 运行,所以我查看了它,每个核心的结果如下:

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
Run Code Online (Sandbox Code Playgroud)

并且,结果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
Flags:
    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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

gcc 版本的结果

root@kali:~# gcc --version
  gcc (Debian 4.9.2-10) 4.9.2
Run Code Online (Sandbox Code Playgroud)

但是,John the Ripper 1.8除了预装了 Kali Linux 发行版的那个之外,我还安装了它,并且在编译过程中我没有满足任何 SSE2 基准测试。

  • 那么,SSE2一般是什么?
  • SS2E 可以在 x86 处理器中使用吗?
  • 为什么像 john 这样的构建需要 SSE2?

编辑:

  • 为什么不能在具有 SSE2 规范的系统上运行这些构建?

提前致谢。

per*_*ror 8

  • SSE2 一般是什么?

SSE2 是 Intel x86 指令集的扩展专用指令子集。它们专用于 SIMD(单指令多数据),这意味着在一条指令中,由于特定的超宽寄存器(即 128 位宽的 XMM 寄存器),它们可以处理多个数据。

XMM 寄存器的可能拆分如下图所示。

SIMD 扩展集

  • SS2E 可以在 x86 处理器中使用吗?

任何相对较新的 Intel x86 处理器都有 SSE2 指令集。如果你想检查你的 CPU 是否有它,只需执行以下操作:

$> 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
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看处理器内置的所有指令子集。您应该sse2在列表中找到(这里就是这种情况)。

  • 为什么像 john 这样的构建需要 SSE2 ?

SEE 对于处理信号处理和高度并行化的算法非常有用。在开膛手约翰的情况下,SSE2 指令集用于并行化哈希函数蛮力算法。它在一条指令中计算多次哈希尝试,以加速对键空间的探索(或耗尽字典)。

  • 为什么不能在具有 SSE2 规范的系统上运行这些构建?

这很可能与软件原因有关。您在 64 位 CPU 上安装了 32 位系统(在 amd64 上安装了 i386),或者您可能没有能够处理 SSE2 指令集的编译工具。也可能是因为 John 的构建系统存在缺陷,未能正确检测您系统的能力。

但是,您没有提供有关系统的足够信息来解决问题。

如果要安装john,最好使用发行版附带的预编译包(这是现在几乎所有主流发行版中的标准包)。