John The Ripper 的 SSE2 要求
我
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
並且,結果
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
unname 的結果
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
gcc 版本的結果
root@kali:~# gcc --version gcc (Debian 4.9.2-10) 4.9.2
然而,我安裝
John the Ripper 1.8
了一個預裝了 Kali Linux 發行版的版本,並且在編譯過程中我沒有達到 SSE2 的任何基準。
- 那麼,一般來說什麼是 SSE2?
- SS2E 可以在 x86 處理器中使用嗎?
- 為什麼像 john 這樣的建構需要 SSE2?
編輯:
- 為什麼這些建構不能在具有 SSE2 規範的系統上執行?
提前致謝。
- SSE2 一般是什麼?
SSE2 是 Intel x86 指令集的擴展專用指令子集。它們專用於 SIMD(單指令多數據),這意味著由於特定的超寬寄存器(即 128 位寬的 XMM 寄存器),它們可以在一條指令中處理多個數據。
XMM 寄存器的可能拆分如下圖所示。
- 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
您可以在此處查看處理器內置的所有指令子集。您應該
sse2
在列表中找到(這裡就是這種情況)。
- 為什麼像 john 這樣的建構需要 SSE2 ?
SEE 對於處理信號處理和高度並行化的算法非常有用。在 John the Ripper 的案例中,SSE2 指令集用於並行化散列函式蠻力算法。它在一條指令中計算多次雜湊嘗試,以加快對鍵空間的探索(或耗盡字典)。
- 為什麼這些建構不能在具有 SSE2 規範的系統上執行?
這很可能與軟體原因有關。要麼您在 64 位 CPU 上安裝了 32 位系統(i386 在 amd64 上),要麼您可能沒有能夠處理 SSE2 指令集的編譯工具。也可能是因為 John 的建構系統存在缺陷,未能正確檢測到您系統的能力。
但是,您沒有提供有關係統的足夠資訊來解決問題。
如果要安裝
john
,最好使用發行版附帶的預編譯包(這是現在幾乎所有主流發行版中的標準包)。