[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

pl.comp.programming

cl_scanfile (w C

Marcin W

5/2/2007 1:13:00 PM

Witam,

Rozpoznaje api do3?czone do clamava, chce przeskanowaa char *bufor, kiedy?
by3a funkcja cl_scanbuff, niestety w najnowszej wersji clamava tej?e funkcji
nie ma.

Za bardzo nie wiem jak to rozwi?zaa, póki co bufor kopiuje do pliku i wtedy
skanuje plik, co te? ?rednio mi wychodzi, mianowicie:
(...)
char *bufor="X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!
$H+H*";

FILE *tmp_plik;
tmp_plik =fopen("clam.tmp","w");
fputs (bufor, tmp_plik);
fclose(tmp_plik);

err = cl_scanfile("clam.tmp", &virname, NULL, engine, &limits, CL_SCAN_STDOPT);

if (err == CL_VIRUS)
{
printf ("Znalazlem wirusa: %s\n", virname);
}
else printf ("Nie znalazlem wirusa\n");
(...)

Wszystkie struktury s? poprawnie zainicjalizowane (testowa3em to w innej
konfiguracji i wykrywa wirusa)
definicja eicara, a pod ni? to co w pliku clam.tmp:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
^
Co ciekawe plik clam.tmp ma zapisan? definicje wirusa, ale z wycietym znakiem
\ nie wiem dlaczego mi to kompilator wycina (gcc 3.4 na linuxie).
cat clam.tmp
Z góry dziekuje za pomoc

--
Wys3ano z serwisu OnetNiusy: http://niu...
6 Answers

Stachu 'Dozzie' K.

5/2/2007 1:43:00 PM

0

On 02.05.2007, Marcin W <marcinWYTNIJTO@marcin-wroblewski.com> wrote:
> Witam,
>
> Rozpoznaje api do3?czone do clamava, chce przeskanowaa char *bufor, kiedy?
> by3a funkcja cl_scanbuff, niestety w najnowszej wersji clamava tej?e funkcji
> nie ma.
>
> Za bardzo nie wiem jak to rozwi?zaa, póki co bufor kopiuje do pliku i wtedy
> skanuje plik, co te? ?rednio mi wychodzi, mianowicie:
> (...)
> char *bufor="X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!
> $H+H*";
>
> FILE *tmp_plik;
> tmp_plik =fopen("clam.tmp","w");
> fputs (bufor, tmp_plik);
> fclose(tmp_plik);
>
> err = cl_scanfile("clam.tmp", &virname, NULL, engine, &limits, CL_SCAN_STDOPT);
>
> if (err == CL_VIRUS)
> {
> printf ("Znalazlem wirusa: %s\n", virname);
> }
> else printf ("Nie znalazlem wirusa\n");
> (...)
>
> Wszystkie struktury s? poprawnie zainicjalizowane (testowa3em to w innej
> konfiguracji i wykrywa wirusa)
> definicja eicara, a pod ni? to co w pliku clam.tmp:
> X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
> X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
> ^
> Co ciekawe plik clam.tmp ma zapisan? definicje wirusa, ale z wycietym znakiem
> \ nie wiem dlaczego mi to kompilator wycina (gcc 3.4 na linuxie).

Ka?dy jeden kompilator zamieni ci '\P' na 'P'. Guess why.

> cat clam.tmp
> Z góry dziekuje za pomoc
>


--
Secunia non olet.
Stanislaw Klekot

Marcin W

5/4/2007 7:07:00 AM

0

> Stanislaw Klekot wrote:
> Ka?dy jeden kompilator zamieni ci '\P' na 'P'. Guess why.

Chodzi o formatowanie ? Nie wiem, nie pamietam dlatego sie pytam, bede
wdzieczny za info.

A czy mo?e jest jaka? lepsza metoda, aby przeskanowaa bufor charów?

pozdro
MW

--
Wys3ano z serwisu OnetNiusy: http://niu...

Jacek Czerwinski

5/4/2007 7:24:00 AM

0

Dnia 4 May 2007 09:06:48 +0200, Marcin W napisa3(a):

>> Stanislaw Klekot wrote:

>> Ka?dy jeden kompilator zamieni ci '\P' na 'P'. Guess why.
>
> Chodzi o formatowanie ? Nie wiem, nie pamietam dlatego sie pytam, bede
> wdzieczny za info.
To jest elemetarz C, prosze hackera.
I zmien czytnik newsów.

Marcin W

5/4/2007 7:36:00 AM

0

> To jest elemetarz C, prosze hackera.
> I zmien czytnik newsów.
Czytnik newsów to webowy czytnik onetu, wiec pogadaj z adminami tej?e strony.

W takim razie czy móg3by? udzielia odpowiedzi na moje pytanie, lub wskazaa
miejsce gdzie tak? moge znale?a?

--
Wys3ano z serwisu OnetNiusy: http://niu...

Jacek Czerwinski

5/4/2007 10:03:00 AM

0

Dnia 4 May 2007 09:35:39 +0200, Marcin W napisa3(a):

>> To jest elemetarz C, prosze hackera.
>> I zmien czytnik newsów.
> Czytnik newsów to webowy czytnik onetu, wiec pogadaj z adminami tej?e strony.
>
> W takim razie czy móg3by? udzielia odpowiedzi na moje pytanie, lub wskazaa
> miejsce gdzie tak? moge znale?a?

Je?li o backaslashu mowa to w podreczniku C, przewa?nie tzrecia-czwarta
kartka. Po ch3opsku mowi?c w soursach masz miea \jesli a skanowaniu linii CL to rzeczywi?cie nie ma wyboru :-(

marcin

5/4/2007 10:34:00 AM

0

> Je?li o backaslashu mowa to w podreczniku C, przewa?nie tzrecia-czwarta
> kartka. Po ch3opsku mowi?c w soursach masz miea  \> jesli a skanowaniu linii CL to rzeczywi?cie nie ma wyboru :-(
No oki, rozumiem, ale jak np. bede mia3 w buforze jakie? dane zawieraj?ce i
backslahe, i \n inne znaki, które s? interpretowane przez gcc to jak sobie
zbiorczo z tym poradzia?

Ja rozumiem, ?e ju? nie ma funkcji cl_scanbuff ale jest taka cl_scandesc,
która do szcze?cia potrzebuje jedynie deskryptor pliku, napisa3em prost?
funkcje, która tworzy plik, nape3nia go buforem i zwraca deskpryptor pliku,
wtedy mo?na u?ya cl_scandesc, tylko problem pojawia sie gdy w buforze
wystepuj? backslashe:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

int buffer_file(char *buffer)
{
int fd, old_fd;
old_fd = dup(1); // deskryptor stdout
fd = creat("plik.tmp", O_RDWR);
if (fd < 0)
{
perror ("Blad otwarcia pliku *.tmp");
exit(0);
}
dup2 (fd, 1); // zmieniamy stdout -> fd
puts (buffer);
fflush (stdout);
close (fd);
dup2 (old_fd, 1); // output na ekran
return (fd);
}

int main()
{
char *bufor="to jest test";
int desc;

desc = buffer_file(bufor);

printf ("Numer desc: %d\n", desc);
return (0);
}

My?la3em, ?e jest jakis sposób na to, ?eby kompilator nie interpretowa3
wszystkiego co jest w buforze w bashu wystarczy wpisaa np echo '$PATH' i
dzia3a pieknie w C to nic nie zmienia.

Od?wie?am wiedze z C wiec nie denerwuj sie, ?e mi jej troche ulecia3o, w3a?nie
dzieki grupie chce j? odzyskaa.

pozdr
MW

--
Wys3ano z serwisu OnetNiusy: http://niu...