Exemplo n.º 1
0
 def __init__(self, *args, **kwargs):
     # type: (Any, Any) -> None
     DefaultSession.__init__(self, *args, **kwargs)
     self.ecu = Ecu(logging=kwargs.pop("logging", True),
                    verbose=kwargs.pop("verbose", True),
                    store_supported_responses=kwargs.pop(
                        "store_supported_responses", True))  # noqa: E501
Exemplo n.º 2
0
 def __init__(self, *args, **kwargs):
     DefaultSession.__init__(self, *args, **kwargs)
     self.ecu = ECU(init_session=kwargs.pop("init_session", None),
                    init_security_level=kwargs.pop("init_security_level", None),  # noqa: E501
                    init_communication_control=kwargs.pop("init_communication_control", None),  # noqa: E501
                    logging=kwargs.pop("logging", True),
                    verbose=kwargs.pop("verbose", True),
                    store_supported_responses=kwargs.pop("store_supported_responses", True))  # noqa: E501
Exemplo n.º 3
0
Arquivo: ecu.py Projeto: vtky/scapy
 def on_packet_received(self, pkt):
     if not pkt:
         return
     if isinstance(pkt, list):
         for p in pkt:
             EcuSession.on_packet_received(self, p)
         return
     self.ecu.update(pkt)
     DefaultSession.on_packet_received(self, pkt)
Exemplo n.º 4
0
    def on_packet_received(self, pkt):
        """Hook to the Sessions API: entry point of the dissection.
        This will defragment IP if necessary, then process to
        TCP reassembly.
        """

        # Now see if we need to return a complete session
        if self.callback is not None:
            pkt_list = self.toPacketList()
            sessions = pkt_list.sessions(self.sess_function)
            for k, sess in sessions.items():
                packet_times = [packet.time for packet in sess]
                if k == "Other" or "Ethernet" in k or "ARP" in k:
                    # print('Got one!')
                    continue
                if len(packet_times) < 2:
                    continue
                if pkt.time - min(packet_times) >= self.flow_timeout:
                    self.callback(sess)
                    continue

        # First, defragment IP if necessary
        pkt = self._ip_process_packet(pkt)
        # Now handle TCP reassembly
        pkt = self._process_packet(pkt)

        if not pkt:
            return

        DefaultSession.on_packet_received(self, pkt)

        if self.callback is not None:
            if TCP in pkt:
                if pkt[TCP].flags.F or pkt[TCP].flags.R:
                    pkt_list = self.toPacketList()
                    sessions = pkt_list.sessions(self.sess_function)
                    sess_pkts, = [
                        plist for plist in sessions.values() if pkt in plist
                    ]
                    self.callback(sess_pkts)
                return
Exemplo n.º 5
0
 def on_packet_received(self, pkt):
     # type: (Optional[Packet]) -> None
     if not pkt:
         return
     self.ecu.update(pkt)
     DefaultSession.on_packet_received(self, pkt)
Exemplo n.º 6
0
 def on_packet_received(self, pkt):
     # First, defragment IP if necessary
     pkt = self._ip_process_packet(pkt)
     # Now handle NetflowV9 defragmentation
     pkt = self._process_packet(pkt)
     DefaultSession.on_packet_received(self, pkt)