Portál AbcLinuxu, 5. května 2025 13:11

Dotaz: python - rozdilne chovani pri volani z bash a primo

26.4.2012 11:47 1john2
python - rozdilne chovani pri volani z bash a primo
Přečteno: 225×
Odpovědět | Admin
Dobry den,

mam zajimavy problem.

#!/bin/bash python -c "import crypt, getpass, pwd;clear=getpass.getpass(); print crypt.crypt(clear, '\$6\$SALTsalt\$');"

Spravne vytvori sha-512 hash hesla.

#!/usr/bin/python import crypt, getpass, pwd;

print "Zadejte heslo administratora:"

clear = getpass.getpass()

print crypt.crypt(clear, '\$6\$saltSLAT\$')

print clear

Sice vytvori hash ale jiny, pravdepodobne des.

Napada vas co musim nastavit aby se kod choval stejne?

Dekuji za kazdy napad

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.4.2012 12:00 chrono
Rozbalit Rozbalit vše Re: python - rozdilne chovani pri volani z bash a primo
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chyba je v tej python variante:
#!/usr/bin/python
import crypt, getpass, pwd
print "Zadejte heslo administratora:"
clear = getpass.getpass()
print crypt.crypt(clear, '$6$SALTsalt$')
print clear
26.4.2012 12:02 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: python - rozdilne chovani pri volani z bash a primo
Presne - to co presne zavola bash oneliner se da zjistit, napr pomoci echo:
$ echo "import crypt, getpass, pwd;clear=getpass.getpass(); print crypt.crypt(clear, '\$6\$SALTsalt\$');"
import crypt, getpass, pwd;clear=getpass.getpass(); print crypt.crypt(clear, '$6$SALTsalt$');
26.4.2012 12:33 1john2 | skóre: 35 | blog: jo12hn | zlín, brno
Rozbalit Rozbalit vše Re: python - rozdilne chovani pri volani z bash a primo
diky za rychlou odpoved, takze kdyz volam primo python nemusim $ escapovat?
26.4.2012 16:28 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: python - rozdilne chovani pri volani z bash a primo
V Pythonu nema znak '$' specialni vyznam (narozdil od Bashe nebo napr Perlu), tudiz se nemusi escapovat. On se spis nesmi escapovat, viz dokumentace:

Unlike Standard C, all unrecognized escape sequences are left in the string unchanged, i.e., the backslash is left in the string. (This behavior is useful when debugging: if an escape sequence is mistyped, the resulting output is more easily recognized as broken.)


Tudiz '\$' je stejne jako '\\$'.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.