Komme nicht weiter.."FTP-Client"
-
Und zwar möchte ich ein Programm schreiben, dass auf einen
FTP-Server connected und z.b. ein Ordner erstellt...Der Code sieht zzt. so aus:
#include <windows.h> #include <winsock2.h> #include <stdio.h> //Prototypen int startWinsock(void); main(int argc, char *argv[]) { long rc; SOCKET s; SOCKADDR_IN addr; char buf[256]; // Winsock starten rc=startWinsock(); // Socket erstellen s=socket(AF_INET,SOCK_STREAM,0); // Verbinden memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten addr.sin_family=AF_INET; unsigned short port; // Erstelle "Port" port=atoi(argv[2]); // Gebe Port ein addr.sin_port=htons(port); // Nutze eingegebenden Port addr.sin_addr.s_addr=inet_addr(argv[1]); // Host = erste Eingabe printf("[*]Verbinde zu %s an Port %s.\n",argv[1],argv[2]); rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR)); if(rc==SOCKET_ERROR) { printf("[-]ERROR: connection failed, error code: %d\n",WSAGetLastError()); return 1; } else { printf("[*]Verbunden mit %s.\n",argv[1]); } // Daten austauschen // recv... while(rc!=SOCKET_ERROR) { rc=recv(s,buf,256,0); if(rc==0) { printf("[-]Server hat die Verbindung getrennt..\n"); break; } buf[rc]='\0'; printf("[*]Server antwortet: %s\n",buf); } closesocket(s); WSACleanup(); return 0; } int startWinsock(void) { WSADATA wsa; return WSAStartup(MAKEWORD(2,0),&wsa); }
Und in der Konsole sieht es denn so aus:
C:\Dev-Cpp>connect 127.0.0.1 21
[]Verbinde zu 127.0.0.1 an Port 21.
[]Verbunden mit 127.0.0.1.
[*]Server antwortet: 220 Serv-U FTP Server v7.2 ready...Wie bekomme ich das jetzt hin, dass das Programm die Login-Daten senden, und wenn er vollständig connected ist, ein Ordner erstellt.
Aussehen sollte das denn später evtl. so:
C:\Dev-Cpp>connect 127.0.0.1 21 Benutzername Passwort Ordner
[]Verbinde zu 127.0.0.1 an Port 21.
[]Verbunden mit 127.0.0.1.
[]Server antwortet: 220 Serv-U FTP Server v7.2 ready...
[]Sende Benutzernamen...
[]Server antwortet: [R] 331 User name okay, need password.
[]Sende Passwort...
[]Server antwortet: [R] 230 User logged in, proceed.
[]Erstelle Ordner "test"
[*]Server antwortet: [R] 257 "/test" directory created.Und ich habe absolut keine Ahnung wie ich das bewerkstelligen kann
mit freundlichem Gruß
Jack
-
OK habs alleine hinbekommen...
-
servus darf man wissen wie es das ausgeschaut hat?
-
so gehts zumindest...
... cout << "C:\Dev-Cpp>connect 127.0.0.1 21 Benutzername Passwort Ordner " << endl; cout << "[*]Verbinde zu 127.0.0.1 an Port 21. " << endl; cout << "[*]Verbunden mit 127.0.0.1. " << endl; cout << "[*]Server antwortet: 220 Serv-U FTP Server v7.2 ready... " << endl; cout << "[*]Sende Benutzernamen... " << endl; cout << "[*]Server antwortet: [R] 331 User name okay, need password. " << endl; cout << "[*]Sende Passwort... " << endl; cout << "[*]Server antwortet: [R] 230 User logged in, proceed. " << endl; cout << "[*]Erstelle Ordner "test" " << endl; cout << "[*]Server antwortet: [R] 257 "/test" directory created. " << endl; ...
-
soll des ein guter witz sein?
-
LOL
-
danke
-
hallo ich brauche hilfe!
Ich habe eine ethernet steckerleiste (ePowerSwitch-4) mit der ich über ethernet eine verbindung aufbauen muss(hat nen eingebauten webserver) um anschließend einen befehl senden zu können. Ich programmiere in C.
bei mir sieht das im prinzip so wie oben aus. Nur, dass es bei mir bei der connect() funktion nicht weiter geht. Er schafft es nicht die verbindung aufzubauen.
Es ist so, dass einfach die info für benutzer und password fehlen um sich anzumelden.Die Sache ist die, dass ich keinen blassen schimmer habe wie ich diese info mit übergeben kann.
bin sehr dankbar für jede hilfe.
-
hier ein link zu ner detaillierten beschreibung
-
wie greiffst du denn auf das ding normallerweise zu?
per http-webinterface->browser? dann wirds gan schön fummelig mit standart c.
nimm lieber was highleveliges (c# für win)
falls du irgenten tool benutzt, musst du ma das protoko reverse-engeeneren (->sniffer)