CAN Bus – Exploring Other Worlds (MS-CAN)

In a previous post, I explored the CAN bus on Pins 6 & 14 of my OBD port to hunt down the door status message. During that exercise I figured out how the door status message works. After that I spoofed the door status message in an effort to make my Instrument Panel Cluster (IPC)… Read More »

Using SocketCAN in .NET Core

SocketCAN is a powerful tool for creating CAN Bus oriented applications on Linux. Popular choices for interfacing with SocketCAN are of course C/C++ or Python using the python-can package. As a huge fan of both SocketCAN and C#, I challenged myself to write the current Wikipedia example entirely in C#. In order to achieve this,… Read More »

AES CBC Mode – Chosen Plaintext Attack

Years ago when I set out to learn cryptography for my work as a software developer, I found it interesting that unlike many other aspects of software engineering the “Don’ts” vastly exceed the “Do’s”. To make things worse, the Don’ts of cryptography tend to lead to security vulnerabilities in our software which are in a… Read More »

CAN Bus Reverse Engineering – Finding the VIN

Last winter, I attended a presentation hosted by ASRG-D where the presenter gave his endorsement of the The Car Hacker’s Handbook. So I picked up a copy and read through it. It is an enjoyable read and an excellent compilation for vehicle penetration testing. My only complaint was that there are some minor issues with… Read More »

Why HTTPS Matters

Recently I changed my web site over to being exclusively served via HTTPS (HTTP Secure). This post details the reasons for the change over from HTTP to HTTPS. Privacy (Confidentiality) When accessing a site via HTTPS, no information (except IP Address and Port Number of the web server) sent between client and server can be… Read More »

CRC Algorithm implementation in C#

Introduction My job requires me to interface with a lot of embedded systems. Often times when communicating with those embedded systems a CRC check value will need to be calculated. A lot of the code I write is in C# and although there a few solutions out there for computing CRCs in .NET/Mono, the majority… Read More »

Asymmetric Cryptography in Practice

Encryption can be broken into either symmetric or asymmetric. Symmetric key cryptography is where the same cryptographic key is used for encryption and decryption. Asymmetric key (public-key) cryptography is where one key (the public key) is used for encryption and another key (the private key) is used for decryption. With the sort of added power… Read More »