Мне интересно, есть ли возможность запустить «sniff (...)» Scapy без корневых привилегий.Python Scapy sniff без корня
Используется в приложении, где фиксируются определенные пакеты. Но я не хочу запускать все приложение с правами root или изменять что-либо на scapy себя.
Заранее благодарен!
EDIT:
Для тестирования я использую следующий код:
from scapy.all import *
def arp_monitor_callback(pkt):
if ARP in pkt and pkt[ARP].op in (1,2): #who-has or is-at
return pkt.sprintf("%ARP.hwsrc% %ARP.psrc%")
sniff(prn=arp_monitor_callback, filter="arp", store=0)
Я только смог запустить его с помощью Sudo.
Я попытался установить возможности с помощью sudo setcap 'cap_net_admin=+eip' test.py
. Но это не показывает никаких эффектов. Даже способность all
не помогает.
sniff() необходимо установить беспорядочный режим, поэтому для запуска вашей программы должно быть достаточно CAP_NET_ADMIN (см. Возможности человека (7)) –
sorry , но я не очень хорошо разбираюсь в возможностях: должен ли я установить их на свой скрипт, на scapy lib или даже где-нибудь еще? – maascht
Вы можете установить возможности сценария с помощью setcap (8) как root, если вы хотите, чтобы обычные пользователи использовали программу без повышения привилегий (пример [здесь] (https://wiki.archlinux.org/index.php/Capabilities)). –