- O que é SSE2 em geral?
O SSE2 é um subconjunto de instruções especializadas estendidas do conjunto de instruções Intel x86. Eles são dedicados ao SIMD (Dados Múltiplos de Instrução Única), o que significa que em uma instrução eles podem manipular vários dados graças a registros extra-amplos específicos (ou seja, os registradores XMM que são 128-bits wides).
As possíveis divisões dos registradores XMM são mostradas na figura a seguir.
- O SS2E pode ser usado em processadores x86?
Qualquer processador Intel x86 relativamente recente possui um conjunto de instruções SSE2. Se você quiser verificar se a CPU tem, basta fazer:
$> 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
Você pode ver aqui todos os subconjuntos de instruções que seu processador incorporou. Você deve encontrar sse2
na lista (é o caso aqui).
- Por que esses builds como o john precisam do SSE2?
O SEE é realmente útil para lidar com processamento de sinais e algoritmos altamente paralelizados. No caso de John the Ripper, o conjunto de instruções SSE2 é usado para paralelizar o algoritmo de força bruta de função hash. Ele calcula várias tentativas de hash em uma instrução para acelerar a exploração do espaço-chave (ou para esgotar o diccionário).
- Por que esses builds não podem ser executados em um sistema que possui especificação SSE2?
É muito provável que esteja ligado a um motivo de software. Ou você instalou o sistema 32bits em uma CPU de 64bits (i386 sobre amd64), ou você pode não ter as ferramentas de compilação que são capazes de lidar com conjuntos de instruções SSE2. Também pode ser porque o sistema de compilação de John tem uma falha e não detectou adequadamente a capacidade do seu sistema.
Mas você não fornece informações suficientes sobre o sistema para resolver o problema.
Se você deseja instalar o john
, é melhor usar o pacote pré-compilado que vem com a sua distribuição (este é um pacote padrão em praticamente qualquer distribuição mainstream agora).