Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Thaorius en 15 Julio 2005, 20:32 pm



Título: Otra Pregunta Tonta
Publicado por: Thaorius en 15 Julio 2005, 20:32 pm
Hola gente.
Resulta que co mi troyano, me surgio otra duda.
Para conectarse con el servidor, yo tipeo le comando connect y me pide los datos.
Pero a mi me gustaria poder conectarme escribiendo:
connect -port 8865 -ip 231.62.135.21 -password 123
Mi duda, es que yo no se como hacer para que identifique lo que esta seguid de -port  y lo ponga como puerto remoto del winsock. l omism ocon password e ip.

Me pueden ayudar?.

Saludos


Título: Re: Analizar parámetros en una cadena
Publicado por: Slasher-K en 16 Julio 2005, 01:06 am
Utiliza las funciones InStr, Mid y Val para obtener los parámetros. Por ej:

Código:
Sub ParseParam(ParamSpec As String)
       Dim iFirstPos%, iLastPos%
       Dim iPort%, sIp$, sPass$

  iFirstPos = InStr(1, ParamSpec, "-port", vbTextCompare)

  If iFirstPos Then
    '5 = Len("-port")
    '
    iPort = Val(Mid$(ParamSpec, iFirstPos + 5))
  End If

  iFirstPos = InStr(1, ParamSpec, "-ip", vbTextCompare)

  If iFirstPos Then
    iLastPos = InStr(iFirstPos + 4, ParamSpec, " ")

    If iLastPos Then
      '3 = Len("-ip")
      '
      sIp = Mid$(ParamSpec, iFirstPos + 3, iLastPos - iFirstPos - 3)
    Else
      'Por si es el último parámetro que se especifica.
      '
      sIp = Mid$(ParamSpec, iFirstPos + 3)
    End If
  End If

  iFirstPos = InStr(1, ParamSpec, "-password", vbTextCompare)

  If iFirstPos Then
    iLastPos = InStr(iFirstPos + 10, ParamSpec, " ")

    If iLastPos Then
      '9 = Len("-password")
      '
      sPass$ = Mid$(ParamSpec, iFirstPos + 9, iLastPos - iFirstPos - 9)
    Else
      'Por si es el último parámetro que se especifica.
      '
      sPass$ = Mid$(ParamSpec, iFirstPos + 9)
    End If
  End If
End Sub

Y la próxima vez que postees algo ponele un título adecuado.

Saludos.


Título: Re: Otra Pregunta Tonta
Publicado por: Thaorius en 16 Julio 2005, 01:24 am
La verdad al leer el code me quede en el sub... xD.

No viene la caso, ahora lo pruebo y te cuento.

Respecto a lo del titulo no hay drama.

Saludos


Título: Re: Otra Pregunta Tonta
Publicado por: Thaorius en 16 Julio 2005, 01:41 am
Bueno, lo probe y funciona a medias.
Cuando quiero recuperar la informacion de la funcion, so logro que muestre el parametro password.
Este es el codigo que tengo.
Código:
Sub ParseParam(ParamSpec As String)
       Dim iFirstPos%, iLastPos%
       Dim iPort%, sIp$, sPass$

  iFirstPos = InStr(1, ParamSpec, "-port", vbTextCompare)

  If iFirstPos Then
    '5 = Len("-port")
    '
    iPort = Val(Mid$(ParamSpec, iFirstPos + 5))
    frmClientMain.txtLog.Text = iPort
  End If

  iFirstPos = InStr(1, ParamSpec, "-ip", vbTextCompare)

  If iFirstPos Then
    iLastPos = InStr(iFirstPos + 4, ParamSpec, " ")

    If iLastPos Then
      '3 = Len("-ip")
      '
      sIp = Mid$(ParamSpec, iFirstPos + 3, iLastPos - iFirstPos - 3)
      frmClientMain.txtLog.Text = sIp
    Else
      'Por si es el último parámetro que se especifica.
      '
      sIp = Mid$(ParamSpec, iFirstPos + 3)
      frmClientMain.txtLog.Text = sIp
    End If
  End If

  iFirstPos = InStr(1, ParamSpec, "-password", vbTextCompare)

  If iFirstPos Then
    iLastPos = InStr(iFirstPos + 10, ParamSpec, " ")

    If iLastPos Then
      '9 = Len("-password")
      '
      sPass$ = Mid$(ParamSpec, iFirstPos + 9, iLastPos - iFirstPos - 9)
      frmClientMain.txtLog.Text = sPass$
    Else
      'Por si es el último parámetro que se especifica.
      '
      sPass$ = Mid$(ParamSpec, iFirstPos + 9)
      frmClientMain.txtLog.Text = sPass$
    End If
  End If
End Sub
Private Sub Command1_Click()
Dim command As String
command = txtCommand.Text
Call ParseParam(command)
frmClientMain.txtLog.Text = frmClientMain.txtLog.Text & "Command> " & command & vbCrLf & sPass$
End Sub

Private Sub Form_Activate()
txtCommand.SetFocus
End Sub

Teens idea de que esta mal?

Saludos


Título: Re: Otra Pregunta Tonta
Publicado por: xavierote en 16 Julio 2005, 03:13 am
Simplemente declara las variables iPort%, sIp$, sPass$ como globales.
Si tienes visual basic 6, puedes hacerlo también de esta manera:

Código:
Option Explicit

'Variables globales
Dim sIp As String
Dim sPuerto As Integer
Dim sPassword As String

Private Sub Command1_Click()
Dim Comando() As String
Dim i As Integer
Comando = Split(Text1.Text, " ")

For i = 0 To UBound(Comando)
    Select Case LCase(Comando(i))
        Case "-ip"
            sIp = Comando(i + 1)
       
        Case "-port"
            sPuerto = Comando(i + 1)
       
        Case "-password"
            sPassword = Comando(i + 1)
           
    End Select
Next i

Text1.Text = sIp & vbCrLf & sPuerto & vbCrLf & sPassword
End Sub

Mas que nada, si tienes una versión inferior del Visual Basic 6, el comando "split()" no está, por tanto te toca hacerlo por método de búsqueda con el InStr y Mid como bien dijo Anhur.

Un Saludo.


Título: Re: Otra Pregunta Tonta
Publicado por: Thaorius en 16 Julio 2005, 14:46 pm
Tengo el vb6.
Ahora mismo estoy en un cyber porque un pariente esta en mi pc.
En un rato cuando se valla preubo tu codigo y te cuento.

Saludos.


Título: Re: Otra Pregunta Tonta
Publicado por: {_The_Alwar_} en 16 Julio 2005, 17:15 pm
jooder!!! cuanto tiempo llevo buscando esto!!! que wapo!

Oye sabriais como hacer para que si yo pongo en un text box msgbox "blabla" se ejecute eso como si yo lo hubiera escrito en el codigo???

Gracias


Título: Re: Otra Pregunta Tonta
Publicado por: Thaorius en 16 Julio 2005, 19:26 pm
al Probarlo, sale esto:
Código:

0


Estoy usando este comando:
connect -port 3265 -ip 65.26.156.152 -password 32hgh

Y el code haci:
Código:
'Variables globales
Dim sIp As String
Dim sPuerto As Integer
Dim sPassword As String

Private Sub Command1_Click()
Dim Comando() As String
Dim i As Integer
Comando = Split(txtLog.Text, " ")

For i = 0 To UBound(Comando)
    Select Case LCase(Comando(i))
        Case "-ip"
            sIp = Comando(i + 1)
       
        Case "-port"
            sPuerto = Comando(i + 1)
       
        Case "-password"
            sPassword = Comando(i + 1)
           
    End Select
Next i

txtLog.Text = sIp & vbCrLf & sPuerto & vbCrLf & sPassword
End Sub
Private Sub Form_Activate()
txtCommand.SetFocus
End Sub

Que puede ser?


Título: Re: Otra Pregunta Tonta
Publicado por: {_The_Alwar_} en 16 Julio 2005, 20:34 pm
a mi me funciono lo que pusieron


Título: Re: Otra Pregunta Tonta
Publicado por: Thaorius en 16 Julio 2005, 20:54 pm
Ezactamente como lo estas usando?


Título: Re: Otra Pregunta Tonta
Publicado por: xavierote en 16 Julio 2005, 23:35 pm
He encontrado los errores que has provocado:
De la forma que te dije yo, en el código tu escribes esto

Código:
Comando = Split(txtLog.Text, " ")

Mientras que según lo que he visto, tu no quieres sacar el comando del txtLog, sino del txtCommand. Por tanto será:

Código:
Comando = Split(txtCommand.Text, " ")

Para la forma que dijo Anhur, me equivoqué con lo de las variables globales, porque creía que lo utilizabas de otra manera. El error está en:

Código:
frmClientMain.txtLog.Text = iPort
frmClientMain.txtLog.Text = sIp
frmClientMain.txtLog.Text = sPass

Tendrías que poner:
Código:
frmClientMain.txtLog.Text = frmClientMain.txtLog.Text & iPort & vbCrLf
frmClientMain.txtLog.Text = frmClientMain.txtLog.Text & sIP & vbCrLf
frmClientMain.txtLog.Text = frmClientMain.txtLog.Text & sPass & vbCrLf
Para no borrar el contenido del cuadro de texto.
Por tanto, ahí están los dos errores.

Para alwar, si quieres ejecutar el comando MsgBox cuando lo escribes en tiempo de ejecución en un cuadro de texto, lo que tendrías que hacer, por ejemplo, sería:

Código:
Private Sub Command1_Click()
If LCase(Left$(text1.Text, Len("msgbox "))) = "msgbox " Then
    If Len(text1.Text) <> Len("msgbox ") Then
        MsgBox Right$(text1.Text, Len(text1.Text) - Len("msgbox "))
    End If
End If

text1.Text = ""
End Sub



Título: Re: Otra Pregunta Tonta
Publicado por: Thaorius en 16 Julio 2005, 23:49 pm
Pero esque los errores estupidos que cometo... solo yo...

Saludos y gracias.


Título: Re: Otra Pregunta Tonta
Publicado por: {_The_Alwar_} en 17 Julio 2005, 01:14 am
.. xavierote pero yo me referia que valiese cualquier comando.. se podria?


Título: Re: Otra Pregunta Tonta
Publicado por: xavierote en 17 Julio 2005, 10:48 am
Ahhh... ya se lo que quieres. Pues puede utilizar el Microsoft Script Control, que sirve para hacer scripts en varios lenguajes relacionados con visual basic y se pueden ejecutar en tiempo de ejecución.


Título: Re: Otra Pregunta Tonta
Publicado por: {_The_Alwar_} en 17 Julio 2005, 13:08 pm
ah! osea que ese control vale para eso? vale pos ya busco en google sobre ese control, o en la msdn