As perguntas anteriores sobre SF que levaram a respostas que produzem a senha com hash MD5.
Alguém tem alguma sugestão para produzir uma senha com hash SHA-512? Eu preferiria um liner em vez de um script, mas, se um script é a única solução, tudo bem também.
Atualizar
Substituindo as versões py2 anteriores por esta:
python3 -c "import crypt;print(crypt.crypt(input('clear-text pw: '), crypt.mksalt(crypt.METHOD_SHA512)))"
linux
authentication
encryption
md5
Belmin Fernandez
fonte
fonte
man 5 shadow
refere-se a ele como "senha criptografada", então fui com esse termo./etc/shadow
conteúdo. Você verá$x$salt$hash
.x
denota o algoritmo usado porcrypt
,6
sendo típico em linuxes modernos, que é sha512 (consulteman 3 crypt
). Qualquer uma das respostas abaixo produzirá o mesmo hash, desde que você dê o mesmo sal.Respostas:
Aqui está uma lista:
O Python 3.3+ inclui
mksalt
no crypt , o que torna muito mais fácil (e mais seguro) o uso:Se você não fornecer um argumento para
crypt.mksalt
(que poderia aceitarcrypt.METHOD_CRYPT
,...MD5
,SHA256
, eSHA512
), ele usará o mais forte disponível.O ID do hash (número após o primeiro
$
) está relacionado ao método usado:Eu recomendo que você pesquise o que são sais e tal e, de acordo com os pequenos comerciantes, comente a diferença entre criptografia e hash.
Atualização 1: a sequência produzida é adequada para scripts shadow e kickstart. Atualização 2: Aviso. Se você estiver usando um Mac, consulte o comentário sobre como usá-lo em python em um Mac, onde ele não parece funcionar conforme o esperado.
fonte
random_salt
por um sal aleatório real.$6asQOJRqB1i2
- que não parece suficientemente longo para estar correto!python -c 'import crypt; print crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512))'
crypt.crypt("test", "$6$rounds=200000$random_salt")
. 200000 leva cerca de 100ms no meu laptop atual.No Debian, você pode usar o mkpasswd para criar senhas com diferentes algoritmos de hash adequados para o / etc / shadow. Está incluído no pacote whois (de acordo com o arquivo apt)
para obter uma lista dos algoritmos de hash disponíveis, digite:
HTH
fonte
mkpasswd
programa (parte da expectativa) no Fedora, mas é inútil para esse fim.mkpasswd
ele está falando é para o Debian / Ubuntu. Omkpasswd
no Fedora (pelo menos até 14) está faltando a-m
opção.dpkg -S /usr/bin/mkpasswd
eu mesmo não conseguia acreditar: Droot:$6$AbCdE$xyz:...
que você deve usar:mkpasswd -m sha-512 -S AbCdE
. Com a senha correta, você deve obter o mesmo hash.Melhor resposta: grub-crypt
fonte
grub-crypt
comando, essa é realmente a maneira mais infalível e conveniente de fazer isso. Não faz sentido brincar com sais manualmente quando você pode estragar tudo. O problema é que sistemas cada vez mais modernos têm GRUB2 e, portanto, não incluem este comando.Aqui está um código C curto para gerar a senha do SHA-512 em vários sistemas operacionais do tipo Unix.
Arquivo:
passwd-sha512.c
compilar:
uso:
fonte
Solução de uma linha Perl para gerar a senha com hash SHA-512:
perl -le 'print crypt "desiredPassword", "\$6\$customSalt\$"'
Trabalhou no RHEL 6
fonte
Por que não executar a seguinte verificação e modificação nas máquinas Centos / RHEL para garantir que todo o hash de senha para / etc / shadow seja feito com sha512. Então você pode simplesmente definir seu passworkd normalmente com o comando passwd
fonte
Aqui está um one-liner que usa comandos shell para criar uma senha com hash SHA-512 com um sal aleatório:
Notas
fonte
whois
pacote do Fedora 18 não fornece nenhummkpasswd
.Leia o comentário abaixo para aprender sobre as implicações de segurança desta resposta
Para aqueles da mentalidade Ruby, aqui está uma das frases:
fonte
Este script funcionou para mim no Ubuntu 12.04 LTS: https://gist.github.com/JensRantil/ac691a4854a4f6cb4bd9
Possui os seguintes recursos que algumas das outras alternativas não possuem:
fonte
chpasswd
no seu sistema.Os algos HASH destinam-se à produção de resumos MESSAGE, nunca são adequados para senhas, que devem usar algum tipo de HKDF ( http://tools.ietf.org/rfc/rfc5869.txt ) - consulte PBKDF2 ou BCrypt
fonte
man crypt
me diz que PBKDF2 não é suportado.Você pode cloná-lo no meu repositório do github, se quiser: https://github.com/antoncohen/mksha
fonte
Não é um liner, mas pode ajudar alguém:
fonte
random
não é criptograficamente seguro,os.urandom
deve ser usado. 8 caracteres de um dicionário de 56 caracteres também é muito pouco. Concatentating uma picada repetidamente em python é má forma também (ele tem O (n ^ 2) a complexidade)Obviamente, você apenas pega o segundo campo e pode excluir o arquivo depois de adicioná-lo à sombra ou para usá-lo com o sudo (ainda provavelmente sombra).
fonte
Dê uma olhada na página de manual do crypt (3) e acho que você descobrirá que a ferramenta crypt foi atualizada para usar glibc e sha256 (US $ 5) e sha512 (US $ 6), várias rodadas, sal muito maior e assim por diante .
Claramente, o SHA512 é relevante para o funcionamento do / etc / shadow.
Dito isto, esta página foi muito útil - em particular o MKPASSWD, pois isso resolveu MEU problema.
Dada uma senha potencialmente "perdida", eu posso usar o MKPASSWD e o salt para gerar o hash SHA512 e confirmar / negar uma lista de senhas candidatas.
Eu usaria John, o estripador - mas pelo menos no meu hardware (Raspberry Pi) e no meu orçamento (nada) - John não pode fazer isso (parece não suportar o material avançado de criptografia / glibc na versão gratuita raspbian.
Lembre-se, já que tenho permissão suficiente para ler / escrever / etc / shadow, eu poderia substituir o hash e continuar com a vida ... esse é um exercício acadêmico.
NOTAS Glibc notes A versão glibc2 desta função suporta algoritmos de criptografia adicionais.
fonte
Se você precisar de uma alternativa aos one-liners escritos em perl / python, mkpasswd é uma boa combinação. Embora esteja incluído no pacote whois do Debian, ele está ausente nos sistemas CentOS / RHEL. Modifiquei a versão Debian do mkpasswd e incluí um mecanismo mais forte de geração de sal baseado no OpenSSL. O binário resultante preserva completamente todos os parâmetros de linha de comando da versão do Debian. O código está disponível no github e deve ser compilado em qualquer versão do Linux: mkpasswd
fonte
Não tenho certeza de como o SHA-512 está relacionado
/etc/shadow
. Essas senhas sãocrypt
editadas.Mas se você quiser um hash de senha com o SHA-512, faça isso
echo -n the_password | sha512sum
. Você não pode usar a saída para / etc / shadow.fonte
echo -n the_password
então você não está fazendo hash na nova linha. </pedant>shadow
não são mais criptografadas desde anos. Sistemas modernos usam pelo menos MD5.shadow
ainda sãocrypt()
editadas, mas a função foi atualizada para oferecer suporte a vários algoritmos diferentes. Independentemente, o método descrito nesta resposta não produz hash adequado/etc/shadow
. O algoritmo é mais complexo que uma única rodada de hash SHA-512.