• Viernes 15 de Noviembre de 2024, 02:21

Mostrar Mensajes

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


Mensajes - winnipu

Páginas: [1]
1
C/C++ / Re: error grave en programa
« en: Jueves 11 de Noviembre de 2010, 15:49 »
Muchisimas gracias m0squit0. Programa plenamente funcional y sin buffer overflow. Gracias de corazon, me has ayudado mucho. Siento ser tan cazurro, pero llevo cuatro dias con c++. Pregunte en mas sitios, pero en ninguno fueron tan comprensivo y paciente como contigo. Mis mas sentidas gracias.

2
C/C++ / Re: error grave en programa
« en: Jueves 11 de Noviembre de 2010, 09:58 »
Ya he probado eso M0skit0 y sigue sin descargar el archivo en systemroot. No se que hago mal. Antes bufferoverflow pero descargaba el index.html en systemroot, pero ahora sin el bufferoverflow y con lo demas igual salvo que uso strncat en vez de strcat, no descarga index.html en systemroot. Alguna idea de porque no? No se que hacer para ver donde falla.

3
C/C++ / Re: error grave en programa
« en: Jueves 11 de Noviembre de 2010, 08:54 »
El problema es que al ejecutar el programa se produce un buffer overflow, debido a strncat y que no lo manejo adecuadamente. Pero sinceramente no se como corregirlo. He probado usando strncat que en teoria es mas seguro. Con el se acabo el bufferoverflow pero sin embargo no logro descargar el archivo en la ruta adecuada. Pego codigo del ultimo intento:

Código: C++
  1. #include <windows.h>
  2. #include <wininet.h>
  3. #include <string.h>
  4.  
  5. #define RARCHIVO "index.html"
  6.  
  7. int main()
  8. {
  9.   char dir[100];
  10.   strncat(dir, getenv("windir"), 15); //obtiene el path de windows
  11.   strncat(dir, "\System32\", 15); //agrega System32 al path queda por ejemplo c://windows/system32
  12.  strncat(dir, RARCHIVO, 15); // c://windows/system32/index.html
  13.  
  14.  HINTERNET hInternet, hServer;
  15.  ShowWindow(GetForegroundWindow(),SW_HIDE);
  16.  hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
  17.  hServer = InternetConnect(hInternet, "ftp.usuarios.hispa.es", INTERNET_DEFAULT_FTP_PORT, "user", "pass", INTERNET_SERVICE_FTP, 0, 0);
  18.  FtpGetFile(hServer, RARCHIVO, dir, 0, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 0);
  19.  InternetCloseHandle(hInternet);
  20.  InternetCloseHandle(hServer);
  21.  
  22. return 0;
  23. }
  24.  
  25.  
  26.  

4
C/C++ / Re: error grave en programa
« en: Miércoles 10 de Noviembre de 2010, 14:09 »
El problema es que el compilador no me arroja errores. Compila bien con dev cpp. Pero si ejecuto el exe resultante, descarga el archivo en la ruta correcta, pero despues al poco rato salta un mensaje de windows, error grave al ejecutar el programa. El programa debe cerrarse. Notificar o no notificar error.
Eso es lo que me mosquea, hace su labor, pero luego da un error, despues de ejecutado y con el archivo transferido correctamente. No se a que se debe. Tampoco he probado otros compiladores.

5
C/C++ / error grave en programa
« en: Martes 9 de Noviembre de 2010, 22:52 »
Vereis he hecho un programa para que se conecte a un ftp y se descargue un archivo en una determinada carpeta. Al compilar compila bien, y hace lo que se le pide, si bien despues de unos segundos de ejecucion sale una ventana de windows diciendo error grave el programa debe cerrarse. Os pego el code a ver si alguien sabe a que puede ser debido:

Código: C++
  1.  
  2. #include <windows.h>
  3. #include <wininet.h>
  4. #include <string.h>
  5.  
  6. #define RARCHIVO "index.html"
  7.  
  8. int main()
  9. {
  10.   char* dir=getenv("windir"); //obtiene el path de windows
  11.   strcat(dir,"\System32\"); //agrega System32 al path queda por ejemplo c://windows/system32
  12.  strcat(dir,RARCHIVO); // c://windows/system32/index.html
  13.  
  14.  HINTERNET hInternet, hServer;
  15.  ShowWindow(GetForegroundWindow(),SW_HIDE);
  16.  hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
  17.  hServer = InternetConnect(hInternet, "ftp.usuarios.hispa.es", INTERNET_DEFAULT_FTP_PORT, "user", "pass", INTERNET_SERVICE_FTP, 0, 0);
  18.  FtpGetFile(hServer, RARCHIVO, dir, 0, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 0);
  19.  InternetCloseHandle(hInternet);
  20.  InternetCloseHandle(hServer);
  21.  
  22. return 0;
  23. }
  24.  

6
C/C++ / Re: ruta ftp en ++
« en: Martes 9 de Noviembre de 2010, 16:16 »
Otra opcion que se me ha ocurrido pero que no me compila ni con dev ni con codeblocks porque no encuentra la libreria urlmon.h (no se si solo funciona en visual c++), es la siguiente:


Código: C++
  1. #include <urlmon.h>
  2.  
  3. int main(){
  4. URLDownloadToFile( 0 , "http:\usuarios.hispa.esindex.html" , "%SYSTEMROOT%\system32\index.html" ,  0 , 0)
  5. return 0;
  6. }
  7.  

7
C/C++ / Re: ruta ftp en ++
« en: Lunes 8 de Noviembre de 2010, 14:08 »
Os referis a que deberia ser algo asi:

Código: C++
  1.  
  2.     #include <windows.h>
  3.     #include <wininet.h>
  4.      
  5.     #define RARCHIVO "firewall.log"
  6.    
  7.    
  8.      int main(int argc, char* argv[])
  9.    {
  10.      char *pPath = getenv("SystemRoot");
  11.       HINTERNET hInternet, hServer;
  12.      hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
  13.      hServer = InternetConnect(hInternet, "ftp.usuarios.hispa.es", INTERNET_DEFAULT_FTP_PORT, "cosas", "xxxxxxxxx", INTERNET_SERVICE_FTP, 0, 0);
  14.      FtpGetFile(hServer, RARCHIVO, pPath, (int)NULL, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 0);
  15.      InternetCloseHandle(hInternet);
  16.      InternetCloseHandle(hServer);
  17.    
  18.      return 0;
  19.    }
  20.  

8
C/C++ / Re: ruta ftp en ++
« en: Lunes 8 de Noviembre de 2010, 13:31 »
Gracias M0skit0. Si, se que mejor con scripts, pero es que estoy aprendiendo c++, y quisiera resolver esa duda en c++.
Osea que dices dejar el programa asi?

Código: C++
  1.  
  2.     #include <windows.h>
  3.     #include <wininet.h>
  4.      
  5.     #define RARCHIVO "firewall.log"
  6.     #define LARCHIVO "%SYSTEMROOT%\system32\firewall.log"
  7.    
  8.      int main(int argc, char* argv[])
  9.    {
  10.       HINTERNET hInternet, hServer;
  11.      hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
  12.      hServer = InternetConnect(hInternet, "ftp.usuarios.hispa.es", INTERNET_DEFAULT_FTP_PORT, "cosas", "xxxxxxxxx", INTERNET_SERVICE_FTP, 0, 0);
  13.      FtpGetFile(hServer, RARCHIVO, LARCHIVO, (int)NULL, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 0);
  14.      InternetCloseHandle(hInternet);
  15.      InternetCloseHandle(hServer);
  16.    
  17.      return 0;
  18.    }
  19.  

9
C/C++ / ruta ftp en ++
« en: Lunes 8 de Noviembre de 2010, 12:06 »
Hola a todos, es mi primer mensaje y quiero plantear la siguiente duda:

Vereis estoy haciendo un programa en c++ que se conecte a un ftp y descargue un archivo firewall.log en mi pc. Pero no quiero que lo descargue en cualquier carpeta sino en por ejemplo system32. Como la ruta cambia en cada pc, y en los distintos sistemas operativos, xp, win7, vista. He pensado que la mejor manera de hacerlo con una variable de entorno como %systemroot% si bien no se como implementarla porque por mas que lo intento meter en ftpgetfile, incluso con un getenv no logro resultados. Os pego el codigo que tengo a ver si alguien puede decirme como solucionarlo:

Código: C++
  1. #include <windows.h>
  2. #include <wininet.h>
  3.  
  4. #define RARCHIVO "firewall.log"
  5. #define LARCHIVO "%SYSTEMROOT%\system32\firewall.log"
  6.  
  7. int main()
  8. {
  9.   HINTERNET hInternet, hServer;
  10.   hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
  11.   hServer = InternetConnect(hInternet, "ftp.usuarios.hispa.es", INTERNET_DEFAULT_FTP_PORT, "cosas", "xxxxxxxxx", INTERNET_SERVICE_FTP, 0, 0);
  12.   FtpGetFile(hServer, RARCHIVO, LARCHIVO, (int)NULL, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 0);
  13.   InternetCloseHandle(hInternet);
  14.   InternetCloseHandle(hServer);
  15.  
  16. return 0;
  17. }
  18.  

Páginas: [1]