shinnok Posted March 19, 2008 Report Posted March 19, 2008 M-ftp este un server concurent de FTP bazat pe protocolul TCP pentru sisteme de operare din gama UNIX,in special Linux.Implementarea respecta standardul FILE TRANSFER PROTOCOL definit in RFC959 de catre Ietf.Scopul M-ftp este de a fi cat se poate de mic(in linii de cod),usor de configurat,de incredere si dezvoltarea dupa standardele bine definite.Mai multe detalii despre M-ftp puteti gasi la adresa http://shinnok.evonet.ro/index2-4.htmlCodul e sub licenta GPL V2 si il puteti gasi la adresa de mai sus.Sper sa fie de folos cuiva Quote
moubik Posted March 19, 2008 Report Posted March 19, 2008 o sa ma joc mai mult cu el cand o sa am timp pentru a-l face compilabil pe cygwintrebuie sa adaugati 2 linii de cod#define LONG_MIN (-2147483647-1)#define LONG_MAX 2147483647la inceputul surseiexemplu:.....#include <grp.h>#include <time.h>#include <ctype.h>//defaults---->#define MAX_LINE_LENGTH 512#define LONG_MIN (-2147483647-1)#define LONG_MAX 2147483647//<------.....nu l-am testat complet nici pe linux nici pe windows dupa care puteti sa-l compilati in cygwin cugcc -o m-ftp.exe m-ftp.cca sa il puteti rula si in afara consolei cygwin copiati in directorul executabilului fisierul "cygwin1.dll", il gasiti in c:\cygwin\bin cel mai probabilp.s. inceputul sursei arata de parca ar fi un fuzzer ftp p.s.2 daca rulez de 2 ori serverul al doilea imi da o eroare ce pare sa nu fie tratata in codError on ctsd bind(): Address already in useTrateaza eroarea asta ca sa stie oamenii despre ce e vorba nu stiu toti bind-uiala, si e frumos sa ai control complet pe erorile aruncate de programul taux.b.o.x. 360 esti linux maniac ? Quote
escalation666 Posted March 19, 2008 Report Posted March 19, 2008 Well, mi-am permis sa ma uit peste sursele serverului, si as vrea sa adaug, la cele scrise si lipsite de consistenta ale lui Moubik, urmatoarele:1.Fisierul m-ftp_accts, care stocheaza parola/parolele in plain text poate fi citit de orice user. (Setare default)2.Este vulnerabil la race conditions attacks. Intrucat programul genereaza un fisier de genul /tmp/mftp.nlspid unde pid este pidul programului, un atacator poate genera in avans o multitudine de fisiere in formatul respectiv, si sa creeze un simbolic link. Functia creat() nu verifica flagul O_EXCL, pentru a verifica daca fisierul exista deja sau nu. Ca o solutie ai putea crea un fisier random. Quote
Grunt Posted March 19, 2008 Report Posted March 19, 2008 Error on ctsd bind(): Address already in useE normal sa dea eroarea asta daca vrea sa asculte pe port-ul 21, si e deja folosit de alt proces. Quote
Vhaerun Posted March 19, 2008 Report Posted March 19, 2008 Evident ca e normal sa dea eroarea aia . Opreste serviciul de pe 21 , cat incerci asta , sau , eventual schimba-i portul . Quote
Guest Kenpachi Posted March 19, 2008 Report Posted March 19, 2008 bla bla bla bla bla programmer talk ...cam asta am vazut eu acolo ... ce vroiam sa zic ?a da !you guys can smell each other right (adik voi programatorii)hop cum aparu shinnok cum sarishi pe el Quote
shinnok Posted March 19, 2008 Author Report Posted March 19, 2008 p.s.2 daca rulez de 2 ori serverul al doilea imi da o eroare ce pare sa nu fie tratata in codError on ctsd bind(): Address already in useTrateaza eroarea asta ca sa stie oamenii despre ce e vorba nu stiu toti bind-uiala, si e frumos sa ai control complet pe erorile aruncate de programul taux.b.o.x. 360 esti linux maniac ?Da asa cum s-a zis si mai sus daca incerci sa rulezi doua servere in acelasi timp avand configurile default vei primi acea eroare de bind() pentru ca al doilea v-a incerca si el sa asculte tot pe portul 21 care este cel default.Solutie :Schimba portul default pentru "listen_port" din fisierul "m-ftp_config" pentru unul din ele sau poti rula unul din ele cu switch-ul la linie de comanda "-p port". Cat despre faza cu x.b.o.x. 360 esti linux maniac ? .. e urat zis maniac.Doar ca atunci cand vine vorba de *nix(in special linux) nu dau doi bani pe orice alt SO.1.Fisierul m-ftp_accts, care stocheaza parola/parolele in plain text poate fi citit de orice user. (Setare default) 2.Este vulnerabil la race conditions attacks. Intrucat programul genereaza un fisier de genul /tmp/mftp.nlspid unde pid este pidul programului, un atacator poate genera in avans o multitudine de fisiere in formatul respectiv, si sa creeze un simbolic link. Functia creat() nu verifica flagul O_EXCL, pentru a verifica daca fisierul exista deja sau nu. Ca o solutie ai putea crea un fisier random.Solutia pentru sugestia 1 o voi oferi in viitor.Nu am facut-o momentat pentru ca nu as vrea ca m-ftp sa fie dependent de alte biblioteci deoarece asta ar fi solutia cea mai usoara.In scurt timp o sa implementez si un algoritm de encriptare a parolelor si userilor pentru "m-ftp_accts".Sugestia a doua la fel ca si prima chiar este utila si iti multumesc pentru ea.Voi coda fixul cat mai curand.A few keys to be pressed Quote