Aspas correntemente saindo

3

Eu tenho o seguinte comando:

python -c 'import crypt; print(crypt.crypt("$Password", crypt.mksalt(crypt.METHOD_SHA512)))'

Onde $Password é uma variável shell. Como posso expandi-lo corretamente como uma variável e não tê-lo tratado como um literal?

    
por Anoynmous 18.06.2018 / 05:09

2 respostas

7

Não faça isso como uma vulnerabilidade de injeção de código e também evite passar senhas em argumentos para comandos, pois eles se tornam públicos mostrando na saída de ps e às vezes eles são registrados em alguns logs de auditoria.

Usar variáveis de ambiente geralmente é melhor:

PASSWORD="$Password" python3 -c 'import os, crypt
print(crypt.crypt(os.getenv("PASSWORD"), crypt.mksalt(crypt.METHOD_SHA512)))'

(aqui usando a sintaxe VAR=value cmd , em oposição a export VAR , para que a variável de ambiente seja passada apenas para aquela chamada de um comando).

    
por 18.06.2018 / 08:00
2

Não.

python -c 'import sys; import crypt; print(crypt.crypt(sys.argv[1], crypt.mksalt(crypt.METHOD_SHA512)))' "$Password"
    
por 18.06.2018 / 05:18