Синтезирующие пакеты со Scapy - PullRequest
0 голосов
/ 05 марта 2019

Сегодня мне передали CSV-файл с записями сетевого потока на 300 миллионов записей, и моя цель - преобразовать данные сетевого потока в синтезированные пакеты любыми необходимыми средствами.После небольшого исследования я решил, что Scapy станет невероятным инструментом для этого процесса.Я возился с некоторыми командами и пытался создать точные пакеты, которые отображают эти данные сетевого потока, но я изо всех сил и был бы очень признателен за помощь кого-то, кто баловался с Scapy раньше.

Здесьпример записи из моего набора данных :

1526284499.233,1526284795.166,157.239.11.35,41.75.41.198,443,55915,6,1,24,62,6537,1419,1441,32934,65535,

Ниже представлено значение, разделенное запятыми :

Начальная временная метка (формат эпохи): 1526284499.233
Конечная временная метка (формат эпохи): 1526284795.166
IP-адрес источника: 157.239.11.35
IP-адрес назначения: 41.75.41.198
Номер протокола заголовка IP: 443 (HTTPS)
Номер порта источника: 55915
Номер порта назначения: 6 (TCP)
TOSЗначение в заголовке IP: 1 (FIN)
Флаги TCP: 24 (ACK и PSH)
Количество пакетов: 62 ​​
Количество байтов: 6537
Входной порт маршрутизатора: 1419
Выход маршрутизатораПорт: 1441
Источник автономной системы: 32934 (Facэлектронная книга)
Целевая автономная система: 65535

My Current Scapy Представление этой записи :

>>> size = bytes(6537)  
>>> packet = IP(src="157.240.11.35", dst="41.75.41.200", chksum=24, tos=1, proto=443) / TCP(sport=55915, dport=6, flags=24) / Raw(size)

packet.show () :

###[ IP ]### 
  version= 4
  ihl= None
  tos= 0x1
  len= None
  id= 1
  flags= 
  frag= 0
  ttl= 64
  proto= 443
  chksum= 0x18
  src= 157.240.11.35
  dst= 41.75.41.200
  \options\
###[ TCP ]### 
     sport= 55915
     dport= 6
     seq= 0
     ack= 0
     dataofs= None
     reserved= 0
     flags= PA
     window= 8192
     chksum= None
     urgptr= 0
     options= []
###[ Raw ]### 
        load= '6537'

Моя путаница :

Честно говоря, я не уверен, правильно ли это.Что меня смущает, так это то, что заголовок протокола IP равен 443, что указывает на HTTPS, однако порт назначения равен 6, что указывает на TCP.Поэтому я не уверен, должен ли я включать TCP или нет, или если включение атрибута proto IP является бесплатным.Кроме того, я не уверен, является ли Raw () правильным способом для включения размера каждого пакета, не говоря уже о том, правильно ли я определил размер.

Пожалуйста, сообщите мне, гдеЯ ошибся или, если действительно, чудесным образом создал идеальный синтезированный пакет для этой конкретной записи.Большое вам спасибо!

1 Ответ

0 голосов
/ 05 марта 2019

Я думаю, что столбцы могут быть неправильными.HTTPS - это TCP-порт 443 (обычно), поэтому номер протокола должен быть 6 (TCP), а один из портов должен быть 443. Мое УДОСТОВЕРЕНИЕ состоит в том, что 443 является исходным портом, поскольку исходный IP-адрес принадлежит Facebook, что делает 55915 пунктом назначенияпорт.Итак, я думаю, что столбцы там идут: IP-адрес источника, IP-адрес назначения, порт источника, порт назначения, протокол.

...