Jump to content
shinnok

M-ftp server de ftp minimal

Recommended Posts

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.html

Codul e sub licenta GPL V2 si il puteti gasi la adresa de mai sus.Sper sa fie de folos cuiva :D

Link to comment
Share on other sites

o sa ma joc mai mult cu el cand o sa am timp :)

pentru a-l face compilabil pe cygwin

trebuie sa adaugati 2 linii de cod

#define LONG_MIN (-2147483647-1)
#define LONG_MAX 2147483647

la inceputul sursei

exemplu:


.....
#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 cu

gcc -o m-ftp.exe m-ftp.c

ca sa il puteti rula si in afara consolei cygwin copiati in directorul executabilului fisierul "cygwin1.dll", il gasiti in c:\cygwin\bin cel mai probabil

p.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 cod

Error on ctsd bind(): Address already in use

Trateaza 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 tau

x.b.o.x. 360 esti linux maniac ?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Guest Kenpachi

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 :)

Link to comment
Share on other sites

p.s.2 daca rulez de 2 ori serverul al doilea imi da o eroare ce pare sa nu fie tratata in cod

Error on ctsd bind(): Address already in use

Trateaza 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 tau

x.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 :D

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...