Ser Опубликовано 6 февраля, 2020 (изменено) · Жалоба Откликнитесь, плиз, кто сможет написать небольшую программу, которая будет модифицировать пакеты вылавливая их из NFQUEUE. Моя задача немного изменять, переставляя пару байт, в пакетах dhcp. Остановился на NFQUEUE, к примеру в питон писать программку, которую можно будет менять по своему усмотрению. Может быть есть уже готовые решения, которые позволят модифицировать пакет по моим правилам (возможно не NFQUEUE). Посоветуйте, плиз. Изменено 6 февраля, 2020 пользователем Ser Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 6 февраля, 2020 · Жалоба питон + netfilterqueue + scapy, мелкие изменения пишутся на лету Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ser Опубликовано 6 февраля, 2020 · Жалоба Попробую изучить питон. Синтаксис убил с этими отступами. Непривычно. @ixi Сможете помочь? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 6 февраля, 2020 · Жалоба Не заинтересован. простой пример из старых тестов (без проверок и прочего): #! /usr/bin/env python2.7 from scapy.all import * from netfilterqueue import NetfilterQueue def modify(packet): pkt = IP(packet.get_payload()) if pkt[DNSQR].qname == "example.com.": del pkt[IP].len del pkt[IP].chksum del pkt[UDP].len del pkt[UDP].chksum pkt[DNS].an[0].rdata = "1.2.3.4" packet.set_payload(str(pkt)) packet.accept() nfqueue = NetfilterQueue() nfqueue.bind(1, modify) try: print "[*] waiting for data" nfqueue.run() except KeyboardInterrupt: pass Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vop Опубликовано 6 февраля, 2020 · Жалоба Там и на C не сложно через libnetfilter_queue Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ser Опубликовано 6 февраля, 2020 · Жалоба :) мне везде сложно, но думаю изучение питона пригодится в будущем Буду постигать Подскажите Как посмотреть все методы в модуле? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 7 февраля, 2020 · Жалоба 19 часов назад, Ser сказал: Может быть есть уже готовые решения, которые позволят модифицировать пакет по моим правилам (возможно не NFQUEUE). На фре легко делается: ng_bpf + ng_patch. Загружаешь в bpf программу скомпиленную из матчинга tcpdump, всё что матчится идёт на один хук, всё что нет - на другой, где patch что то сделает с пакетом. http://netlab.dhis.org/wiki/ru:software:freebsd:igmpproxy_on_netgraph по аналогии с этим. Ещё у меня была прога на си, через дивертсокеты работала, торрентовый uTP мучала. http://netlab.dhis.org/wiki/ru:software:freebsd:utp_ctrl_daemon Но может будет проще сразу взять сервер где можно делать что угодно: http://netlab.dhis.org/wiki/ru:software:perl:dhcp_server Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
orlik Опубликовано 9 февраля, 2020 · Жалоба On 2/6/2020 at 4:42 PM, Ser said: Посоветуйте, плиз. а в чем смысл изменения в пакетах ? Может и не нужны подобные действия, и все можно сделать гораздо проще ? Обрисуйте проблему полностью Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...