Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: rapbyone en 2 Julio 2014, 23:04 pm



Título: Obtener Wan IP en vb6
Publicado por: rapbyone en 2 Julio 2014, 23:04 pm
Alguien tiene algún código para obtener la WAN IP del router a través de vb6. la IP local la saco con el componente Winsock, pero la WAN IP no se como

alguna ayuda.
gracias amigos :D


Título: Re: Obtener Wan IP en vb6
Publicado por: engel lex en 3 Julio 2014, 03:55 am
entre las pocas formas (por no decir unica) de obtener el ip de wan es preguntandoselo a un servidor externo :P la otra es que tu programa se meta en el panel de administrador del router y saque los valores


Título: Re: Obtener Wan IP en vb6
Publicado por: Gh057 en 3 Julio 2014, 04:36 am
hola rapbyone, podrías hacerlo mediante consulta al servidor dns, que al cruzarlo con los registros de recursos AAAA, resuelve el nombre a su dirección ipv6; brindándote así el valor requerido. saludos


Título: Re: Obtener Wan IP en vb6
Publicado por: rapbyone en 3 Julio 2014, 04:49 am
entre las pocas formas (por no decir unica) de obtener el ip de wan es preguntandoselo a un servidor externo :P la otra es que tu programa se meta en el panel de administrador del router y saque los valores

Encontré este código que hace la consulta a un servidor externo, pero no me muestra la IP

Código:
Private Sub Command5_Click()
Dim cTemp As String
Dim arTemp() As String

Call URLDownloadToFile(0, "http://www.myipaddress.com/show-my-ip-address/", App.Path & "\ipaddress.htm", 0, 0)
If Dir(App.Path & "\ipaddress.htm") <> "" Then
    cTemp = CreateObject("Scripting.FileSystemObject").OpenTextFile(App.Path & "\ipaddress.htm").ReadAll
    If InStr(cTemp, "<h1>") > 0 Then
        arTemp = Split(Replace(cTemp, "</h1>", "<h1>"), "<h1>")
        MsgBox arTemp(1)
    Else
        MsgBox "Unknown IP Address"
    End If
    Kill App.Path & "\ipaddress.htm"
Else
    MsgBox "Unknown IP Address"
End If
End Sub

hola rapbyone, podrías hacerlo mediante consulta al servidor dns, que al cruzarlo con los registros de recursos AAAA, resuelve el nombre a su dirección ipv6; brindándote así el valor requerido. saludos

No tengo los conocimiento para lograrlo, suena genial, pero difícilmente lo logre hacer  :-(


Título: Re: Obtener Wan IP en vb6
Publicado por: engel lex en 3 Julio 2014, 05:00 am
Encontré este código que hace la consulta a un servidor externo, pero no me muestra la IP....

probaste meterte a la pagina a la que consultas?


Título: Re: Obtener Wan IP en vb6
Publicado por: Gh057 en 3 Julio 2014, 05:04 am
jejeje habia entendido para el diablo, entendi ipv6... y era visual XD

(la idea que te comentaba era simplemente consultar por el dominio y obtener la ip publica en hexa.)

con respecto al codigo en si para visual hay muchos... hay hasta un grupo de google... recursos vb, en fin otro para showmy... solo hay que buscar. la rueda esta hecha. lo insertas en un formulario y listo. saludos


Título: Re: Obtener Wan IP en vb6
Publicado por: rapbyone en 3 Julio 2014, 07:47 am
probaste meterte a la pagina a la que consultas?

Gracias por responder amigo, efectivamente el problema era la pagina, la cambie quedando así el codigo:

Código:
Dim cTemp As String
Dim arTemp() As String

Call URLDownloadToFile(0, "http://www.mediacollege.com/internet/utilities/show-ip.shtml", App.Path & "\ipaddress.htm", 0, 0)
If Dir(App.Path & "\ipaddress.htm") <> "" Then
    cTemp = CreateObject("Scripting.FileSystemObject").OpenTextFile(App.Path & "\ipaddress.htm").ReadAll
    If InStr(cTemp, "<h1>") > 0 Then
        arTemp = Split(Replace(cTemp, "</h1>", "<h1>"), "<h1>")
        MsgBox arTemp(1)
    Else
        MsgBox "Unknown IP Address"
    End If
    Kill App.Path & "\ipaddress.htm"
Else
    MsgBox "Unknown IP Address"
End If

El problema es que el msgbox me muestra el texto "Your IP Address is" y es al lado donde sale la WAN IP
se que modificando los valores de

Código:
If InStr(cTemp, "<h1>") > 0 Then
        arTemp = Split(Replace(cTemp, "</h1>", "<h1>"), "<h1>")
        MsgBox arTemp(1)

podría seleccionar que mostrar en el msgbox, pero no tengo claridad del como
me dan una mano amigos por favor

saludos


Título: Re: Obtener Wan IP en vb6
Publicado por: engel lex en 3 Julio 2014, 13:58 pm
revisa el código fuente de la pagina y ve que factores tienes que buscar para aislar el valor que quieres, más bien me parece demasiada casualidad que el valor que te devuelve sea casi el correcto XD


Título: Re: Obtener Wan IP en vb6
Publicado por: rapbyone en 3 Julio 2014, 14:21 pm
revisa el código fuente de la pagina y ve que factores tienes que buscar para aislar el valor que quieres, más bien me parece demasiada casualidad que el valor que te devuelve sea casi el correcto XD

ya casi, revisando el código de fuente de la pagina, me logre hacer que tome la IP, pero me falta sacar el texto inicial, así me sale:

(http://i39.servimg.com/u/f39/14/27/29/04/12412410.png)

este es el código de fuente:

Código:
<div id="content">

<h1>Your IP Address</h1>
<p>Your IP Address is: &nbsp; <b><font size="+1">

200.104.135.65


</font></b></p>
<p>If you have a static IP (Internet Protocol) address, this number will stay the same each time you visit. If you have a dynamic IP, the number will change each time you log on to the internet (or your ISP assigns a new IP).</p>
<!-- Footer -->
</div>

y así tengo el código en vb6

Código:
If Dir(App.Path & "\ipaddress.htm") <> "" Then
    cTemp = CreateObject("Scripting.FileSystemObject").OpenTextFile(App.Path & "\ipaddress.htm").ReadAll
    If InStr(cTemp, "<b>") > 0 Then
        arTemp = Split(Replace(cTemp, "</font>", "<p>"), "<p>")
        MsgBox arTemp(1)

ya casi :D


Título: Re: Obtener Wan IP en vb6
Publicado por: engel lex en 3 Julio 2014, 18:27 pm
usa MID o RIGHT para sacar el resto

aqui una referencia (http://msdn.microsoft.com/es-ve/library/dd789093.aspx) de msdn a las funciones de manejos de cadena de VB


Título: Re: Obtener Wan IP en vb6
Publicado por: rapbyone en 3 Julio 2014, 19:35 pm
usa MID o RIGHT para sacar el resto

aqui una referencia (http://msdn.microsoft.com/es-ve/library/dd789093.aspx) de msdn a las funciones de manejos de cadena de VB


no tengo conocimiento del manejo de cadenas de texto, podrías ayudarme de manera mas especifica por favor amigo, donde iria "MID" o "RIGHT"

gracias por la ayuda


Título: Re: Obtener Wan IP en vb6
Publicado por: engel lex en 3 Julio 2014, 20:07 pm
no tengo conocimiento del manejo de cadenas de texto, podrías ayudarme de manera mas especifica por favor amigo, donde iria "MID" o "RIGHT"

ves la referencia, buscas la funcion cual descripcion te parezca apropiada (ya te dije cuales eran, te adelanté ese paso), haces click en ella, buscas la version de la funcion que se adapte a lo que quieres, haces click...

allí tienes ejemplos... aunque sea revisa el link, que te lo di, me dices
Citar
podría seleccionar que mostrar en el msgbox, pero no tengo claridad del como
me dan una mano amigos por favor
sin embargo no haces el esfuerzo por aprender... y este foro es para eso... por eso te pasé una referencia...


Título: Re: Obtener Wan IP en vb6
Publicado por: 79137913 en 3 Julio 2014, 20:32 pm
HOLA!!!

Perdon por llegar tarde  ;D

Pero aca tenes una funcion completisima para obtener la ip externa, copia y pega el texto en un form vacio y voila, tu ip.

Esta funcion busca en varias webs tu posible ip externo y verifica que sea un ip valido.

Código
  1. Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
  2. Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
  3. Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
  4. Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
  5. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpszOp As String, ByVal lpszFile As String, ByVal lpszParams As String, ByVal LpszDir As String, ByVal FsShowCmd As Long) As Long
  6. Private Const IF_FROM_CACHE = &H1000000
  7. Private Const IF_MAKE_PERSISTENT = &H2000000
  8. Private Const IF_NO_CACHE_WRITE = &H4000000
  9. Private Const Webs As String = "http://bot.whatismyipaddress.com/ http://myip.dnsomatic.com/ http://ip.nfriedly.com/text"
  10. Private Const BUFFER_LEN = 256
  11. Public Function Gurl(sURL As String) As String
  12.    Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
  13.    Dim hInternet As Long, hSession As Long, lReturn As Long
  14.    hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
  15.    If hSession Then hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
  16.    If hInternet Then
  17.        iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
  18.        sData = sBuffer
  19.        Do While lReturn <> 0
  20.            iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
  21.            sData = sData + Mid(sBuffer, 1, lReturn)
  22.        Loop
  23.    End If
  24.    iResult = InternetCloseHandle(hInternet)
  25.    Gurl = Replace(sData, Chr(0), vbNullString)
  26. End Function
  27. Private Function CheckExternalIp() As String
  28. Dim IP As String
  29. Dim URLs() As String: URLs = Split(Webs)
  30. For x = 0 To UBound(URLs)
  31.    IP = Gurl(URLs(x))
  32.    If IsValidIp(IP) Then Exit For
  33. Next
  34. If IP = vbNullString Then MsgBox "Checkee su conexion a internet por favor, parece que esta fallando.", vbCritical, "Ups!": Unload Me
  35. CheckExternalIp = IP
  36. End Function
  37. Private Function IsValidIp(strIpAddress) As Boolean
  38.    Dim aTmp
  39.    IsValidIp = False
  40.    aTmp = Split(strIpAddress, ".")
  41.    If UBound(aTmp) <> 3 Then Exit Function
  42.    For Each field In aTmp
  43.    If field > 255 Then Exit Function
  44.    Next
  45.    IsValidIp = True
  46. End Function
  47.  
  48. Private Sub Form_Load()
  49.    Show
  50.    Print CheckExternalIp
  51. End Sub

GRACIAS POR LEER!!!


Título: Re: Obtener Wan IP en vb6
Publicado por: rapbyone en 3 Julio 2014, 21:28 pm
HOLA!!!

Perdon por llegar tarde  ;D

Pero aca tenes una funcion completisima para obtener la ip externa, copia y pega el texto en un form vacio y voila, tu ip.

Esta funcion busca en varias webs tu posible ip externo y verifica que sea un ip valido.

Código
  1. Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
  2. Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
  3. Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
  4. Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
  5. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpszOp As String, ByVal lpszFile As String, ByVal lpszParams As String, ByVal LpszDir As String, ByVal FsShowCmd As Long) As Long
  6. Private Const IF_FROM_CACHE = &H1000000
  7. Private Const IF_MAKE_PERSISTENT = &H2000000
  8. Private Const IF_NO_CACHE_WRITE = &H4000000
  9. Private Const Webs As String = "http://bot.whatismyipaddress.com/ http://myip.dnsomatic.com/ http://ip.nfriedly.com/text"
  10. Private Const BUFFER_LEN = 256
  11. Public Function Gurl(sURL As String) As String
  12.    Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
  13.    Dim hInternet As Long, hSession As Long, lReturn As Long
  14.    hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
  15.    If hSession Then hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
  16.    If hInternet Then
  17.        iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
  18.        sData = sBuffer
  19.        Do While lReturn <> 0
  20.            iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
  21.            sData = sData + Mid(sBuffer, 1, lReturn)
  22.        Loop
  23.    End If
  24.    iResult = InternetCloseHandle(hInternet)
  25.    Gurl = Replace(sData, Chr(0), vbNullString)
  26. End Function
  27. Private Function CheckExternalIp() As String
  28. Dim IP As String
  29. Dim URLs() As String: URLs = Split(Webs)
  30. For x = 0 To UBound(URLs)
  31.    IP = Gurl(URLs(x))
  32.    If IsValidIp(IP) Then Exit For
  33. Next
  34. If IP = vbNullString Then MsgBox "Checkee su conexion a internet por favor, parece que esta fallando.", vbCritical, "Ups!": Unload Me
  35. CheckExternalIp = IP
  36. End Function
  37. Private Function IsValidIp(strIpAddress) As Boolean
  38.    Dim aTmp
  39.    IsValidIp = False
  40.    aTmp = Split(strIpAddress, ".")
  41.    If UBound(aTmp) <> 3 Then Exit Function
  42.    For Each field In aTmp
  43.    If field > 255 Then Exit Function
  44.    Next
  45.    IsValidIp = True
  46. End Function
  47.  
  48. Private Sub Form_Load()
  49.    Show
  50.    Print CheckExternalIp
  51. End Sub

GRACIAS POR LEER!!!

Perfecto, gracias amigo :D