Как обнюхивать пакеты, изменять и затем отправлять

Я хочу прослушивать IP-пакеты, а затем изменить поле ToS на 1 и добавить параметры в заголовок IP, а затем отправить измененный пакет вместо исходного пакета. Я обнаружил, что это можно сделать с помощью scapy, но, похоже, это не работает. Кто-нибудь может мне с этим помочь?

from scapy.all import *
from scapy.layers.inet import IP

def chgSend(x):
    x[IP].tos = 1
    send(x)
while 1:
    sniff(filter = "ip src host 10.0.0.2", prn=chgSend)

любое предложение?

Amin 29.08.2018 20:45

Помогает ли смена send(x) на sendp(x)?

Brian Bienvenu 30.08.2018 08:42

@BrianBienvenu Я использовал sendp(x), и он начал отправлять много пакетов после захвата первого пакета!

Amin 30.08.2018 12:14

Звучит лучше. У вас есть while 1:, поэтому он будет постоянно захватывать пакеты, а затем повторно отправлять их. Я думаю, вероятно, ваш снифф видит пакеты, сгенерированные Scapy's sendp() - он фактически сам себя питает. Вам нужно будет добавить в свой код дополнительную логику, чтобы это остановить.

Brian Bienvenu 30.08.2018 12:49
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
3 531
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Теперь я могу подделать IP-адрес и изменить поле ToS с помощью этого кода:

from scapy.all import *
from scapy.layers.inet import IP


def change_send(pckt):
    actual_src = pckt[IP].src
    pckt[IP].src = "192.168.1.5"
    pckt[IP].tos = 1
    sendp(pckt)
    print("We changed source from " + actual_src + " to " + pckt[IP].src)


while 1:
    sniff(filter = "ip src host 192.168.1.2", prn=change_send)

Если вы не хотите менять исходный IP-адрес, убедитесь, что вы не застряли в бесконечном цикле.

Вы также должны установить каждую контрольную сумму на None, чтобы они правильно пересчитывались при отправке.

Cukic0d 17.01.2019 01:49

Другие вопросы по теме