Desproteger hoja de Excel con contraseña.

Trucos XP, Visual Basic 63 Comentarios »

¿Alguna vez has querido anular la contraseña de una hoja de Excel y no la recordabas?.

Bueno, este truco es muy antiguo pero no por ello menos efectivo. El resultado de aplicar este truco es la obtención de una contraseña valida para desproteger la hoja de excel. Al decir que es una contraseña valida quiero decir que no es la original pero nos permite desbloquearla igualmente.

El truco consiste en una rutina de programación que al ejecutarla (y esperar un rato mientras consigue la contraseña) nos muestra un mensaje con una contraseña válida.

Para ello, el código que pondré a continuación hay que ponerlo en un módulo de visual basic de la aplicación Excel. Lo puedes encontrar en el menú de Excel "Herramientas / Macro / Editor de Visual Basic" o bien pulsando (ALT+F11) para abrir el editor, pegamos el código, cerramos el editor.

Ahora seleccionamos la hoja que queremos desproteger y ejecutamos la macro "breakit" (ALT+F8 para seleccionarla). Tras la ejecución, un mensaje dará una contraseña equivalente, y la hoja ya estará desprotegida.

Sub breakit()

   Dim i As Integer, j As Integer, k As Integer
   Dim l As Integer, m As Integer, n As Integer

   On Error Resume Next
     For i = 65 To 66
      For j = 65 To 66
       For k = 65 To 66
        For l = 65 To 66
         For m = 65 To 66
          For i1 = 65 To 66
           For i2 = 65 To 66
            For i3 = 65 To 66
             For i4 = 65 To 66
              For i5 = 65 To 66
               For i6 = 65 To 66
                For n = 32 To 126

   ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
      Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
      Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

   If ActiveSheet.ProtectContents = False Then
      MsgBox "Un password valido es " & Chr(i) & Chr(j) & _
         Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) _
         & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
      Exit Sub
   End If
               Next
              Next
             Next
            Next
           Next
          Next
         Next
        Next
       Next
      Next
     Next
    Next

End Sub

Encriptar una contraseña en visual basic.

Visual Basic 2 Comentarios »

Esta función te permite comprobar la contraseña de un usuario contra una base de datos sin necesidad de conocerla. El proceso inverso no es posible.

La función está basada en otras que he recopilado por internet y he adecuado a los sistemas de información de mi empresa. Es correcta y cumple la ley de protección de datos ya que el administrador no conocerá la contraseña del usuario y queda almacenada en formato ilegible.

Desde que este algoritmo fue público, los usuarios deben evitar el uso de palabras individuales como contraseñas, ya que un programa "cracker" podría iniciar un bucle a través de un diccionario ortográfico y aplicar esta función para tratar de coincidir con el valor hashed. Para mas seguridad los usuarios deberían utilizar por lo menos dos palabras, y tal vez utilizar dígitos y signos de puntuación en la contraseña. Ya sabéis que a los hackers hay que ponérselo lo mas difícil posible, estas recomendaciones se las hago a mis usuarios pero otra cosa es que me hagan caso, seguro que unos cuantos de ellos tienen el nombre del marido o del hijo como contraseña.

Su uso se hace enviándole el usuario y la contraseña a la función para que te devuelva el valor hash y se contrasta con el valor almacenado en la base de datos.

Función:

Function HashPassword(ByVal vsUserId As String, ByVal vsPassword As String) As Double

Const uHASH_DEPTH = 6
Static k(uHASH_DEPTH) As Integer
Dim S As String
Dim I As Integer
Dim J As Integer
Dim k1 As Integer
Dim N As Integer
Dim fHash As Double
Dim fTemp As Double

' Si la contraseña está en blanco,
' el valor de hash sigue siendo cero.
' Por lo tanto significa "sin contraseña".
fHash = 0#

If vsPassword <> "" Then
' Si incluyes el nombre del usuario como parte del hash,
' dos usuarios con la misma contraseña no tendrán el mismo
' valor de hash:
S = vsPassword & vsUserId
's = UCase$(s) ' Activa esta linea para convertir a mayúsculas
N = Len(S)

k(1) = Asc(Mid$(S, 1, 1))
For J = 2 To uHASH_DEPTH
k1 = 1 + (k(J - 1) Mod N)
k(J) = Asc(Mid$(S, k1, 1))

If k(J) = k(J - 1) Then

k(J) = k(J) + 1
End If
Next J

For I = 1 To N
fTemp = I
For J = 1 To uHASH_DEPTH
k1 = 1 + ((I + k(J)) Mod N)
fTemp = fTemp * Asc(Mid$(S, k1, 1))
Next J

fHash = fHash + fTemp
Next I
End If

HashPassword = fHash
End Function

Uso de la función en el programa:

En la siguiente linea se hace una comparación entre la cadena hash que se supone que tenemos almacenada en la base de datos y la que ha tecleado el usuario.

bPwdOk es un boleano que nos dice si coincide el hash que tenemos almacenado en nuestra base de datos con el que ha tecleado el usuario.

bPwdOk = (StrComp(tabla!Pwd, HashPassword(txtUsuario.Text, txtPwd.Text), vbTextCompare) = 0)

  • tabla!pwd : campo que hemos obtenido a través de un recordset de la base de datos en la que está almacenado el valor hash de la contraseña del usuario.
  • txtUsuario.text : valor de la caja de texto del UserId, en el caso del gráfico D-SUAREZ.
  • txtPwd.text : el valor de la caja de texto que contiene la contraseña que ha escrito el usuario.

Ponerle una contraseña a una tarjeta de memoria en Nokia N70

Nokia N70 6 Comentarios »

Ve a Menú > Herramientas > Memoria. Ve luego a Opciones > Establecer contraseña. Escribe una contraseña para la tarjeta y pulsa Aceptar. Si la tarjeta de memoria se inserta en otro dispositivo, se pedirá la contraseña para poder acceder a los datos de la tarjeta.

Para eliminar la contraseña

Ve a Herramientas > Memoria> Opciones > Quitar contraseña y escribe la contraseña. De este modo se elimina la contraseña y queda desbloqueada la tarjeta de memoria.

WP Theme & Icons originales por N.Design Studio.
Aviso Legal Entradas RSS Comentarios RSS Iniciar sesión