Last active
May 5, 2026 08:35
-
Star
(156)
You must be signed in to star a gist -
Fork
(38)
You must be signed in to fork a gist
-
-
Save jackm/f33d6e3a023bfcc680ec3bfa7076e696 to your computer and use it in GitHub Desktop.
Revisions
-
jackm revised this gist
Nov 23, 2023 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -14,6 +14,7 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa ## Python packages * [**python-can**](https://github.com/hardbyte/python-can) - Support for multiple CAN hardware interfaces (SocketCAN, Kvaser, CAN over serial, IXXAT virtual CAN, etc.). * [python-can-j1939](https://github.com/juergenH87/python-can-j1939) - SAE J1939 support dependent on python-can package. Provides address claiming, transport protocol, fd-transport protocol, requests, diagnostic messages, etc. * [python-j1939](https://github.com/milhead2/python-j1939) - SAE J1939 support dependent on python-can package. Provides codec and filtering by PGN but not full SPN decoding. * [**Cantools**](https://github.com/eerimoq/cantools) - CAN message encoding and decoding using **DBC**, KCD, SYM, ARXML, and CDD formats. Provides a command line tool and library module. * [can4python](https://github.com/caran/can4python) - CAN signals sending and receiving using KCD format. Uses SocketCAN. -
jackm revised this gist
Jun 14, 2023 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -43,7 +43,7 @@ It is a proprietary format in that no official public documentation or specifica * [An Introduction to J1939 and DBC files](https://www.kvaser.com/developer-blog/an-introduction-j1939-and-dbc-files/) * [DBC Format](http://socialledge.com/sjsu/index.php/DBC_Format) - Very brief explanations about various sections, however does have many examples and explains multiplexed signals well. * [DBC File Format Documentation v1.0.5](http://mcu.so/Microcontroller/Automotive/dbc-file-format-documentation_compress.pdf) - Leaked DBC file format specification version 1.0.5 (2010-04-12). Uses EBNF notation for grammar syntax. #### Parsers -
jackm revised this gist
Nov 12, 2020 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -52,6 +52,7 @@ Documentation v1.0](http://read.pudn.com/downloads766/ebook/3041455/DBC_File_For * [dbc-parser](https://github.com/msalau/dbc-parser) - DBC parser written in C. Uses bison/flex/lemon. Not as robust or complete as the other parser libraries available. * [Cantools](https://github.com/eerimoq/cantools) - Python DBC parser * [canmatrix](https://github.com/ebroecker/canmatrix) - Python DBC parser * [CANdb](https://github.com/GENIVI/CANdb) - DBC parser library written in C++11 from GENIVI. Uses [cpp-peglib](https://github.com/yhirose/cpp-peglib) for grammar parsing. #### Decoders -
jackm revised this gist
Nov 12, 2020 . 1 changed file with 8 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -50,6 +50,14 @@ Documentation v1.0](http://read.pudn.com/downloads766/ebook/3041455/DBC_File_For * [Vector_DBC](https://bitbucket.org/tobylorenz/vector_dbc) - DBC parser library written in C++14. Uses bison for grammar parsing. * [dbcppp](https://github.com/xR3b0rn/dbcppp) - DBC parser library written in C++17. Uses boost::spirit for grammar parsing. * [dbc-parser](https://github.com/msalau/dbc-parser) - DBC parser written in C. Uses bison/flex/lemon. Not as robust or complete as the other parser libraries available. * [Cantools](https://github.com/eerimoq/cantools) - Python DBC parser * [canmatrix](https://github.com/ebroecker/canmatrix) - Python DBC parser #### Decoders * [Cantools](https://github.com/eerimoq/cantools) - Python scripting support for encoding and decoding CAN messages using a DBC CAN database. Implements its own DBC parser and supports multiplexed signals. Supports J1939. Does not support ISO-TP. Command line tool for real-time `candump` output decoding. * [canmatrix](https://github.com/ebroecker/canmatrix) - Python scripting support for decoding CAN messages using a DBC CAN database. Implements its own DBC parser and supports multiplexed signals. Supports J1939. * [can_decoder](https://github.com/CSS-Electronics/can_decoder) - Python scripting support for decoding CAN messages using a DBC CAN database. Uses [canmatrix](https://github.com/ebroecker/canmatrix) for parsing DBC files, but implements its own decoder. Supports J1939. ### KCD -
jackm revised this gist
Nov 10, 2020 . 1 changed file with 26 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -3,7 +3,7 @@ This document assumes the use of Linux as the chosen development platform. Items in bold are highly recommended. It is recommended to use [SocketCAN](https://en.wikipedia.org/wiki/SocketCAN) when working with CAN bus on Linux. It is supported by the Linux kernel mainline and follows the Linux interface model, allowing you to use other network tools such as Wireshark. This also allows the creation of virtual CAN interfaces where no physical hardware is required to simulate or replay CAN messages. @@ -27,11 +27,35 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa * [**can-utils**](https://packages.ubuntu.com/xenial/can-utils) - SocketCAN command line utilities (candump, cansend, canplayer, etc.). * [**SavvyCAN**](http://www.savvycan.com/) - Cross-platform Qt based GUI analysis tool. Supports SocketCAN compatible interfaces. * [CANdevStudio](https://github.com/GENIVI/CANdevStudio) - CAN simulation software using a drag-and-drop style GUI with interconnected functional blocks. Provides a platform to add new custom components, however base components are lacking in features. * [Kayak](https://github.com/dschanoeh/Kayak) - Java-based CAN traffic GUI analysis tool. Uses SocketCAN and KCD format. Project semi-abandoned and hasn't been updated since 2014 (and still using Java 7!). * [c0f](https://github.com/zombieCraig/c0f/) - CAN bus fingerprinting tool. Written in Ruby. Still very experimental. * [can-utils with J1939 support](https://github.com/kurt-vd/can-utils/tree/j1939-v6) - Fork of can-utils with a few additional tools for J1939 (untested). * [cannelloni](https://github.com/mguentner/cannelloni) - SocketCAN over Ethernet ## CAN database formats ### DBC The de facto standard for CAN databases is the DBC file format developed by [Vector Informatik GmbH](https://www.vector.com/). It is a proprietary format in that no official public documentation or specification is available, however it has been heavily reverse engineered and mostly all specifications are now known sans a few very obscure and seldom used features. * [CAN DBC File Explained - A Simple Intro](https://www.csselectronics.com/screen/page/can-dbc-file-database-intro/language/en) * [An Introduction to J1939 and DBC files](https://www.kvaser.com/developer-blog/an-introduction-j1939-and-dbc-files/) * [DBC Format](http://socialledge.com/sjsu/index.php/DBC_Format) - Very brief explanations about various sections, however does have many examples and explains multiplexed signals well. * [DBC File Format Documentation v1.0](http://read.pudn.com/downloads766/ebook/3041455/DBC_File_Format_Documentation.pdf) - Leaked DBC file format specification version 1.0 (2007-02-09). Uses EBNF notation for grammar syntax. **WARNING** this is an old specification and some aspects of it are incorrect for the currently used format version - for example it says that for the signal byte order field a `0` indicates little endian and a `1` indicates big endian but this is _wrong_ and actually the opposite of what it actually is! #### Parsers * [Vector_DBC](https://bitbucket.org/tobylorenz/vector_dbc) - DBC parser library written in C++14. Uses bison for grammar parsing. * [dbcppp](https://github.com/xR3b0rn/dbcppp) - DBC parser library written in C++17. Uses boost::spirit for grammar parsing. * [dbc-parser](https://github.com/msalau/dbc-parser) - DBC parser written in C. Uses bison/flex/lemon. Not as robust or complete as the other parser libraries available. ### KCD Open source CAN database format for describing CAN signals and relationships. Essentially contains the same information found in the DBC file format but written in XML. Originally created for the Kayak CAN analysis tool. * [KCD file format](https://github.com/julietkilo/kcd) -
jackm revised this gist
Nov 10, 2020 . 1 changed file with 4 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -7,6 +7,10 @@ It is recommended to use the [SocketCAN](https://en.wikipedia.org/wiki/SocketCAN It is supported by the Linux kernel mainline and follows the Linux interface model, allowing you to use other network tools such as Wireshark. This also allows the creation of virtual CAN interfaces where no physical hardware is required to simulate or replay CAN messages. * [SocketCAN Linux kernel support](https://www.kernel.org/doc/html/latest/networking/can.html) - Linux >= 2.6 * [J1939 Linux kernel support](https://www.kernel.org/doc/html/latest/networking/j1939.html) - Linux >= 5.4 * [CAN support in Linux](https://elinux.org/CAN_Bus#CAN_Support_in_Linux) - Linux kernel support for CAN hardware interfaces. ## Python packages * [**python-can**](https://github.com/hardbyte/python-can) - Support for multiple CAN hardware interfaces (SocketCAN, Kvaser, CAN over serial, IXXAT virtual CAN, etc.). @@ -20,7 +24,6 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa ## Other packages * [**can-utils**](https://packages.ubuntu.com/xenial/can-utils) - SocketCAN command line utilities (candump, cansend, canplayer, etc.). * [**SavvyCAN**](http://www.savvycan.com/) - Cross-platform Qt based GUI analysis tool. Supports SocketCAN compatible interfaces. * [CANdevStudio](https://github.com/GENIVI/CANdevStudio) - CAN simulation software using a drag-and-drop style GUI with interconnected functional blocks. Provides a platform to add new custom components, however base components are lacking in features. -
jackm revised this gist
Nov 10, 2020 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -11,9 +11,9 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa * [**python-can**](https://github.com/hardbyte/python-can) - Support for multiple CAN hardware interfaces (SocketCAN, Kvaser, CAN over serial, IXXAT virtual CAN, etc.). * [python-j1939](https://github.com/milhead2/python-j1939) - SAE J1939 support dependent on python-can package. Provides codec and filtering by PGN but not full SPN decoding. * [**Cantools**](https://github.com/eerimoq/cantools) - CAN message encoding and decoding using **DBC**, KCD, SYM, ARXML, and CDD formats. Provides a command line tool and library module. * [can4python](https://github.com/caran/can4python) - CAN signals sending and receiving using KCD format. Uses SocketCAN. * [**Canmatrix**](https://github.com/ebroecker/canmatrix) - Read and write [several CAN database formats](https://canmatrix.readthedocs.io/en/latest/formats.html). * [CANBabel](https://github.com/julietkilo/CANBabel) - Conversion tool for CAN database files. Only supports reading/writing KCD and reading DBC formats. * [Caring Caribou](https://github.com/CaringCaribou/caringcaribou) - Vehicle CAN bus security exploration tool (think of it as Nmap for automotive hacking). * [CANalyzat0r](https://github.com/schutzwerk/CANalyzat0r) - CAN analysis tool written in Python3. Modular, extensible, SocketCAN support. -
jackm revised this gist
Nov 6, 2020 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -11,7 +11,6 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa * [**python-can**](https://github.com/hardbyte/python-can) - Support for multiple CAN hardware interfaces (SocketCAN, Kvaser, CAN over serial, IXXAT virtual CAN, etc.). * [python-j1939](https://github.com/milhead2/python-j1939) - SAE J1939 support dependent on python-can package. Provides codec and filtering by PGN but not full SPN decoding. * [Cantools](https://github.com/eerimoq/cantools) - CAN message encoding and decoding using DBC, KCD or SYM formats. * [can4python](https://github.com/caran/can4python) - CAN signals sending and receiving using KCD format. Uses SocketCAN. * [Canmatrix](https://github.com/ebroecker/canmatrix) - Read and write several CAN database formats. @@ -25,6 +24,7 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa * [**can-utils**](https://packages.ubuntu.com/xenial/can-utils) - SocketCAN command line utilities (candump, cansend, canplayer, etc.). * [**SavvyCAN**](http://www.savvycan.com/) - Cross-platform Qt based GUI analysis tool. Supports SocketCAN compatible interfaces. * [CANdevStudio](https://github.com/GENIVI/CANdevStudio) - CAN simulation software using a drag-and-drop style GUI with interconnected functional blocks. Provides a platform to add new custom components, however base components are lacking in features. * [kcd](https://github.com/julietkilo/kcd) - Open CAN database format for describing CAN signals and relationships. Essentially the DBC file format in XML. * [Kayak](https://github.com/dschanoeh/Kayak) - Java-based CAN traffic GUI analysis tool. Uses SocketCAN and KCD format. Project semi-abandoned and hasn't been updated since 2014 (and still using Java 7!). * [c0f](https://github.com/zombieCraig/c0f/) - CAN bus fingerprinting tool. Written in Ruby. Still very experimental. * [can-utils with J1939 support](https://github.com/kurt-vd/can-utils/tree/j1939-v6) - Fork of can-utils with a few additional tools for J1939 (untested). -
jackm revised this gist
Nov 6, 2020 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -28,6 +28,7 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa * [Kayak](https://github.com/dschanoeh/Kayak) - Java-based CAN traffic GUI analysis tool. Uses SocketCAN and KCD format. Project semi-abandoned and hasn't been updated since 2014 (and still using Java 7!). * [c0f](https://github.com/zombieCraig/c0f/) - CAN bus fingerprinting tool. Written in Ruby. Still very experimental. * [can-utils with J1939 support](https://github.com/kurt-vd/can-utils/tree/j1939-v6) - Fork of can-utils with a few additional tools for J1939 (untested). * [cannelloni](https://github.com/mguentner/cannelloni) - SocketCAN over Ethernet * [Vector_DBC](https://bitbucket.org/tobylorenz/vector_dbc) - DBC parser library written in C++14. Uses bison for grammar parsing. * [dbcppp](https://github.com/xR3b0rn/dbcppp) - DBC parser library written in C++17. Uses boost::spirit for grammar parsing. * [dbc-parser](https://github.com/msalau/dbc-parser) - DBC parser written in C. Uses bison/flex/lemon. Not as robust or complete as the other parser libraries available. -
jackm revised this gist
Nov 6, 2020 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -30,3 +30,4 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa * [can-utils with J1939 support](https://github.com/kurt-vd/can-utils/tree/j1939-v6) - Fork of can-utils with a few additional tools for J1939 (untested). * [Vector_DBC](https://bitbucket.org/tobylorenz/vector_dbc) - DBC parser library written in C++14. Uses bison for grammar parsing. * [dbcppp](https://github.com/xR3b0rn/dbcppp) - DBC parser library written in C++17. Uses boost::spirit for grammar parsing. * [dbc-parser](https://github.com/msalau/dbc-parser) - DBC parser written in C. Uses bison/flex/lemon. Not as robust or complete as the other parser libraries available. -
jackm revised this gist
Nov 6, 2020 . 1 changed file with 2 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -28,4 +28,5 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa * [Kayak](https://github.com/dschanoeh/Kayak) - Java-based CAN traffic GUI analysis tool. Uses SocketCAN and KCD format. Project semi-abandoned and hasn't been updated since 2014 (and still using Java 7!). * [c0f](https://github.com/zombieCraig/c0f/) - CAN bus fingerprinting tool. Written in Ruby. Still very experimental. * [can-utils with J1939 support](https://github.com/kurt-vd/can-utils/tree/j1939-v6) - Fork of can-utils with a few additional tools for J1939 (untested). * [Vector_DBC](https://bitbucket.org/tobylorenz/vector_dbc) - DBC parser library written in C++14. Uses bison for grammar parsing. * [dbcppp](https://github.com/xR3b0rn/dbcppp) - DBC parser library written in C++17. Uses boost::spirit for grammar parsing. -
jackm revised this gist
Nov 5, 2020 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -28,3 +28,4 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa * [Kayak](https://github.com/dschanoeh/Kayak) - Java-based CAN traffic GUI analysis tool. Uses SocketCAN and KCD format. Project semi-abandoned and hasn't been updated since 2014 (and still using Java 7!). * [c0f](https://github.com/zombieCraig/c0f/) - CAN bus fingerprinting tool. Written in Ruby. Still very experimental. * [can-utils with J1939 support](https://github.com/kurt-vd/can-utils/tree/j1939-v6) - Fork of can-utils with a few additional tools for J1939 (untested). * [Vector_DBC](https://bitbucket.org/tobylorenz/vector_dbc) - DBC parser written in C++14 -
jackm revised this gist
Nov 4, 2020 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -24,6 +24,7 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa * [CAN support in Linux](https://elinux.org/CAN_Bus#CAN_Support_in_Linux) - Linux kernel support for CAN hardware interfaces. * [**can-utils**](https://packages.ubuntu.com/xenial/can-utils) - SocketCAN command line utilities (candump, cansend, canplayer, etc.). * [**SavvyCAN**](http://www.savvycan.com/) - Cross-platform Qt based GUI analysis tool. Supports SocketCAN compatible interfaces. * [CANdevStudio](https://github.com/GENIVI/CANdevStudio) - CAN simulation software using a drag-and-drop style GUI with interconnected functional blocks. Provides a platform to add new custom components, however base components are lacking in features. * [Kayak](https://github.com/dschanoeh/Kayak) - Java-based CAN traffic GUI analysis tool. Uses SocketCAN and KCD format. Project semi-abandoned and hasn't been updated since 2014 (and still using Java 7!). * [c0f](https://github.com/zombieCraig/c0f/) - CAN bus fingerprinting tool. Written in Ruby. Still very experimental. * [can-utils with J1939 support](https://github.com/kurt-vd/can-utils/tree/j1939-v6) - Fork of can-utils with a few additional tools for J1939 (untested). -
jackm revised this gist
Feb 13, 2019 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -23,6 +23,7 @@ This also allows the creation of virtual CAN interfaces where no physical hardwa * [CAN support in Linux](https://elinux.org/CAN_Bus#CAN_Support_in_Linux) - Linux kernel support for CAN hardware interfaces. * [**can-utils**](https://packages.ubuntu.com/xenial/can-utils) - SocketCAN command line utilities (candump, cansend, canplayer, etc.). * [**SavvyCAN**](http://www.savvycan.com/) - Cross-platform Qt based GUI analysis tool. Supports SocketCAN compatible interfaces. * [Kayak](https://github.com/dschanoeh/Kayak) - Java-based CAN traffic GUI analysis tool. Uses SocketCAN and KCD format. Project semi-abandoned and hasn't been updated since 2014 (and still using Java 7!). * [c0f](https://github.com/zombieCraig/c0f/) - CAN bus fingerprinting tool. Written in Ruby. Still very experimental. * [can-utils with J1939 support](https://github.com/kurt-vd/can-utils/tree/j1939-v6) - Fork of can-utils with a few additional tools for J1939 (untested). -
jackm created this gist
Oct 9, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,28 @@ # Collection of CAN bus packages and tools This document assumes the use of Linux as the chosen development platform. Items in bold are highly recommended. It is recommended to use the [SocketCAN](https://en.wikipedia.org/wiki/SocketCAN) interface when working with CAN bus on Linux. It is supported by the Linux kernel mainline and follows the Linux interface model, allowing you to use other network tools such as Wireshark. This also allows the creation of virtual CAN interfaces where no physical hardware is required to simulate or replay CAN messages. ## Python packages * [**python-can**](https://github.com/hardbyte/python-can) - Support for multiple CAN hardware interfaces (SocketCAN, Kvaser, CAN over serial, IXXAT virtual CAN, etc.). * [python-j1939](https://github.com/milhead2/python-j1939) - SAE J1939 support dependent on python-can package. Provides codec and filtering by PGN but not full SPN decoding. * [kcd](https://github.com/julietkilo/kcd) - Open CAN database format for describing CAN signals and relationships. * [Cantools](https://github.com/eerimoq/cantools) - CAN message encoding and decoding using DBC, KCD or SYM formats. * [can4python](https://github.com/caran/can4python) - CAN signals sending and receiving using KCD format. Uses SocketCAN. * [Canmatrix](https://github.com/ebroecker/canmatrix) - Read and write several CAN database formats. * [CANBabel](https://github.com/julietkilo/CANBabel) - Conversion tool for CAN database files. Only supports reading/writing KCD and reading DBC formats. * [Caring Caribou](https://github.com/CaringCaribou/caringcaribou) - Vehicle CAN bus security exploration tool (think of it as Nmap for automotive hacking). * [CANalyzat0r](https://github.com/schutzwerk/CANalyzat0r) - CAN analysis tool written in Python3. Modular, extensible, SocketCAN support. ## Other packages * [CAN support in Linux](https://elinux.org/CAN_Bus#CAN_Support_in_Linux) - Linux kernel support for CAN hardware interfaces. * [**can-utils**](https://packages.ubuntu.com/xenial/can-utils) - SocketCAN command line utilities (candump, cansend, canplayer, etc.). * [Kayak](https://github.com/dschanoeh/Kayak) - Java-based CAN traffic GUI analysis tool. Uses SocketCAN and KCD format. Project semi-abandoned and hasn't been updated since 2014 (and still using Java 7!). * [c0f](https://github.com/zombieCraig/c0f/) - CAN bus fingerprinting tool. Written in Ruby. Still very experimental. * [can-utils with J1939 support](https://github.com/kurt-vd/can-utils/tree/j1939-v6) - Fork of can-utils with a few additional tools for J1939 (untested).