mirror of
https://github.com/byt3bl33d3r/MITMf.git
synced 2025-07-08 05:51:48 -07:00
This commit adds active packet filtering/modification to the framework (replicates etterfilter functionality)
by using netfilterqueue, you can pass a filter using the new -F option, (will be adding an example later) additionaly removed some deprecated attributes and the --manual-iptables option
This commit is contained in:
parent
0add358a57
commit
7ec9f7b395
17 changed files with 99 additions and 53 deletions
45
core/packetparser.py
Normal file
45
core/packetparser.py
Normal file
|
@ -0,0 +1,45 @@
|
|||
import threading
|
||||
|
||||
from core.utils import set_ip_forwarding, iptables
|
||||
from core.logger import logger
|
||||
from scapy.all import *
|
||||
from traceback import print_exc
|
||||
from netfilterqueue import NetfilterQueue
|
||||
|
||||
formatter = logging.Formatter("%(asctime)s [PacketParser] %(message)s", datefmt="%Y-%m-%d %H:%M:%S")
|
||||
log = logger().setup_logger("PacketParser", formatter)
|
||||
|
||||
class PacketParser:
|
||||
|
||||
def __init__(self, filter):
|
||||
self.filter = filter
|
||||
|
||||
def start(self):
|
||||
set_ip_forwarding(1)
|
||||
iptables().NFQUEUE()
|
||||
|
||||
self.nfqueue = NetfilterQueue()
|
||||
self.nfqueue.bind(1, self.modify)
|
||||
|
||||
t = threading.Thread(name='packetparser', target=self.nfqueue.run)
|
||||
t.setDaemon(True)
|
||||
t.start()
|
||||
|
||||
def modify(self, pkt):
|
||||
#log.debug("Got packet")
|
||||
data = pkt.get_payload()
|
||||
packet = IP(data)
|
||||
|
||||
try:
|
||||
execfile(self.filter)
|
||||
except Exception:
|
||||
log.debug("Error occurred in filter")
|
||||
print_exc()
|
||||
|
||||
pkt.set_payload(str(packet)) #set the packet content to our modified version
|
||||
pkt.accept() #accept the packet
|
||||
|
||||
def stop(self):
|
||||
self.nfqueue.unbind()
|
||||
set_ip_forwarding(0)
|
||||
iptables().flush()
|
Loading…
Add table
Add a link
Reference in a new issue