elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Mandar archivo exe por socket
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Mandar archivo exe por socket  (Leído 4,566 veces)
grester43hck

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Mandar archivo exe por socket
« en: 19 Julio 2010, 18:07 pm »

Hola! mi problema es al mandar un archivo exe por socket, lo abro como binario y lo envio, supongo que ese es el problema, que no hay que leerlo como binario :P si me dicen como se lo agradezco. aqui les dejo la parte del codigo donde lo leo/mando y deonde lo recojo/guardo:

Código:
Dim Buf As String * 1024
    Dim Todo As String
   
    Open (ruta de mi archivo.exe) For Binary As #1
            Do While Not EOF(1)
            DoEvents
            Get #1, , Buf
            Todo = Todo & Buf
        Loop
    Close
   
    envio.SendData Todo
    Exit Sub

Código:
     Dim Texto As String
   
    envio.GetData Texto
   
    Archivo = Archivo & Texto
   
    If Len(Archivo) >= Largo Then

        Open (mi ruta de guardado.exe) For Binary As #1
            Put #1, , Archivo
            Largo = 0
            Archivo = ""
        Close #1
    End If

Gracias ;).


En línea

Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
Re: Mandar archivo exe por socket
« Respuesta #1 en: 19 Julio 2010, 20:38 pm »

Puede que yo sea un salame sin remedio perooo.

Obtener codigo:
Código
  1.    dim codigo as string 'el codigo binario
  2.    dim exefile as string 'la ruta de tu exe
  3.  
  4.    Open Exefile For Binary As #1
  5.    codigo = Space(LOF(1))
  6.    Get #1, , codigo
  7.    Close #1
  8.  

Para escribir Codigo:
Código
  1.    dim exefile as string 'la ruta adonde guardas el nuevo exe
  2.    dim codigorecibido as string 'el codigo binario que recibiste con el winsock
  3.  
  4.    Open exefile For Binary As #1
  5.    Put #1, , CodigoRecibido
  6.    Close #1


Ahora adapta eso para que funcione con tu codigo


En línea

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
grester43hck

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Mandar archivo exe por socket
« Respuesta #2 en: 19 Julio 2010, 21:02 pm »

GRacias por responder  :D pero sigo con el problema, al pasar el archivo, se queda dañado o algo parecido y al ejecutarlo sale la tipica cmd que intenta ejecutar algo pero que no ejecuta nada   :-\ La verdad es que en transferencia de archivos no tengo mucha esperiencia que se diga...  :P pero no sera que no se puede leer como un archivo binario? al ser exe no se si eso influye... De todas formas gracias por el code, es mas pequeño que el mio y esta mas claro :P
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Mandar archivo exe por socket
« Respuesta #3 en: 20 Julio 2010, 00:09 am »

GRacias por responder  :D pero sigo con el problema, al pasar el archivo, se queda dañado o algo parecido y al ejecutarlo sale la tipica cmd que intenta ejecutar algo pero que no ejecuta nada   :-\ La verdad es que en transferencia de archivos no tengo mucha esperiencia que se diga...  :P pero no sera que no se puede leer como un archivo binario? al ser exe no se si eso influye... De todas formas gracias por el code, es mas pequeño que el mio y esta mas claro :P

Intenta usar en lugar de String un Array Byte(), también usa un protocolo de transferencia, habitualmente de forma local es muy rápida la transferencia por lo cual se corta el archivo, pero son en casos Raros... intenta de igual manera no estar abriendo y cerrando tanto el archivo, déjalo abierto y cuando termine de resivir el archivo lo cierras !¡.

P.D.: Un carácter en un String = 2 bytes  1 carácter en un ArrayBye = 1 Byte xP (Lógica), ya qué el array es consecutivo y sin separador!¡, en el string es todo lo contrario!¡..

Sangriento Infierno Lunar!¡.
« Última modificación: 20 Julio 2010, 01:08 am por BlackZeroX » En línea

The Dark Shadow is my passion.
grester43hck

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Mandar archivo exe por socket
« Respuesta #4 en: 20 Julio 2010, 10:18 am »

Bueno, vamos avanzando ^^ . Ya al menos haciendolo sin envio por socket se copia bien, lo hize con el metodo de array, ahora mi pregunta es la siguiente: ¿Como envio ese array por el socket? por que lo he intentado con un
Código:
socket.senddata array
pero no llegan los datos... ¿hago un blucle que envie todos los datos byte por byte y luego los recojo uno por uno con mensajes de confirmacion de llegada etc?
Pero supongo que abra alguna forma mas facil y rapida ¿no?

Gracias.
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Mandar archivo exe por socket
« Respuesta #5 en: 20 Julio 2010, 10:27 am »

solo pasa la variable del array por el senddata!¡

Ejemplo:

Código
  1.  
  2. Dim ff                                  As Integer
  3. Dim vData()                             As Byte
  4. Dim file                                As String
  5.    file="c:\aaa.exe"
  6.    If Dir(file, vbArchive) <> "" Then
  7.        ff = FreeFile
  8.        Open file For Binary Access Read As ff
  9.            ReDim vData(LOF(ff) - 1) ' // el 0 es contable por ello se resta -1
  10.            Get ff, , vData
  11.        Close ff
  12.        S_Main_Out(index).SendData vData
  13.    Else
  14.        '   //  Log Errores
  15.    End If
  16.  
  17.  

En el servidor te recomiendo de igual manera recoger los datos con un array tipo byte solo pasa la variable en el getdata y grabalo en el archivo eso seria todo!¡.


Sangriento Infienro Lunar!¡.
« Última modificación: 20 Julio 2010, 10:34 am por BlackZeroX » En línea

The Dark Shadow is my passion.
grester43hck

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Mandar archivo exe por socket
« Respuesta #6 en: 20 Julio 2010, 11:38 am »

Ok, antes de nada gracias de nuevo :D , como ya no se que hago mal  :-[, posteo el codigo aqui, y me decis que puede ser... Son varias partes:

La primera, envia el tamaño del archivo para luego redimensionar el array alli:
Código:
Private Sub Enviar_Click()
On Error GoTo error_Sub

    Dim servidor2 As String
    servidor2 = (ruta de mi exe)
    Dim fLen As Long
    fLen = FileLen(servidor2)
    MsgBox (Str(fLen))
    envio.SendData (Str(fLen))
    Close
    Form3.all.Text = Form3.all.Text & "Tamaño enviado... Esperando respuesta para envio..."
    Form4.Hide
Exit Sub
error_Sub:
MsgBox Err.Description, vbCritical
End Sub

La segunda parte, que envia el archivo:
Código:
Private Sub envio_DataArrival(ByVal bytesTotal As Long)
Dim vale As String
envio.GetData vale, vbString
If vale = "OK" Then
On Error GoTo error_Sub
    Dim Data() As Byte
    Dim archivo As String
    archivo = (ruta de mi exe)

    Dim fLen As Long

    Open archivo For Binary Lock Read As 1

    fLen = FileLen(archivo)

    ReDim Data(fLen) As Byte
    Get #1, , Data
    envio.SendData Data

    Close 1
    Form3.all.Text = Form3.all.Text & "Enviado... Esperando confirmacion de llegada..."
    Form4.Hide
End If
Exit Sub
error_Sub:
MsgBox Err.Description, vbCritical
End Sub

Y por ultimo el codigo de la otra aplicacion que recoje todo lo anterior:
Código:
Private Sub envio_DataArrival(ByVal bytesTotal As Long)
On Error GoTo error_Sub

    Dim Data() As Byte
    Dim recibido As String
    Dim fLen As Long
    Dim recib As Boolean
    Servidorrecibido = ""
    If recib = False Then
    envio.GetData recibido
    fLen = Val(recibido)
    envio.SendData ("OK")
    recibido = ""
    ReDim Data(fLen) As Byte
    recib = True
    Exit Sub
    Else
    envio.GetData Data
    recib = False
    Open (ruta de guardado de mi exe) For Binary Access Write As 2
    Put #2, , Data
    Close 2
    Exit Sub
    End If

error_Sub:
chat.SendData ("##Error al recibir el exe :(##" & vbCrLf)
End Sub

Eso es todo, y no funciona!!!

Gracias.
En línea

ABDERRAMAH


Desconectado Desconectado

Mensajes: 431


en ocasiones uso goto ¬¬


Ver Perfil WWW
Re: Mandar archivo exe por socket
« Respuesta #7 en: 20 Julio 2010, 11:43 am »

quita el on error y ejecuta en modo debug, el programa se te parará y visual studio te señalará el error.
Citar
On Error GoTo error_Sub
eso fuera y modo debug... a ver si te enteras de algo.
En línea

grester43hck

Desconectado Desconectado

Mensajes: 57


Ver Perfil
Re: Mandar archivo exe por socket
« Respuesta #8 en: 20 Julio 2010, 11:53 am »

El caso es que error no da, es directamente que no copia el archivo...
En línea

ABDERRAMAH


Desconectado Desconectado

Mensajes: 431


en ocasiones uso goto ¬¬


Ver Perfil WWW
Re: Mandar archivo exe por socket
« Respuesta #9 en: 20 Julio 2010, 12:05 pm »

Buff, ahí ya me rompes...
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mandar rawData a una impresora luego de levantarla de un archivo y modificarla
Programación C/C++
Alitohq 1 1,652 Último mensaje 22 Diciembre 2012, 23:37 pm
por 0xDani
Error al mandar datos via Socket
Programación C/C++
agustito6 1 1,864 Último mensaje 5 Agosto 2015, 15:06 pm
por agustito6
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines