elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Obtener Urls navegadores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener Urls navegadores  (Leído 3,239 veces)
noele1995

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Obtener Urls navegadores
« en: 31 Mayo 2012, 20:16 pm »

Bueno el otro dia se me ocurrio obtener las urls de los navegadores (para nada bueno  >:D >:D ) y buscando encontre una funcion de nuestro compañero LeandroA, pero esta solo podia sacar las URLs de Firefox,IExplorer y Opera. Me he puesto a investigar un poco para añadirle algun navegador mas y esto es lo que he sacado. A la funcion se le pasa el caption de la ventana de la que se queire obtener la url.

Código
  1. Option Explicit
  2.  
  3. Private Declare Function DdeInitialize Lib "user32" Alias "DdeInitializeA" (pidInst As Long, ByVal pfnCallback As Long, ByVal afCmd As Long, ByVal ulRes As Long) As Integer
  4. Private Declare Function DdeCreateStringHandle Lib "user32" Alias "DdeCreateStringHandleA" (ByVal idInst As Long, ByVal psz As String, ByVal iCodePage As Long) As Long
  5. Private Declare Function DdeConnect Lib "user32" (ByVal idInst As Long, ByVal hszService As Long, ByVal hszTopic As Long, pCC As Any) As Long
  6. Private Declare Function DdeFreeStringHandle Lib "user32" (ByVal idInst As Long, ByVal hsz As Long) As Long
  7. Private Declare Function DdeUninitialize Lib "user32" (ByVal idInst As Long) As Long
  8. Private Declare Function DdeClientTransaction Lib "user32.dll" (ByVal pData As Long, ByVal cbData As Long, ByVal hConv As Long, ByVal hszItem As Long, ByVal wFmt As Long, ByVal wType As Long, ByVal dwTimeout As Long, ByRef pdwResult As Long) As Long
  9. Private Declare Function DdeAccessData Lib "user32.dll" (ByVal hData As Long, ByRef pcbDataSize As Long) As Long
  10. Private Declare Function DdeUnaccessData Lib "user32.dll" (ByVal hData As Long) As Long
  11. Private Declare Function DdeFreeDataHandle Lib "user32.dll" (ByVal hData As Long) As Long
  12. Private Declare Function DdeDisconnect Lib "user32.dll" (ByVal hConv As Long) As Long
  13. Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long
  14.  
  15. Private Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
  16. Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal Hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
  17. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
  18.  
  19. Private Const FIREFOX       As String = "firefox"
  20. Private Const OPERA         As String = "opera"
  21. Private Const IEXPLORER     As String = "iexplore"
  22. Private Const CHROME        As String = "chrome"
  23. Private Const NETCAPTOR     As String = "netcaptor"
  24.  
  25. Private Const XCLASS_DATA   As Long = &H2000
  26. Private Const XTYP_REQUEST  As Long = (&HB0 Or XCLASS_DATA)
  27.  
  28. Private Const CP_WINANSI    As Long = 1004
  29. Private Const CF_TEXT       As Long = 1
  30.  
  31. Private Const WM_GETTEXT = &HD
  32.  
  33. Private Type WindowNavegador
  34.    Hwnd    As Long
  35.    Class   As String
  36. End Type
  37.  
  38. Private WindowsNavegadores() As WindowNavegador
  39.  
  40. Public Function GetBrowserInfo(ByVal Hwnd As Long, Optional ByVal WinCaption As String) As String
  41. On Error Resume Next
  42. Dim lpData      As Long, hData      As Long, sData      As String
  43. Dim hServer     As Long, hTopic     As Long, hItem      As Long
  44. Dim hConv       As Long, idInst     As Long, sServer    As String
  45. Dim Ret         As Long, i          As Long
  46. Dim sBuffer     As String, CLASS_1 As String, CLASS_2 As String
  47.  
  48. If WinCaption = "" Then
  49.    sBuffer = String$(1024, Chr$(0))
  50.    SendMessage Hwnd, WM_GETTEXT, Len(sBuffer), sBuffer
  51.    WinCaption = Replace$(sBuffer, Chr$(0), "")
  52.    If WinCaption = "" Then Exit Function
  53. End If
  54.  
  55. If InStr(1, LCase$(WinCaption), LCase$(CHROME)) <> 0 Then sServer = CHROME: CLASS_1 = "Chrome_OmniboxView": CLASS_2 = "Chrome_AutocompleteEditView"
  56. If InStr(1, LCase$(WinCaption), LCase$(FIREFOX)) <> 0 Then sServer = FIREFOX
  57. If InStr(1, LCase$(WinCaption), LCase$("INTERNET EXPLORER")) <> 0 Then sServer = IEXPLORER
  58. If InStr(1, LCase$(WinCaption), LCase$(OPERA)) <> 0 Then sServer = OPERA
  59. If InStr(1, LCase$(WinCaption), LCase$(NETCAPTOR)) <> 0 Then sServer = NETCAPTOR: CLASS_1 = "Edit": CLASS_2 = "Edit"
  60. If sServer = "" Then Exit Function
  61.  
  62. If sServer = FIREFOX Or sServer = OPERA Or sServer = IEXPLORER Then
  63.    If DdeInitialize(idInst, 0, 0, 0) <> 0 Then Exit Function
  64.  
  65.    hServer = DdeCreateStringHandle(idInst, sServer, CP_WINANSI)
  66.    hTopic = DdeCreateStringHandle(idInst, "WWW_GetWindowInfo", CP_WINANSI)
  67.    hItem = DdeCreateStringHandle(idInst, "0xFFFFFFFF", CP_WINANSI)
  68.  
  69.    hConv = DdeConnect(idInst, hServer, hTopic, ByVal 0&)
  70.  
  71.    If hConv Then
  72.        hData = DdeClientTransaction(0, 0, hConv, hItem, CF_TEXT, XTYP_REQUEST, 1000, 0)
  73.        lpData = DdeAccessData(hData, 500)
  74.        sBuffer = String$(500, Chr$(0))
  75.        lstrcpy sBuffer, lpData
  76.        GetBrowserInfo = Left$(sBuffer, InStr(sBuffer, Chr(0)) - 1)
  77.        DdeUnaccessData hData
  78.        DdeFreeDataHandle hData
  79.        DdeDisconnect hConv
  80.    End If
  81.  
  82.    DdeFreeStringHandle idInst, hServer
  83.    DdeFreeStringHandle idInst, hTopic
  84.    DdeFreeStringHandle idInst, hItem
  85.    DdeUninitialize idInst
  86.  
  87.    If GetBrowserInfo <> "" Then GetBrowserInfo = Split(GetBrowserInfo, ",")(0)
  88.    If Right$(GetBrowserInfo, 1) = """" Then GetBrowserInfo = Left$(GetBrowserInfo, Len(GetBrowserInfo) - 1)
  89.    If Left$(GetBrowserInfo, 1) = """" Then GetBrowserInfo = Right$(GetBrowserInfo, Len(GetBrowserInfo) - 1)
  90. End If
  91.  
  92. If sServer = CHROME Or sServer = NETCAPTOR Then
  93.    ReDim WindowsNavegadores(0)
  94.  
  95.    EnumChildWindows Hwnd, AddressOf EnumChildWndProc, 0&
  96.  
  97.    sBuffer = String$(1024, Chr$(0))
  98.    For i = 1 To UBound(WindowsNavegadores)
  99.        If WindowsNavegadores(i).Class = CLASS_1 Or WindowsNavegadores(i).Class = CLASS_2 Then
  100.            SendMessage WindowsNavegadores(i).Hwnd, WM_GETTEXT, Len(sBuffer), sBuffer
  101.            GetBrowserInfo = Replace$(sBuffer, Chr$(0), "")
  102.            Exit Function
  103.        End If
  104.    Next i
  105. End If
  106. End Function
  107.  
  108. Public Function EnumChildWndProc(ByVal Hwnd As Long, ByVal lParam As Long) As Long
  109. On Error Resume Next
  110. Dim Ret     As Long, sText  As String * 255
  111.  
  112. ReDim Preserve WindowsNavegadores(UBound(WindowsNavegadores) + 1)
  113. WindowsNavegadores(UBound(WindowsNavegadores)).Hwnd = Hwnd
  114.  
  115. Ret = GetClassName(Hwnd, sText, 255)
  116. If Ret <> 0 Then
  117.    WindowsNavegadores(UBound(WindowsNavegadores)).Class = Left$(sText, Ret)
  118. End If
  119.  
  120. EnumChildWndProc = 1
  121. End Function

La funcion esta un poco chapucera pero sirve :DD

PD: Espero que a LeandroA no le moleste haber modificado su funcion

Salu2 Noele1995



Edit: He puesto la funcion mas ordenada con los parametros que deberia llevar y mas cortita. Safari no lo he conseguido hacer si alguien tiene una idea de como sacar la url de safari que ponga un ejemoplo o me indique un poco porque estoy dando palos a ciegas.



« Última modificación: 2 Junio 2012, 13:57 pm por noele1995 » En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Obtener Urls navegadores
« Respuesta #1 en: 31 Mayo 2012, 21:07 pm »

LeandroA también mostró que puedes hacerlo con un label y las opciones DDE* del mismo. Muy útil si estás utilizando algún formulario y quieres ahorrar code.

Un saludo


En línea

noele1995

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Obtener Urls navegadores
« Respuesta #2 en: 31 Mayo 2012, 21:15 pm »

Si, eso se puede hacer en vez de usar las apis dde pero solo funciona con iexplorer, firefox y opera (igual que usando las apis), los demas no implementas las conversaciones dde y hay que buscar la ventana en la que se muestra la url para sacarla :-)
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Obtener Urls navegadores
« Respuesta #3 en: 31 Mayo 2012, 21:40 pm »

si algo así se habia hablado en su foro

Aunque de la forma recorrer por ventanas no te asegura que funcione en todos los chrome :P
En línea

seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Obtener Urls navegadores
« Respuesta #4 en: 31 Mayo 2012, 21:40 pm »

los navegadores mas usados del mundo segun las estadisticas son IE,Chrome,Firefox, Opera y Safari los otros ni figuran, no me calentaria en hacerlo para otros que no sean estos.
En línea

noele1995

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: Obtener Urls navegadores
« Respuesta #5 en: 31 Mayo 2012, 21:53 pm »

Si pero la forma esa de obtener el handle de la ventana del chrome no me funcionaba y aparte con el spy++ vi que la ventana que tenia la url no era esa aunque la debere modificar para todas las versiones.

Si, safari lo hare cuando tenga un rato netcaptor lo he hecho porque era el navegador que usaba antes y me apetecia.



Ahira que los pienso la funcion esta chapucera porqye si tienes el caption de l ventana tienes el hwnd y hay mas variables de las que deberia, hoy no puedo pero mañana la pongo optimizada y con el safari incluido  ;D ;D

salu2 Noele1995
« Última modificación: 1 Junio 2012, 17:15 pm por raul338 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Reconocer urls externas en php
PHP
Alex_bro 3 2,490 Último mensaje 1 Septiembre 2007, 00:11 am
por SeniorX
Encontrar URLs en un richtextbox
.NET (C#, VB.NET, ASP)
Jubjub 6 4,160 Último mensaje 24 Marzo 2008, 19:56 pm
por Jubjub
Problema con xml+php+flash+urls
PHP
skdna 0 2,220 Último mensaje 17 Diciembre 2009, 23:07 pm
por skdna
Sqlmap pretty urls
Nivel Web
cgvwzq 4 4,053 Último mensaje 8 Mayo 2010, 11:44 am
por cgvwzq
reescribir URLS
Desarrollo Web
Zeroql 0 1,605 Último mensaje 2 Octubre 2011, 16:09 pm
por Zeroql
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines