Python 2 vs Python 3: Bytes and Strings

Many Linux distributions will or have already switched over to Python 3 as default interpreter when running the python command. At the same time many people are still used to Python 2 and might not be aware of the changes that come with that switch. Especially string and byte handling is different from Python 2. This article is about some common pitfalls and how to prevent them with Python 3.


Verifying a CD/DVD against an ISO image

One way of verifying that a CD/DVD matches an ISO image is to calculate a hash sum (e.g. SHA-256) of both the CD/DVD and the ISO image and compare them afterwards.

For the ISO image this could look like that...

$ sha256sum original.iso

...and for the optical drive:

$ sha256sum /dev/cdrom

Though you might get matching hash sums in many cases you won't. This post is about why that happens and how you can compare them the right way.


Using the Linux kernel's USB authorization support to lockdown USB

USB is not secure. The way a USB device looks, doesn't necessarily indicate its real functionality. A device which looks like a USB flash drive could act as a keyboard once it is plugged into a machine and inject arbitrary key strokes (thus possibly allowing arbitrary malicious stuff). With BadUSB or devices like the USB rubber ducky such attacks are even more easy to achieve and available to the masses.

This post is about how you can use the Linux kernel's USB authorization support to lockdown USB and check a USB device before you allow the kernel to load the driver.