c0d3dsk1lls

nettypes

Jun 27th, 2022
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.32 KB | None | 0 0
  1. import socket
  2. from struct import unpack
  3. from utils import mac_addr
  4.  
  5.  
  6.  
  7. class EthernetFrame:
  8.     length = 14
  9.     def __init__(self, data):
  10.         unpacked_data = unpack('!6s6sH', data[0:self.length])
  11.         self.protocol = socket.ntohs(unpacked_data[2])
  12.         self.destination = mac_addr(data[0:6])
  13.         self.source = mac_addr(data[6:12])
  14.         self.leftover_data = data[self.length:]
  15.        
  16.     def __str__(self):
  17.         return """
  18.                   MAC:
  19.      --------|--#--Source: --> ____________________ = {source}
  20.      --------||--@--Destination: --> ___________________ = {destination}
  21.      --------|||--$--Protocol: --> ___________________________ = {protocol}  
  22. +__________________________________________________________________________________+  
  23.                                                            
  24.        """.format(**self.__dict__)  
  25.        
  26. class IPHeader:
  27.     length = 20
  28.     def __init__(self, data):
  29.         unpacked_data = unpack('!BBHHHBBH4s4s', data[0: self.length])
  30.         self.version = data[0] >> 4
  31.         self.header_length = (data[0] & 15) * 4
  32.         self.ttl = unpacked_data[5]
  33.         self.protocol = unpacked_data[6]
  34.         self.source_addr = socket.inet_ntoa(unpacked_data[8])
  35.         self.dest_addr = socket.inet_ntoa(unpacked_data[9])
  36.         self.leftover_data = data[self.length:]
  37.        
  38.        
  39.     def __str__(self):
  40.         return """
  41.           (IP HEADER)
  42.             |||++#++- :Source Address: --> ______________________ = {source_addr}
  43.            ||++@++- :Destination Address: --> ________________ = {dest_addr}
  44.           |++$++- :Protocol: --> ___________________________ = {protocol}        
  45.        """.format(**self.__dict__)  
  46.        
  47.        
  48.        
  49.     def _parse_http_data(self, data):    
  50.         try:
  51.             return data.decode('utf-8')
  52.         except Exception as e:
  53.             return data
  54. class UDPSegment:
  55.     length = 8
  56.     def __init__(self, data):
  57.         unpacked_data = unpack('!HHHH', data[0:self.length])
  58.         self.src_port = unpacked_data[0]
  59.         self.dest_port = unpacked_data[1]
  60.         self.length = unpacked_data[2]
  61.         self.checksum = unpacked_data[3]
  62.         self.leftover_data = data[self.length:]
  63.        
  64.     def __str__(self):
  65.         return """
  66.            UDPSegment:
  67.               - Source Port:          {src_port}
  68.               - Destination Port:     {dest_port}
  69.               - Checksum:             {checksum}
  70.               - Data:                 {leftover_data}                
  71.        """.format(**self.__dict__)
  72.        
  73.        
  74. class TCPSegment:
  75.     length = 20
  76.     def __init__(self, data):
  77.         unpacked_data = unpack('!HHLLBBHHH', data[0:self.length])
  78.         self.src_port = unpacked_data[0]
  79.         self.dest_port = unpacked_data[1]
  80.         self.sequence = unpacked_data[2]
  81.         self.acknowledgement = unpacked_data[4]
  82.         #self.header_length = self.offset_reserved >> 4
  83.         self.leftover_data = data[self.length:]
  84.     def __str__(self):
  85.         return """
  86.            TCPSegment:
  87.               - Source Port:          {src_port}
  88.               - Destination Port:     {dest_port}
  89.               - Data:                 {leftover_data}                
  90.        """.format(**self.__dict__)
  91.        
  92.        
  93.        
  94.    
  95.        
  96.        
  97.        
  98.        
  99.        
  100.        
  101.  
  102.  
Advertisement
Add Comment
Please, Sign In to add comment