Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: under!!! en 2 Agosto 2007, 20:46 pm



Título: Algo dificil de explicar
Publicado por: under!!! en 2 Agosto 2007, 20:46 pm
Mi duda es la siguiente ¿como mando datos de un exe a otro exe?, es decir al yo dar clic en un boton del exe1 y que me genere, no se un numero aleatorio o lo que sea pero que me mande el resultado del proceso a un cuadro de texto del exe2.
Espero y me explique bien


Título: Re: Algo dificil de explicar
Publicado por: Freeze. en 2 Agosto 2007, 21:08 pm
utiliza Los Sockets y envias informacion...

Puede ser una buena idea...


Título: Re: Algo dificil de explicar
Publicado por: under!!! en 2 Agosto 2007, 21:19 pm
Suena tonto pero cuales son los sockets :-[


Título: Re: Algo dificil de explicar
Publicado por: CeLaYa en 2 Agosto 2007, 21:29 pm
se refieren al control winsock, solo dale ctrl+t y te sale una ventana de componentes, selecciona la casilla que dice Microsoft Winsock Control..., si tienes la ayuda instalada consula "winsock" y te dara un ejemplo de este control, que por casualidad es exactamente lo que estas búscando.... Saludos!!!


Título: Re: Algo dificil de explicar
Publicado por: under!!! en 2 Agosto 2007, 21:38 pm
Pero segun yo el winsock es para conexión en red....... Me voy y a conectar a mi mismo equipo y luego buscar el exe o me conecta a la aplicacion


Título: Re: Algo dificil de explicar
Publicado por: ActiveSheet en 2 Agosto 2007, 21:43 pm
De echo si, te vaz a conectar a ti mismo, si saves tu IP Local pues marcas a tu IP local

Ejemplo 192.168.4.253 y o si no a 127.0.0.1 aun que nunca eh intentado conectarme con 127.0.0.1 pero tiene logica hacerlo ;) si no saves tu ip local sacala asi


Text1 = Winsock1.localIP

creo que es asi, ya tiene mucho que no manejo conexiones dejame ver si te puedo crear un ejemplo xD


Título: Re: Algo dificil de explicar
Publicado por: CeLaYa en 2 Agosto 2007, 21:45 pm
tú te has dado la respuesta, pero no tienes que buscar el exe, aqui lo importante es el puerto que uses, este es el ejemplo  del que te hablaba:

Para crear un servidor TCP
Cree un nuevo proyecto EXE estándar.
Cambie el nombre del formulario predeterminado a frmServer.
Cambie el título del formulario a "Servidor TCP".
Cree un control Winsock en el formulario y cambie su nombre a tcpServer.
Agregue dos controles TextBox al formulario. Llame al primero txtSendData y al segundo txtOutput.

Agregue el código siguiente al formulario.
Código:
Private Sub Form_Load()
' Establece la propiedad LocalPort en un entero.
' Después invoca el método Listen.
tcpServer.LocalPort = 1001
tcpServer.Listen
frmClient.Show     ' Muestra el formulario del cliente.
End Sub

Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
' Comprueba si el estado del control es cerrado.
' De lo contrario, cierra la conexión antes de
' aceptar la nueva conexión.
If tcpServer.State <> sckClosed Then _
tcpServer.Close
' Acepta la petición con el parámetro
' requestID.
tcpServer.Accept requestID
End Sub

Private Sub txtSendData_Change()
' El control TextBox llamado txtSendData
' contiene los datos que se van a enviar. Siempre
' que el usuario escribe en el cuadro de texto,
' se envía la cadena mediante el método SendData.
tcpServer.SendData txtSendData.Text
End Sub

Private Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
' Declara una variable para los datos entrantes.
' Invoca el método GetData y establece la propiedad
' Text de un control TextBox llamado txtOutput
' con los datos.
Dim strData As String
tcpServer.GetData strData
txtOutput.Text = strData
End Sub

Los procedimientos anteriores permiten crear una aplicación de servidor sencilla. No obstante, para completar el ejemplo, deberá crear también una aplicación cliente.

Para crear un cliente de TCP
Agregue un nuevo formulario al proyecto y llámelo frmClient.
Cambie el título del formulario a "Cliente TCP".
Agregue un control Winsock al formulario y llámelo tcpClient.
Agregue dos controles TextBox a frmClient. Llame al primero txtSend y al segundo txtOutput.
Cree un control CommandButton en el formulario y llámelo cmdConnect.
Cambie el título del control CommandButton a Connect.

Agregue el código siguiente al formulario.
Importante   Asegúrese de que cambia el valor de la propiedad RemoteHost al nombre descriptivo del equipo.

Código:
Private Sub Form_Load()
' El nombre del control Winsock es tcpClient.
' Nota: para especificar un host remoto, puede usar
' la dirección IP (como "121.111.1.1") o
' el nombre "descriptivo" del equipo, como se muestra aquí.
tcpClient.RemoteHost = "NombreEquipoRemoto"
tcpClient.RemotePort = 1001
End Sub

Private Sub cmdConnect_Click()
' Invoca el método Connect para iniciar
' una conexión.
tcpClient.Connect
End Sub

Private Sub txtSendData_Change()
tcpClient.SendData txtSend.Text
End Sub

Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpClient.GetData strData
txtOutput.Text = strData
End Sub


El código anterior crea una aplicación cliente-servidor sencilla. Para probar las dos aplicaciones al mismo tiempo, ejecute el proyecto y haga clic en Conectar. A continuación, escriba texto en el control TextBox txtSendData de cualquiera de los formularios y el mismo texto aparecerá en el control TextBox txtOutput del otro formulario.



Título: Re: Algo dificil de explicar
Publicado por: ~~ en 2 Agosto 2007, 21:55 pm
Hombre si los dos exe's estan en el mismo pc me parece un poco tonto conectarte con winsock... con crear un archivo de texto q el otro exe lea ya nos bastaria no?


Título: Re: Algo dificil de explicar
Publicado por: CeLaYa en 2 Agosto 2007, 22:07 pm
Hombre si los dos exe's estan en el mismo pc me parece un poco tonto conectarte con winsock... con crear un archivo de texto q el otro exe lea ya nos bastaria no?

eso tambien vale, pero habria que ver si uziel200 necesita que cuando el programa envie datos el otro programa ejecute alguna acción, de ser asi habria que poner un timer que este checando si existe el archivo


Título: Re: Algo dificil de explicar
Publicado por: under!!! en 2 Agosto 2007, 22:07 pm
Oigan muchas gracias por el codigo y la explicacion lo voy a probar ;D


Título: Re: Algo dificil de explicar
Publicado por: under!!! en 2 Agosto 2007, 22:10 pm
Pues de echo si el chiste de todo esto es como si fuera un sistema con seguridad y lo quisieras tronar con fuerza bruta.
Claro el programa no tendria proteccion contra fueza bruta


Título: Re: Algo dificil de explicar
Publicado por: under!!! en 2 Agosto 2007, 22:22 pm
Miren les voy a explicar un poco mas.
Esto es un ejercicio personal mas que para romper seguridad ya que como sabemos los sistemas estan protegidos contra fuerza bruta.

Supangamos que tenemos un formulario solamente con un command1 .(exe1)
Y otro formulario con un textbox1 y un boton de aceptar. (exe2)

Al dar clic en en command1 del exe1 (espero y me entiendan)
genere un bucle como este

Código
  1. For chr_uno = Asc("a") To Asc("z")
  2.    For chr_dos = Asc("a") To Asc("z")
  3.    List1.AddItem Chr(chr_uno) & Chr(chr_dos)
  4.    DoEvents
  5.    Next chr_dos
  6. DoEvents
  7. Next chr_uno
  8.  

Pero en lugar de mandarlo al list 1 que lo mandara al textbox1 del exe2

Una linea como esta (se que no existe pero es para que me entiendan)

Código
  1. shell "C:\prueba.exe.text1"= chr(chr_uno) & Chr(chr_dos)
  2.  

Espero me entiendan y me puedan asesorar


Título: Re: Algo dificil de explicar
Publicado por: NekroByte en 3 Agosto 2007, 02:55 am
Creo que se podría hacer con mensajes. No estoy en Windows así que no estoy puedo consultar MSDN para segurarlo pero creo que con APIs como CreateMessage() RegisterMessage() y SendMessage() se podrían crear mensajes personalizados que se manden con SendMessage y que pongas a tu máquina de escucha en los mensajes con SetWindowLong() y eso es como hacer sockets localmente y más fáciil, sin necesidad de crear conexiones y eso.


Título: Re: Algo dificil de explicar
Publicado por: CeLaYa en 3 Agosto 2007, 19:34 pm
pues ya esta, solo hay que modificar los bucles:

Código:
For chr_uno = Asc("a") To Asc("z")
    For chr_dos = Asc("a") To Asc("z")
         txtSenddata.text = Chr(chr_uno) & Chr(chr_dos)
         DoEvents
    Next chr_dos
   DoEvents
Next chr_uno



Título: Re: Algo dificil de explicar
Publicado por: karmany en 3 Agosto 2007, 21:50 pm
Para enviar lo que comentas de un exe a otro puedes utilizar perfectamente la API SendMessage. Lo único que necesitas es el handle del textbox donde vas a enviar los datos.


Título: Re: Algo dificil de explicar
Publicado por: LeandroA en 4 Agosto 2007, 03:43 am
hola para esos casos se utiliza una comunicacion DDE miren este articulo de como se hace

http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/161-dde.htm