kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 user974896
user974896
Вопрос

Взаимодействие с TUN\TAP для MAC OSX (Lion) с помощью Python

Я нашел следующий пример программы tun\tap и не могу заставить ее работать:

http://www.secdev.org/projects/tuntap_udp/files/tunproxy.py

Я изменил следующие строки:

f = os.open("/dev/tun0", os.O_RDWR)
ifs = ioctl(f, TUNSETIFF, struct.pack("16sH", "toto%d", TUNMODE))
ifname = ifs[:16].strip("\x00")

Первая строка была изменена, чтобы отразить реальное местоположение водителя. Изначально она была

f = os.open("/dev/net/tun", os.O_RDWR)

После запуска я получаю следующую ошибку:

 sudo ./tuntap.py -s 9000
 Password:
 Traceback (most recent call last):
   File "./tuntap.py", line 65, in <module>
     ifs = ioctl(f, TUNSETIFF, struct.pack("16sH", "toto%d", TUNMODE))
 IOError: [Errno 25] Inappropriate ioctl for device

Я использую последние версии драйверов tun\tap, установленные с сайта http://tuntaposx.sourceforge.net/download.xhtml.

7 2012-10-23T16:35:53+00:00 2
Программирование
driver
python
networking
tap
tun
 konrad
konrad
28-го февраля 2013 в 3:46
2013-02-28T15:46:15+00:00
Дополнительно
Источник
Редактировать
#17538252

Драйвер OSX tun/tap, похоже, работает немного по-другому. Пример Linux динамически выделяет интерфейс tun, что не работает в OSX, по крайней мере, не так.

Я удалил код, чтобы создать базовый пример использования tun в OSX, используя самостоятельно выбранное устройство tun, печатая каждый пакет на консоль. Я добавил Scapy в качестве зависимости для красивой печати, но вы можете заменить его необработанным дампом пакетов, если хотите:

import os, sys
from select import select
from scapy.all import IP

f = os.open("/dev/tun12", os.O_RDWR)
try:
    while 1:
        r = select([f],[],[])[0][0]
        if r == f:
            packet = os.read(f, 4000)
            # print len(packet), packet
            ip = IP(packet)
            ip.show()
except KeyboardInterrupt:
    print "Stopped by user."

Вам придется либо запустить это от имени root, либо сделать sudo chown your_username /dev/tun12, чтобы вам разрешили открыть устройство.

Чтобы настроить его как интерфейс точка-точка, введите:

$ sudo ifconfig tun12 10.12.0.2 10.12.0.1

Обратите внимание, что интерфейс tun12 будет доступен только пока /dev/tun12 открыт, т.е. пока запущена программа. Если вы прервете работу программы, ваш tun-интерфейс исчезнет, и вам нужно будет настроить его снова при следующем запуске программы.

Если теперь вы будете пинговать вашу конечную точку, ваши пакеты будут выведены на консоль:

$ ping 10.12.0.1

Сам Ping будет печатать таймауты запросов, потому что нет конечной точки туннеля, отвечающей на ваши запросы ping.

7
0
 fedesismo
fedesismo
28-го декабря 2016 в 5:54
2016-12-28T17:54:54+00:00
Дополнительно
Источник
Редактировать
#17538259

так что насчет ошибки 'No such file or directory' при выполнении:

``f = os.open("/dev/tun12", os.O_RDWR)```.

это сработало для меня:

brew install Caskroom/cask/tuntap.

1
0
Похожие сообщества 33
Python beginners
Python beginners
17 345 пользователей
Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981
Открыть telegram
Python
Python
14 260 пользователей
Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/1961404
Открыть telegram
🐍 Python Stepik Chat
🐍 Python Stepik Chat
11 616 пользователей
Этот уютный чат создан для помощи в решение задач на прекрасном курсе "Поколение Python: курс для начинающих" и не только. Правила: https://t.me/pythonstepikchat/619142 Чат для оффтопа - t.me/+fqNb78zlQY81NGUy Наш канал - @kimport_this
Открыть telegram
aiogram
aiogram
8 250 пользователей
Репозиторий: https://github.com/aiogram/aiogram Сайт: https://aiogram.dev Полезная информация: https://t.me/aiogram_ru/1421485?thread=1421477
Открыть telegram
Python — вакансии и аналитика
Python — вакансии и аналитика
6 468 пользователей
Публикуем вакансии и запросы на поиск работы по направлению Python, Flask и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @golang_jobs, @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs
Открыть telegram
Сообщество Python Программистов
Сообщество Python Программистов
5 885 пользователей
Канал: @pip_install Наши сайты: https://python-scripts.com https://selenium-python.com https://itfy.org Мы в ВК: https://vk.com/open_sourcecode Вакансии: https://t.me/python_scripts_hr
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 5 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией