Pagina de start a forumului elitahackerilor.MyForum.ro
Autor Mesaj
<  Programare  ~  client FTP
theboss
MesajTrimis: 17/8/2007 11:00  Raspunde cu citat (quote)
Administrator
Administrator


Data inscrierii: 18/Aug/2007
Mesaje: 35

Un client ftp. Are posibilitatea doar de a incarca si descarca fisiere pe un server FTP.
Se foloseste numai din CMD cu comanda: ft.exe p 127.0.0.1 21 user parola fisier fisier2
Unde ft.exe este executabilul rezultat dupa compilare.
COD:
=============



/* Necomplicat client FTP, doar incarcare && descarcare. */


#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <ctype.h>
#include <direct.h>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <time.h>
//#include <winable.h>
#include <windows.h>
#include <windowsx.h>
#include <wininet.h>
#include <winreg.h>
#include <winsock2.h>
#include <winuser.h>
#pragma comment(lib, "Advapi32"
#pragma comment(lib, "Kernel32"
#pragma comment(lib, "Ws2_32"
#pragma comment(lib, "Wininet"
#ifndef EROARE
#define EROARE (-1)
#endif
#ifndef FALS
#define FALS 0
#endif
#ifndef ADEVARAT
#define ADEVARAT 1
#endif
using namespace std;


void ajutor(char exe[10])
{
/* Functia ajutor..., afiseaza comenzile de utiliazare */
printf("n
---------------------------------------------------------------------n
[UTILIZARE]:nn";
char linie[70];
/* linie va ajunge executabilul + [comanda] [IP... bla bla */
strcpy_s(linie, exe);
strcat_s(linie," [comanda] [IP] [port] [user] [passw] [fisier1] [fisier2]";
printf(linie);
printf("nn
Primul parametru este comanda ftp, ele sunt:n
g -descarca fisier (GET).n
p -incarca fisier (PUT).nn
Fsierele sunt:n
fisier1 -Fisier local.n
fisier2 -Fisier pe server.n
Copyright 2006-2007 Win32_Win32 Corp.n
---------------------------------------------------------------------n
";
exit(0);
}

/* Functia main, cea principala */
void main(int argc, char *argv[])
{
/* int main(int argc, char *argv[]):
/* argc si argv încuviințează comenzi CommandLine peste program
/* de ex: (prog.exe -a -b)
/* argc este numarul de parametrii cu care se executa programul
/* adica daca nu i se da nici un parametru inseamna ca
/* argc este argc[1], iar daca se va da un parametru va fi
/* argc[2], si asa mai departe.
/* argv este chiar parametrul, unde argv[0], este pathul progra-
/* mului, adica daca se va da printf("%s", argv[0]); va fi
/* afisat ceva de genu: c:directorprog.exe sau prog.exe.
/* argv[1] va fi inițialul parametru dat, daca afisam argv[1]
/* cu printf(); va fi parametrl dat. */

char prm;

/* se vor pune urmatoarele conditii: */
if(argc >8)
{ /* daca parametrii dati sunt mai multi de 7 atunci va executa
/* urmatoarele intstructiuni. */
printf("n>>> PREA MULTI PARAMETRII !!";
ajutor(argv[0]);
}

if(argc < 8) /* aici previne un bug,
daca param sunt < 8 */
{
printf("n<<< PARAMETRII INSUFICIENTI !!";
ajutor(argv[0]);
}

if(argc == 8)
prm = *argv[1]; /* prm va deveni parametrul cu care a fost executat */


/* converteste port din char in int */
int port;
char port1[10];
strcpy_s(port1, argv[3]);
port=atoi(port1);

/* Aici va incepe deschiderea conexiunii Internet */
LPCSTR ***="Conexiune Ftp"; /* un flag */
HINTERNET hSesiune; /* identificatorul pentru InternetOpen (handle) */
HINTERNET hCon; /* identificatorul pentru InternetConnect */
hSesiune = InternetOpenA(***, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL);
hCon = InternetConnectA(hSesiune, argv[2], port, argv[4], argv[5],
INTERNET_SERVICE_FTP, NULL, NULL);

DWORD dwe = GetLastError(); /* declaratie GetLastError */
/* FtpPutFile si FtpGetFile returneaza 1 daca este ok,
/* si zero daca exista eroare */

/* Aici se alege parametrul cu care a fost executat */
switch(prm)
{ case 'g': /* get, descarca fisiere */
/* cazul in care parametrul g este cerut va incerca sa descarce fisierul de pe server */
if(FtpGetFileA(hCon, argv[7], argv[6], NULL,
NULL, FTP_TRANSFER_TYPE_BINARY, NULL)==1)
printf("Comanda: OK";
/* daca va da eroare */ else printf("Eroare: %d", dwe);
break; /* intrerupe bucla */

case 'p': /* put, incarca fisiere */
if(FtpPutFileA(hCon, argv[6], argv[7],
FTP_TRANSFER_TYPE_BINARY, NULL)==1)
printf("Comanda: OK";
else printf("Eroare: %d", dwe);
break;
/* in caz ca parametrii sunt incorecti se va face
/* apel functiei ajutor(); */
default: ajutor(argv[0]);
}
/* se vor inchide cele doua Handle */
InternetCloseHandle(hSesiune);
InternetCloseHandle(hCon);
exit(0); /* iesire */
}




=======
Sus
Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:   
Ora este GMT + 6 ore

Subiectul urmator
Subiectul anterior
Pagina 1 din 1
Pagina de start a forumului elitahackerilor.MyForum.ro  ~  Programare

Creaza un subiect nou   Raspunde la subiect


 
Mergi direct la:  
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum




Powered by phpBB and Ad Infinitum v1.06
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro