Есть ли простой способ для сценария Python связать все порты на IP-адрес? - PullRequest
3 голосов
/ 24 января 2012

Я пишу скрипт Python, который подключается к удаленным хостам через (очень сложный) туннель SOCKS / SSL. Я могу устанавливать соединения с IP-адресами в удаленной интрасети на любом порту.

То, что я надеюсь сделать, - настроить скрипт Python на использование IP-адресов в локальном цикле обратной связи (127.0.xx), чтобы он (возможно, с помощью файла hosts) стал «копией» удаленных систем. и, следовательно, позволяют мне использовать приложения, которые не поддерживают прокси. Проблема в том, что я не всегда знаю, к каким портам они пытаются подключиться. Кажется, единственный способ решить эту проблему - привязать сокеты ко всем 65536 портам, что выглядит немного сумасшедшим. Итак, два вопроса:

  1. Это безумие? Могу ли я просто настроить список питонов сокетов от 1-65536?
  2. Или есть лучший способ сделать это? Могу ли я каким-либо образом контролировать соединения с IP и связывать порты до того, как они понадобятся?

Я хочу, если возможно, избегать использования слишком большого количества кода, зависящего от платформы или не Python.

РЕДАКТИРОВАТЬ: Чтобы уточнить, я пишу только клиент здесь - я не имею никакого контроля над сервером. Поверьте, если бы у меня был контроль над серверной стороной, я бы не делал бы это с помощью SOCKS / SSL / CRAM:)

Ответы [ 2 ]

1 голос
/ 24 января 2012

Как насчет перехода на более низкий уровень и подключения библиотеки, предназначенной для сетевых анализаторов, таких как pycap ?

Таким образом, вы можете обнаружить все попытки подключения и найти порты, которые вам нужно предоставить, или, может быть, вы можете просто направить пакеты напрямую, предполагая, что библиотека в дополнение к обнаружению пакетов может также выполнить инъекцию пакетов (страница pypcap говорит, что эта функция экспериментальный).

Однако в Python это имело бы смысл только для медленных приложений ...

Pycap, похоже, разработан для linux, но захват ядра выполняется libpcap, а для windows есть похожая библиотека winpcap .

1 голос
/ 24 января 2012

Матовый,

Если вы используете Windows, ваш лучший снимок - что-то вроде OpenVPN через туннель. OpenVPN требует только один TCP-порт / поток и предоставляет вам пару виртуальных интерфейсов с полной связью.

[обновлено]

Это может быть возможно при использовании драйвера TUN / TAP на стороне клиента. См. эту версию Unix для идей.

...