Я пытаюсь немного научиться генерировать пакеты с помощью scapy. Это выглядит довольно круто. Следуя некоторой документации, я делаю это:
l3=IP(dst="192.168.0.1", src="192.168.0.2", tos=(46 << 2))
Но только для того, чтобы получить сообщение об ошибке:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 251, in send
__gen_send(conf.L3socket(*args, **kargs), x, inter=inter, loop=loop, count=count,verbose=verbose, realtime=realtime)
File "/usr/lib/python2.7/dist-packages/scapy/arch/linux.py", line 307, in __init__
self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
File "/usr/lib/python2.7/socket.py", line 187, in __init__
_sock = _realsocket(family, type, proto)
error: [Errno 1] Operation not permitted
Запуск scapy от имени root решил проблему. Но это не то, чего я хотел. Это потому, что обычный пользователь не может создать сокет RAW? Если да, то есть ли решение?