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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Temas
Páginas: 1 2 3 4 5 6 [7] 8 9 10
61  Seguridad Informática / Wireless en Linux / xiaopan-0.3.7.1 (beini) en: 21 Febrero 2012, 06:21 am
xiaopan-0.3.7.1 es el hermano del beini pero actualizado, viene con reaver y el inflador.


sigue siendo la misma kaka del beini.

DESCARGA:
http://www.mixturecloud.com/download=Dmh418
62  Seguridad Informática / Wireless en Linux / WPSCrackGUI v1.2.4 -BETA- (10-02-2013) en: 3 Febrero 2012, 00:59 am

WPSCrackGUI es una interfaz gráfica para el crackeo de redes wireless con WPS Activo. Es fase BETA, así que tiene errores, verifiquen si funciona, pues su funcionamiento puede variar entre sistemas operativos. WPSCrackGUI esta especialmente diseñado para entornos Debian (Ubuntu, Kubuntu, Xubuntu, BackTrack, AirUbuntu, Debian, etc).

Requerimientos:

* Sistema Operativo basado en Linux.
* Gambas 3.
* xTerm.
* Reaver-WPS v1.4.
* Navegador WEB (Firefox o Chrome).
* Nautilus (Ya incluido en Entornos Debian).
* Python v2.6 (o superior) [para funcionamiento de WPSpy y WPScan].
* Scapy (2.0.1-1) [para funcionamiento de WPSpy y WPScan].
* Lorcon v2 rc1 [para funcionamiento de WPSpy y WPScan].

Instalación:

  Hay muchas formas de Instalar WPSCrackGUI, la primera es utilizar algún paquete binario según el distro que estemos utilizando y realizar la instalación como un programa normal y corriente. Luego una alternativa en el caso de las versiones betas o sin empaquetar podemos lanzar directamente el Gambascript desde el terminal sin necesidad de instalar el mismo.

Pasos de Ejecución desde el Terminal:

Código:
wget http://sourceforge.net/projects/wpscrackgui/files/Beta/WPSCrackGUI-v1.2.1-beta-gambas2.gambas
chmod 777 WPSCrackGUI-v1.2.1-beta-gambas2.gambas
./WPSCrackGUI-v1.2.1-beta-gambas2.gambas

- Con Wget descargamos el archivo *.gambas de la ultima versión disponible en SourceForge.
- Luego le damos accesos al archivo.
- Por ultimo lanzamos el programa.

En el caso de tener instalado ya una versión antigua de WPSCrackGUI y queremos actualizar la misma podemos realizarlo de la siguiente manera:

Código:
wget http://sourceforge.net/projects/wpscrackgui/files/Beta/WPSCrackGUI-v1.2.1-beta-gambas2.gambas
mv WPSCrackGUI-v1.2.1-beta-gambas2.gambas WPSCrackGUI.gambas
cp WPSCrackGUI.gambas /usr/bin/
cp WPSCrackGUI.gambas /usr/local/bin/
cd /usr/bin/
chmod 777 WPSCrackGUI.gambas
cd /usr/local/bin/
chmod 777 WPSCrackGUI.gambas
./WPSCrackGUI.gambas

- Con Wget descargamos el archivo *.gambas de la ultima versión disponible en SourceForge.
- Con mv cambiamos el nombre de la versión al instalado.
- Con cp copiamos a los directorios genéricos de instalación de WPSCrackGUI.
- Con cd entramos la carpeta de instalación.
- Luego le damos accesos al archivo.
- Con cd entramos la carpeta de instalación.
- Luego le damos accesos al archivo.
- Por ultimo lanzamos el programa.

Ahora podemos lanzar desde el lanzador ya creado la ultima versión actual de WPSCrackGUI.

Últimos Cambios:

v1.2.4:

 * KeyGen Tenda v2.0
 * Keygen Kozumi v2.0
 * Keygen Edimax v2.0
 * Keygen Nisuta v2.0
 * Keygen Belkin v2.0
 * Agregado Instalador Reaver-MOD.
 * Agregado Multi-Opción de Ataque (Reaver|Reaver-MOD)
 * Solucionado Errores en WPSVerificator.
 * Solucionado Errores de Resolución de Pantalla.
 * Actualizado el Envio de Pines a Base de Datos Online (WPSdb)
 * Agregada la opción de Buscar en WPSdb Online.
 * Agregada la opción de Envio de Pin a WPSdb Online.
 * Base de Datos: MAC: #155 - PIN: #350.
 * Agregado envió de Bugs.
 * Soporte para el sistema operativo Mageia.

v1.2.3:
 * Edición Prototipo no Editada.

v1.2.2:

 * Actualizador v1.4: v1.2.2 - R3 Agregado: ./configure --prefix=/usr --sysconfdir=/etc
 * Actualizador v1.3: v1.2.2 - R2 Agregado: ./configure --prefix=/usr --sysconfdir=/etc
 * Base de Datos de Pines #350 / MAC's: 155.
 * Agregado envió de Bugs.

v1.2.1:
 * Se Adiciono el Idioma Portugués.
 * Se Adiciono el Keygen Kozumi.
 * Se Adiciono el Keygen Edimax.
 * Se Adiciono el Keygen Belkin.
 * Se Adiciono el Keygen Nisuta.
 * Actualización de Base de datos a: #301 Pines, #120 MAC Address.
 * Solución de Errores en General.

v1.2.0:
 * Nueva Herramienta PINCheck v1.0.
 * Nuevo Diccionario 5000-9000 y Continuar.
 * Base de datos de PIN's: #250.

v1.1.8:
 * Base de Datos de Pines: #233.
 * Agregado Keygens -> Tenda (C8:3A:35).
 * Solucionados Errores en General.

v1.1.7:
 * Agregado idioma Francés.
 * Agregado en Herramientas: "Verificar WPS Activado".
 * Agregado en Herramientas: "Actualizar Reaver-WPS a v1.3".
 * Base de Datos de Pines #115 / MAC's: 66.
 * Corregidos los errores en los idiomas.
 * Solucionados los errores en general.
 * Créditos Mejorados.

v1.1.6:
 * Base de datos de pines: #100 / MAC: #62
 * Editados los Créditos.
 * Agregado en Opciones Avanzadas Diccionario Genérico Inverso.
 * Solucionados Errores con el Script Actualizador.

v1.1.5:
 * Base de datos de pines: #81 / MAC: #52
 * Editados los Créditos.
 * Solucionados los Errores de Envio de PIN.
 * Envíos de PIN mediante Google Chrome y Mozilla Firefox.
 * Agregadas Opciones Avanzadas.
 * Agregado en Opciones Avanzadas Diccionario Genérico.
 * Agregado en Opciones Avanzadas Diccionario Mejorado.
 * Solucionados Errores en General.

v1.0.4:
 * Edición Prototipo no Editada.

v1.0.3:
 * Edición Prototipo no Editada.

v1.1.2: (Pegasus Edition)
 * Versión Única para AirUbuntu 5 (Pegasus Edition)

v1.1.1:
 * Solucionado el error en el script de Actualización de Reaver-WPS.
 * Solucionados errores en General.
 * Base de Datos de Pines: #58.
 * Editados WPScan y WPSpy.
 * Agregado Créditos.

v1.0.9:
 * Soporte para Debian, Fedora, Mandriva, OpenSUSE, Ubuntu y AirUbuntu.
 * Solucionado el error en WASH de FCS Invalid.
 * Base de Datos de Pines: #53.

v1.0.8:
 * Agregado sistema de recuperación de sesión perdida.
 * Base de Datos de Pines: #44.
 * Mejorado el cambio de MAC Address.
 * Solución de errores en general.

v1.0.7:
 * Agregado el Escaneo de redes por medio de Wash, WPScan, WPSpy.
 * Agregado el Ataque por especificación de PIN.
 * Abrir carpeta de archivos de sesión.
 * Traducción al Español y al Ingles.
 * Opción de Aportar PIN para la base de datos (Completo o Parcial).
 * Solucionados errores en general.

v1.0.6:
 * Solución de varios errores.
 * Nueva base de datos de pins.
 * Actualización Automática a la ultima versión de Reaver-WPS.

v1.0.5:
 * Solucionados errores en general.

v1.0.4:
 * Edición de prueba no editada.

v1.0.3:
 * Configuración de Ataques.
 * Solución de varios errores.

v1.0.2:
 * Solucionados errores en general.

v1.0.1:
 * Solucionados los errores con los terminales.
 * Solucionados errores en general.
 * Manual.

v1.0.0:
 * Edición Prototipo Alpha no Editada.

Imágenes:




Vídeos:





WPSCrackGUI Press:

http://www.arg-wireless.com.ar/index.php/topic,698.0.html

http://foro.elhacker.net/wireless_en_linux/wpscrackgui_v121_beta_13012013-t352541.0.html

http://www.blackploit.com/2012/03/wpscrackgui-interfaz-grafica-para-el.html

http://toolsyard.thehackernews.com/2012/06/wpscrackgui-v-118-graphical-tool-for.html

http://seclist.us/2013/01/update-wpscrackgui-v-1-2-1.html

http://xiaopan.co/forums/threads/wps-pin-database-via-wpscrackgui.434/

http://factoriawireless.net/aplicaciones-wifi/wpscrackgui/

http://www.redinsegura.com/2012/05/wpscrackgui-interfaz-grafica-para-el.html

http://stuxnethack.blogspot.com.ar/2012/12/wpscrackgui.html

http://ubuntusaurio.blogspot.com.ar/2012/06/wpscrackgui-ataque-wps.html

http://masters-hackers.info/showthread.php?t=19650

http://siriusinfoblog.blogspot.com.ar/2012/04/wpscrackgui.html

http://chicomonte.blogspot.com.ar/2012/02/wpscrackgui-v10.html

http://andres-elladooscuro.blogspot.com.ar/2012/10/wpscrackgui-v118.html

http://dishingtech.blogspot.com.ar/2012/05/how-to-download-install-wpscrackgui-on.html

http://fusionhack.es/foro/index.php?topic=6084.0

http://underc0de.org/foro/wireless/(wpscrackgui)-interfaz-grafica-para-el-crackeo-de-redes-wps-con-reaver/

http://indianhacker.in/showthread.php?116-WPSCRACKGUI-V-1-1-8-Graphical-tool-for-cracking-WPS-Wireless-Pin

http://www.auditoriaswireless.net/index.php/topic,3872.0.html

http://hackingelitegroup.blogspot.com.ar/2012/03/wpscrackgui-interfaz-grafica-para-el.html

http://www.icttf.org/videofeed/UxNfP4gpKls

http://www.wirelessparatontos.es/2012/04/30/493/

http://seclist.wordpress.com/2012/02/13/wpscrackgui-beta-graphical-interface-to-the-network-cracking-wps-reaver/

http://profit22.blogspot.com.ar/2012/03/wpscrackgui-beta-graphical-interface-to.html

http://www.linuxblogger.com.ar/2012/02/wpscrackgui-v10-alpha.html

http://intentodehacker.wordpress.com/2012/07/14/hackin-wpa-psk/

http://www.subhashdasyam.com/2012/03/wireless-wps-gui-cracker.html

http://masters-hackers.info/showthread.php?p=116912

http://www.teknofanaticos.com/video/UxNfP4gpKls/wpscrackgui-v108-reaver-wps/

http://bloggers.com/post/update-wps-crack-gui-v1-1-8-7243119

Descarga:


 
63  Programación / Programación General / Busco lenguaje para programar? en: 1 Febrero 2012, 04:03 am
estoy buscan un lenguaje para programar un programa que:

* Capture el nombre del usuario q lo ejecuta.
* Capture la MAC Address de donde se conecta (router o cable).
* Capturar el nombre de la red en lo posible.
* Capturar si es router la sensibilidad de la señal.
* Utilizar HTML5 para localizar a este usuario.
* Trabajo fácil con base de datos, especial MySQL para web; osea envio a base de datos.

que lenguaje me recomendáis?
64  Seguridad Informática / Wireless en Linux / Inflator [Reaver Command generator] en: 31 Enero 2012, 02:50 am

Con un gran interés de los medios en la vulnerabilidad de la WPS (Wi-Fi Protected Setup) es una herramienta atracador ya bastante familiar. Creación de una interfaz gráfica para el "que" sólo era cuestión de tiempo. Este momento ha dejado a sí mismo de una larga espera y era la herramienta de inflado. Su autor Chunsheng Zhao de China ya ha marcado dos piezas interesantes, y Linux "pentest wifi" Bein distribución construido sobre los cimientos de Tiny Core Linux, y también muy popular alimentación con biberón . El estado actual de la toma de la herramienta de inflado es que es en la forma. deb, oficialmente designados para el 32-BackTrack 5 con el entorno GNOME y Tiny Core Linux 4.2.1. De todas formas pero se puede instalar y ejecutar en la versión KDE de BackTrack quinto Códigos fuente no están disponibles, por lo que los usuarios tienen una de 64 bits BackTrack 5, por el momento? mala suerte.

Atracador está disponible en los repositorios BackTrack-u, por lo que en este caso, se instalará directamente desde su lugar de recolección manual. A continuación, tire de inflado, descomprimir el archivo e instalar el archivo. Deb.

wget http://www.ibeini.com/inflator/inflator1.0-backtrack5r1-gnome-bit32.zip
unzip-inflator1.0 backtrack5r1-gnome-bit32.zip
dpkg-i-inflator1.0 backtrack5r1-gnome-bit32.deb


Selección de la tarjeta wifi y cambiar al modo monitor


AP escanear con WPS


Seleccione un punto de acceso, que será dirigida en contra de la prueba de seguridad


Análisis de seguridad


La prueba terminó con un resultado positivo  ;D


FUENTE: http://www.hack4fun.eu/2012/01/inflator-reaver-command-generator/

LAMENTABLEMENTE NO FUNCIONA EN UBUNTU 11.04 O SUPERIOR. NO HE ENCONTRADO PORQUE PASA ESTO. TAMBIEN LOS PROGRAMAS QUE ERAN DEL BEINI PARA UBUNTU NO FUNCIONA NINGUNO A PARTIR DE 11.04
65  Foros Generales / Sugerencias y dudas sobre el Foro / Subforo de programación en Android? en: 18 Enero 2012, 05:15 am
últimamente se esta utilizando mucho la programación en Android y estaría buena una categoría (subforo) en programación.
66  Programación / Ingeniería Inversa / Registrar WinRAR con Ingeniería Inversa (ResHack) en: 18 Enero 2012, 04:54 am

WinRAR es uno de los compresores más utilizados de la red, el problema es shareware, esto significa que puede probarlos gratuitamente durante 40 días, pasado este periodo de prueba deberá comprar una licencia o desinstalarlos de su ordenador.

WinRAR no te impide usarlo, por ende tenemos una ventana insoportable que cada ves que lo abramos nos dirá cuantos días nos queda y/o que ya han pasado los 40 días gratuitos. WinRAR no tiene ninguna función bloqueada en sus versiones, simplemente este esta ventana. Por ende lo modificaremos y haremos una versión sin esta ventana que seria igual que registrarlo.

Requerimientos:
  • WinRAR, la ultima versión. Desde Aquí.
  • ResHack.
  • Recursos básicos (Algún icono para cambiar, etc.).

Muy bien, primero instalaremos la versión que descargamos del WinRAR, en mi caso es la versión 4.01. Esta versión según WinRAR vale unos $125,33 (Argentinos), con unos 5 minutos de nuestro tiempo la registraremos sin costo alguno.

Una ves terminada la instalación lo ejecutaremos y veremos:


Bien, ahí tenemos nuestra ventana, ahora vamos a cerrar el WinRAR y abrimos el ResHack, una ves abierto vamos a buscar el archivo ejecutable del WinRAR, WinRAR.exe en "C:\Archivos de programa\WinRAR" y lo abrimos:


Estos son todos los recursos de WinRAR.exe, ahora vamos a mirar cada carpetita para irnos acostumbrando al programa. Como puede ver tenemos Cursores, Imagenes, Iconos, Menús, Dialogos, etc. Todo esto puede ser modificado sin ningún problema.

Ahora vamos a ir a Dialog, si no lo encontraron todavía, vamos a REMINDER, verán:


Hemos encontrado la ventana que siempre nos molesta, bueno ahora, simplemente podemos editarla:


Pero esta no era la idea, la idea era eliminar este dialogo para que no nos moleste cada ves que ejecutamos WinRAR. Bien Simplemente vamos al recurso REMINDER y hacemos click derecho en 1033:


y le daremos a "Delete Resource [Dialog : REMINDER : 1033]" con esto eliminamos toda la ventana. Por ultimo le damos a File -> Save... vamos de nuevo a la carpeta del WinRAR: "C:\Archivos de programa\WinRAR" y veremos que hay dos archivos ahora WinRAR.exe y WinRAR_original.exe, es que ResHack nos hace una copia de seguridad del original. Ejecutamos el WinRAR y veremos que no tenemos nuestra ventana de registro.

Bien, pero si vamos a "Acerca de WinRAR..." encontramos que no esta registrado...


Entonces vamos a hacer figurar como que lo registramos, vamos a ir a Dialog y a ABOUTRARDLG, y veremos la ventana del About:


Ahora editaremos el "40 days trial copy" por "Registrado a nombre de NochesDeCode.com.ar", nos quedaría algo así:


Le damos a "Compile Script" y File -> Save... ejecutamos el WinRAR, vamos a "About me WinRAR..." y veremos que ya figura registrado a nuestro nombre. Simple no? Bien ya hemos eliminado la ventana de inicio y agregamos el texto como si estuviera registrado, ahora para terminar simplemente vamos a cambiarle el icono, para variar un poco... en el ResHack vamos a ir a:


y seleccionamos el icono que queremos ponerle, luego le damos a "Replace" para cambiarlo, nos quedaria algo así:


Ahora para terminar le damos a File -> Save... y listo ya cambiamos nuestro icono.



Seguimos trabajando con ResHack, ahora le toca el turno a "String Table", lo podemos definir como los textos que presenta el programa tanto en labels, textbox (cajas de texto), etc. Osea que para realizar una traducción por ejemplo de un programa debemos editar todos los String Table's.

Volviendo al ejemplo anterior con el WinRAR, no se si no se han dado cuenta pero ha quedado un texto inusual, que nos hemos salteado:


Si, se nos ha olvidado de editar el (copia de evaluación), para editarla y así poder decir que tenemos 100% terminado el trabajo de nuestro WinRAR, vamos a ir a String Table, yo les daré el código de donde esta el texto, pero es simple, al momento de ver tantos String Table's, simplemente hacemos CTRL+F y buscamos la palabra clave hasta que la encontramos; para no estar revisando uno por uno. En este caso es el 55, allí veremos dos textos:

Código
  1. 872, "Correct registration"
  2. 873, "evaluation copy"

Simplemente vamos a reemplazar "evaluation copy", por "Correct registration".


y simplemente ahora si le damos a File -> Save... y tenemos nuestro WinRAR 100% editado.


FUENTES:
http://www.nochesdecode.com.ar/2012/01/registrar-winrar-con-ingenieria-inversa.html
http://www.nochesdecode.com.ar/2012/01/string-table-en-ingenieria-inversa.html
67  Seguridad Informática / Wireless en Windows / infoDEVI v1.1.83 en: 17 Enero 2012, 05:51 am

infoDEVI es un simple programita que se me ocurrio hace unos 10 minutos 8) que nos muestra las características de diferentes dispositivos wireless... actualmente tiene unos 77 dispositivos USB, pronto le agregare más...

Datos:
Peso: 800kb
Programado: vb6

Si falta alguno me dicen y la vamos agregando...

infoDEVI v1.1.71: DESCARGAR
infoDEVI v1.1.83: DESCARGAR
Código Fuente: ;D es muy simple... pronto linux..

68  Seguridad Informática / Wireless en Windows / QSSController v2.1.0.29 (Solo Tp-link) en: 20 Noviembre 2011, 00:59 am

QSSController es un simple parche que cree para los que no utilizamos el boton QSS de nuestra TP-Link, actualmente casi todas las TP-Link poseen este boton y si no tienes un router TP-Link no te funciona, entonces he programado este simple parche que cuando tocamos el QSS, se nos abre el NetStumbler.



Download:
http://www.megaupload.com/?d=TU6D7FVG

Mirrors:
http://www.megaupload.com/?d=4WY604OM
http://www.uploadking.com/6ZU89K2IVI
http://www.uploadhere.com/TYE8LU1M8M
http://depositfiles.com/files/obd21aryx
http://hotfile.com/dl/135481312/d4a304b/QSSController.rar.html
http://www.zshare.net/download/96335392c77ad35e/
http://www.filesonic.com/file/3949996645/QSSController.rar
http://www.fileserve.com/file/H3B33n9/QSSController.rar
http://www.megaupload.com/?d=I9N6QX63
69  Programación / Desarrollo Web / problemas con recuadro en CSS en: 21 Septiembre 2011, 01:58 am
Ten un problema que quizás sea muy simple pero no logro darme cuenta como arreglarlo. Resulta que tengo un recuadro creado en CSS para colocar códigos en un blog; pero cuando el código ingresado dentro del recuadro es muy largo se sale del margen y queda muy mal, lo que quisiera es que el texto respete el recuadro pero no logre hacerlo. Alguien me guía?

Código
  1. <pre class="cuadro">CODIGOS</pre>

Código
  1. .cuadro {
  2.  background-color:#00FFFF right top no-repeat;
  3.  text-align:left left top no-repeat;
  4.  font-color:#0FFFF0;
  5.  width: 98%;
  6.  margin: 2px;
  7.  font-family:verdana;
  8.  border-width:0;
  9.  padding:5px;
  10.  border: 1px dotted #ff0000;
  11.  -webkit-border-radius: 10px;
  12.  -moz-border-radius: 10px;
  13.  border-radius: 10px;
  14. }
70  Programación / Programación Visual Basic / Subida de Archivo a FTP Automatico? en: 4 Septiembre 2011, 00:36 am
bien resulta q estoy trabajandon en un simple programa q envia un archivo jpg para actualizar el sitio aca un cierto tiempo. os pongo el code, y el source para bajar. este por ejemplo esta con txt.

FORM1:
Código
  1. Option Explicit
  2.  
  3. 'Variable Para la clase
  4. Dim Ftp As Class1
  5.  
  6. 'Conectar al servidor FTP.
  7. '***********************************
  8.  
  9. Private Sub cmdConectar_Click()
  10.  
  11.   With Ftp
  12.  
  13.      .Inicializar Me
  14.      'Le establecemos la contraseña de la cuenta Ftp
  15.      .PassWord = txtPassword
  16.  
  17.      'Le establecemos el nombre de usuario de la cuenta
  18.      .Usuario = txtUsuario
  19.  
  20.      'Establecesmo el nombre del Servidor FTP
  21.      .Servidor = txtServidor
  22.  
  23.      '...conectamos al servidor FTP. EL label es el control donde mostrar _
  24.        los errores y el estado de la conexión
  25.      If .ConectarFtp(Label4) = False Then
  26.          MsgBox "No se puedo conectar"
  27.         Exit Sub
  28.       End If
  29.      'Mostramos en el label el path del directorio actual donde estamos _
  30.        ubicados en el servidor
  31.       lblDiractual = Ftp.GetDirectorioActual
  32.  
  33.       'Le indicamos el ListView donde se listarán los archivos
  34.       Set .ListView = ListView1
  35.  
  36.      .ListarArchivos
  37.   End With
  38.      'Habilitamos los controles del frame2 (subir archivo, bajar, borrar etc..)
  39.      Frame2.Enabled = True
  40.  
  41. End Sub
  42.  
  43. Private Sub CmdDesconectar_Click()
  44. 'Desconectamos del servidor FTP
  45. Ftp.Desconectar
  46. Frame2.Enabled = False
  47. End Sub
  48.  
  49. 'Establece el modo de transferencia (binario, Ascii o desconocido)
  50. Private Sub Combo1_Click()
  51. Select Case Combo1.ListIndex
  52.  Case 0: Ftp.TipoTransferencia = [ ASCII ]
  53.  Case 1: Ftp.TipoTransferencia = [ BINARIO ]
  54.  Case 2: Ftp.TipoTransferencia = [ DESCONOCIDO ]
  55. End Select
  56.  
  57. End Sub
  58.  
  59. 'Crear Directorio en el directorio FTP actual
  60. Private Sub Command1_Click()
  61. Dim carpeta As String
  62. carpeta = InputBox("Escriba el nombre de la carpeta", "Crear directorio")
  63. If carpeta <> "" Then
  64.   Ftp.CrearDirectorio carpeta
  65. End If
  66. End Sub
  67.  
  68.  
  69. 'Sube un archivo al FTP
  70. Private Sub Command3_Click()
  71. 'On Error GoTo errsub
  72. Dim i As Integer
  73. cd.CancelError = True
  74. 'cd.ShowOpen
  75. If cd.FileName = "F:\code\sitio\tren.txt" Then Exit Sub
  76.  
  77. For i = 1 To ListView1.ListItems.Count
  78.    If cd.FileTitle = ListView1.ListItems(i) Then
  79.       If MsgBox("El archivo que itenta subir ya existe. ¿Sobreescribirlo?", _
  80.                  vbQuestion + vbYesNo) = vbYes Then
  81.  
  82.         ListView1.ListItems.Remove i
  83.         Ftp.SubirArchivo cd.FileName, cd.FileTitle
  84.         Exit Sub
  85.        Else
  86.         Exit For
  87.       End If
  88.    End If
  89. Next
  90.  
  91. Ftp.SubirArchivo cd.FileName, cd.FileTitle
  92.  
  93. Exit Sub
  94. errsub:
  95. If Err.Number = 32755 Then Exit Sub
  96. End Sub
  97.  
  98. Private Sub Command2_Click()
  99.    'Actualiza el ListView mostrando los dir y archivos del dir Ftp actual
  100.    Ftp.Actualizar
  101. End Sub
  102.  
  103.  
  104. 'Renombrar archivo remoto
  105. Private Sub Command4_Click()
  106. Dim localFile As String, nuevoNombre As String
  107.  
  108. nuevoNombre = InputBox("Se va a renombrar el archivo: " & ListView1.SelectedItem & vbCrLf & "Escriba el nuevo nombre para este archivo")
  109.  
  110. If nuevoNombre = "" Then Exit Sub
  111.  
  112. Ftp.RenombrarArchivo ListView1.SelectedItem, nuevoNombre
  113.  
  114. End Sub
  115.  
  116.  
  117. 'Eliminar archivo
  118. Private Sub Command5_Click()
  119. If ListView1.SelectedItem Is Nothing Then MsgBox "No hay ningún archivo seleccionado para eliminar", vbInformation: Exit Sub
  120.  
  121. If MsgBox("Eliminar el archivo:" & ListView1.SelectedItem & "??", vbYesNo + vbExclamation) = vbYes Then
  122.   Ftp.EliminarArchivo ListView1.SelectedItem
  123.   ListView1.ListItems.Remove ListView1.SelectedItem.Index
  124. End If
  125. End Sub
  126.  
  127.  
  128. 'Eliminar carpeta Ftp
  129. Private Sub Command6_Click()
  130. If ListView1.SelectedItem Is Nothing Then MsgBox "No hay ninguna carpeta seleccionada para eliminar", vbInformation: Exit Sub
  131.  
  132. If MsgBox("Eliminar el Directorio: " & vbCrLf & ListView1.SelectedItem & "??", vbYesNo + vbExclamation) = vbYes Then
  133.   Ftp.EliminarDirectorio ListView1.SelectedItem
  134.   ListView1.ListItems.Remove ListView1.SelectedItem.Index
  135. End If
  136.  
  137.  
  138. End Sub
  139.  
  140. 'Descarga un archivo del FTP
  141. Private Sub Command7_Click()
  142. Dim pathLocal As String
  143. pathLocal = InputBox("Escriba la ruta donde descargar el archivo remoto" & vbCrLf & ListView1.SelectedItem, "descargar archivo", "c:\")
  144.  If pathLocal = "" Then
  145.     Exit Sub
  146.  Else
  147.     Ftp.ObtenerArchivo ListView1.SelectedItem, pathLocal & _
  148.                        ListView1.SelectedItem
  149.  End If
  150. End Sub
  151.  
  152. Private Sub Form_Unload(Cancel As Integer)
  153. 'Eliminamos la referencia de la clase
  154. Set Ftp = Nothing
  155. End Sub
  156.  
  157. 'Cambia de directorio y actualiza la lista al hacer dobleclick
  158. Private Sub ListView1_DblClick()
  159. If ListView1.SelectedItem.SmallIcon = "carpeta" Then
  160.   'cambiamos de Dir
  161.   Ftp.CambiarDirectorio ListView1.SelectedItem
  162.   Ftp.ListarArchivos 'Lista los archivos
  163.   'Mostramos el directorio actual en el Label
  164.   lblDiractual = Ftp.GetDirectorioActual
  165.  
  166. End If
  167. End Sub
  168.  
  169.  
  170.  
  171. Private Sub Form_Load()
  172. Set Ftp = New Class1
  173. Combo1 = Combo1.List(0)
  174.   With Ftp
  175.  
  176.      .Inicializar Me
  177.      'Le establecemos la contraseña de la cuenta Ftp
  178.      .PassWord = txtPassword
  179.  
  180.      'Le establecemos el nombre de usuario de la cuenta
  181.      .Usuario = txtUsuario
  182.  
  183.      'Establecesmo el nombre del Servidor FTP
  184.      .Servidor = txtServidor
  185.  
  186.      '...conectamos al servidor FTP. EL label es el control donde mostrar _
  187.        los errores y el estado de la conexión
  188.      If .ConectarFtp(Label4) = False Then
  189.          MsgBox "No se puedo conectar"
  190.         Exit Sub
  191.       End If
  192.      'Mostramos en el label el path del directorio actual donde estamos _
  193.        ubicados en el servidor
  194.       lblDiractual = Ftp.GetDirectorioActual
  195.  
  196.       'Le indicamos el ListView donde se listarán los archivos
  197.       Set .ListView = ListView1
  198.  
  199.      .ListarArchivos
  200.   End With
  201.      'Habilitamos los controles del frame2 (subir archivo, bajar, borrar etc..)
  202.      Frame2.Enabled = True
  203.      On Error GoTo errsub
  204. Dim i As Integer
  205. 'cd.CancelError = True
  206. 'cd.ShowOpen
  207. If cd.FileName = "F:\code\sitio\tren.txt" Then Exit Sub
  208.  
  209. For i = 1 To ListView1.ListItems.Count
  210.    If cd.FileTitle = ListView1.ListItems(i) Then
  211.       If MsgBox("El archivo que itenta subir ya existe. ¿Sobreescribirlo?", _
  212.                  vbQuestion + vbYesNo) = vbYes Then
  213.  
  214.          ListView1.ListItems.Remove i
  215.          Ftp.SubirArchivo cd.FileName, cd.FileTitle
  216.          Exit Sub
  217.        Else
  218.          Exit For
  219.       End If
  220.    End If
  221. Next
  222.  
  223. Ftp.SubirArchivo cd.FileName, cd.FileTitle
  224.  
  225. Exit Sub
  226. errsub:
  227. If Err.Number = 32755 Then Exit Sub
  228. End Sub
  229.  

Class1:
Código
  1. 'Path mas largo
  2. Private Const MAX_PATH = 260
  3. 'Constante para el atributo de directorio
  4. Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
  5.  
  6. Private Declare Function FileTimeToSystemTime Lib "kernel32" _
  7. (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
  8.  
  9. Private Type SYSTEMTIME
  10.    intYear As Integer
  11.    intMonth As Integer
  12.    intDayOfWeek As Integer
  13.    intDay As Integer
  14.    intHour As Integer
  15.    intMinute As Integer
  16.    intSecond As Integer
  17.    intMilliSeconds As Integer
  18. End Type
  19.  
  20.  
  21. '--- tipos de archivos --- para el Upload y Download
  22. Private Const FTP_TRANSFER_TYPE_UNKNOWN = &H0
  23. Private Const FTP_TRANSFER_TYPE_ASCII = &H1
  24. Private Const FTP_TRANSFER_TYPE_BINARY = &H2
  25.  
  26. 'Puerto FTP
  27. Private Const INTERNET_DEFAULT_FTP_PORT = 21
  28. Private Const INTERNET_SERVICE_FTP = 1
  29.  
  30. ' Modo de conexión FTP
  31. Private Const INTERNET_FLAG_PASSIVE = &H8000000
  32. Private Const PassiveConnection As Boolean = True
  33.  
  34. '--- formas de entrar en internet ---
  35. ' usa config del registro
  36. Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
  37. ' directo a internetnet
  38. Private Const INTERNET_OPEN_TYPE_DIRECT = 1
  39. ' via  proxy
  40. Private Const INTERNET_OPEN_TYPE_PROXY = 3
  41. ' prevent using java/script/INS
  42. Private Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4
  43.  
  44. 'Type para atributos de fecha y hora de archivos
  45. Private Type FILETIME
  46.    dwLowDateTime As Long
  47.    dwHighDateTime As Long
  48. End Type
  49.  
  50. 'Otros atributos de archivo tamaño, nombre, fecha etc..
  51. Private Type WIN32_FIND_DATA
  52.    dwFileAttributes As Long
  53.    ftCreationTime As FILETIME
  54.    ftLastAccessTime As FILETIME
  55.    ftLastWriteTime As FILETIME
  56.    nFileSizeHigh As Long
  57.    nFileSizeLow As Long
  58.    dwReserved0 As Long
  59.    dwReserved1 As Long
  60.    cFileName As String * MAX_PATH
  61.    cAlternate As String * 14
  62. End Type
  63.  
  64. ' Declaraciones Apis
  65. '***************************************************************
  66.  
  67.  
  68. Private Declare Function InternetCloseHandle _
  69.  Lib "wininet.dll" (ByVal hInet As Long) As Integer
  70. 'Establece una conexión a internet para poder iniciar seción Ftp
  71. Private Declare Function InternetConnect _
  72.  Lib "wininet.dll" Alias "InternetConnectA" _
  73.  (ByVal hInternetSession As Long, _
  74.   ByVal sServerName As String, _
  75.   ByVal nServerPort As Integer, _
  76.   ByVal sUserName As String, _
  77.   ByVal sPassword As String, _
  78.   ByVal lService As Long, ByVal lFlags As Long, _
  79.   ByVal lContext As Long) As Long
  80. 'Conecta al Ftp
  81. Private Declare Function InternetOpen _
  82.  Lib "wininet.dll" Alias "InternetOpenA" _
  83.   (ByVal sAgent As String, ByVal lAccessType As Long, _
  84.    ByVal sProxyName As String, _
  85.    ByVal sProxyBypass As String, _
  86.    ByVal lFlags As Long) As Long
  87. 'Establece el path corriente
  88. Private Declare Function FtpSetCurrentDirectory _
  89.   Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _
  90.   (ByVal hFtpSession As Long, _
  91.    ByVal lpszDirectory As String) As Boolean
  92. 'Recupera el path corriente
  93. Private Declare Function FtpGetCurrentDirectory _
  94.   Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
  95.  (ByVal hFtpSession As Long, _
  96.   ByVal lpszCurrentDirectory As String, _
  97.   lpdwCurrentDirectory As Long) As Long
  98. 'Crea un directorio
  99. Private Declare Function FtpCreateDirectory _
  100.   Lib "wininet.dll" Alias "FtpCreateDirectoryA" _
  101.   (ByVal hFtpSession As Long, _
  102.   ByVal lpszDirectory As String) As Boolean
  103. 'Elimina un directorio del FTP
  104. Private Declare Function FtpRemoveDirectory _
  105.  Lib "wininet.dll" Alias "FtpRemoveDirectoryA" _
  106.  (ByVal hFtpSession As Long, _
  107.  ByVal lpszDirectory As String) As Boolean
  108. 'Borra un fichero
  109. Private Declare Function FtpDeleteFile _
  110.  Lib "wininet.dll" Alias "FtpDeleteFileA" _
  111.  (ByVal hFtpSession As Long, _
  112.  ByVal lpszFileName As String) As Boolean
  113. 'Renombra un fichero
  114. Private Declare Function FtpRenameFile _
  115.  Lib "wininet.dll" Alias "FtpRenameFileA" _
  116.  (ByVal hFtpSession As Long, _
  117.  ByVal lpszExisting As String, _
  118.  ByVal lpszNew As String) As Boolean
  119. 'Recupera un archivo
  120. Private Declare Function FtpGetFile Lib "wininet.dll" _
  121.   Alias "FtpGetFileA" (ByVal hConnect As Long, _
  122.  ByVal lpszRemoteFile As String, _
  123.  ByVal lpszNewFile As String, ByVal fFailIfExists As Long, _
  124.  ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, _
  125.  ByRef dwContext As Long) As Boolean
  126. 'Escribe un archivo
  127. Private Declare Function FtpPutFile Lib "wininet.dll" _
  128.   Alias "FtpPutFileA" (ByVal hConnect As Long, _
  129.  ByVal lpszLocalFile As String, _
  130.  ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, _
  131.  ByVal dwContext As Long) As Boolean
  132. 'Api Para los errores
  133. Private Declare Function InternetGetLastResponseInfo _
  134.  Lib "wininet.dll" Alias "InternetGetLastResponseInfoA" _
  135.  (lpdwError As Long, ByVal lpszBuffer As String, _
  136.   lpdwBufferLength As Long) As Boolean
  137. 'Busca el primer archivo de un path
  138. Private Declare Function FtpFindFirstFile Lib "wininet.dll" _
  139.   Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, _
  140.   ByVal lpszSearchFile As String, _
  141.   lpFindFileData As WIN32_FIND_DATA, _
  142.   ByVal dwFlags As Long, ByVal dwContent As Long) As Long
  143. 'api para buscar el siguiente archivo
  144. Private Declare Function InternetFindNextFile Lib "wininet.dll" _
  145.   Alias "InternetFindNextFileA" (ByVal hFind As Long, _
  146.   lpvFindData As WIN32_FIND_DATA) As Long
  147.  
  148.  
  149.  
  150. Public Enum e_TipoTransferencia
  151. [ BINARIO ] = FTP_TRANSFER_TYPE_BINARY
  152. [ ASCII ] = FTP_TRANSFER_TYPE_ASCII
  153. [ DESCONOCIDO ] = FTP_TRANSFER_TYPE_UNKNOWN
  154. End Enum
  155.  
  156.    'Handle de la conexión Ftp
  157.    Dim HandleConect As Long
  158.    'Handle de la conexión a Internet
  159.    Dim hOpen As Long
  160.  
  161. 'Variables locales
  162. Private m_DirectorioActual As String
  163. Private m_Usuario As String
  164. Private m_PassWord As String
  165. Private m_Servidor As String
  166. Private m_DirAnterior As String
  167. Private m_listView As ListView
  168. Private m_TipoTransferencia  As Long
  169. Private m_form As Form
  170.  
  171. Private ctrl As Object
  172.  
  173. 'Funciones Varias para el manejo de archivos y carpetas en el servidor Ftp
  174. '***********************************************************************
  175. '***********************************************************************
  176.  
  177. 'Rutina que conecta al Servidor Ftp
  178. Public Function ConectarFtp(Optional ControlStatus As Object _
  179.                            = Nothing) As Boolean
  180.  
  181. 'Verificamos que los datos de la cuenta estén establecidas, si no mostramos un _
  182.  mensaje y salimos
  183. If m_Usuario = "" Or m_Servidor = "" Or m_PassWord = "" Then
  184.   MsgBox "No se puede conectar. Verifique el Nombre de usuario," _
  185.   & "El nombre del Servidor y la contraseña que estén establecidas", vbCritical
  186.   ConectarFtp = False
  187.   Exit Function
  188. End If
  189.  
  190.  
  191.   Set ctrl = ControlStatus
  192.   Status "...Intentando conectar a: " & m_Servidor
  193.   m_form.MousePointer = vbHourglass
  194.  
  195. 'Abrimos una conexión a Internet
  196. hOpen = InternetOpen(vbNullString, _
  197.        INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, _
  198.        vbNullString, 0)
  199.  
  200. If hOpen = 0 Then
  201.   Status "Error en la conexión a internet, compruebe la conexión"
  202.   m_form.MousePointer = vbDefault
  203.   ConectarFtp = False
  204.   Exit Function
  205. End If
  206. 'Conectamos al servidor FTP, pasandole los datos: login y servidor
  207. HandleConect = InternetConnect(hOpen, m_Servidor, _
  208.               INTERNET_DEFAULT_FTP_PORT, m_Usuario, _
  209.               m_PassWord, INTERNET_SERVICE_FTP, _
  210.               IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0)
  211.  
  212. If HandleConect = 0 Then
  213.   Status "Error. Compruebe los datos del servidor Ftp sin son correctos"
  214.   m_form.MousePointer = vbDefault
  215.   ConectarFtp = False
  216.   Exit Function
  217. End If
  218. Status "Conectado a: " & m_Servidor
  219. m_form.MousePointer = vbDefault
  220. ConectarFtp = True
  221. End Function
  222.  
  223. 'Desconecta del servidor FTP
  224. '**************************************************
  225. Public Sub Desconectar()
  226.    Dim ret As Long
  227.    'cierra la conexion FTP
  228.    ret = InternetCloseHandle(HandleConect)
  229.    If ret = 0 Then Status "Error al desconectar": Exit Sub
  230.    'cierra la conexion a internet
  231.    ret = InternetCloseHandle(hOpen)
  232.    If ret = 0 Then Status "Error al desconectar": Exit Sub
  233.  
  234.    Status "Desconectado de: " & m_Servidor
  235.    Class_Terminate
  236. End Sub
  237.  
  238. 'Recupera el directorio actual donde estamos ubicados
  239. '*****************************************************
  240. Public Function GetDirectorioActual() As String
  241.    'Crea un buffer
  242.    m_DirectorioActual = String(MAX_PATH, 0)
  243.    'Obtenemos el directorio actual
  244.     ret = FtpGetCurrentDirectory(HandleConect, m_DirectorioActual, _
  245.           Len(m_DirectorioActual))
  246.     GetDirectorioActual = m_DirectorioActual
  247. End Function
  248.  
  249. 'Establecemos el Directorio Actual
  250. '****************************************************
  251. Public Sub CambiarDirectorio(PathDirectorio As String)
  252.  
  253.  
  254.    Dim pData As WIN32_FIND_DATA
  255.    Dim hFind As Long  'handle usado para buscar fichs en FTP
  256.    Dim ret As Long
  257.    Dim strDir As String
  258.  
  259.  
  260.  
  261.    strDir = Replace(m_DirectorioActual, Chr(0), "")
  262.  
  263.    If strDir = "/" And PathDirectorio = "../Subir un nivel" Then: Exit Sub
  264.  
  265.    m_form.MousePointer = vbHourglass
  266.  
  267.    If PathDirectorio = "../Subir un nivel" Then
  268.      pos = InStrRev(strDir, "/")
  269.      strDir = Left(strDir, pos)
  270.  
  271.  
  272.  
  273.      'Cambia al Directorio Ftp especificado
  274.       ret = FtpSetCurrentDirectory(HandleConect, strDir)
  275.  
  276.       If ret = 0 Then
  277.          Status "Error al cambiar de directorio."
  278.       End If
  279.       m_form.MousePointer = vbDefault
  280.       Exit Sub
  281.    End If
  282.  
  283.    'Cambia al Directorio especificado
  284.    ret = FtpSetCurrentDirectory(HandleConect, strDir & "/" & PathDirectorio)
  285.  
  286.    If ret = 0 Then
  287.       Status "Error al cambiar de directorio"
  288.    End If
  289.    m_form.MousePointer = vbDefault
  290.  
  291. End Sub
  292.  
  293.  
  294. 'Crea un nuevo directorio
  295. '*******************************************
  296. Public Sub CrearDirectorio(NameDirectorio As String)
  297.  
  298. 'Creamos un nuevo  directorio ('testing')
  299. ret = FtpCreateDirectory(HandleConect, NameDirectorio)
  300. If Not ret Then
  301.   Status "Error al crear el directorio, compruebe el nombre que sea válido"
  302. Else
  303.   m_listView.ListItems.Add , , NameDirectorio, , "carpeta"
  304.   m_listView.ListItems(m_listView.ListItems.Count).Selected = True
  305.   m_listView.SetFocus
  306. End If
  307.  
  308. End Sub
  309.  
  310. 'Crea o sube un nuevo Archivo.
  311. '********************************************
  312. Public Sub SubirArchivo(localArchivo As String, NombreArchivoRemoto As String)
  313. 'manda fichero al servidor FTP
  314. ret = FtpPutFile(HandleConect, localArchivo, NombreArchivoRemoto, _
  315.           m_TipoTransferencia, 0)
  316. If ret Then
  317.   m_listView.ListItems.Add , , NombreArchivoRemoto, , "archivo"
  318.   m_listView.ListItems(m_listView.ListItems.Count).Selected = True
  319.   m_listView.SetFocus
  320. Else
  321.   Status "Error al subir el fichero:" & NombreArchivoRemoto
  322. End If
  323. End Sub
  324.  
  325.  
  326. 'Renombra un archivo en el directorio Ftp corriente
  327. '****************************************************
  328. Public Sub RenombrarArchivo(Archivo As String, nuevoNombre As String)
  329.  
  330. 'renombra 'test.htm' to 'apiguide.htm'
  331. ret = FtpRenameFile(HandleConect, Archivo, nuevoNombre)
  332.  
  333. If ret Then
  334.   m_listView.SelectedItem.Text = nuevoNombre
  335.   m_listView.SetFocus
  336. Else
  337.   Status "Error al renombrar el fichero:" & nuevoNombre
  338. End If
  339.  
  340. End Sub
  341.  
  342.  
  343. Public Sub ObtenerArchivo(ArchivoRemoto As String, ArchivoLocal As String, _
  344.           Optional SobreEscribir As Boolean = False)
  345. 'recupera fichero del servidor FTP: ArchivoRemoto es el nombre del archivo remoto
  346. 'ArchivoLocal es el nombre y ruta donde se colocará el archivo en local
  347. ret = FtpGetFile(HandleConect, ArchivoRemoto, ArchivoLocal, _
  348.           SobreEscribir, 0, m_TipoTransferencia, 0)
  349.  
  350. If ret Then
  351.   Status "Archivo descargado correctamente:"
  352.   m_listView.SetFocus
  353. Else
  354.   Status "Error al intentar descargar el fichero: " & ArchivoRemoto
  355. End If
  356.  
  357. End Sub
  358.  
  359. 'Eliminar Archivo del servidor Ftp
  360. Public Sub EliminarArchivo(Archivo As String)
  361. 'elimina el fichero del servidor FTP
  362. ret = FtpDeleteFile(HandleConect, Archivo)
  363. If Not ret Then
  364.    Status "Error. No se pudo eliminar el archivo: " & Archivo
  365. End If
  366. End Sub
  367.  
  368.  
  369. Public Sub EliminarDirectorio(Directorio As String)
  370. 'elimina el directorio
  371. ret = FtpRemoveDirectory(HandleConect, Directorio)
  372. If Not ret Then
  373.    Status "Error. No se pudo eliminar el Directorio: " & Directorio
  374. End If
  375. End Sub
  376.  
  377. Private Sub Status(mensaje As String)
  378. On Error GoTo SubError
  379. ctrl = mensaje
  380. Exit Sub
  381. SubError:
  382. If Err.Number = 91 Then Resume Next
  383. End Sub
  384.  
  385.  
  386. Public Sub ListarArchivos()
  387.    Dim Item As ListItem
  388.    Dim pData As WIN32_FIND_DATA
  389.    Dim hFind As Long  'handle usado para buscar fichs en FTP
  390.    Dim ret As Long   'valor devuelto por API
  391.  
  392.  
  393.    m_form.MousePointer = vbHourglass
  394.  
  395.    'crea buffer
  396.    pData.cFileName = String(MAX_PATH, 0)
  397.  
  398.    'busca el primer fichero
  399.    hFind = FtpFindFirstFile(HandleConect, "*.*", pData, 0, 0)
  400.  
  401.    m_listView.ListItems.Clear
  402.  
  403.    'Si Hfind vale 0 es porque no hay archivos ni directorios
  404.    If hFind = 0 Then
  405.       Set Item = m_listView.ListItems.Add(, , "../Subir un nivel", , "carpeta")
  406.       Item.SubItems(2) = getFecha(pData)
  407.       m_form.MousePointer = vbDefault
  408.       Exit Sub
  409.    End If
  410.  
  411.  
  412.    Set Item = m_listView.ListItems.Add(, , "../Subir un nivel", , "carpeta")
  413.  
  414.    If pData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY Then
  415.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "carpeta")
  416.       Item.SubItems(2) = getFecha(pData)
  417.    Else
  418.  
  419.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "archivo")
  420.       Item.SubItems(1) = Round((pData.nFileSizeLow / 1024), 2) & " Kb"
  421.       Item.SubItems(2) = getFecha(pData)
  422.    End If
  423.  
  424.    'si no hay mas Archivos sale
  425.    If hFind = 0 Then
  426.       m_form.MousePointer = vbDefault
  427.       Exit Sub
  428.    End If
  429.    Do
  430.        'crea buffer
  431.        pData.cFileName = String(MAX_PATH, 0) 'se llena con nulos
  432.        'find the next file
  433.        ret = InternetFindNextFile(hFind, pData)
  434.        'si no hay ficheros, no sigue
  435.        If ret = 0 Then Exit Do
  436.  
  437.  
  438.    If pData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY Or _
  439.                               pData.dwFileAttributes = 0 Then
  440.       'Agrega el nombre del directorio
  441.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "carpeta")
  442.       Item.SubItems(2) = getFecha(pData)
  443.    Else
  444.       'agrega el archivo y Muestra el tamaño del mismo en el LV
  445.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "archivo")
  446.       Item.SubItems(1) = Round((pData.nFileSizeLow / 1024), 2) & " Kb"
  447.       Item.SubItems(2) = getFecha(pData)
  448.    End If
  449.  
  450.    Loop
  451.    'Cerramos el handle de búsqueda
  452.    InternetCloseHandle hFind
  453.    m_listView.Sorted = True
  454.    m_form.MousePointer = vbDefault
  455. End Sub
  456.  
  457.  
  458. 'Actualiza la lista de Archivos y directorios en el ListView
  459. '************************************************************
  460. Public Sub Actualizar()
  461.  
  462.    Dim pData As WIN32_FIND_DATA
  463.    Dim hFind As Long  'handle usado para buscar fichs en FTP
  464.    Dim ret As Long   'valor devuelto por API
  465.    Dim Item As ListItem
  466.  
  467.  
  468.    m_form.MousePointer = vbHourglass
  469.  
  470.    'crea buffer
  471.    pData.cFileName = String(MAX_PATH, 0)
  472.  
  473.    'busca el primer fichero
  474.    hFind = FtpFindFirstFile(HandleConect, "*.*", pData, 0, 0)
  475.  
  476.    m_listView.ListItems.Clear
  477.  
  478.    If hFind = 0 Then
  479.       Set Item = m_listView.ListItems.Add(, , "../Subir un nivel", , "carpeta")
  480.       m_form.MousePointer = vbDefault
  481.       Exit Sub
  482.    End If
  483.  
  484.  
  485.    Set Item = m_listView.ListItems.Add(, , "../Subir un nivel", , "carpeta")
  486.  
  487.    If pData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY Then
  488.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "carpeta")
  489.       Item.SubItems(2) = getFecha(pData)
  490.    Else
  491.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "archivo")
  492.       Item.SubItems(1) = Round((pData.nFileSizeLow / 1024), 2) & " Kb"
  493.       Item.SubItems(2) = getFecha(pData)
  494.    End If
  495.  
  496.    'si no hay mas Archivos sale
  497.    If hFind = 0 Then
  498.       m_form.MousePointer = vbDefault
  499.       Exit Sub
  500.    End If
  501.    Do
  502.        'crea buffer
  503.        pData.cFileName = String(MAX_PATH, 0) 'se llena con nulos
  504.        'find the next file
  505.        ret = InternetFindNextFile(hFind, pData)
  506.        'si no hay ficheros, no sigue
  507.        If ret = 0 Then Exit Do
  508.        'Archivo
  509.  
  510.    If pData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY Or pData.dwFileAttributes = 0 Then
  511.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "carpeta")
  512.       Item.SubItems(2) = getFecha(pData)
  513.  
  514.    Else
  515.       Set Item = m_listView.ListItems.Add(, , pData.cFileName, , "archivo")
  516.  
  517.       Item.SubItems(1) = Round((pData.nFileSizeLow / 1024), 2) & " Kb"
  518.       Item.SubItems(2) = getFecha(pData)
  519.  
  520.  
  521.  
  522.  
  523.    End If
  524.  
  525.    Loop
  526.    'Cerramos el handle de búsqueda
  527.    InternetCloseHandle hFind
  528.    m_listView.Sorted = True
  529.    m_form.MousePointer = vbDefault
  530. End Sub
  531.  
  532.  
  533. Private Function getFecha(pData As WIN32_FIND_DATA) As Date
  534.   Dim stSystemTime As SYSTEMTIME
  535.  
  536.            If FileTimeToSystemTime(pData.ftLastWriteTime, stSystemTime) > 0 Then
  537.                VBATime = DateSerial(stSystemTime.intYear, _
  538.                 stSystemTime.intMonth, _
  539.                stSystemTime.intDay) + TimeSerial(stSystemTime.intHour, _
  540.                stSystemTime.intMinute, stSystemTime.intSecond)
  541.            End If
  542.            getFecha = VBATime
  543. End Function
  544.  
  545.  
  546. Public Sub Inicializar(Formulario As Form)
  547.     Set m_form = Formulario
  548. End Sub
  549.  
  550. 'Para mostrar los errores
  551. '************************************************+
  552. Private Sub ShowError()
  553.    Dim lngNumError As Long
  554.    Dim strMemoError As String
  555.    Dim lngTamBuffer As Long
  556.    '-----------------------------
  557.    'Tamaño del buffer
  558.    InternetGetLastResponseInfo lngNumError, _
  559.       strMemoError, lngTamBuffer
  560.    'crea buffer
  561.    strMemoError = String(lngTamBuffer, 0)
  562.    'Recupera informacion del error
  563.    InternetGetLastResponseInfo lngNumError, _
  564.        strMemoError, lngTamBuffer
  565.    'Mostrar el error en msgbox
  566.    MsgBox "Error " & CStr(lngNumError) & ": " & strMemoError, _
  567.       vbOKOnly Or vbCritical
  568. End Sub
  569.  
  570.  
  571. 'Nombre de usuario de la cuenta Ftp
  572. '**********************************
  573. Public Property Get Usuario() As String
  574. Usuario = m_Usuario
  575. End Property
  576.  
  577. Public Property Let Usuario(ByVal vNewValue As String)
  578. m_Usuario = vNewValue
  579. End Property
  580.  
  581. 'Nombre del servidor Ftp
  582. '***********************
  583. Public Property Get Servidor() As String
  584. Servidor = m_Servidor
  585. End Property
  586.  
  587. Public Property Let Servidor(ByVal vNewValue As String)
  588. m_Servidor = vNewValue
  589. End Property
  590.  
  591. 'Contraseña de la cuenta FTP
  592. '***************************
  593. Public Property Get PassWord() As String
  594. PassWord = m_PassWord
  595. End Property
  596.  
  597. Public Property Let PassWord(ByVal vNewValue As String)
  598. m_PassWord = vNewValue
  599. End Property
  600.  
  601. 'Establece el ListView donde listar los ficheros
  602. '***********************************************
  603. Public Property Get ListView() As ListView
  604. Set ListView = m_listView
  605. End Property
  606.  
  607. Public Property Set ListView(ByVal vNewValue As ListView)
  608. Set m_listView = vNewValue
  609. End Property
  610.  
  611. 'Modo de Transferencia
  612. '**********************************************
  613. Public Property Get TipoTransferencia() As e_TipoTransferencia
  614.    TipoTransferencia = m_TipoTransferencia
  615. End Property
  616. Public Property Let TipoTransferencia(NewData As e_TipoTransferencia)
  617.    m_TipoTransferencia = NewData
  618. End Property
  619.  
  620.  
  621. Private Sub Class_Terminate()
  622. On Local Error Resume Next
  623.  'Cerramos la cesión FTP y la conexión a internet
  624.  InternetCloseHandle HandleConect
  625.  InternetCloseHandle hOpen
  626.  'Eliminamos las variables de objeto
  627.  Set ctrl = Nothing
  628.  Set ListView = Nothing
  629.  Set m_form = Nothing
  630. End Sub
  631.  

Proyecto: http://www.mediafire.com/?irabj2910123ird

Ahora mi problema es q mi servidor me da una carpeta "public_html"; donde tengo q guardar el archivo jpg. pero no puedo hacer que lo envie automaticamente a esa carpeta. alguien me podra dar una mano con esto?
Páginas: 1 2 3 4 5 6 [7] 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines