У меня возникли проблемы с использованием сырых сокетов IPv6 в python. Я подключаю через:Ошибки сокета IPv6 в Python raw
if self._socket != None:
# Close out old socket first
self._socket.close()
self._socket = socket.socket(socket.AF_INET6, socket.SOCK_RAW)
self._socket.bind((self._interface,0))
self._socket.sendall(data)
где self._interface - мой местный адрес; в частности «fe80 :: fa1e: dfff: fed6: 221d». При попытке это, я получаю следующее сообщение об ошибке:
File "raw.py", line 164, in connect
self._socket.bind((self._interface,0))
File "<string>", line 1, in bind
socket.error: [Errno 49] Can't assign requested address
Если я использую мой ipv6 локальный адрес для self._interface («:: 1») Я на самом деле связать адрес, но не может послать что-нибудь:
self._socket.sendall(data)
File "<string>", line 1, in sendall
socket.error: [Errno 39] Destination address required
Зачем нужен сырой сокет адрес назначения? Кто-нибудь работал с сырыми сокетами IPv6 в python и может помочь мне понять, почему это происходит?
Честно говоря, я после Сырого класса сокета, созданный в рамках Fuzzing Peach (http://peachfuzz.svn.sourceforge.net/viewvc/peachfuzz/branches/Peach2.3/Peach/Publishers/raw. ру?Пересмотр = & вид тысяча четыреста сорок-семь = разметка). то, что я пытаюсь сделать, это создать произвольные пакеты (от уровня IP и выше), чтобы fuzz ipv6 ... Подключение, кажется, включает в себя уровень IP - я пытаюсь произвольно создать это. – wuntee
ОК. возможно ли создать необработанный пакет и поместить его на провод? – wuntee
@wuntee: Я думаю, вы могли бы использовать 'sendto': http://docs.python.org/library/socket.html#socket.socket.sendto –