コード例 #1
0
def send_obd(data):
    conn2 = IsoTPSocketConnection('can0',
                                  rxid=0x7E8,
                                  txid=0x700,
                                  params=params)
    conn2.tpsock.set_opts(txpad=0x55, tx_stmin=2500000)
    conn2.open()
    conn2.send(data)
    conn2.wait_frame()
    conn2.wait_frame()
    conn2.close()
コード例 #2
0
def connection_setup(interface, txid, rxid, interface_path=None):

    params = {"tx_padding": 0x55}

    if interface == "SocketCAN":
        conn = IsoTPSocketConnection("can0",
                                     rxid=rxid,
                                     txid=txid,
                                     params=params)
        conn.tpsock.set_opts(txpad=0x55, tx_stmin=2500000)
    elif interface == "J2534":
        if interface_path:
            detailedLogger.debug(
                "initiating J2534 with user selected interface: " +
                interface_path)
            conn = J2534Connection(windll=interface_path, rxid=rxid, txid=txid)
        else:
            detailedLogger.debug(
                "Initiating J2534 with default dll from constants")
            conn = J2534Connection(windll=constants.j2534DLL,
                                   rxid=rxid,
                                   txid=txid)
    else:
        conn = FakeConnection(testdata=constants.testdata)

    return conn
コード例 #3
0
def connection_setup(interface, txid, rxid, interface_path=None):
    params = {"tx_padding": 0x55}

    if interface.startswith("SocketCAN"):
        if interface_path:
            can_interface = interface_path
        else:
            can_interface = interface.split("_")[1]
        conn = IsoTPSocketConnection(can_interface,
                                     rxid=rxid,
                                     txid=txid,
                                     params=params)
        conn.tpsock.set_opts(txpad=0x55, tx_stmin=250000)
    elif interface == "J2534":
        if interface_path:
            conn = J2534Connection(windll=interface_path, rxid=rxid, txid=txid)
        else:
            conn = J2534Connection(windll=constants.j2534DLL,
                                   rxid=rxid,
                                   txid=txid)

    elif interface.startswith("BLEISOTP"):

        from .ble_isotp_connection import BLEISOTPConnection

        if interface_path:
            device_address = interface_path
        else:
            device_address = interface.split("_")[1]
        # tx STMin for this interface is in us.
        interface_name = (interface_path
                          if interface_path is not None else "BLE_TO_ISOTP20")
        conn = BLEISOTPConnection(
            ble_service_uuid=constants.BLE_SERVICE_IDENTIFIER,
            ble_notify_uuid="0000abf2-0000-1000-8000-00805f9b34fb",
            ble_write_uuid="0000abf1-0000-1000-8000-00805f9b34fb",
            rxid=rxid,
            txid=txid,
            interface_name=interface_name,
            device_address=device_address,
            tx_stmin=350,
        )
    elif interface.startswith("USBISOTP"):
        from .usb_isotp_connection import USBISOTPConnection

        if interface_path:
            device_address = interface_path
        else:
            device_address = interface.split("_")[1]

        conn = USBISOTPConnection(interface_name=device_address,
                                  rxid=rxid,
                                  txid=txid,
                                  tx_stmin=350)
    else:
        conn = FakeConnection(testdata=constants.testdata)

    return conn
コード例 #4
0
def send_raw(data):
    global params

    conn2 = IsoTPSocketConnection('can0',
                                  rxid=0x7E8,
                                  txid=0x7E0,
                                  params=params)
    conn2.tpsock.set_opts(txpad=0x55, tx_stmin=2500000)

    conn2.open()
    conn2.send(data)
    results = conn2.wait_frame()
    conn2.close()

    if results:
        print(str(results))
        return results
    else:
        return data + b'0x00'
コード例 #5
0
def connection_setup(interface, txid, rxid):

    params = {"tx_padding": 0x55}

    if interface == "SocketCAN":
        conn = IsoTPSocketConnection("can0",
                                     rxid=rxid,
                                     txid=txid,
                                     params=params)
        conn.tpsock.set_opts(txpad=0x55, tx_stmin=2500000)
    elif interface == "J2534":
        conn = J2534Connection(windll=constants.j2534DLL, rxid=rxid, txid=txid)
    else:
        conn = FakeConnection(testdata=constants.testdata)

    return conn
コード例 #6
0
ファイル: test.py プロジェクト: HZC-AND/uds_on_can
import SomeLib.SomeCar.SomeModel as MyCar

import udsoncan
from udsoncan.connections import IsoTPSocketConnection
from udsoncan.client import Client
from udsoncan.exceptions import *
from udsoncan.services import *

udsoncan.setup_logging()

conn = IsoTPSocketConnection('can0', rxid=0x123, txid=0x456)
with Client(conn, request_timeout=2, config=MyCar.config) as client:
    try:
        client.change_session(
            DiagnosticSessionControl.Session.extendedDiagnosticSession
        )  # integer with value of 3
        client.unlock_security_access(
            MyCar.debug_level
        )  # Fictive security level. Integer coming from fictive lib, let's say its value is 5
        client.write_data_by_identifier(
            udsoncan.DataIdentifier.VIN, 'ABC123456789'
        )  # Standard ID for VIN is 0xF190. Codec is set in the client configuration
        print('Vehicle Identification Number successfully changed.')
        client.ecu_reset(ECUReset.ResetType.hardReset)  # HardReset = 0x01
    except NegativeResponseException as e:
        print(
            'Server refused our request for service %s with code "%s" (0x%02x)'
            % (e.response.service.get_name(), e.response.code_name,
               e.response.code))
#    except InvalidResponseException , UnexpectedResponseException as e:
    except InvalidResponseException as e:
コード例 #7
0
    conn2 = IsoTPSocketConnection('can0',
                                  rxid=0x7E8,
                                  txid=0x700,
                                  params=params)
    conn2.tpsock.set_opts(txpad=0x55, tx_stmin=2500000)
    conn2.open()
    conn2.send(data)
    conn2.wait_frame()
    conn2.wait_frame()
    conn2.close()


print("Sending 0x4 Clear Emissions DTCs over OBD-2")
send_obd(bytes([0x4]))

conn = IsoTPSocketConnection('can0', rxid=0x7E8, txid=0x7E0, params=params)
conn.tpsock.set_opts(txpad=0x55, tx_stmin=2500000)
with Client(conn, request_timeout=5,
            config=configs.default_client_config) as client:
    try:
        client.config['security_algo'] = volkswagen_security_algo

        client.config['data_identifiers'] = {}
        for data_record in data_records:
            if (data_record.parse_type == 0):
                client.config['data_identifiers'][
                    data_record.address] = GenericStringCodec
            else:
                client.config['data_identifiers'][
                    data_record.address] = GenericBytesCodec
コード例 #8
0
import udsoncan
from udsoncan.connections import IsoTPSocketConnection
from udsoncan.client import Client
from udsoncan.exceptions import *
from udsoncan.services import *

udsoncan.setup_logging()

conn = IsoTPSocketConnection('can0', rxid=0x79D, txid=0x79D)
with Client(conn, request_timeout=2) as client:
    try:
        client.change_session(
            DiagnosticSessionControl.Session.extendedDiagnosticSession
        )  # integer with value of 3
        # client.unlock_security_access(MyCar.debug_level)   # Fictive security level. Integer coming from fictive lib, let's say its value is 5
        client.write_data_by_identifier(
            udsoncan.DataIdentifier.VIN, 'ABC123456789'
        )  # Standard ID for VIN is 0xF190. Codec is set in the client configuration
        print('Vehicle Identification Number successfully changed.')
        client.ecu_reset(ECUReset.ResetType.hardReset)  # HardReset = 0x01
    except NegativeResponseException as e:
        print(
            'Server refused our request for service %s with code "%s" (0x%02x)'
            % (e.response.service.get_name(), e.response.code_name,
               e.response.code))
#    except InvalidResponseException , UnexpectedResponseException as e:
    except InvalidResponseException as e:
        print('Server sent an invalid payload : %s' %
              e.response.original_payload)
    except UnexpectedResponseException as e:
        print('Server sent an invalid payload : %s' %
コード例 #9
0
        startTime = time.time()
        payload = self.client.wait_frame(timeout=self.timeout)
        endTime = time.time()

        progressTime = endTime - startTime

        response = Response.from_payload(payload)

        return response, progressTime


if __name__ == '__main__':

    conn = IsoTPSocketConnection('can0',
                                 rxid=0x7e8,
                                 txid=0x7e0,
                                 tpsock=isotp_socket)

    with Client(conn, request_timeout=2) as client:
        try:
            acc = CrackSecurityAccess(conn)
            acc.start()

        except NegativeResponseException as e:
            print(
                'Server refused our request for service %s with code "%s" (0x%02x)'
                % (e.response.service.get_name(), e.response.code_name,
                   e.response.code))
        except UnexpectedResponseException as e:
            print('Server sent an invalid payload : %s' %
                  e.response.original_payload)
コード例 #10
0
from udsoncan.client import Client
from udsoncan.exceptions import *
from udsoncan.services import *
from udsoncan import Request, Response

import random, datetime

#udsoncan.setup_logging()

aqua_patch.PatchMessageFormat()

if __name__ == '__main__':
    isotp_socket = isotp.socket()
    isotp_socket.set_opts(txpad=CarConfig.TXPADSIZE, rxpad=CarConfig.RXPADSIZE)
    conn = IsoTPSocketConnection('can0',
                                 rxid=CarConfig.RXID,
                                 txid=CarConfig.TXID,
                                 tpsock=isotp_socket)

    with Client(conn, request_timeout=2,
                config=CarConfig.car_client_config) as client:
        try:
            client.change_session(
                DiagnosticSessionControl.Session.defaultSession)
            client.unlock_security_access(CarConfig.SECURITY_LEVEL)
            client.change_session(
                DiagnosticSessionControl.Session.programmingSession)

        except NegativeResponseException as e:
            print(
                'Server refused our request for service %s with code "%s" (0x%02x)'
                % (e.response.service.get_name(), e.response.code_name,
コード例 #11
0
from udsoncan.exceptions import *
from udsoncan.services import *
from udsoncan import Request, Response

import random, datetime

#udsoncan.setup_logging()

aqua_patch.PatchMessageFormat()



if __name__ == '__main__':
    isotp_socket = isotp.socket()
    isotp_socket.set_opts(txpad=CarConfig.TXPADSIZE, rxpad=CarConfig.RXPADSIZE)
    conn = IsoTPSocketConnection('can0', rxid=CarConfig.RXID, txid=CarConfig.TXID, tpsock=isotp_socket)

    with Client(conn, request_timeout=2, config=CarConfig.car_client_config) as client:
        try:
            client.change_session(DiagnosticSessionControl.Session.defaultSession)
            client.unlock_security_access(CarConfig.SECURITY_LEVEL)

            # suppress error
            for i in range(0,3):
                conn.send(b'\x0a\x27')
                time.sleep(0.5)

            client.change_session(DiagnosticSessionControl.Session.programmingSession)   

        except NegativeResponseException as e:
            print('Server refused our request for service %s with code "%s" (0x%02x)' % (e.response.service.get_name(), e.response.code_name, e.response.code))