Я пытаюсь отправить собственный пакет (с пользовательским слоем) с помощью Scapy в сокете python.Получение пользовательского пакета Scapy в сокете Python
Вот код клиента
#!/usr/bin/env python
import socket
from scapy.all import *
TCP_PORT = 5000
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.240.1', TCP_PORT))
class Reservation(Packet):
name = "ReservationPacket"
fields_desc=[ ByteField("id", 0),
BitField("type",None, 0),
X3BytesField("update", 0),
ByteField("rssiap", 0)]
k = IP(dst="192.168.240.1")/Reservation()
k.show()
send(k)
print "Reservation Message Sent"
s.close()
и пакет к по-видимому, успешно создан и отправлен.
Вот сервер, который отвечает получить пакет:
#!/usr/bin/python
import socket
from scapy.all import *
class Reservation(Packet):
name = "ReservationPacket"
fields_desc=[ ByteField("id", 0),
BitField("type",None, 0),
X3BytesField("update", 0),
ByteField("rssiap", 0)]
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('192.168.240.1', 5000))
s.listen(1)
while True :
conn, addr = s.accept()
print 'Connection address:', addr
print ''
data = conn.recv(1024)
data.show()
conn.close
s.close()
и это выход, я получаю от сервера:
Connection address: ('192.168.240.5', 58454)
Traceback (most recent call last):
File "server.py", line 36, in <module>
data.show()
AttributeError: 'str' object has no attribute 'show'
Как я могу получить мой пакет и декодировать его прочитать свой пользовательский слой?
data.show() должен отображать поля моего пакета. Если я попробую «распечатать данные», я ничего не получу. Я хотел бы также, чтобы получить доступ к полям моего пакета, как data.type, но он не работает: Traceback (самый последний вызов последнего): Файл « server.py», строка 36, в печати data.id AttributeError: объект 'str' не имеет атрибута 'id' –
brid
Вы не читали документацию, которую я наклеил там. Эти данные представляют собой строку, она не имеет идентификаторов или отображаемых атрибутов, если вы печатаете ее и ее None, это означает, что она пуста. – lapinkoira
Спасибо, но я до сих пор не знаю, как это сделать, как я могу его получить, а затем использовать поля пакетов? – brid