Чтение и обработка пакетов из сетевого интерфейса с помощью python
Поэтому я пытаюсь создать протокол туннелирования в python. У меня есть настройка интерфейса tun, маршрутизируется весь трафик. Но как мне получить пакеты, которые перенаправляются на интерфейс tun в моей программе, чтобы зашифровать их и отправить их на сервер? Из того, что я видел, это либо функция socket.bind (), либо socket.setsockopt (). Это моя настройка интерфейса
И этот код, который я использую сейчас:
import os, sys from select import select f = os.open("/dev/tun0", os.O_RDWR) os.system("ifconfig tun0 add 10.6.0.1 10.6.0.2") os.system("ip route add 0/1 dev tun0") try: while 1: r = select([f],[],[])[0][0] if r == f: packet = os.read(f, 4000) print(str(len(packet)) + " : " + str(packet)) except KeyboardInterrupt: print ("Stopped by user.") os.system("ip route delete 0/1 dev tun0")
это напрямую читается с устройства. так есть ли способ использовать библиотеку сокетов для чтения пакета по отдельности?
Благодарю.
ОС: macOS Sierra
- Какие библиотеки C ++ следует использовать для большого параллельного вычисляющего число-хрустального проекта, использующего сторонние приложения
- Рекурсивные определения классов в Python
- Создайте openCV VideoCapture из имени интерфейса вместо номеров камер
- Как избежать замораживания GUI при связывании скрипта muliprocessing python, связанного с gui (скрипт python должен работать в фоновом режиме)
- Как установить aggdraw после этой ошибки?
Я бы поставил интерфейс tun в режим promiscuous, чтобы я мог слушать каждый пакет, который проходит.
Хорошее начало о том, как это сделать, представлено в следующей публикации:
Python Sockets: включение режима Promiscuous в Linux
Другим вариантом может быть низкоуровневый доступ к сетевому интерфейсу или драйверу виртуальной сетевой карты, написанному на Python.
- Сжатие JSON на основе атрибута – python
- Python-twisted: пытается заставить UDP и websockets работать вместе?
- Как документировать и тестировать интерфейсы, необходимые для формальных параметров в Python 2?
- Как показать интерфейс для выбора точек в python?
- Оберните несколько C-источников (файлы .c), чтобы использовать их функции в Python, используя SWIG
- Что такое хороший способ реализовать что-то похожее на интерфейс в Python?
- Как редактировать данные с помощью django-tables2 во внешнем интерфейсе?
- Отзывчивая запись PyAudio
- Как использовать multiprocessing.Pool правильно с PySide для создания неблокирующего графического интерфейса
- Как подклассы str в Python
- Python: информация о возврате координат с помощью мыши