Hola, mi consulta es la siguiente, Tengo una hoja excel con macros, de las cuales, esta protegido con contraseña, el archivo es de sólo lectura, asi que no se puede hacer modificaciones, me gustaria saber si se puede encontrar la contraseña usando visual basic 6.0; he conseguido eliminar la contraseña pero sólo necesito saber cual es el pass >:D, encontré el code de la macros pero en excel 2003, y un code en planet source que no me funka todavia pero lo estoy viendo igual tambien hay una fuente en aspnet...
Tambien podria crearlo >:D
Dim objExcel As Excel.Application
Dim objExcelWorkBook As Excel.Workbook
Set objExcel = New Excel.Application
Set objExcelWorkBook = objExcel.Workbooks.Open _
(FileName:="c:\archivo.xls", _
ReadOnly:=False, _
Password:="contraseña")
objExcel.Visible = True
o la guía de recursos pero no me funka
Option Explicit
Private Type TMacros
NombreMacro As String
CodigoFuente As String
End Type
Dim Macros() As TMacros
Sub BuscarMacros(Libro As Workbook)
Dim c As Long, n As Long
Dim i As Long, lineas As Long
Dim TempCodigo As String
With Libro.VBProject.VBComponents
' elimina el arreglo
Erase Macros
' recorre los objetos del libro ( los módulos, las hojas, los libros)
For i = 1 To .Count
With .Item(i)
With .CodeModule
c = .CountOfLines ' cantidad de lineas
If c <> 0 Then
' obtiene las lineas y las almacena en TempCodigo
For lineas = 1 To c
TempCodigo = TempCodigo & .Lines(lineas, 1) & vbCrLf
Next
n = n + 1
' redimensionamos
ReDim Preserve Macros(1 To n)
' agregamos el nombre al array
Macros(n).NombreMacro = .Name
List1.AddItem .Name ' Añade al listbox
' Agrega el código
Macros(n).CodigoFuente = TempCodigo
TempCodigo = ""
End If
End With
End With
Next
End With
End Sub
Private Sub Command1_Click()
Dim ObjExcel As Object
Set ObjExcel = New Excel.Application
' abrimos
ObjExcel.Workbooks.Open "c:\libro1.xls"
' Pasamos el libro como parámetro
Call BuscarMacros(ObjExcel.ActiveWorkbook)
' cierra el Excel
ObjExcel.quit
Set ObjExcel = Nothing
End Sub
Private Sub Form_Load()
Command1.Caption = "Obtener"
End Sub
Private Sub List1_Click()
If List1.ListIndex <> -1 Then
' carga el fuente en el text1
Text1 = Macros(List1.ListIndex + 1).CodigoFuente
End If
End Sub
'Toy lejos
Si alguien tiene un ejemplo o algún enlace que lo quiera compartir, estaré muy agradecido, estoy usando excel 2007 y quiero encontrar la pass con vb, no usar programas externos compilados, lo hago para ver como va el source en vb gracias.
Saludos.
Con Passware Password Recovery Kit lo sacas en 2 patadas. (Es pago, asi que debes buscar uno 'gratis' ;D)
Saludos!
En la pagina de mygnet esta el código para obtener la contraseña de un documento de excel y de word protegidos por contraseña.
Dulces Lunas!¡.
Para sacar la passwd de la hoja (te tira una del estilo AAABCK" pero sirve)
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