예제 #1
0
파일: canread.py 프로젝트: sp0ct0r/expliot
    def execute(self):
        TLog.generic(
            "Reading ({}) messages from CANbus on interface({})".format(
                self.args.count, self.args.iface))

        bus = None
        try:
            if self.args.count < 1:
                raise ValueError("Illegal count value {}".format(
                    self.args.count))
            bus = CanBus(bustype="socketcan", channel=self.args.iface)
            for cnt in range(1, self.args.count + 1):
                m = bus.recv(timeout=self.args.timeout)
                if m is None:
                    raise TimeoutError(
                        "Timed out while waiting for CAN message")
                if self.args.arbitid:
                    if self.args.arbitid == m.arbitration_id:
                        TLog.success("(msg={})(data={})".format(
                            cnt,
                            hexlify(m.data).decode()))
                else:
                    TLog.success(
                        "(msg={})(arbitration_id=0x{:x})(data={})".format(
                            cnt, m.arbitration_id,
                            hexlify(m.data).decode()))
        except:
            self.result.exception()
        finally:
            if bus:
                bus.shutdown()
예제 #2
0
 def execute(self):
     """Execute the test."""
     TLog.generic(
         "Fuzz Writing to CANbus on interface({}), arbitration id(0x{:x}), "
         "extended?({}) data({})".format(self.args.iface, self.args.arbitid,
                                         self.args.exid, self.args.data))
     bus = None
     try:
         if self.args.count < 1:
             raise ValueError("Illegal count value {}".format(
                 self.args.count))
         if self.args.wait < 0:
             raise ValueError("Illegal wait value {}".format(
                 self.args.wait))
         bus = CanBus(bustype="socketcan", channel=self.args.iface)
         for count in range(self.args.count):
             datacan = self.args.data
             while datacan.find("xx") >= 0:
                 datacan = datacan.replace("xx", "{:02x}".format(
                     randint(0,
                             0xFF)), 1)  # main fuzzing magic with randint
             message = CanMessage(arbitration_id=self.args.arbitid,
                                  extended_id=self.args.exid,
                                  data=list(bytes.fromhex(datacan)))
             bus.send(message)
             TLog.success("{} : Wrote message {}  ".format(count, datacan))
             if self.args.wait > 0:
                 sleep(self.args.wait)
     except BaseException:
         self.result.exception()
     finally:
         if bus:
             bus.shutdown()
예제 #3
0
 def execute(self):
     """Execute tht test."""
     TLog.generic(
         "Writing to CANbus on interface({}), arbitration id(0x{:x}), "
         "extended?({}) data({})".format(self.args.iface, self.args.arbitid,
                                         self.args.exid, self.args.data))
     bus = None
     try:
         if self.args.count < 1:
             raise ValueError("Illegal count value {}".format(
                 self.args.count))
         bus = CanBus(bustype="socketcan", channel=self.args.iface)
         message = CanMessage(
             arbitration_id=self.args.arbitid,
             extended_id=self.args.exid,
             data=list(bytes.fromhex(self.args.data)),
         )
         for count in range(1, self.args.count + 1):
             bus.send(message)
             TLog.success("Wrote message {}".format(count))
             if self.args.wait and count < self.args.count:
                 sleep(self.args.wait)
     except:  # noqa: E722
         self.result.exception()
     finally:
         if bus:
             bus.shutdown()
예제 #4
0
    def execute(self):
        """Execute the test."""
        TLog.generic(
            "Reading ({}) messages from CANbus on interface({})".format(
                self.args.count, self.args.iface))

        bus = None
        try:
            if self.args.count < 1:
                raise ValueError("Illegal count value {}".format(
                    self.args.count))
            bus = CanBus(bustype="socketcan", channel=self.args.iface)
            for cnt in range(1, self.args.count + 1):
                message = bus.recv(timeout=self.args.timeout)
                if message is None:
                    raise TimeoutError(
                        "Timed out while waiting for CAN message")
                if self.args.arbitid:
                    if self.args.arbitid == message.arbitration_id:
                        self.output_handler(logkwargs=LOGNORMAL,
                                            count=cnt,
                                            data=hexlify(
                                                message.data).decode())
                else:
                    self.output_handler(logkwargs=LOGNORMAL,
                                        count=cnt,
                                        arbitration_id="0x{:x}".format(
                                            message.arbitration_id),
                                        data=hexlify(message.data).decode())
        except:  # noqa: E722
            self.result.exception()
        finally:
            if bus:
                bus.shutdown()