-
1. Data: 2006-09-13 08:58:03
Temat: Zlece napisanie 2 programów w C/C++
Od: "speedo888" <t...@g...com>
Witam
Chcialbym zlecic napisanie 2 programów lub jednego z nich.
Oczywiscie zalezy mi na kodzie z opisem i czasie gdyz mam termin do
piatku (wieczór), a poprzednia osoba kórej to zlecilem okazala
sie niekompetentna.
Jestem w stanie zaplacic po 400zl za program
Pozdrawiam
Janusz
s...@w...pl
gg 993814
----------------------------------------------------
------------------
Program pierwszy w C lub C++ powinien dzialac pod unixem.
Program filtrujacy strumien pakietow,
wywolywany z trzema argumentami : wejsciowym plikiem
ze zrzutem tcpdumpowym, plikiem z opisem filtra,
oraz plikiem wyjsciowym - do ktorego nalezy zrzucic
te fragmenty pliku wejsciowego, ktore zgadzaja sie
z filtrem. Filtrem takim jest wyrazenie regularne
na pakietach, zdefiniowane nastepujaco :
1) pojedynczy pakiet opisany jest ujetym w nawiasy
kwadratowe wyrazeniem filtrujacym tcpdump-a, np.
[dst port 80] albo [src host 192.168.0.1]
( dowolny pakiet to [] );
2) z opisow pojedynczych pakietow mozna budowac
wyrazenia regularne zgodnie z ogolnie przyjeta
ich skladnia - obslugiwana powinna byc
wielokrotnosc (* oraz +), alternatywa (| oraz ?),
oraz mozliwosc nawiasowania wyrazen.
W rezultacie program moze wybierac konkretne sekwencje
pakietow, a nie tylko - jak tcpdump - filtrowac pakiety
oddzielne, kazdy niezaleznie od pozostalych.
Uwaga - w zadaniu nie chodzi o filtrowanie szukajace
tekstowych wyrazen regularnych wewnatrz tresci pakietow.
W tym przypadku ,,literami'' wyrazenia regularnego
maja byc nie znaczki ascii, ale cale pakiety. Poniewaz
takiego pakietu nie da sie opisac jedna literka, dlatego
do jego opisu uzywamy calego tcpdumpowego wyrazenia
filtrujacego (ujetego w kwadratowe nawiasy), co jest
pewna analogia do klas liter, jak [:alnum:] lub [:upper:].
W efekcie program powinien moc wychwytywac ze strumienia
pakietow ich podciagi o z gory zadanej strukturze, np.
[dst port 22][proto tcp]*[src port 23] to filtr
wybierajacy ciagi pakietow rozpoczynajace sie od pakietu
z docelowym portem 22 a konczace na pakiecie ze zrodlowym
portem 23, pomiedzy ktorymi jest dowolna ilosc pakietow tcp.
----------------------------------------------------
------------
Program drugi w C pod unixa
Program przechwytujacy zapytania DNS.
Powinien on odbierac pakiety UDP z pytaniami, znajdywac odpowiedz
na wlasna reke, a nastepnie udzielac jej pytajacemu. Zadaniem
programu nie jest samodzielna obsluga protokolu DNS (wystarczy
ze bedzie potrafil powiazac odpowiedz z pytaniem), jedyne co ma
robic z otrzymanym pakietem to przeslac go dalej - i to samo
uczynic z odpowiedzia. Zakres konfigurowalnosci : uzytkownik
moze poprzez dodatkowe gniazdko sterujace regulowac w locie,
gdzie przekazywane beda pakiety w zaleznosci od adresu
zrodlowego zapytania DNS. Pojedyncza regulka zawiera zakres
adresow oraz liste celow, przy czym cel sklada sie z adresu
docelowego, portu i timeoutu. Za kazdym razem kiedy program
otrzyma zapytanie, powinien w zaleznosci od hosta ktory je
wyslal zaczac odpytywac kolejne serwery z listy celow :
jesli pierwszy nie udziela odpowiedzi przez zadany czas,
pytany jest nastepny itd, po wyczerpaniu listy program
rezygnuje. W przypadku gdyby odpowiedz nadeszla po timeoucie
(a odpytywane sa kolejne serwery) nalezy trzymac sie zasady,
ze klientowi jest zwracana pierwsza otrzymana odpowiedz,
a nastepne sa ignorowane. Wykrycie faktu, ze ktorys z
serwerow w ogole nie odpowiada powinno byc zapamietywane na
konfigurowalny okres czasu, przez ktory jest on pomijany
na listach celow. Kwestie niewyspecyfikowane w zadaniu
nalezy rozwiazac wedlug wlasnej intuicji programistycznej.