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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Subir un archivo a un FTP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Subir un archivo a un FTP  (Leído 5,446 veces)
gxg

Desconectado Desconectado

Mensajes: 37


Ver Perfil
Subir un archivo a un FTP
« en: 13 Febrero 2011, 21:49 pm »

Hola. estoy utilizando este codigo para que mi programa suba un txt a  ftp, se conecta bien, pero la funcion FtpPutFile me devuelve false. No se que esta fallando en esta funcion, tengo un archivo llamado texto.txt en la misma carpeta que el programa.
¿Me podeis dar alguna idea de lo que pueda estar fallando?



Citar
#include <stdio.h>
#include <wininet.h>

int main(int argc, char *argv[]) {
    HINTERNET Open=InternetOpen("Explorador",0,NULL,NULL,0);
    if(Open==NULL){
       printf("
  • Error al abrir la conexion\n");
       return -1;
       }
    printf("
  • Abriendo conexion..");
   
    HINTERNET Connect=InternetConnect(Open,direccion,21,
                     usuario,contraseña,INTERNET_SERVICE_FTP,0,0);
    if(Connect==NULL){
       InternetCloseHandle(Open);
       printf("
  • Error al conectar con el servidor\n");
       getchar();
       return -1;
       }
       
    printf("OK\n");
    printf("
  • Subiendo archivo...");
   
    BOOL File = FtpPutFile(Connect,"texto.txt","texto.txt",FTP_TRANSFER_TYPE_BINARY,0);
    if (File==FALSE) {
        InternetCloseHandle(Open);
        InternetCloseHandle(Connect);           
        printf("
  • Error al subir archivo\n");
        getchar();
        return -1;
        }
       
    printf("OK\n");
   
    InternetCloseHandle(Open);
    InternetCloseHandle(Connect);
    getchar();
    return 0;
}


En línea

The Swash

Desconectado Desconectado

Mensajes: 194


Programmer


Ver Perfil WWW
Re: Subir un archivo a un FTP
« Respuesta #1 en: 14 Febrero 2011, 20:56 pm »

Amigo, primeramente 2 detalles te recomendaría que llames a la función especificando el tipo de códificación de caracteres ANSI o UNICODE respectivamente A y W.
Ejemplo:

Código:
InternetOpenA
InternetConnectA
FtpPutFileA
FtpSetCurrentDirectoryA

Ahora tu problema además puede deberse a que no estableces el directorio donde escribir el archivo para ello te recomiendo FtpSetCurrentDirectoryA
Prueba y nos comentas..
Saludos




En línea

burbu_1

Desconectado Desconectado

Mensajes: 159


hamen gaoz


Ver Perfil
Re: Subir un archivo a un FTP
« Respuesta #2 en: 14 Febrero 2011, 23:16 pm »

hola  :D,

he probado tu code y me ha ido bien... ;-)

además de lo que comenta The Swash, 
prueba a poner INTERNET_FLAG_PASSIVE en InternetConnect,
tal vez sea por el server  :-\
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Subir un archivo a un FTP
« Respuesta #3 en: 15 Febrero 2011, 10:33 am »

Si uno configura bien el proyecto no hace falta llamar explicitamente a las funciones A o W, las funciones sin estos caracteres son macros que se definen a la correcto automaticamente.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
gxg

Desconectado Desconectado

Mensajes: 37


Ver Perfil
Re: Subir un archivo a un FTP
« Respuesta #4 en: 16 Febrero 2011, 22:43 pm »

Bien, ya he conseguido que funcione, pero ahora tengo un pequeño problema.
La primera vez que se ejecuta este programa en un equipo salta una alarma del firewall de windows que hay que darle manualmente a desbloquear.

¿Se puede evitar esto de alguna manera?
« Última modificación: 16 Febrero 2011, 22:46 pm por gxg » En línea

Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Subir un archivo a un FTP
« Respuesta #5 en: 16 Febrero 2011, 22:54 pm »

Bien, ya he conseguido que funcione, pero ahora tengo un pequeño problema.
La primera vez que se ejecuta este programa en un equipo salta una alarma del firewall de windows que hay que darle manualmente a desbloquear.

poné el código en una dll e inyectala a otro proceso... je

S2
En línea

Garfield07


Desconectado Desconectado

Mensajes: 1.121


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: Subir un archivo a un FTP
« Respuesta #6 en: 16 Febrero 2011, 23:08 pm »

La verdad es que tu código no es una delicia :P...

Este code de aquí ni está terminado ni probado. Tengo mis reservas para usar fscanf, pero bueno... El code tiene muchísimos errores, lo tienes que retocar un puñado, pero creo que se entiende que es mejor no usar las funciones que tú usas...
Mejoras a mi code...
1) User & Pass
2) Mejora mandar archivos.
3) Corrección de fallos de seguridad.
Etc...

Lo siento, pero estoy cansado :P. Aquí te lo dejo, con tres puntitos a mejorar...
Código
  1. #include <time.h>
  2.  
  3. #include <stdio.h>
  4.  
  5. #include <string.h>
  6.  
  7. #include <stdlib.h>
  8.  
  9. #include <winsock2.h>
  10.  
  11.  
  12.  
  13. struct sockaddr_in host;
  14.  
  15. char buffer;
  16.  
  17. SOCKET sockfd;
  18.  
  19. int cont = 0;
  20. FILE *fp;
  21.  
  22.  
  23.  
  24. int times ()
  25.  
  26. {
  27.  
  28. time_t now=time (0);
  29.  
  30. struct tm *ahora;
  31.  
  32. char buffer [40];
  33.  
  34. ahora= (struct tm*)localtime ((const time_t*)&now);
  35.  
  36. strftime (buffer, 40, "%d/%m/%Y %H:%M:%S" , ahora);
  37.  
  38. printf ("%s   ", buffer);
  39.  
  40. return 0;
  41.  
  42. }
  43.  
  44.  
  45.  
  46. int main (int argc, char *argv [])
  47.  
  48. {
  49.  
  50. WSADATA wsa;
  51.  
  52. WSAStartup(MAKEWORD(2,2),&wsa);
  53.  
  54. time_t now=time (0);
  55.  
  56. struct tm *ahora;
  57.  
  58. char hora [40];
  59.  
  60. ahora=localtime ((const time_t*)&now);
  61.  
  62. strftime (hora, 40, "%d/%m/%Y %H:%M:%S" , ahora);
  63.  
  64. printf ("FPPT 1.0 - By Sagrini (2010) - %s\n", hora);
  65.  
  66.  
  67.  
  68. if (argc != 4)
  69. {
  70.  
  71. printf ("%s <target_ip> <port> <txt>\n\n", argv [0]);
  72. return 1;
  73. }
  74. if ((sockfd=socket (2, 1, 0))==-1)
  75. {
  76. printf ("Fatal error creating socket...\n\n");
  77. return 1;
  78. }
  79.  
  80. host.sin_port=htons(port);
  81.  
  82. host.sin_family=AF_INET;
  83.  
  84. host.sin_addr.s_addr=inet_addr (IP);
  85.  
  86. memset (host.sin_zero, 0, 8);
  87.  
  88.  
  89.  
  90. if((connect (sockfd, (struct sockaddr*)&host, sizeof (host)))==-1)
  91. {
  92. printf ("Fatal error connecting socket...\n\n");
  93. return 1;
  94. }
  95.  
  96. times ();
  97.  
  98. printf ("Got connection with %s:%d\n", inet_ntoa (host.sin_addr), ntohs (host.sin_port));
  99.  
  100.  
  101.  
  102. if ((fp = fopen (argv [3], "r+"))==-1)
  103. {
  104. printf ("Fatal error opening %s...\n\n", argv [3]);
  105. return 1;
  106. }
  107. while (!feof (fp))
  108. {
  109. fscanf (fp, "%c", &buffer);
  110. send (sockfd, buffer, 1, 0);
  111. }
  112.  
  113.  
  114. closesocket (sockfd);
  115.  
  116. printf ("Finishing connection with %s:%d\n\n", inet_ntoa (host.sin_addr), ntohs (host.sin_port));
  117.  
  118. return 0;
  119.  
  120. }
  121.  

Sobre la última pregunta... Pues mira, coge y desactiva el firewall xD
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
gxg

Desconectado Desconectado

Mensajes: 37


Ver Perfil
Re: Subir un archivo a un FTP
« Respuesta #7 en: 17 Febrero 2011, 14:28 pm »

Necesito un codigo que anule el firewall de windows sin que el usuario se de cuenta.

O que añada a mi programa en las excepciones del firewall.


Citar
mejor no usar las funciones que tú usas...

¿Por que?
En línea

burbu_1

Desconectado Desconectado

Mensajes: 159


hamen gaoz


Ver Perfil
Re: Subir un archivo a un FTP
« Respuesta #8 en: 17 Febrero 2011, 17:30 pm »

el firewall de windows solo bloquea las conexiones entrantes y no las salientes....
por qué no usas el MODO PASIVO como te recomendé antes???

Código:
HINTERNET Connect=InternetConnect(Open,direccion, 21, usuario,contraseña, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Subir archivo a ftp sin ocx, duda
Programación Visual Basic
~~ 9 4,091 Último mensaje 13 Abril 2007, 21:32 pm
por satan69
Subir archivo a ftp con vb.net
.NET (C#, VB.NET, ASP)
.:Dione:. 2 8,989 Último mensaje 12 Septiembre 2009, 15:23 pm
por .:Dione:.
subir archivo
Programación Visual Basic
federicokpo 0 1,551 Último mensaje 22 Septiembre 2009, 08:22 am
por federicokpo
[php] Error al subir archivo
Desarrollo Web
Puntoinfinito 4 2,722 Último mensaje 7 Enero 2013, 15:37 pm
por Puntoinfinito
Mensaje al subir archivo con codeiginter
Desarrollo Web
yoelrodguez 2 2,279 Último mensaje 22 Abril 2015, 01:25 am
por yoelrodguez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines