Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- from ctypes import *
- import struct
- import socket
- host = '192.168.0.9'
- class IP(Structure):
- _fields_ = [
- ("ihl", c_ubyte, 4),
- ("version", c_ubyte, 4),
- ("tos", c_ubyte),
- ("len", c_ushort),
- ("id", c_ushort),
- ("offset", c_ushort),
- ("ttl", c_ubyte),
- ("protocol_num", c_ubyte),
- ("sum", c_ushort),
- ("src", c_int),
- ("dst", c_int)
- ]
- def __init__(self, socket_buffer=None):
- self.protocol_map = {1: 'ICMP', 6: 'TCP', 17: 'UDP'}
- self.src_address = socket.inet_ntoa(struct.pack('<L', self.src))
- self.dst_address = socket.inet_ntoa(struct.pack('<L', self.dst))
- self.protocol = self.protocol_map[self.protocol_num]
- def __new__(cls, socket_buffer=None):
- return cls.from_buffer_copy(socket_buffer)
- socket_protocol = socket.IPPROTO_UDP
- sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket_protocol)
- sock.bind((host, 0))
- sock.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
- try:
- while True:
- raw_buffer = sock.recvfrom(65565)[0]
- ip_header = IP(raw_buffer[:20])
- print('Protocol: {} {} -> {}'.format(ip_header.protocol, ip_header.src_address, ip_header.dst_address))
- except KeyboardInterrupt:
- print('\rExiting...')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement