Guest User

Untitled

a guest
Mar 19th, 2018
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. from netfilterqueue import NetfilterQueue
  2. import traceback
  3. import subprocess
  4. import signal
  5. import dpkt
  6. import socket
  7.  
  8. raw_socket = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(3))
  9. raw_socket.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 2**30)
  10.  
  11. def split_ip_packet_to_overlapped_fragments(nfqueue_element):
  12. try:
  13. fragment1 = dpkt.ip.IP(nfqueue_element.get_payload())
  14. fragment1.off = 1 << 13 # Set More Fragment Flag
  15. fragment1.data = str(fragment1.data)[:16] + 3 * '0'
  16. fragment1.sum = 0
  17. fragment1.len = len(fragment1)
  18. fragment2 = dpkt.ip.IP(nfqueue_element.get_payload())
  19. fragment2.off = 2 # Offset is 2 * 8 bytes
  20. fragment2.data = str(fragment2.data)[16:]
  21. fragment2.sum = 0
  22. fragment2.len = len(fragment2)
  23. print "Yooooo"
  24. raw_socket.sendto(str(fragment1), ('XXX.XXX.XXX.XXX', 80))
  25. raw_socket.sendto(str(fragment2), ('XXX.XXX.XXX.XXX', 80))
  26. nfqueue_element.drop()
  27. except:
  28. traceback.print_exc()
  29. nfqueue_element.accept()
  30.  
  31. nfqueue = NetfilterQueue()
  32. nfqueue.bind(0, split_ip_packet_to_overlapped_fragments)
  33.  
  34. def clean_up(*args):
  35. subprocess.call('iptables -D OUTPUT -p tcp -s XXX.XXX.XXX.XXX -j QUEUE', shell=True)
  36.  
  37. signal.signal(signal.SIGINT, clean_up)
  38.  
  39. try:
  40. subprocess.call('iptables -I OUTPUT -p tcp -s XXX.XXX.XXX.XXX -j QUEUE', shell=True)
  41. print('running..')
  42. nfqueue.run()
  43. except KeyboardInterrupt:
  44. print('bye')
Add Comment
Please, Sign In to add comment