Bueno ayer comencé a buscar archivos de firefox y di con 'sessionstore.bak', entondes terminé el mini modulo pero le hacia falta una limpieza, como no sabia como hacer esa limpieza le pedí a BlackZeroX que me ayduase a mejorarlo, a contianuación dejo mi codigo de fuente original y luego el codigo mejorado por BlackZeroX
Imagen del ejemplo mio :
(http://img518.imageshack.us/img518/1299/lolito.png)
Descargar codigo de SharkI (http://sharki.es/Mozilla%20Recovery%20Information.rar)
Y aqui os dejo el codigo en sucio de BlackZeroX :
Attribute VB_Name = "Module1"
Dim d()
Sub main()
'---------------------------------------------------------------------------------------------------º
'Trabajar con punteros al archivo -> Garantisa el devido uso de la memoria de la plicaciòn Actual!¡.º
'Este es un Codigo Sucio creado por: BlackZeroX (blackzerox2006@hotmail.com)------------------------º
Dim ByteI() As Long, ByteF As Long, SData As String, Archivo As String, GetD As String
Archivo = "c:\sessionstore.txt"
If Dir(Archivo, vbArchive) = "" Then GoTo Fin:
Open Archivo For Binary As 1
d = Array(Chr(34) & "url" & Chr(34) & ":", _
Chr(34) & "title" & Chr(34) & ":", _
Chr(34) & "ID" & Chr(34) & ":")
ReDim ByteI(UBound(d))
GetD = Space(255)
Get 1, , GetD
If Len(GetD) = 0 Then GoTo Fin:
'----------------------------------------------------------------
'Esto se deberia convertir en funcion para poder cargar los demas
'----------------------------------------------------------------
For i = 0 To 2
DoEvents
ByteI(i) = InStr(GetD, d(i))
If ByteI(i) = 0 Then Fin = True: GoTo Fin ' Termina Todo
Next i
'----------------------------------------------------------------
'Fin de supuesta funcion
'----------------------------------------------------------------
'URL
Seek 1, ByteI(0)
ByteF = ByteI(1) - ByteI(0)
SData = Space(ByteF)
Get 1, , SData
SData = Limpiar(SData)
MsgBox SData
'Title
Seek 1, ByteI(1)
ByteF = ByteI(2) - ByteI(1)
SData = Space(ByteF)
Get 1, , SData
SData = Limpiar(SData)
MsgBox SData
'ID
Seek 1, ByteI(2)
' aqui se deberia pasar la supuesta funciòn para delimitar el rango a cargar con el ByteI(0) SIGUIENTE
ByteF = 6
SData = Space(ByteF)
Get 1, , SData
SData = Limpiar(SData)
MsgBox Val(SData)
Fin:
Close 1
End Sub
Function Limpiar(StrData As String) As String
StrData = Replace(StrData, ",", "")
StrData = Replace(StrData, d(0), "")
StrData = Replace(StrData, d(1), "")
StrData = Replace(StrData, d(2), "")
StrData = Replace(StrData, Chr(34), "")
Limpiar = StrData
End Function
Saludos! :P
Hola, no hay ningun archivo con tal nombre en esa carpeta, por lo menos en la utlima versión de firefox...
saludos.
Cita de: seba123neo en 19 Agosto 2009, 02:36 AM
Hola, no hay ningun archivo con tal nombre en esa carpeta, por lo menos en la utlima versión de firefox...
saludos.
"c:\sessionstore.txt" ?
... yo copie dicho archivo a C para ahorrarme el tecleo y demàs...
esta es la ruta completa:
de forma predeterminada esta en:
(C:) X:\Documents and Settings\BlackZeroX\Datos de programa\Mozilla\Firefox\Profiles\fjlb5t1t.default\sessionstore.js
ò
(C:) X:\Documents and Settings\BlackZeroX\Datos de programa\Mozilla\Firefox\Profiles\fjlb5t1t.default\sessionstore.bak
El codigo esta en sucio y fue solo una idea que le di a Sharki, se pueden crear una funcion para leer los siguientes punteros al byte X del archivo (Para no cargarlo TODO en memoria si es que llegase a pesar mas de 1 mega en casos extremos) y seguir cargando los demàs datos existentes (Este solo era un ejemplo)
Cita de: seba123neo en 19 Agosto 2009, 02:36 AM
Hola, no hay ningun archivo con tal nombre en esa carpeta, por lo menos en la utlima versión de firefox...
saludos.
Yo obtuve la carpeta de la siguiente forma, puedes verlo en mi codigo de fuente :
Option Explicit
Dim xCarpeta As String, i As Integer, Lista As String, txtBasura As String
Dim Bin As String, Contenido() As String, File As String, dArchive As String, Delimiter As String
Public Function Obtener_Carpeta()
File = FreeFile
If Dir$(Environ$("AppData") & "\Mozilla\Firefox\profiles.ini", vbArchive) <> "" Then
Open Environ$("AppData") & "\Mozilla\Firefox\profiles.ini" For Binary As #File
Bin = Space(LOF(File))
Get #File, , Bin
Close #File
Contenido() = Split(Bin, "Path=Profiles/")
xCarpeta = Mid$(Contenido(1), 1, 16)
frmMain.Label1.Caption = Environ$("AppData") & "\Mozilla\Firefox\Profiles\" & xCarpeta
End If
End Function
Saludos! ;D
Deberías de cambiar los delimitadores del split (tengo un code similar y en mi caso usaba otro :P), ya que si buscas http: encontrás muchisimos, pero no todos son importantes, ya que muchas de las urls que aparecen en el sessionstore.js no son necesariamente las urls principales sino que son href, y quizás no se quiera estas.
Así que se podría eliminar estas directamente, .. o bien dar la opción de mostrar todos los links, o solo los principales (sin href)
Saludos