Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: VanX en 10 Julio 2011, 16:47 pm



Título: Obtener IP de una DNS vb6
Publicado por: VanX en 10 Julio 2011, 16:47 pm
Hola, buscando en google encontré este code que sirve para sacar la IP a una DNS pero me manda la solución en un MsgBox y necesitaria que se pudiera copiar. He intentado con todo lo que he podido pero no consigo hacerlo...

Código
  1. Option Explicit
  2.  
  3. Private Declare Function DnsQuery Lib "dnsapi" Alias "DnsQuery_A" (ByVal strname As String, ByVal wType As Integer, ByVal fOptions As Long, ByVal pServers As Long, ppQueryResultsSet As Long, ByVal pReserved As Long) As Long
  4. Private Declare Function DnsRecordListFree Lib "dnsapi" (ByVal pDnsRecord As Long, ByVal FreeType As Long) As Long
  5. Private Declare Function lstrlen Lib "kernel32" (ByVal straddress As Long) As Long
  6. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, ByVal Source As Long, ByVal Length As Long)
  7. Private Declare Function inet_ntoa Lib "ws2_32.dll" (ByVal pIP As Long) As Long
  8. Private Declare Function inet_addr Lib "ws2_32.dll" (ByVal sAddr As String) As Long
  9.  
  10. Private Const DnsFreeRecordList         As Long = 1
  11. Private Const DNS_TYPE_A                As Long = &H1
  12. Private Const DNS_QUERY_BYPASS_CACHE    As Long = &H8
  13.  
  14. Private Type VBDnsRecord
  15.    pNext           As Long
  16.    pName           As Long
  17.    wType           As Integer
  18.    wDataLength     As Integer
  19.    flags           As Long
  20.    dwTel           As Long
  21.    dwReserved      As Long
  22.    prt             As Long
  23.    others(35)      As Byte
  24. End Type
  25.  
  26. Private Sub Command1_Click()
  27.    MsgBox Resolve("google.com", "208.67.222.222")
  28. End Sub
  29.  
  30. Private Function Resolve(sAddr As String, Optional sDnsServers As String) As String
  31.    Dim pRecord     As Long
  32.    Dim pNext       As Long
  33.    Dim uRecord     As VBDnsRecord
  34.    Dim lPtr        As Long
  35.    Dim vSplit      As Variant
  36.    Dim laServers() As Long
  37.    Dim pServers    As Long
  38.    Dim sName       As String
  39.  
  40.    If LenB(sDnsServers) <> 0 Then
  41.        vSplit = Split(sDnsServers)
  42.        ReDim laServers(0 To UBound(vSplit) + 1)
  43.        laServers(0) = UBound(laServers)
  44.        For lPtr = 0 To UBound(vSplit)
  45.            laServers(lPtr + 1) = inet_addr(vSplit(lPtr))
  46.        Next
  47.        pServers = VarPtr(laServers(0))
  48.    End If
  49.    If DnsQuery(sAddr, DNS_TYPE_A, DNS_QUERY_BYPASS_CACHE, pServers, pRecord, 0) = 0 Then
  50.        pNext = pRecord
  51.        Do While pNext <> 0
  52.            Call CopyMemory(uRecord, pNext, Len(uRecord))
  53.            If uRecord.wType = DNS_TYPE_A Then
  54.                lPtr = inet_ntoa(uRecord.prt)
  55.                sName = String(lstrlen(lPtr), 0)
  56.                Call CopyMemory(ByVal sName, lPtr, Len(sName))
  57.                If LenB(Resolve) <> 0 Then
  58.                    Resolve = Resolve & " "
  59.                End If
  60.                Resolve = Resolve & sName
  61.            End If
  62.            pNext = uRecord.pNext
  63.        Loop
  64.        Call DnsRecordListFree(pRecord, DnsFreeRecordList)
  65.    End If
  66. End Function


saludos y gracias de antemano ;)


Título: Re: Obtener IP de una DNS vb6
Publicado por: raul338 en 10 Julio 2011, 17:43 pm
....y necesitaria que se pudiera copiar. He intentado con todo lo que he podido pero no consigo hacerlo...

Deberias buscar sobre la clase Clipboard

Código
  1. Private Sub Command1_Click()
  2.    MsgBox Resolve("google.com", "208.67.222.222")
  3. End Sub
  4.  


Título: Re: Obtener IP de una DNS vb6
Publicado por: 79137913 en 10 Julio 2011, 17:56 pm
HOLA!!!

Bueno, yo opte por lo facil la vez que lo quise hacer...

Podes guardar en in txt un comando ping y lo lees.

O conectate con un socket y ahí revisas el remote host ip.

GRACIAS POR LEER!!!


Título: Re: Obtener IP de una DNS vb6
Publicado por: Elemental Code en 11 Julio 2011, 02:35 am
http://support.microsoft.com/kb/160215
http://support.microsoft.com/kb/154512

Tadaaaaa

Si lei bien con eso deberia ser suficiente.




Podia necesitarlo en un futuro, prefiero colgarlo aca para no perderlo.

Código
  1. ' ////////////////////////////////////////////////////////////////
  2. ' // *GetIPfromHost                                             //
  3. ' // *Autor: Elemental Code (Milton.Candelero@gmail.com)        //
  4. ' // *Podeis agrandar o reducir el codigo, siempre y cuando se  //
  5. ' // respete la autoria y se me comuniquen esos cambios.        //
  6. ' ////////////////////////////////////////////////////////////////
  7. Option Explicit
  8. Public Function GetIPfromHost(ByRef sURL As String) As String
  9.    Dim WshShell, oExec, a$
  10.  
  11.    Set WshShell = CreateObject("WScript.Shell")
  12.    Set oExec = WshShell.Exec("ping " & sURL)
  13.    a$ = ""
  14.    Do While oExec.Status = 0
  15.         If Not oExec.StdOut.AtEndOfStream Then
  16.              a$ = a$ & oExec.StdOut.Read(1)
  17.         End If
  18.         DoEvents
  19.    Loop
  20.  
  21.    GetIPfromHost = Text_Between_Words(a$, "[", "]")
  22.  
  23.    Set oExec = Nothing
  24.    Set WshShell = Nothing
  25. End Function
  26.  
  27. ' ////////////////////////////////////////////////////////////////
  28. ' // *Text_Between_Words                                        //
  29. ' // *Autor: *PsYkE1* (miguelin.majo@gmail.com)                 //
  30. ' // *Podeis agrandar o reducir el codigo, siempre y cuando se  //
  31. ' // respete la autoria y se me comuniquen esos cambios.        //
  32. ' // *Agradecimientos a BlackZeroX.                             //
  33. ' // *Visita http://foro.rthacker.net                           //
  34. ' ////////////////////////////////////////////////////////////////
  35. Public Function Text_Between_Words(Text As String, String1 As String, _
  36. String2 As String) As String
  37.    Dim Pos1              As Integer
  38.    Dim Pos2              As Integer
  39.    Dim Start             As Integer
  40.    Dim TotalLen          As Integer
  41.    Pos1 = InStr(Text, String1)
  42.    Pos2 = InStr(Text, String2)
  43.    If Pos1 = 0 Or Pos2 = 0 Then Exit Function
  44.    Start = Pos1 + Len(String1)
  45.    TotalLen = Pos2 - Start
  46.    Text_Between_Words = Mid$(Text, Start, TotalLen)
  47. End Function

Mete esto en un modulo y llamalo asi:

Código
  1. msgbox GetIPfromHost ("www.google.com")

Espero que sirva (Muestra una cmd en blanco :S, voy a ver si logro arreglarlo)


Título: Re: Obtener IP de una DNS vb6
Publicado por: VanX en 11 Julio 2011, 13:34 pm
no me funciona lo del .txt, ya hace tiempo que los AV algunos lo detectan  :-\

gracias de todos modos