Advertisement
Guest User

Untitled

a guest
Jan 24th, 2018
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.57 KB | None | 0 0
  1. #!/usr/bin/python2
  2.  
  3. import os
  4. from netfilterqueue import NetfilterQueue
  5. import logging
  6. logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
  7. from scapy.all import *
  8. import re
  9.  
  10. #   Jail it
  11. os.system('iptables -A OUTPUT -o enp2s0 -p tcp --dport 4444 -j NFQUEUE --queue-num 1')
  12. os.system('iptables -A FORWARD -p tcp --dport 4444 -j NFQUEUE --queue-num 1')
  13.  
  14. my_eth_address = '0xcorrectadresshere'
  15.  
  16.  
  17. def handle_pkt(payload):
  18.  
  19.     #   decode data
  20.     data = payload.get_payload()
  21.     pkt = IP(data)
  22.  
  23.     payload_before = len(pkt[TCP].payload)  #   len
  24.     payload_text = str(pkt[TCP].payload)
  25.  
  26.     #   watchout for missmatching adress
  27.     if "eth_submitLogin" in payload_text:
  28.  
  29.         payload_mod = payload_text
  30.  
  31.         #if my_eth_address not in payload_text:
  32.  
  33.         print( "modified:" )
  34.         print( str(pkt[TCP].payload) )
  35.  
  36.         payload_mod = re.sub(r'0x.{40}', my_eth_address, payload_text)
  37.  
  38.         pkt[TCP].payload = payload_mod
  39.         payload_after = len(payload_text)   #   len
  40.  
  41.         payload_dif = payload_after - payload_before
  42.         pkt[IP].len = pkt[IP].len + payload_dif
  43.        
  44.         pkt[IP].ttl = 40    #   changed from : pkt[IP].payload_textttl = 40 - no such method. I am not sure what this line does
  45.  
  46.         payload.set_payload( payload_mod.encode() )
  47.  
  48.         del pkt[IP].chksum
  49.         del pkt[TCP].chksum
  50.  
  51.         #payload.set_verdict_modified(nfqueue.NF_ACCEPT, str(pkt), len(pkt))    #   die - no such method
  52.  
  53.         print( str(pkt[TCP].payload) )
  54.  
  55.     payload.accept()
  56.  
  57.  
  58.  
  59. nfqueue = NetfilterQueue()
  60. nfqueue.bind(1, handle_pkt)
  61.  
  62. try:
  63.     nfqueue.run()
  64. except KeyboardInterrupt:
  65.     print('exito')
  66.  
  67. nfqueue.unbind()
  68.  
  69. os.system('iptables -F')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement