[VB6] Obtener paginas visitadas de Mozilla Firefox

Iniciado por illuminat3d, 18 Agosto 2009, 20:22 PM

0 Miembros y 1 Visitante están viendo este tema.

illuminat3d

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 :



Descargar codigo de SharkI

Y aqui os dejo el codigo en sucio de BlackZeroX :

Código (vb) [Seleccionar]
   
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

seba123neo

Hola, no hay ningun archivo con tal nombre en esa carpeta, por lo menos en la utlima versión de firefox...

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

BlackZeroX

#2
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)
The Dark Shadow is my passion.

illuminat3d

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 :

Código (vb) [Seleccionar]

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

Novlucker

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
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein