Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Сети > Сделать транзит TCP пакетов |
Автор: Hypertonyc 15.7.2010, 08:31 |
Здравствуйте. Задача вот какая: Имеется клиент который периодически шлет данные на сервер1. Я перенастраиваю клиента на другой (свой) сервер2 на котором будет стоять программа, которую я сейчас пишу. Она должна забрать из пакета то что ей нужно и !не меняя ничего! отправить этот пакет на старый сервер1 т.е. типа транзит. Так вот, можно ли сделать так, чтоб пакеты приходящие на старый сервер1 выглядели точно так же как они пришли от клиента(IP адрес отправителя итд)? |
Автор: baldina 16.7.2010, 14:02 |
IP адрес отправителя. Только сервер 1 тоже шлет пакеты, и слать он их будет, понятно, клиенту, т.к. его адрес в пакете, т.е. минуя сервер2 И клиент будет чуть обескуражен, поскольку с сервер1 он сессий не имеет. Т.е. нужно что бы на клиенте пакеты, пришедшие с сервер1, имели адрес отправителя сервер2. вобщем нужно устроить трансляцию адресов отправителя: 1. сервер2->клиент на сервер2 перед отправкой на сервер1 2. сервер1->сервер2 на клиент перед получением у клиента |
Автор: Hypertonyc 20.7.2010, 09:52 |
на машине с клиентом нужно поставить какуюто прожку, которая будет в пакетах менять адрес с Сервер1 на Сервер2? Добавлено через 2 минуты и 12 секунд а есть какиенибудь методы замены ipадреса...пишу на студии...на winapi и winsock2. |
Автор: djamshud 20.7.2010, 10:32 |
Если я правильно понял, вам нужен маскарадинг (masquerading). |
Автор: Hypertonyc 20.7.2010, 10:41 |
правильно понял. есть примеры? на чом пишу уже указал в прошлом сообщении |
Автор: REZiaMIX 20.7.2010, 10:46 | ||
можно перехватывать connect(wsaconnect), перенаправляя данные на localhost, но с другим портом. |
Автор: Hypertonyc 20.7.2010, 13:47 |
блин чота изза жары бошка ваще не варит. не так задачу описал ![]() клиент - это отдельное устройство. изменить порядок его работы нет возможности, кроме как настроить куда и на какой порт слать. на сервер1 тоже доступа нет...т.е. там изменить тоже ничего невозможно. есть сервер2(комп) на нем могу делать что угодно.нужно на этом сервер2 анализировать данные с устройства, чтоб на сервере1 при этом никто и не узнал.воот. есть мысли? |
Автор: REZiaMIX 20.7.2010, 13:52 | ||
На сервере 2 поставить эмулятор(прокси), который будет перенаправлять данные на сервер1, с возможностью модификации. |
Автор: Hypertonyc 20.7.2010, 13:55 |
и пакеты будут на сервер1 приходить типа как с устройства и ответ от сервер1 будет приходить на сервер2 а не на устройство? есть пример готовой проги(желательно бесплатной)? или кода? |
Автор: baldina 21.7.2010, 00:19 | ||
Hypertonyc, бесплатная прога - iptables и т.п. В любом случае некий хост должен играть роль шлюза с NAT. Это может быть клиент, это может быть маршрутизатор между клиентом и Сетью. Если Вы имеете влияние только на сервер2, и он не является шлюзом, то ниче не выйдет. Добавлено @ 00:23
мысли простые. не надо настраивать клиента на сервер2. надо расположить сервер2 так, что бы через него проходили пакеты от клиента. т.е. либо являлся маршрутизатором, либо находился в одном с клиентом домене коллизий и работал в promiscuous mode. |
Автор: baldina 22.7.2010, 17:18 | ||||||
см:
ну тогда шлюзы все у провайдера, так что не публикуя адрес сервер2 на сервер1 не выйдет. получает сервер1 пакет и видит: отправитель - клиент. ему и шлет ответы. а клиент ответов от сервер1 не ожидает и игнорирует, он настроен на сервер2 |
Автор: jonie 23.7.2010, 17:56 |
возможно подойдет метод снифинга, если данные пакета вообще менять нельзя (включая MAC адреса например). Подробнее смотреть в библиотеке WinPCap ... ну и гуглить про снифферы) |
Автор: RatHat 10.8.2010, 16:06 | ||
Хмммм...а не банкомат/терминал ли ты тут вскрыть пытаешься? |
Автор: lat 10.8.2010, 16:12 |
Уважаемый, с такими вопросами в СБУ или на хакер.ру =) В любом случаи Большой Брат уже следит за вами еще более пристально ;) |