2016-01-06 4 views
0

Я собрал пакеты из сетей, и я сохранил их в файл * .pcap Я хочу изменить адрес src и dst ip и отправить его в сеть. Я написал простой скрипт:Scapy - отправлять пакеты из файла pcap с измененными IP-адресами

#! /usr/bin/env python 

from scapy.all import * 
from scapy import * 
from scapy.utils import rdpcap 
from scapy.utils import wrpcap 

packets = rdpcap("/root/Desktop/500000pkt.pcap", 1000) 

for pkt in packets: 
    if pkt.haslayer(IP) == 1: 
     pkt[IP].src = "10.0.1.2" 
     pkt[IP].dst = "10.0.1.1" 

#for pkt in packets: 
# pkt.display() 

wrpcap("/root/Desktop/500000pkt_changed.pcap", packets) 
sendpfast(packets) 

Я использую интерфейс eth1. После выполнения этого скрипта я вижу это:

WARNING: No route found for IPv6 destination :: (no default route?) 
sending out eth1 
processing file: /tmp/scapylUGae4 
Actual: 1000 packets (627010 bytes) sent in 0.09 seconds.  Rated: 6966778.0 bps, 53.15 Mbps, 11111.11 pps 
Statistics for network device: eth1 
    Attempted packets:   1000 
    Successful packets:  1000 
    Failed packets:   0 
    Retried packets (ENOBUFS): 0 
    Retried packets (EAGAIN): 0 

В Wireshark я наблюдать поток в сети, но ничего не происходит. Его тишина. Пинг с компьютера на маршрутизатор успешно.

Что я делаю неправильно? Может ли кто-нибудь помочь?

+0

Я сам не знаю, но я полагаю, что 'scapy' не переписывает контрольные суммы при изменении информации. Вероятно, это вызывает проблемы. –

ответ

0

удалите поле chksum, чтобы заставить scapy пересчитать его.

del pkt[IP].chksum 
Смежные вопросы