wstrzymywanie połączenia TCP

0

Witam,
poszukuje rozwiązania problemu wstrzymania połączenia TCP wychodzącego z maszyny lokalnej, a potem wznowienia go, tak aby można było w międzyczasie zmodyfikować zawartość nagłówka TCP. Myślałem nad zaimplementowanie czegoś na kształt proxy, które musiałoby działać lokalnie. Tzn. proxy musiałoby "przechwytywać" połączenia wychodzące, kierować na odpowiedni port, zmodyfikować co potrzebuje i dalej przekazać do odbiorcy. Nie wiem jednak czy coś takiego w ogóle jest możliwe.

Moja dość ograniczona wiedza w tym zakresie jest małą przeszkodą :) dlatego wdzięczny byłbym za wszelką pomoc.

0

No to czy uda ci się to zrealizować zależy np od tego na jak dgługo chcesz wstrzymać to połączenie.
Tzn jeżeli mówimy o już zainicjowanym połączeniu, chociaż w sumie to nie ma większego znaczenia czy to już jest
zainicjowane połączenie czy też dopiero świeżo wysłany pakiet SYN. Ogólnie to systemy operacyjne
tzn już na tych najniższych warstwach mają ograniczenia czasowe tzw timeouty np na to w jakim czasie
to połączenie ma być nawiązane - także tego lokalnego klienta ( czym kolwiek by on nie był) nie będzie prosto oszukać ... Zastanawiam się co chcesz realizować w tym czasie kiedy będziesz
"wstrzymywał to połączenie". To by mogło wiele wyjaśnić. W każdym razie jeżeli chcesz pisać coś w
rodzaju proxy to życzę powodzenia - ja pisałem proste HTTP proxy w C jako pracę magisterską niedawno ( http://kreproxy.sourceforge.net możesz sobie zerknąć :) ) .
Ogólnie fajna zabawa, ale sporo roboty przed tobą jeżeli zdecydujesz się pójść w tę stronę.

0

Ogólnie muszę zrobić szyfrowanie poczty email. Wymyśliłem sobie, że dobrze by było, robić to niezależnie od klienta poczty i transparentnie dla użytkownika ("w tle"). Gdyby udało się wstrzymać to połączyć i zmodyfikować zawartość pakietu TCP bo byłoby super. Napisałem już prosty program to podejrzenia zawartości maila, ale teraz muszę zatrzymać komunikację z serwerem SMTP i podmienić dane.

A co w ogóle sądzisz o tym "proxy lokalnym"? Jest to wykonalne? No chyba, że postawiłbym proxy na localhoście i w kliencie poczty ustawiłbym łączenie przez proxy...

0

Nie wiem czy dobrze rozumuje ale chodzi ci generalnie o coś takiego?
klient wysyła maila przez SMTP -> twój proxy to przechwytuje i szyfruje -> twój proxy wysyła zaszyfrowany mail do SMTP
klient odbiera maila lokalnym klientem ( prosi o to twoje proxy) -> twój proxy to przechwytuje -> proxy pyta np serwer POP3 o maila -> odbiera -> odszyfrowuje -> przedstawia klientowi
Przed napisaniem tego nie sądziłem że to aż tak skomplikowane więc jeżeli chodzi o implementację to będzie masakra :)

HighDust napisał(a)

Ogólnie muszę zrobić szyfrowanie poczty email. Wymyśliłem sobie, że dobrze by było, robić to niezależnie od klienta poczty i transparentnie dla użytkownika ("w tle"). Gdyby udało się wstrzymać to połączyć i zmodyfikować zawartość pakietu TCP bo byłoby super. Napisałem już prosty program to podejrzenia zawartości maila, ale teraz muszę zatrzymać komunikację z serwerem SMTP i podmienić dane.

Hmm nie możesz użyć np SMTPS, POP3S ?

HighDust napisał(a)

A co w ogóle sądzisz o tym "proxy lokalnym"? Jest to wykonalne? No chyba, że postawiłbym proxy na localhoście i w kliencie poczty ustawiłbym łączenie przez proxy...

Zależy gdzie chcesz to potem użytkować. Jak to ma być jakieś produkcyjne rozwiązanie to ja bym się tak nie bawił.
A jeżeli to jest coś w rodzaju projektu uczelnianego to tak żeby to jakoś działało na pewno da się zrobić.

A tak w ogóle to piszesz to w Javie ;) Do takich rzeczy to ja bym proponował zupełnie poważnie język C.

0

A tak w ogóle to piszesz to w Javie Do takich rzeczy to ja bym proponował zupełnie poważnie język C.

... a nawet C++ :) Wiem, słyszałem już od innej osoby, że C/C++ zdecydowanie bardziej sie do tego nadaje, ale najpier próbuje wybadać możliwości jakie mam. A java jak dla mnie jest zdecydowanie bardziej intuicyjnym językiem, w tym przypadku na pewno ograniczonym, no ale cóż. Pewnie wyjdzie na to, że nie będę miał wyjścia i przerzuce się na VC++. Już nawet mam podobny program w C++ (na kształ sniffera)

W całym tym projekcie chodzi właśnie o napisanie własnego szyfrowania. Potrzebne jest to do pracy magisterskiej, stąd SMTPS i POP3S, a także PGP odpada.

0

hehe - to powodzenia życzę :) - ja swoje kREproxy wybroniłem w czerwcu także też świeża sprawa.
A tak w ogóle to musisz się bawić w sieć, czy po prostu tego chcesz, bo jeżeli nie to ja bym zaimplementował
jakiś "szyfrator" nie ingerujący w sieć i wtedy spokojnie można użyć do tego tylko i wyłącznie Javy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1