Re: prolazak
12.08.2001. u 03:22 · pre 306 meseci
#2
Ja sam radio nedavno tako nesto, ali sa win32 API-jem (tj. FindFirstFile i FindNextFile iz win32-a).
Ukoliko te interesuje, mogu da postujem, ali mislim da je negde predator vec davao takav listing.
Toliko.
Ukoliko te interesuje, mogu da postujem, ali mislim da je negde predator vec davao takav listing.
Toliko.
Potpis
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
Re: prolazak
12.08.2001. u 13:14 · pre 306 meseci
#3
Kao sto je tOwk rekao, o tome je vec bilo reci na ovom forumu...znaci za to koristis funkcije FindFirst i FindNext naravno napravis rekurzivnu funkciju koja ce to da radi...
poz.
poz.
Re: prolazak
12.08.2001. u 13:24 · pre 306 meseci
#4
http://www.elitesecurity.org/tema.php?TopicID=531
slicna rasprava bila je ovde
slicna rasprava bila je ovde
Potpis
I don't need a reason!!!
Re: prolazak
12.08.2001. u 15:52 · pre 306 meseci
#5
Citat:
tOwk je napisao:
Ja sam radio nedavno tako nesto, ali sa win32 API-jem (tj. FindFirstFile i FindNextFile iz win32-a).
Ukoliko te interesuje, mogu da postujem, ali mislim da je negde predator vec davao takav listing.
Toliko.
Ja sam radio nedavno tako nesto, ali sa win32 API-jem (tj. FindFirstFile i FindNextFile iz win32-a).
Ukoliko te interesuje, mogu da postujem, ali mislim da je negde predator vec davao takav listing.
Toliko.
Ajde ako nije problem postuj to sto si radio.
Pozdrav.
Re: prolazak
13.08.2001. u 00:37 · pre 306 meseci
#6
Evo ga kod, sve je strpano u jedan C fajl, ovo je samo deo, pa je zato osaka�en, ali radi osnovni posao.
Kompajlirate ga, dobijete EXE i startujete ga sa jednim parametrom: imenom direktorijuma koji treba da izlista sa slash-om na kraju (npr. "a.exe c:").
Ukoliko je potrebna verzija za UNIX sisteme, recite i preradi�u ovo da radi i na njima.
I na kraju, naravno,
Toliko.
Kompajlirate ga, dobijete EXE i startujete ga sa jednim parametrom: imenom direktorijuma koji treba da izlista sa slash-om na kraju (npr. "a.exe c:").
Ukoliko je potrebna verzija za UNIX sisteme, recite i preradi�u ovo da radi i na njima.
Code:
#include <windows.h>
#include <stdio.h>
#include <string.h>
#define ALLOC(x) malloc(x)
#define FREE(x) free(x)
#define GRESKA(x) { printf("GRESKA: %sn",x); exit(1); }
int izlistaj_dir(char *imedir);
int main(int argc,char *argv[]) {
// mora argument da ima slash na kraju, npr. c:windows, a ne c:windows
izlistaj_dir(argv[1]);
return 0;
}
int izlistaj_dir(char *imedir)
{
HANDLE pretraga;
WIN32_FIND_DATA podaci;
BOOL kraj=1;
int err,duzina;
char *putanja;
duzina=strlen(imedir);
putanja=(char *) ALLOC(duzina+10);
if (putanja == NULL) GRESKA("Ne ima memorije!n");
strncpy(putanja,imedir,duzina+2);
if (putanja[duzina-1] != '\') {
strcat(putanja,"\");
}
strcat(putanja,"*.*");
pretraga=FindFirstFile(putanja,&podaci);
if (pretraga == INVALID_HANDLE_VALUE) GRESKA("NESTO NE VALJA!n");
FREE(putanja); putanja=NULL;
kraj=1;
while (kraj == 1)
{
if ((podaci.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
{
if ((strcmp(podaci.cFileName,".") != 0) &&
(strcmp(podaci.cFileName,"..") != 0))
{
putanja=(char *) ALLOC(duzina + strlen(podaci.cFileName) + 3);
if (putanja == NULL) GRESKA("Nema memorije!n");
strncpy(putanja,imedir,duzina+2);
strcat(putanja,podaci.cFileName);
if (putanja[strlen(putanja)-1] != '\') {
strcat(putanja,"\");
}
fprintf(stderr,"Ulazi u dir: %sn",putanja);
printf("%s%s\n",
imedir,
podaci.cFileName
);
izlistaj_dir(putanja);
FREE(putanja);putanja=NULL;
}
} else {
printf("%s%sn",
imedir,
podaci.cFileName
);
}
if (!FindNextFile(pretraga,&podaci))
{
err=GetLastError();
if (err == ERROR_NO_MORE_FILES)
{
FindClose(pretraga);
kraj=0;
}
}
}
return err;
}
#include <windows.h>
#include <stdio.h>
#include <string.h>
#define ALLOC(x) malloc(x)
#define FREE(x) free(x)
#define GRESKA(x) { printf("GRESKA: %sn",x); exit(1); }
int izlistaj_dir(char *imedir);
int main(int argc,char *argv[]) {
// mora argument da ima slash na kraju, npr. c:windows, a ne c:windows
izlistaj_dir(argv[1]);
return 0;
}
int izlistaj_dir(char *imedir)
{
HANDLE pretraga;
WIN32_FIND_DATA podaci;
BOOL kraj=1;
int err,duzina;
char *putanja;
duzina=strlen(imedir);
putanja=(char *) ALLOC(duzina+10);
if (putanja == NULL) GRESKA("Ne ima memorije!n");
strncpy(putanja,imedir,duzina+2);
if (putanja[duzina-1] != '\') {
strcat(putanja,"\");
}
strcat(putanja,"*.*");
pretraga=FindFirstFile(putanja,&podaci);
if (pretraga == INVALID_HANDLE_VALUE) GRESKA("NESTO NE VALJA!n");
FREE(putanja); putanja=NULL;
kraj=1;
while (kraj == 1)
{
if ((podaci.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0)
{
if ((strcmp(podaci.cFileName,".") != 0) &&
(strcmp(podaci.cFileName,"..") != 0))
{
putanja=(char *) ALLOC(duzina + strlen(podaci.cFileName) + 3);
if (putanja == NULL) GRESKA("Nema memorije!n");
strncpy(putanja,imedir,duzina+2);
strcat(putanja,podaci.cFileName);
if (putanja[strlen(putanja)-1] != '\') {
strcat(putanja,"\");
}
fprintf(stderr,"Ulazi u dir: %sn",putanja);
printf("%s%s\n",
imedir,
podaci.cFileName
);
izlistaj_dir(putanja);
FREE(putanja);putanja=NULL;
}
} else {
printf("%s%sn",
imedir,
podaci.cFileName
);
}
if (!FindNextFile(pretraga,&podaci))
{
err=GetLastError();
if (err == ERROR_NO_MORE_FILES)
{
FindClose(pretraga);
kraj=0;
}
}
}
return err;
}
I na kraju, naravno,
Toliko.
Potpis
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
Re: prolazak
13.08.2001. u 14:46 · pre 306 meseci
#7
Sve je OK, samo sam hteo da napomenem da je ovo:
moglo da se napise kao:
poz.
Code:
#define GRESKA(x) { printf("GRESKA: %s\n",x); exit(1); }
#define GRESKA(x) { printf("GRESKA: %s\n",x); exit(1); }
moglo da se napise kao:
Code:
#define GRESKA(x) printf("GRESKA: %s\n",x), exit(1)
#define GRESKA(x) printf("GRESKA: %s\n",x), exit(1)
poz.
Re: prolazak (o search-u)
13.08.2001. u 15:54 · pre 306 meseci
#8
Pogledajte, na svakoj strani postoji SEARCH! - Unesete recimo "direktorijum" u pomenuti pretrazivac i da vidite sta sve tamo dobijeteeee!
P.S. pretrazivac se nalazi na dnu svake strane...
Dejan
Potpis
Re: prolazak
13.08.2001. u 23:30 · pre 306 meseci
#9
Pretrazivanje zna ponekad da oduzme dosta vremena...
poz.
poz.
Re: prolazak
14.08.2001. u 17:24 · pre 306 meseci
#10
Pogledaj starije clanke ja sam prikazao kako uz pomoc rekuzrzije i C standradnih funkcija mozes da prelistas sve direktorijume.
Za deo koda mozes da pogledas :
nonenone.2y.net/download/programms i trazi logcleaner.c koji linkuje na /dev/null
Za deo koda mozes da pogledas :
nonenone.2y.net/download/programms i trazi logcleaner.c koji linkuje na /dev/null
Re: prolazak
14.08.2001. u 19:17 · pre 306 meseci
#11
Citat:
predator je napisao:
Pogledaj starije clanke ja sam prikazao kako uz pomoc rekuzrzije i C standradnih funkcija mozes da prelistas sve direktorijume.
Za deo koda mozes da pogledas :
nonenone.2y.net/download/programms i trazi logcleaner.c koji linkuje na /dev/null
Pogledaj starije clanke ja sam prikazao kako uz pomoc rekuzrzije i C standradnih funkcija mozes da prelistas sve direktorijume.
Za deo koda mozes da pogledas :
nonenone.2y.net/download/programms i trazi logcleaner.c koji linkuje na /dev/null
ma dao sam im ja link oni idalje se prave ludi (ovaj kajla kao oduzima vreme pa napisao sve i to ti oduzima vreme jedan klik) ja uvek idem prvo pretraga pa tek onda nesto pitam
Potpis
I don't need a reason!!!
Re: prolazak
14.08.2001. u 20:07 · pre 306 meseci
#12
man find
pod linuxom.?
sto se mucite da radite nesto sTo je vec uradjenO>?
pod linuxom.?
sto se mucite da radite nesto sTo je vec uradjenO>?
Re: prolazak
14.08.2001. u 20:42 · pre 306 meseci
#13
pa tako se uci...ne moze covek odma da krene da pravi programe od 100000 linija koda, i kad se uci sistemsko programiranje krene se od pisanja aplikacija tipa ls, cat i slicnih jer sve to ima primenu u vecim programima a lakse je objasniti na manjem kodu a uz to su svi ti programi veoma poznati.
Potpis
VMware VCP/Microsoft MCSE 2003/HP ASE
Re: prolazak
15.08.2001. u 00:38 · pre 306 meseci
#14
btw jel moze neko da mi objasni zasto se prvo koristi funkcija tipa find_first_file pa onda find_next_file tj zasto je to tako uvedeno
zar nisu mogli da uvedu jednu funkciju npr Find_Matching_File ili tako nesto
koja ce da trazi lepo sve fajlove koji zadovoljavaju zadati kriterijum
a ne prvo nadji prvi pa onda nadji sledeci takav....malo mi je glup sistem
zar nisu mogli da uvedu jednu funkciju npr Find_Matching_File ili tako nesto
koja ce da trazi lepo sve fajlove koji zadovoljavaju zadati kriterijum
a ne prvo nadji prvi pa onda nadji sledeci takav....malo mi je glup sistem
Potpis
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
COBOL, and nineteen other high-tech
words.
Re: prolazak
15.08.2001. u 03:52 · pre 306 meseci
#15
Citat:
Mikky je napisao:
btw jel moze neko da mi objasni zasto se prvo koristi funkcija tipa find_first_file pa onda find_next_file tj zasto je to tako uvedeno
zar nisu mogli da uvedu jednu funkciju npr Find_Matching_File ili tako nesto
koja ce da trazi lepo sve fajlove koji zadovoljavaju zadati kriterijum
a ne prvo nadji prvi pa onda nadji sledeci takav....malo mi je glup sistem
btw jel moze neko da mi objasni zasto se prvo koristi funkcija tipa find_first_file pa onda find_next_file tj zasto je to tako uvedeno
zar nisu mogli da uvedu jednu funkciju npr Find_Matching_File ili tako nesto
koja ce da trazi lepo sve fajlove koji zadovoljavaju zadati kriterijum
a ne prvo nadji prvi pa onda nadji sledeci takav....malo mi je glup sistem
Opet bi se trebalo staviti u poziciju nekoga ko to implementira.
Recimo da ti trazis informacije o fajlovima "*.tex", i posaljes poziv FindMeAllFiles("*.tex") koji ti alocira svu potrebnu memoriju (recimo 2MB da smesti sve fajlove, datume pravljenja i izmene istih, dozvole/atribute i slicno). E sad, ova funkcija ti vraca pointer, i ti naravno moras da saznas da li je doslo do greske. I zato pozivas neku funkciju WasThereEverAnError, koja ti vraca da li je bilo greske. I, sad ti ustanovis da je bilo greske. I na kraju, ti meni reci gde je doslo do greske???? Sta uraditi ako je doslo do greske izmedju 6. i 7. fajla?? Nastaviti? Prekinuti? Ponoviti?
Naravno, ovde smo zanemarili cinjenicu da bi ti (programer) mogao da zaboravis da dealociras memoriju, i svih 2MB bi se vuklo bespotrebno.
Zato, kao i mnoge druge operacije, sav posao podeljen je u tri faze: pocetak/inicijalizacija posla, sam posao, i okoncavanje posla. Ne znam zasto ti to nije cudno pri upotrebi jednog fajla, a pri citanju iz direktorijuma (koji je u osnovi i sam fajl), to izgleda cudno.
imamo fopen + prvi fread ekv. FindFirstFile()
zatim, fread ekv. FindNextFile()
i na kraju fclose ekv. FindClose()
Naravno, u fajlu "dirent.h" se nalaze zaglavlja za opendir, readdir, closedir funkcije na POSIX sistemima, a moze ih biti i na nekim drugim platformama (Mingw GCC za Win32 ga sadrzi), koji se onda koriste isto kao i funkcije za citanje fajlova.
Zato zapitaj se kada ti je postalo prirodno da se fajlovi na taj nacin citaju, i gde se nalazi granica zasto bi ti citanje direktorijuma bilo cudno ukoliko se odvija na isti nacin. Meni se cini da bi jedino mesto zabune moglo biti to sto se pri citanju direktorijuma pri iniciranju citanja, istovremeno i ucita prvi podatak, ali to je zato sto se "format" direktorijuma poznaje.
Toliko.
Potpis
Možda se moje mišljenje promenilo, ali ne i činjenica da sam u pravu.
Re: prolazak
15.08.2001. u 11:55 · pre 306 meseci
#16
Citat:
uL7r4C0d3 je napisao:
ma dao sam im ja link oni idalje se prave ludi (ovaj kajla kao oduzima vreme pa napisao sve i to ti oduzima vreme jedan klik) ja uvek idem prvo pretraga pa tek onda nesto pitam
ma dao sam im ja link oni idalje se prave ludi (ovaj kajla kao oduzima vreme pa napisao sve i to ti oduzima vreme jedan klik) ja uvek idem prvo pretraga pa tek onda nesto pitam
Ma kad je leka napisao pretrazivanje ja sam reako da pretrazivanje u principu zna da oduzme dosta vremena, a to sto passenger (pokretac teme) nije otisao na tvoj link to moras pitati njega.
poz.
Re: prolazak
15.08.2001. u 16:42 · pre 306 meseci
#17
Citat:
kajla je napisao:
Sve je OK, samo sam hteo da napomenem da je ovo:
moglo da se napise kao:
poz.
Sve je OK, samo sam hteo da napomenem da je ovo:
Code:
#define GRESKA(x) { printf("GRESKA: %sn",x); exit(1); }
#define GRESKA(x) { printf("GRESKA: %sn",x); exit(1); }
moglo da se napise kao:
Code:
#define GRESKA(x) printf("GRESKA: %sn",x), exit(1)
#define GRESKA(x) printf("GRESKA: %sn",x), exit(1)
poz.
Samo sto je prvo blok naredbi a drugo su dve naredbe (pozivi za dve funkcije)
Re: prolazak
16.08.2001. u 01:28 · pre 306 meseci
#18
Meni opet treba pomoc. Naime kako se u predatorovom kodu postize da se poziva stalno jedan te isti dir. Na primer otvori prvi dir, udje u taj prvi dir, i unjemu ima 3 dira otvori prvi dir od ta tri prva i posto u njemu nema nista vraca se chdir(".."); e sada kako se poziva drugi po redu direktorijum, pa onda treci itd. gde se to pamti ???
Ujedno da li funkcije findfirst() i findnext() mogu da se upotrebe na direktorijumima a ne samo na fajlovima?
Uf ... nadam se da sam jasno postavio pitanje.
Pozdrav.
[Ovu poruku je menjao passanger dana 08-16-2001 u 01:40 AM GMT]
Ujedno da li funkcije findfirst() i findnext() mogu da se upotrebe na direktorijumima a ne samo na fajlovima?
Uf ... nadam se da sam jasno postavio pitanje.
Pozdrav.
[Ovu poruku je menjao passanger dana 08-16-2001 u 01:40 AM GMT]
Re: prolazak
16.08.2001. u 01:44 · pre 306 meseci
#19
Pa to se pamti u prethodnoj funkciji gde je stao ;o)
Znaci in prvo cita jedan dir kad tu nadje dir poziva funkciju i sad njega cita kad njega zavrsi zavrsava se funkcija i onda se nastavlja tamo gde je prethodna funkcija stala ;o)
Znaci in prvo cita jedan dir kad tu nadje dir poziva funkciju i sad njega cita kad njega zavrsi zavrsava se funkcija i onda se nastavlja tamo gde je prethodna funkcija stala ;o)
Re: prolazak
16.08.2001. u 16:16 · pre 306 meseci
#20
Da, da, prevideo sam to, malo mi je bilo nejasno ali sada je ok. Hvala.
Pozdrav.
Pozdrav.