Пример #1
0
    def __build_node_information_message(class_object, type, code, payload = None):
        #Build ICMP6 header
        icmp_packet = ICMP6()
        icmp_packet.set_type(type)
        icmp_packet.set_code(code)
        
        #Pack ICMP payload
        qtype = 0
        flags = 0
        nonce = [0x00] * 8
        
        icmp_bytes = struct.pack('>H', qtype)
        icmp_bytes += struct.pack('>H', flags)
        icmp_bytes += array_tobytes(array.array('B', nonce))
        
        if payload is not None:
            icmp_bytes += array_tobytes(array.array('B', payload))
        
        icmp_payload = Data()
        icmp_payload.set_data(icmp_bytes)
        
        #Link payload to header
        icmp_packet.contains(icmp_payload)

        return icmp_packet
Пример #2
0
 def __build_error_message(class_object, type, code, data, originating_packet_data):
     #Build ICMP6 header
     icmp_packet = ICMP6()
     icmp_packet.set_type(type)
     icmp_packet.set_code(code)
     
     #Pack ICMP payload
     icmp_bytes = array_tobytes(array.array('B', data))
     if (originating_packet_data is not None):
         icmp_bytes += array_tobytes(array.array('B', originating_packet_data))
     icmp_payload = Data()
     icmp_payload.set_data(icmp_bytes)
     
     #Link payload to header
     icmp_packet.contains(icmp_payload)
     
     return icmp_packet
Пример #3
0
 def __build_neighbor_message(class_object, msg_type, target_address):
     #Build ICMP6 header
     icmp_packet = ICMP6()
     icmp_packet.set_type(msg_type)
     icmp_packet.set_code(0)
     
     # Flags + Reserved
     icmp_bytes = array_tobytes(array.array('B', [0x00] * 4))
     
     # Target Address: The IP address of the target of the solicitation.
     # It MUST NOT be a multicast address.
     icmp_bytes += array_tobytes(array.array('B', IP6_Address(target_address).as_bytes()))
     
     icmp_payload = Data()
     icmp_payload.set_data(icmp_bytes)
     
     #Link payload to header
     icmp_packet.contains(icmp_payload)
     
     return icmp_packet
Пример #4
0
   def buildAnswer(self, in_onion):
       cmd = array_tobytes(in_onion[O_UDP_DATA].get_bytes())
       if cmd[:4] == 'cmd:': cmd = cmd[4:].strip()
       print("Got command: %r" % cmd)

       if cmd == 'exit':
          from sys import exit
          exit()

       out_onion = OpenUDPResponder.buildAnswer(self, in_onion)
       out_onion.append(ImpactPacket.Data())
       out_onion[O_UDP].contains(out_onion[O_UDP_DATA])
       if cmd == 'who':
          out_onion[O_UDP_DATA].set_data(self.machine.fingerprint.get_id())

       return out_onion
Пример #5
0
 def __build_echo_message(class_object, type, id, sequence_number, arbitrary_data):
     #Build ICMP6 header
     icmp_packet = ICMP6()
     icmp_packet.set_type(type)
     icmp_packet.set_code(0)
     
     #Pack ICMP payload
     icmp_bytes = struct.pack('>H', id)
     icmp_bytes += struct.pack('>H', sequence_number)
     if (arbitrary_data is not None):
         icmp_bytes += array_tobytes(array.array('B', arbitrary_data))
     icmp_payload = Data()
     icmp_payload.set_data(icmp_bytes)
     
     #Link payload to header
     icmp_packet.contains(icmp_payload)
     
     return icmp_packet
Пример #6
0
 def from_ary(self, ary):
     return array_tobytes(ary)
Пример #7
0
 def ary2n(self, ary, i=0):
     return struct.unpack(">H", array_tobytes(ary[i:i+2]))[0]
Пример #8
0
 def get_packet(self):
     return array_tobytes(self.to_ary())
Пример #9
0
 def get_switch_mac(self):
     return array_tobytes(self.get_bytes())[28:28+6]
Пример #10
0
 def get_cluster_command_mac(self):
     return array_tobytes(self.get_bytes())[20:20+6]
Пример #11
0
 def __init__(self, aBuffer = None):
     CDPElement.__init__(self, aBuffer)
     if aBuffer:
         data = array_tobytes(self.get_bytes())[8:]
         self._generateAddressDetails(data)
Пример #12
0
 def get_ip_address(self, offset = 0, ip = None):
     if not ip:
         ip = array_tobytes(self.get_bytes())[offset : offset + IP_ADDRESS_LENGTH]
     return socket.inet_ntoa( ip )
Пример #13
0
 def get_data(self):
     return array_tobytes(self.get_bytes())[4:self.get_length()]