Foros del Web » Programando para Internet » Python »

Error usermod + crypt

Estas en el tema de Error usermod + crypt en el foro de Python en Foros del Web. Hola a todos! No se si alguien me podrá ayudar con python aunque no sea programación web. Tengo un problema con un script en pyhton ...
  #1 (permalink)  
Antiguo 30/12/2012, 19:54
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años, 6 meses
Puntos: 0
Error usermod + crypt

Hola a todos!

No se si alguien me podrá ayudar con python aunque no sea programación web.

Tengo un problema con un script en pyhton que estoy creando. El tema es que cuando doy click a un botón tengo que cambiar el password a un usuario pero tiene que estar en SHA-512

Este es mi código:

Código:
salt_chars = './' + string.ascii_letters + string.digits
salt = salt_chars[randint(0, 63)] + salt_chars[randint(0, 63)] + salt_chars[randint(0, 63)] + salt_chars[randint(0, 63)] + salt_chars[randint(0, 63)] + salt_chars[randint(0, 63)] + salt_chars[randint(0, 63)]
				
print salt
encrypted = crypt.crypt(pass1, '$6$%s$'%salt)
print encrypted
print elem //esto es el usuario
os.system('echo %s|sudo -S %s' % (str(contra), 'sudo usermod -p '+test+' '+str(elem)))
Por pantalla obtengo una contraseña correcta


En cambio, al abrir /etc/shadow, la contraseña no es correcta, faltan algunos carácteres



He intentado probar muchas cosas, pero nada, no lo consigo.

Alguien tiene alguna idea de que sucede?


Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 30/12/2012, 20:07
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Error usermod + crypt

Probablemente esto es lo que busques http://stackoverflow.com/questions/5...d-python-linux
  #3 (permalink)  
Antiguo 30/12/2012, 20:17
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Error usermod + crypt

Cita:
Iniciado por razpeitia Ver Mensaje
Probablemente esto es lo que busques [URL="http://stackoverflow.com/questions/5706597/changing-password-python-linux"]http://stackoverflow.com/questions/5706597/changing-password-python-linux[/URL]
Si, yo tengo que hacer la segunda opción, la de modificar el password en /etc/shadow el caso es que me falla :(:(:(
  #4 (permalink)  
Antiguo 30/12/2012, 21:04
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Error usermod + crypt

Los únicos caracteres que te faltan están al inicio y es el salt.

No tengo idea que tiene la variable test, pero ciertamente deberias revisar su contenido antes de llamar a usermod. Probablemente ese sea el error.
  #5 (permalink)  
Antiguo 30/12/2012, 21:37
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Error usermod + crypt

Después de un poco de pruebas esto es lo que le faltaba:

Código Python:
Ver original
  1. import string
  2. import crypt
  3. from random import randint
  4. import os
  5.  
  6. user = "guest"
  7. root_password = "PonysEnAlmibar"
  8. new_password = "test01"
  9.  
  10.  
  11. salt_chars = './' + string.ascii_letters + string.digits
  12. salt_length = 7
  13. salt = ''.join(salt_chars[randint(0, 63)] for _ in xrange(salt_length))
  14.  
  15. new_encrypted_password = crypt.crypt(new_password, '$6$%s$' % salt)
  16.  
  17. command = 'echo %s | sudo -S %s' % (str(root_password), 'sudo usermod -p \''+ new_encrypted_password + '\' ' + str(user))
  18. os.system(command)

PD: Usalo bajo tu propio riesgo :D
  #6 (permalink)  
Antiguo 31/12/2012, 03:31
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Error usermod + crypt

Cita:
Iniciado por razpeitia Ver Mensaje
Después de un poco de pruebas esto es lo que le faltaba:

Código Python:
Ver original
  1. import string
  2. import crypt
  3. from random import randint
  4. import os
  5.  
  6. user = "guest"
  7. root_password = "PonysEnAlmibar"
  8. new_password = "test01"
  9.  
  10.  
  11. salt_chars = './' + string.ascii_letters + string.digits
  12. salt_length = 7
  13. salt = ''.join(salt_chars[randint(0, 63)] for _ in xrange(salt_length))
  14.  
  15. new_encrypted_password = crypt.crypt(new_password, '$6$%s$' % salt)
  16.  
  17. command = 'echo %s | sudo -S %s' % (str(root_password), 'sudo usermod -p \''+ new_encrypted_password + '\' ' + str(user))
  18. os.system(command)

PD: Usalo bajo tu propio riesgo :D
:apla uso:

Genial! me funciona perfectamente!! Lo del +test+ es de las cientos de pruebas que hice, solo que al pastearlo en el foro se me pasó de cambiar.

He mirado y lo que me faltaba eran las barras:
Código:
\''+ new_encrypted_password + '\'
Si no es molestia, podrías explicarme el por que? cual es la función de las barras y cuando se deben de usar?

Muchísimas gracias!!!
  #7 (permalink)  
Antiguo 31/12/2012, 10:04
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Error usermod + crypt

El problema es que probablemente la la shell evaluaba los signos de $ para evitar eso tenia que poner las cosas entre comillas simples. Básicamente es para que te tome todo el texto literal y no trate de interpretar nada.
  #8 (permalink)  
Antiguo 31/12/2012, 11:29
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Error usermod + crypt

Genial! muchas gracias!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:00.