Sziasztok!
Olyasvalamire lenne szükségem, ami egy megadott porton figyelné a beérkező adatokat, és ha találna egy bizonyos karakterláncot, akkor végrehajtana egy műveletet. Olyanra lenne szükségem, ami kommunikálna is az adott csatlakozó géppel, tehát miután megvan a karakterlánc, küld valamit, visszakap valamit, és újra küld valamit.
A probléma ott volna - már ha ez probléma - hogy az adott porton már fut egy szolgáltatás, és azelőtt szeretném ezeket az üzeneteket lekezelni, mielőtt még a program megkapná azt.
Az inetd.conf-ra gondoltam, hogy abban lehet talán ilyet megadni, de nem vagyok benne biztos (illetve még ha abban is kell, nem tudom, hogy mit és hova)
A válaszokat előre is köszönöm.
- 1499 megtekintés
Hozzászólások
Ha más figyel az adott porton akkor egy wrapperre van szükséged amit elsőként indítasz, figyeled a forgalmat ha rád tartozik válaszolsz, ha nem tovább passzolod a programnak.
--
falura el megy, városban meg úgy sem nézik...
- A hozzászóláshoz be kell jelentkezni
Igen, ezt sejtettem, de mi a konkrét megoldás rá? Az inetd? Ha igen, akkor hogy lehet megadni, hogy egy megadott karakterláncra meghívjon pl. egy perl fájlt?
- A hozzászóláshoz be kell jelentkezni
az nem jarhato, hogy sniffeled az adott port tartalmat?
ja, hogy bele kell szolni a forgalomba.
a figyelendo porton logo progiba mennyi beleszolasod van?
--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.
- A hozzászóláshoz be kell jelentkezni
Szia,
ez a szal hoszu lesz...
hamarabb celt ernenk, ha elmodnanad, hogy mi az a port, es mi az a karakterlanc. Ez igy tul altalanos. "a bejovo karakterlancra valaszoljon" akar triviallis, akar felfoghatatlanul bonyolult is tud lenni.
Altalanosan, neked szukseged van egy proxyra, ami az adott porton ulo kommunikaciot proxyzza. Aztan szukseged van arra, hogy az adott szolgaltatast atrakd egy masik portra. Aztan arra, hogy a proxyt berakd arra a portra, es a proxy tudja, hogy hol van a valodi alkalmazas.
A kerdesed feltetelebol azt becsulom, hogy nem irtal meg kliens-szerver alkalmazast semmifele protokolon/platformon, de nagyon jo iranyban vagy ahoz, hogy hamarst irjal. Innen indulva azert nehez lesz celbaerni.
Peldaul, ha megirod, hogy milyen alkalmazast/kommunikaciot akarsz filterezni, akkor lehet, hogy valaki tud mutatni egy elkeszult megoldast, ami pont azt teszi, ami neked kell.
De meg valoszinubb, hogy megkapod, hogy neked nem is kell az. Kitartas ;)
- A hozzászóláshoz be kell jelentkezni
Írtam már kliens-szerver alkalmazást, azzal nincsen semmi gond, csak itt azt gondoltam, egyszerűbb lehet valami Linuxos trükkel megoldani a dolgot, mint egy C plugint összekínlódni valahogy. De marad az utóbbi.
- A hozzászóláshoz be kell jelentkezni
A netcattel könnyebb az élet, de az egy porton osztozás gondjait nem oldja meg.
Ha mégis különbözhet a port, akkor a v1.0 megoldás lehet:
sztring=`netcat -l -p $netcat_port`
if [ "$sztring" = "..." ]; then
...
fi
echo $sztring | netcat -p $app_port
Persze a lexebb az volna, ha az app is olvasná a stdint...
- A hozzászóláshoz be kell jelentkezni
A kerdesed feltetelebol azt becsulom, hogy nem irtal meg kliens-szerver alkalmazast semmifele protokolon/platformon, de nagyon jo iranyban vagy ahoz, hogy hamarst irjal
ahogy a kollega is irta, miszerint amennyiben ez a szolgaltatas inetd-alapu, akkor egy fokkal egyszerubb is lehet. az inetd-moduloknal (-programoknal) egyszeruen a kesz (konfiguralt, stb) socket-et hozzakotik az stdin/out-hoz, es akkor sima mezei eszkozokkel (akar me'g fread(), fwrite() is) lehet kezelni az egeszet. persze ekkor meg kell valami trukk, hogy az eredeti modul (program) is behivasra is keruljon. meg szinten elegge rutinos c programozas kell, csak mas temakban (fork-olas, dup-olas, execve, stb.)
- A hozzászóláshoz be kell jelentkezni