TCP no funciona compilado
TCP no funciona compilado
buenas, estos dias he estado haciendo una remoteshell usando TCP, corriendo la script va en todos mis ordenadores, pero una vez que la compilo deja de funcionar, no encuentra la conexion, pero tampoco da error.
hay alguna informacion sobre este error?
hay alguna informacion sobre este error?
- 0 error(s), 0 warning(s) FUCK YEA!
http://xapus.blogspot.com/
http://xapus.blogspot.com/
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: TCP no funciona compilado
Ni idea chico. Puedes dejar los códigos y miramos que puede pasar.
Si no quieres dejar todo el código, deja solamente la parte de comunicación cliente-servidor que no te funciona al compilar y la miramos.
Saludos.
Si no quieres dejar todo el código, deja solamente la parte de comunicación cliente-servidor que no te funciona al compilar y la miramos.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: TCP no funciona compilado
servidor:
cliente:
pero no me funciona nada compilado que tenga que ver con TCP en ningun ordenador que he provado... el cliente espera la conexion con el servidor, y el servidor intenta conectar con el cliente, pero el socket del servidor simpre devuelve -1
muchas gracias!
Código: Seleccionar todo
#include <GUIConstants.au3>
#include <Constants.au3>
Dim $szIPADDRESS = "IP cliente"
Dim $nPORT = 6667
Dim $recv
Dim $ConnectedSocket = -1
Dim $comando
TCPStartup()
$MainSocket = TCPConnect($szIPADDRESS,$nPORT)
If $MainSocket = -1 Then
Do
$MainSocket = TCPConnect($szIPADDRESS,$nPORT)
Until $ConnectedSocket <> -1
EndIf
$foo = Run("cmd.exe" & " /c" & $comando, "c:/", @SW_SHOW, $STDERR_MERGED)
While 1
$comando = TCPRecv($ConnectedSocket, 2048)
If @error Then ExitLoop
If $recv <> "" Then StdinWrite($foo,$recv)
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
TCPSend($ConnectedSocket, $line)
WEnd
While 1
$line = StderrRead($foo)
If @error Then ExitLoop
TCPSend($ConnectedSocket, $line)
WEnd
WEnd
Código: Seleccionar todo
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
TCPStartup()
$sock = TCPListen(@IPAddress1,6667)
$msock = -1
Do
$msock = TCPAccept($sock)
Until $msock <> -1
remote_shell($msock)
Func remote_shell($sock)
Local $line ,$sh_form ,$sh_edit ,$sh_input1 ,$sh_button1
#Region ### START Koda GUI section ### Form=
$sh_form = GUICreate("Shell remota con: "&SocketToIP($SHOCK), 675, 373, 192, 124)
$sh_Edit = GUICtrlCreateEdit("", 8, 8, 657, 321)
GUICtrlSetBkColor($sh_edit,0x000000)
GUICtrlSetColor($sh_edit,0xFFFFFF)
GUICtrlSetFont($sh_edit, 1, 200, 0, "Fixedsys")
$sh_Input1 = GUICtrlCreateInput("", 8, 344, 577, 21)
$sh_Button1 = GUICtrlCreateButton("send", 592, 342, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Local $AccelKeys[1][2]=[["{Enter}", $sh_Button1]]
GUISetAccelerators($AccelKeys,$sh_form)
While 1
$line = TCPRecv($sock,2048)
If $line <> "" Then
GUICtrlSetData($sh_edit,guictrlread($sh_edit)&$line)
EndIf
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
TCPSend($sock,"shfin.")
GUIDelete($sh_form)
ExitLoop
Case $sh_button1
If GUICtrlRead($sh_input1) = "cls" Then
GUICtrlSetData($sh_edit,"")
Else
TCPSend($sock,guictrlread($sh_input1)&@CRLF)
EndIf
EndSwitch
WEnd
EndFunc
Func SocketToIP($SHOCKET)
Local $sockaddr = DllStructCreate("short;ushort;uint;char[8]")
Local $aRet = DllCall("Ws2_32.dll", "int", "getpeername", "int", $SHOCKET, _
"ptr", DllStructGetPtr($sockaddr), "int*", DllStructGetSize($sockaddr))
If Not @error And $aRet[0] = 0 Then
$aRet = DllCall("Ws2_32.dll", "str", "inet_ntoa", "int", DllStructGetData($sockaddr, 3))
If Not @error Then $aRet = $aRet[0]
Else
$aRet = 0
EndIf
$sockaddr = 0
Return $aRet
EndFunc
muchas gracias!
- 0 error(s), 0 warning(s) FUCK YEA!
http://xapus.blogspot.com/
http://xapus.blogspot.com/
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: TCP no funciona compilado
Hola yo probaría en modo investigación:
1.- Desactivar el firewall del windows para todo.(así evitas que pare la comunicación IP)
2.- Trabajar en el mismo pc el server y el cliente, usando la dirección 127.0.0.1 o localhost.
Si sigue sin funcionar, usaría de la ayuda de autoit cogiendo un códigode ejemplo que hay allí mismo,
copiaría y pegaría los ejemplos que hay en los TCPListen() TCP ...
Salu22:)
1.- Desactivar el firewall del windows para todo.(así evitas que pare la comunicación IP)
2.- Trabajar en el mismo pc el server y el cliente, usando la dirección 127.0.0.1 o localhost.
Si sigue sin funcionar, usaría de la ayuda de autoit cogiendo un códigode ejemplo que hay allí mismo,
copiaría y pegaría los ejemplos que hay en los TCPListen() TCP ...
Salu22:)
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: TCP no funciona compilado
Ante todo decir que creo que tienes algo liado el concepto del código del servidor y el de cliente. Yo creo que lo has hecho al revés.
Vamos a explicar brevemente el funcionamiento de estas partes:
Antes de nada, debe haber un programa servidor funcionando para que el/los programa/s cliente/s se pueda/n conectar a él. Por eso se tiene que crear inicialmente un programa servidor que primeramente escuche de una dirección (la del servidor) y un puerto (TCPListen) las posibles peticiones de conexión. Acabamos de crear un Socket de escucha. Después debes aceptar o no las conexiones (TCPAccept). Una vez que ya has conectado, queda recibir los datos que te envían (TCPRecv).
El cliente tiene que conectar con ese programa servidor. Para eso utiliza la función TCPConnect. Una vez que conecta, se pueden envíar los datos al servidor (TCPSend) los cuales recibirá.
Que decir tiene que un mismo programa puede hacer de cliente-servidor al mismo tiempo para tener una comunicación en ambos sentidos.
Si te das cuenta lo has hecho al revés. El código del cliente pertenece al del servidor y viceversa.
Además, he visto fallos en tus códigos.
En el código que has puesto como servidor, yo creo que te has liado un poquito y querías poner lo que viene en el ejemplo de la función TCPRecv:
Y en el código del cliente deberías poner lo que viene en el ejemplo de TPCSend:
Es simplemente copiar, pegar y modificar los códigos cliente-servidor que te vienen como ejemplo en la ayuda, en las funciones que te digo arriba.
Aunque los hubieses puesto en su sitio, tus códigos siguen teniendo fallos:
Que es esto? Si quieres volver a intentar conectar al servidor hazlo por ejemplo así y no te repitas. Además, te has equivocado al poner la condición de salida de la variable $ConnectedSocket, ya que esta nunca cambia en el bucle, cambia $MainSocket :
En el código que has puesto como cliente falla la variable $SHOCK. Esta tiene que ser $sock:
Solamente he mirado el código inicial de conexión. Lo demás no, excepto lo que te dije anteriormente que me daba error y no podía ejecutarlo si no lo corregía.
Yo he probado código compilado de este tipo en 3 S.O. distintos y no me han dado ningún problema (xp sp3, win7 profesional 32 bits, win7 home 64 bit). También tengo que decir que he probado el cliente y el servidor en el mismo ordenador, ya que no los tengo conectados en red.
Si después de todo no te funciona, mira a ver los consejos de BasicOs, no sea que el servidor o algún ordenador tenga capada la entrada de datos por programas de este tipo, los cuales acceden por un puerto y tal.
Saludos.
Vamos a explicar brevemente el funcionamiento de estas partes:
Antes de nada, debe haber un programa servidor funcionando para que el/los programa/s cliente/s se pueda/n conectar a él. Por eso se tiene que crear inicialmente un programa servidor que primeramente escuche de una dirección (la del servidor) y un puerto (TCPListen) las posibles peticiones de conexión. Acabamos de crear un Socket de escucha. Después debes aceptar o no las conexiones (TCPAccept). Una vez que ya has conectado, queda recibir los datos que te envían (TCPRecv).
El cliente tiene que conectar con ese programa servidor. Para eso utiliza la función TCPConnect. Una vez que conecta, se pueden envíar los datos al servidor (TCPSend) los cuales recibirá.
Que decir tiene que un mismo programa puede hacer de cliente-servidor al mismo tiempo para tener una comunicación en ambos sentidos.
Si te das cuenta lo has hecho al revés. El código del cliente pertenece al del servidor y viceversa.
Además, he visto fallos en tus códigos.
En el código que has puesto como servidor, yo creo que te has liado un poquito y querías poner lo que viene en el ejemplo de la función TCPRecv:
Código: Seleccionar todo
TCPStartup()
; Create a Listening "SOCKET".
; Using your IP Address and Port 33891.
;==============================================
$MainSocket = TCPListen($szIPADDRESS, $nPORT)
; If the Socket creation fails, exit.
If $MainSocket = -1 Then Exit
;Wait for and Accept a connection
;==============================================
Do
$ConnectedSocket = TCPAccept($MainSocket)
Until $ConnectedSocket <> -1
Código: Seleccionar todo
TCPStartup()
; Initialize a variable to represent a connection
;==============================================
$ConnectedSocket = -1
;Attempt to connect to SERVER at its IP and PORT 33891
;=======================================================
$ConnectedSocket = TCPConnect($szIPADDRESS, $nPORT)
Aunque los hubieses puesto en su sitio, tus códigos siguen teniendo fallos:
Aquí se pone la ip del servidor.Dim $szIPADDRESS = "IP cliente"
Código: Seleccionar todo
$MainSocket = TCPConnect($szIPADDRESS,$nPORT)
If $MainSocket = -1 Then
Do
$MainSocket = TCPConnect($szIPADDRESS,$nPORT)
Until $ConnectedSocket <> -1
EndIf
Código: Seleccionar todo
Do
$ConnectedSocket = TCPConnect($szIPADDRESS,$nPORT)
sleep(100)
Until $ConnectedSocket > 0
Código: Seleccionar todo
$sh_form = GUICreate("Shell remota con: "&SocketToIP($SOCK), 675, 373, 192, 124)
Yo he probado código compilado de este tipo en 3 S.O. distintos y no me han dado ningún problema (xp sp3, win7 profesional 32 bits, win7 home 64 bit). También tengo que decir que he probado el cliente y el servidor en el mismo ordenador, ya que no los tengo conectados en red.
Si después de todo no te funciona, mira a ver los consejos de BasicOs, no sea que el servidor o algún ordenador tenga capada la entrada de datos por programas de este tipo, los cuales acceden por un puerto y tal.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: TCP no funciona compilado
los fallos tontos esos son por k el codigo realmente era mucho mas extenso... y como me parecia innecesario saque una parte del programa para ponerlo como ejemplo.Chefito escribió:Ante todo decir que creo que tienes algo liado el concepto del código del servidor y el de cliente. Yo creo que lo has hecho al revés.
Vamos a explicar brevemente el funcionamiento de estas partes:
Antes de nada, debe haber un programa servidor funcionando para que el/los programa/s cliente/s se pueda/n conectar a él. Por eso se tiene que crear inicialmente un programa servidor que primeramente escuche de una dirección (la del servidor) y un puerto (TCPListen) las posibles peticiones de conexión. Acabamos de crear un Socket de escucha. Después debes aceptar o no las conexiones (TCPAccept). Una vez que ya has conectado, queda recibir los datos que te envían (TCPRecv).
El cliente tiene que conectar con ese programa servidor. Para eso utiliza la función TCPConnect. Una vez que conecta, se pueden envíar los datos al servidor (TCPSend) los cuales recibirá.
Que decir tiene que un mismo programa puede hacer de cliente-servidor al mismo tiempo para tener una comunicación en ambos sentidos.
Si te das cuenta lo has hecho al revés. El código del cliente pertenece al del servidor y viceversa.
Además, he visto fallos en tus códigos.
En el código que has puesto como servidor, yo creo que te has liado un poquito y querías poner lo que viene en el ejemplo de la función TCPRecv:Y en el código del cliente deberías poner lo que viene en el ejemplo de TPCSend:Código: Seleccionar todo
TCPStartup() ; Create a Listening "SOCKET". ; Using your IP Address and Port 33891. ;============================================== $MainSocket = TCPListen($szIPADDRESS, $nPORT) ; If the Socket creation fails, exit. If $MainSocket = -1 Then Exit ;Wait for and Accept a connection ;============================================== Do $ConnectedSocket = TCPAccept($MainSocket) Until $ConnectedSocket <> -1
Es simplemente copiar, pegar y modificar los códigos cliente-servidor que te vienen como ejemplo en la ayuda, en las funciones que te digo arriba.Código: Seleccionar todo
TCPStartup() ; Initialize a variable to represent a connection ;============================================== $ConnectedSocket = -1 ;Attempt to connect to SERVER at its IP and PORT 33891 ;======================================================= $ConnectedSocket = TCPConnect($szIPADDRESS, $nPORT)
Aunque los hubieses puesto en su sitio, tus códigos siguen teniendo fallos:Aquí se pone la ip del servidor.Dim $szIPADDRESS = "IP cliente"Que es esto? Si quieres volver a intentar conectar al servidor hazlo por ejemplo así y no te repitas. Además, te has equivocado al poner la condición de salida de la variable $ConnectedSocket, ya que esta nunca cambia en el bucle, cambia $MainSocket :Código: Seleccionar todo
$MainSocket = TCPConnect($szIPADDRESS,$nPORT) If $MainSocket = -1 Then Do $MainSocket = TCPConnect($szIPADDRESS,$nPORT) Until $ConnectedSocket <> -1 EndIf
En el código que has puesto como cliente falla la variable $SHOCK. Esta tiene que ser $sock:Código: Seleccionar todo
Do $ConnectedSocket = TCPConnect($szIPADDRESS,$nPORT) sleep(100) Until $ConnectedSocket > 0
Solamente he mirado el código inicial de conexión. Lo demás no, excepto lo que te dije anteriormente que me daba error y no podía ejecutarlo si no lo corregía.Código: Seleccionar todo
$sh_form = GUICreate("Shell remota con: "&SocketToIP($SOCK), 675, 373, 192, 124)
Yo he probado código compilado de este tipo en 3 S.O. distintos y no me han dado ningún problema (xp sp3, win7 profesional 32 bits, win7 home 64 bit). También tengo que decir que he probado el cliente y el servidor en el mismo ordenador, ya que no los tengo conectados en red.
Si después de todo no te funciona, mira a ver los consejos de BasicOs, no sea que el servidor o algún ordenador tenga capada la entrada de datos por programas de este tipo, los cuales acceden por un puerto y tal.
Saludos.
la conexion entre los pc´s realmente no es de cliente servidor, los dos son clientes... bueno es que es un rollo de explicar... si acabo algun dia el programa y soluciono el que no funcione despues de compilarlo lo suvire para que veais.
muchas gracias!
- 0 error(s), 0 warning(s) FUCK YEA!
http://xapus.blogspot.com/
http://xapus.blogspot.com/
Re: TCP no funciona compilado
1- mi firewall siempre esta off XDDBasicOs escribió:Hola yo probaría en modo investigación:
1.- Desactivar el firewall del windows para todo.(así evitas que pare la comunicación IP)
2.- Trabajar en el mismo pc el server y el cliente, usando la dirección 127.0.0.1 o localhost.
Si sigue sin funcionar, usaría de la ayuda de autoit cogiendo un códigode ejemplo que hay allí mismo,
copiaría y pegaría los ejemplos que hay en los TCPListen() TCP ...
Salu22:)
2 - si!! eso es lo k mas me molesta... k en local funcione, pero cuando es en internet no va!!
yo ya no se que puede ser..
como solucion se me avia ocurrido acer un programa ke aga fileinstall(@tempdir) con el programa en .au3 y el autoit.exe y me lo ejecute...
no se k are al final
muchas gracias basicos
- 0 error(s), 0 warning(s) FUCK YEA!
http://xapus.blogspot.com/
http://xapus.blogspot.com/
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: TCP no funciona compilado
Si 1 y 2, entonces es que tienes quexapu escribió: 1- mi firewall siempre esta off XDD
2 - si!! eso es lo k mas me molesta... k en local funcione, pero cuando es en internet no va!!
yo ya no se que puede ser..
como solucion se me avia ocurrido acer un programa ke aga fileinstall(@tempdir) con el programa en .au3 y el autoit.exe y me lo ejecute...
no se k are al final
muchas gracias basicos
3.- probarlo en LAN entre dos pcs,
4.- Probarlo en Internet con las direcciones web repitiendo la configuración de la LAN, con IPS públicas en este caso (la del servidor porque la del cliente no se necesita especificar)
Salu22:)