Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Sancho.Mazorka en 18 Noviembre 2005, 01:32 am



Título: controlador de mouse (por winsock)
Publicado por: Sancho.Mazorka en 18 Noviembre 2005, 01:32 am
oigan hago este post porque ya probe como 30 veces y no se soluciona este problema.
Cree un servidor y un cliente con el control winscok que cuando estan conectados el cliente pone activar y empieza a leer la posicion del mouse y la envia y el servidor las coordenadas que le llegan tendria que posicionar el mouse pero no lo hace me hace una error que dice "los tipos no coincide" pero esta todo bien si alguien tiene alguna idea para aportar o quiere el codigo pidamelo por medio de un post.
desde ya gracias

Sancho Mazorka


Título: Re: controlador de mouse (por winsock)
Publicado por: Thaorius en 18 Noviembre 2005, 02:04 am
Ami me pasa lo mismo al enviar un nombre de usuario a un programa de mensajeria.

Si averiguas que es, por favor avisame.

Saludos


Título: Re: controlador de mouse (por winsock)
Publicado por: NYlOn en 18 Noviembre 2005, 03:19 am
A ver
Para cambiar la posicion del mouse lo haces con SetCursorPos
Y para leer las corrdenadas actuales del mouse, podes usar GetCursorPos
Para esta ultima no te olvides de declarar los tipos (POINTAPI

Che pero no entiendo bien donde esta el problema :S
Cuando llegan las coordenadas del mouse del cliente al servidor, el servidor intenta copiar estas coordenadas y ahi se produce el error ?? o entendi cualkiera xDD ??


Título: Re: controlador de mouse (por winsock)
Publicado por: Thaorius en 18 Noviembre 2005, 15:39 pm
Claro, eso pasa cuando se trata de asignar lo que llega del cliente a un control en alguna propiedad.


Título: Re: controlador de mouse (por winsock)
Publicado por: Sancho.Mazorka en 18 Noviembre 2005, 16:14 pm
asi es NYlOn, toma las coordenadas con el getcursorpos y al mandarlas se efectua un setcursorpos pero cuando lo tiene que hacer dice ese error


Título: Re: controlador de mouse (por winsock)
Publicado por: NYlOn en 18 Noviembre 2005, 16:45 pm
ahhh
deve ser q estas  mandando las 2 variable juntas (X e Y)
Mira, para q SetCurosrPos funcione, tiene q contar con 2 variables DIFERENTES, es decir
SetCurosrPos X, Y
pero si vos envias X e Y en 1 sola variable (x ej: 5624) el servidor trata de hacer
SetCursorPos 5624
y ahi tira el error (supongo xD) pq no le asignaste ninguna variable a Y
Lo q tenes q hacer, es partir la variable cuando llega y asignarle un valor a X y otra a Y
Aca te dejo un ejemplo

NOTA: para q funcione, cuando envias la posicion desde el cliente tiene q haber en el medio un GUION (-), asi podemos separarlas facilmente usando la funcion Split.

Código:
'Esto lo pondrias en el DataArrival del WS, o donde kieras XD

    Posicion = Split(Datos, "-") 'Posicion es la variable resultante de la particion de los datos y Datos es lo q llego del cliente (x ej: 250-30)
    SetCursorPos Posicion(0), Posicion(1) 'Posicion(0) es la primera parte q partimos (lo q esta antes del guion) y Posicion(1) es lo q esta dsp del guion

Bueno como dije antes, si los datos q llegan no tienen el guion en el medio (spongo q sabras como ponerlo xD) no va a tener donde separar, x lo q te tiraria un error

Bueno, espero q sea eso xD

un salud0


Título: Re: controlador de mouse (por winsock)
Publicado por: Sancho.Mazorka en 22 Noviembre 2005, 20:23 pm
AVISO NO USO EL OPTION EXPLICIT!!!

no yo mando las dos variables por se parado; :o
gracias NYlOn por eso del split no lo sabia (soy medio nuevo, unos 3 meses). ;)

en el cliente con 2 timer obtengo las coordenadas y en 1 timer las mando a textx y con el timer 2 mando las coordenadas a texty, de spues con el otro servidor recibe las coordenadas y en el evento de un timer hago un setcursorpos cx,cy. ya probe con todo tipo de variable (string,long,byte). lo del servidor, el timer obtiene las coordenadas que obtengo del daraarrival 

                              CLIENTE
------------------------------------------------------------------

private sub textx_change()
dim cx as string
cx = texty.text
winsock1.sendata cx
end sub

private sub texty_change()
dim cy as string
cy = texty.text
winsock1.sendata cy
end sub
------------------------------------------------------------------

                           SERVIDOR
------------------------------------------------------------------
private sub timer_timer()
setcursorpos cx,cy
end sub
------------------------------------------------------------------


Título: Re: controlador de mouse (por winsock)
Publicado por: el_chente23 en 23 Noviembre 2005, 21:32 pm
Citar
en el cliente con 2 timer obtengo las coordenadas

¿y si en lugar de usar timer, usas el evento MouseMove de la forma?, tiene los argumentos X y Y, que son las coordenadas del puntero, si me equivoco corrijanme  :P, entonces esas coordenadas las envias.

Saludos


Título: Re: controlador de mouse (por winsock)
Publicado por: Sancho.Mazorka en 24 Noviembre 2005, 00:59 am
el mousemove te da otras coordenadas no las que yo quiero las coordenadas de toda la pantalla no del form.

Sancho Mazorka


Título: Re: controlador de mouse (por winsock)
Publicado por: NYlOn en 24 Noviembre 2005, 16:06 pm
Lo mejor en mi opinion es usar el Timer... Con el evento MouseMove solo te capta los movimientos dentro del Form.

Sancho, podrias postear el codigo de como envias y recivis las info x el ws ??
Es probable que tengas ahi el problema, pero no me quiero adelantar sin ver el codigo xDD

Saludos.


Título: Re: controlador de mouse (por winsock)
Publicado por: Sancho.Mazorka en 25 Noviembre 2005, 01:44 am
NOTA: para que quede mejor les puse 2 jpg que van en el disco C:\ uno es verde y el otro es rojo mas o menos del tamaño de un icono un poco mayor.  ;D

listo ahora lo posteo, pero creo que encontre el error cuando llegaban las variables me hacia error entonces intenete poner un on error resume next y vi que als coordenadas que llegaban no eran numeros si no que letras como que si los transformara a su codigo ASCII. Aca les dejo el codigo. no se poner imagenes asi que disculpen las molestias de no saberles decir donde va cada control  :P

-----------------------------------------------------------------------

ESTE ES EL CLIENTE  

contiene -> 4 textbox, 2 timer, 1 winsock, 4 botones, 1 statusbar, 4 labels

timer 1 = 500 ms, enbaled true
timer2 = 100 ms, enabled false
winsock 1 = remoteport = 1001
winsock 1 = localport = 1001
statusbar 1 = 2 paneles, en el segundo va la hora

Código:
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
     X As Long
     Y As Long
End Type

Private Sub Command1_Click()
On Error GoTo s
Winsock1.Connect Text1.Text, Text2.Text
Exit Sub
s:
Winsock1.Close
MsgBox Error(Err), vbCritical, Error
End Sub

Private Sub Command2_Click()
Winsock1.Close
End Sub

Private Sub Command3_Click()
Timer2.Enabled = True
Picture1.Picture = LoadPicture("C:\verde.jpg")
End Sub

Private Sub Command4_Click()
Timer2.Enabled = False
Picture1.Picture = LoadPicture("c:\rojo.jpg")
End Sub

Private Sub Form_Load()
Winsock1.Close
Timer1_Timer
End Sub

Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close
End Sub

Private Sub Text3_Change()
Dim cx As String
cx = Text3.Text
Winsock1.SendData cx
End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

Private Sub Text4_Change()
Dim cy As String
cy = Text3.Text
Winsock1.SendData cy
End Sub

Private Sub Text4_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

Private Sub Timer2_Timer()
Dim Posicion As POINTAPI
GetCursorPos Posicion
Text3.Text = Posicion.X
Text4.Text = Posicion.Y
End Sub

Private Sub Winsock1_Close()
MsgBox "Socket cerrado"
End Sub

Private Sub Winsock1_Connect()
MsgBox "Conexion realizada"
End Sub

Private Sub Timer1_Timer()
estado = Winsock1.State
Select Case estado
  Case 0
   sb.Panels(1).Text = "Desconectado"
  Case 1
   sb.Panels(1).Text = "Abierto"
  Case 2
   sb.Panels(1).Text = "Escuchando..."
  Case 3
   sb.Panels(1).Text = "Pendiente"
  Case 4
   sb.Panels(1).Text = "Resolviendo Host..."
  Case 5
   sb.Panels(1).Text = "Host Resuelto"
  Case 6
   sb.Panels(1).Text = "Conectando..."
  Case 7
   sb.Panels(1).Text = "Conectado"
  Case 8
   sb.Panels(1).Text = "Conexion Cerrada"
  Case 9
   sb.Panels(1).Text = "Error"
 End Select
End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "Numero: " & Number & " - Descripcion: " & Description, vbCritical, "Error critico"
Winsock1.Close
End Sub
-----------------------------------------------------------------------

ESTE ES EL SERVIDOR

contiene -> 3 textbox, 1 picture, 2 timer, 1 winscok, 1 boton, 1 statusbar, 3 labels

timer 1 =  500 ms, enabled = true
timer 2 = 1000 ms, enabled = true
winsock = localport = 1001
winsock = remoteport = 1001
statsubar = 2 paneles, segundo panel va la hora nomas

Código:
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long

Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close
End Sub

Private Sub textx_Change()
Dim x As String
x = Textx
y = Texty
SetCursorPos x, y
End Sub

Private Sub Textx_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

Private Sub texty_Change()
Dim y As String
y = Texty
x = Textx
SetCursorPos x, y
End Sub

Private Sub Texty_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

Private Sub Timer1_Timer()
Dim estado As String
estado = Winsock1.State
Select Case estado
Case 0
sb.Panels(1).Text = "Desconectado"
Case 1
sb.Panels(1).Text = "Puerto abierto"
Case 2
sb.Panels(1).Text = "Acepta solicitud"
Case 3
sb.Panels(1).Text = "Conexion pendiente"
Case 4
sb.Panels(1).Text = "Problema con el Host"
Case 5
sb.Panels(1).Text = "Problema resuelto"
Case 6
sb.Panels(1).Text = "Conectando"
Case 7
sb.Panels(1).Text = "Conectado"
Case 8
sb.Panels(1).Text = "Cerrando conexion"
Case 9
sb.Panels(1).Text = "Error"
End Select
End Sub

Private Sub Timer2_Timer()
Picture1.Picture = LoadPicture("C:\rojo.jpg")
End Sub

Private Sub Winsock1_Close()
MsgBox "Socket cerrado"
End Sub

Private Sub Winsock1_Connect()
MsgBox "Conexion realizada"
End Sub

Private Sub Form_Load()
Winsock1.Listen
Text1.Text = Winsock1.LocalIP & ":" & Winsock1.LocalPort
Timer1_Timer
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim cx, cy As String
Winsock1.GetData cx
Winsock1.GetData cy
Textx.Text = cx
Texty.Text = cy
Picture1.Picture = LoadPicture("C:\verde.jpg")
End Sub

Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "Numero: " & Number & " - Descripcion: " & Description, vbCritical, "Error critico"
End Sub
-----------------------------------------------------------------------


Sancho Mazorka


Título: Re: controlador de mouse (por winsock)
Publicado por: NYlOn en 26 Noviembre 2005, 01:03 am
Intenta con esto:
En el DataArrival del SERVIDOR, cambia esta linea:
Código:
Dim cx, cy As String
Por esta otra:
Código:
Dim cx As Long
Dim cy as Long

un saludo.


Título: Re: controlador de mouse (por winsock)
Publicado por: Sancho.Mazorka en 29 Noviembre 2005, 20:38 pm
NYlOn eso no funciona me llegan coordenadas altas en X siempre anda entre la 120 y la 350, me da cuialquier cosa


Título: Re: controlador de mouse (por winsock)
Publicado por: Thaorius en 29 Noviembre 2005, 21:54 pm
Yo en estos dias, como me gusto tu idea del mouse la hice.

Si te interesa te paso el code, funciona bien y no solo te permite cambiar la posicion, sino que tambien te permite grabar losm ovimientos del mouse durante el tiempo que deseees y luego reproducirlos.

Saludos


Título: Re: controlador de mouse (por winsock)
Publicado por: Sancho.Mazorka en 29 Noviembre 2005, 22:04 pm
ok man pasamela estoy ansioso, pero lo malo es que los graba yo lo quisiera en tiempo real.
pasamelos ahora plz

Sancho Mazorka


Título: Re: controlador de mouse (por winsock)
Publicado por: Thaorius en 29 Noviembre 2005, 23:38 pm
http://www.megaupload.com/?d=HKRW2GNX

El archivo modProcess.bas tiene los datos de procesameinto y los comandos dle troyano y en el cliente fijate bien de poner el puerto(lo dice en el Form_Load del server) y TU IP no localhost.

Despues vas a la pestaña consola y escribis hay lso comandos.

Cualquier cosa pregutnas.

PD: EL unico fallo es que no reproduce mas de una vez el archivo.

Saludos


Título: Re: controlador de mouse (por winsock)
Publicado por: Sancho.Mazorka en 30 Noviembre 2005, 00:09 am
muchachos gracias por todo su entusiasmo en ayudarme ya lo resolvi, me ayudo ZEALOT habia que colocarlo asi a esta parte nada mas, esto va en el servidor.

Código:
winsock1.getdata coordenadas, vbstring

y tambien en:

Código:
setcursorpos val(ok(0)), val(ok(1))

muchas gracias a NYlOn por todas las respuestas


Sancho Mazorka


Título: Re: controlador de mouse (por winsock)
Publicado por: kakinets en 6 Diciembre 2005, 22:05 pm
Te mejore un poko el codigo espero que te guste.

Servidor

2 Winsock
3 TextBox
2 label
3 timer
1 statubar

ahora te doy los nombres
 
Text1 = Text1
text2 = txty
text3 = txtx
winsock1 = winsock1
winsock2 = winsock2
timer1 = timer1  ------ interval:10 ---- enable False
timer2 = timer2  ------ interval:500 --- enable true
timer3 = Testado ------ interval:100 --- enable true
label1 = label1  ------ caption:Y ----Va arriba del txty
label2 = label2  ------ caption:X ----Va arriba del txtx
statubar = sb

Codigo:

Código:
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Sub Form_Load()
Text1.Text = Winsock1.LocalIP & ":" & Winsock1.LocalPort
End Sub

Private Sub Testado_Timer()
If Winsock1.State = 0 Then
sb.Panels(1).Text = "Winsock1 - Desconectado"
Timer2.Enabled = True
ElseIf Winsock1.State = 2 Then
sb.Panels(1).Text = "Winsock1 - Escuchando"
ElseIf Winsock1.State = 8 Then
sb.Panels(1).Text = "Winsock1 - Cerrandose"
Winsock1.Close
ElseIf Winsock1.State = 9 Then
sb.Panels(1).Text = "Winsock1 - Conectado con Error"
Winsock1.Close
ElseIf Winsock1.State = 1 Then
sb.Panels(1).Text = "Winsock1 - Abierto"
ElseIf Winsock1.State = 7 Then
sb.Panels(1).Text = "Winsock1 - Conectado"
Timer2.Enabled = False
End If
If Winsock2.State = 0 Then
sb.Panels(2).Text = "Winsock2 - Desconectado"
Timer2.Enabled = True
ElseIf Winsock2.State = 2 Then
sb.Panels(2).Text = "Winsock2 - Escuchando"
ElseIf Winsock2.State = 8 Then
sb.Panels(2).Text = "Winsock2 - Cerrandose"
Winsock2.Close
ElseIf Winsock2.State = 9 Then
sb.Panels(2).Text = "Winsock2 - Conectado con Error"
Winsock2.Close
ElseIf Winsock2.State = 1 Then
sb.Panels(2).Text = "Winsock2 - Abierto"
ElseIf Winsock2.State = 7 Then
sb.Panels(2).Text = "Winsock2 - Conectado"
Timer2.Enabled = False
End If
End Sub

Private Sub Timer1_Timer()
SetCursorPos txtx, txty
End Sub

Private Sub Timer2_Timer()
Winsock1.Close
Winsock1.Connect
Winsock2.Close
Winsock2.Connect
Timer2.Enabled = False
End Sub

Private Sub txty_Change()
If txty.Text = "" And txtx = "" Then
Timer1.Enabled = False
Else
Timer1.Enabled = True
End If
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim llega As String
Winsock1.GetData llega
txty.Text = llega
End Sub

Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim llega2 As String
Winsock2.GetData llega2
txtx.Text = llega2
End Sub


Cliente

2 Winsock
3 TextBox
3 label
4 timer
1 statubar
4 Command

ahora te doy los nombres
 
Text1 = Text1
text2 = txty
text3 = txtx
winsock1 = winsock1
winsock2 = winsock2
timer1 = timer1  ------ interval:10 ---- enable true
timer2 = timer2  ------ interval:10 --- enable false
timer3 = timer3 ------ interval:10 --- enable false
timer3 = Testado ------ interval:100 --- enable true
label1 = label1  ------ caption:Y ----Va arriba del txty
label2 = label2  ------ caption:X ----Va arriba del txtx
label3 = label3  ------ caption:Desactivado ----Va donde quieras
statubar = sb
Command1 = Command1 ------ Caption: Conectado
Command2 = Command2 ------ Caption: Desconectar
Command3 = Command3 ------ Caption: Activar
Command4 = Command4 ------ Caption: Desactivar


Codigo:
Código:
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
     X As Long
     Y As Long
End Type

Private Sub Command1_Click()
On Error Resume Next
Winsock1.Listen
Winsock2.Listen
End Sub

Private Sub Command2_Click()
Winsock1.Close
Winsock2.Close
End Sub

Private Sub enviox(TXT As String)
 On Error Resume Next
       Winsock2.SendData TXT
End Sub

Private Sub envioy(TXT As String)
 On Error Resume Next
       Winsock1.SendData TXT
End Sub

Private Sub Command3_Click()
Label3.Caption = "Activado"
Timer3.Enabled = True
Timer2.Enabled = True
End Sub

Private Sub Command4_Click()
Timer2.Enabled = False
Timer3.Enabled = False
Label3.Caption = "Desactivado"
End Sub

Private Sub Testado_Timer()
If Winsock1.State = 0 Then
sb.Panels(1).Text = "Winsock1 - Desconectado"
ElseIf Winsock1.State = 2 Then
sb.Panels(1).Text = "Winsock1 - Escuchando"
ElseIf Winsock1.State = 8 Then
sb.Panels(1).Text = "Winsock1 - Cerrandose"
Winsock1.Close
ElseIf Winsock1.State = 9 Then
sb.Panels(1).Text = "Winsock1 - Conectado con Error"
Winsock1.Close
ElseIf Winsock1.State = 1 Then
sb.Panels(1).Text = "Winsock1 - Abierto"
ElseIf Winsock1.State = 7 Then
sb.Panels(1).Text = "Winsock1 - Conectado"
End If
If Winsock2.State = 0 Then
sb.Panels(2).Text = "Winsock2 - Desconectado"
ElseIf Winsock2.State = 2 Then
sb.Panels(2).Text = "Winsock2 - Escuchando"
ElseIf Winsock2.State = 8 Then
sb.Panels(2).Text = "Winsock2 - Cerrandose"
Winsock2.Close
ElseIf Winsock1.State = 9 Then
sb.Panels(2).Text = "Winsock2 - Conectado con Error"
Winsock2.Close
ElseIf Winsock2.State = 1 Then
sb.Panels(2).Text = "Winsock2 - Abierto"
ElseIf Winsock1.State = 7 Then
sb.Panels(2).Text = "Winsock2 - Conectado"
End If
End Sub

Private Sub Timer1_Timer()
Dim Posicion As POINTAPI
GetCursorPos Posicion
txtx.Text = Posicion.X
txty.Text = Posicion.Y
End Sub

Private Sub Timer2_Timer()
envioy txty.Text
End Sub

Private Sub Timer3_Timer()
enviox txtx.Text
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
Winsock2.Close
Winsock2.Accept requestID
End Sub

bueno termine

Cualquier duda postea o able en pribado.

                Saludos KakiNets.


Título: Re: controlador de mouse (por winsock)
Publicado por: Sancho.Mazorka en 6 Diciembre 2005, 22:10 pm
che man no te hubieras molestado yo no puse elk nuevo codigo poruqe era mucho pero gracias igual ahora lo veo bien, ya al programa le puse qeu si vos haces un click al otro tambien le llegan los click entonces es un escritorio remoto sin verle la pantalla, esta bueno porque yo clickeo y al otro le llega el mov mas el clik


Sancho Mazorka     :P


Título: Re: controlador de mouse (por winsock)
Publicado por: kakinets en 6 Diciembre 2005, 22:21 pm
Como es eso de los click lo abia pensado lo voy a intertar hacer. con que  funsion lo hiciste. usando keycode y estas funsiones vbKeyLButton vbKeyRButton


Título: Re: controlador de mouse (por winsock)
Publicado por: Sancho.Mazorka en 6 Diciembre 2005, 22:25 pm
che man agregame mi mail es rhcp_269@hotmail.com porque si tenemso que chatear por post, nos morimos y de paso te muestro el programa