Отключить обработку TCP в пространстве ядра OSX

275
aeb0

Я пишу частичное переопределение TCP для целей обучения, используя Scapy. Мой TCP server.py не получает возможности отвечать на сообщения SYN, отправленные ему, потому что ядро ​​отвечает на них в первую очередь (OSX 10.10.5). Я прочитал pf.confсправочную страницу, но не похоже, что есть опция для создания правила, которое фильтрует пакеты из пространства ядра, но не из пространства пользователя (к сожалению, похоже, что linux iptablesпредоставляет такую ​​возможность QUEUE).

Я пробовал следующее pfправило, но оно фильтрует пакеты напрямую (как из ядра, так и из моего приложения). Я хочу сказать, что я не вижу пакета с портом dest 3000 в wireshark.

Правило ПФ:

block drop quick on lo0 proto tcp from any to any port = 3000 

Команда nmap используется для генерации SYN:

nmap 192.168.1.12 -p 3000 

Как я могу заставить ядро ​​передавать TCP-пакеты в пространство пользователя, ничего не делая?

3

1 ответ на вопрос

0
Francis from ResponseBase

Мой друг:

Машина назначения совпадает с машиной отправителя? Если это так, перефразируйте nmap, чтобы использовать петлевой IP-адрес следующим образом:

nmap -P0 -sT 127.0.0.1 -p 3000 

Обратите внимание на дополнительные параметры. Затем, перефразируйте правило pf и добавьте его для выхода:

pass in quick on lo0 tcp from any to any  pass out quick on lo0 tcp from any to any  

Если это работает, сожмите правило pf следующим образом:

pass in quick on lo0 tcp from 127.0.0.1 to 127.0.0.1 pass out quick on lo0 tcp from 127.0.0.1 to 127.0.0.1  

Если это не работает, проверьте pf, чтобы увидеть, были ли какие-либо пакеты сопоставлены с обоими правилами.

Надеюсь это поможет.

F.