Pas de helderheid van je webcam aan

Onlangs merkte ik dat de webcam van mijn nieuwe laptop in sommige omstandigheden een te donker beeld geeft. Gelukkig is er onder Linux een programma waarmee je dat eenvoudig kunt aanpassen: Guvcview. Je kunt niet alleen de helderheid, maar ook het contrast, de verzadiging, tint, witbalanstemperatuur, scherpte, achtergrondverlichtingscompensatie en nog veel meer instellen. Nadat je enkele schuifknopjes hebt versleept, vind je zeker een geschikt camerabeeld.

Met guvcview stel je je webcam in.

Welke BIOS-versie heb je?

Als je wilt weten welke BIOS-versie je computer heeft, kun je herstarten en tijdens het opstarten van je computer proberen te kijken welk versienummer er verschijnt. Maar ook als je al in Linux bent aangemeld, kun je de BIOS-versie opvragen. Dat is namelijk een van de gegevens die je in de SMBIOS-tabellen vindt.

Onder Linux krijg je toegang tot de SMBIOS-tabellen met het programma dmidecode (zie ook Linux Magazine 2 jaargang 19). Oorspronkelijk stond het SMBIOS immers bekend als DMIBIOS. Je BIOS-versie vraag je dan op met:

sudo dmidecode -s bios-version

Maar je kunt deze informatie ook opvragen zonder dmidecode te moeten installeren. Linux koppelt allerlei bestanden onder /sys/class/dmi/id aan met informatie uit de SMBIOS-tabellen. De BIOS-versie vind je op deze manier:

cat /sys/class/dmi/id/bios_version

Hiervoor hoef je zelfs geen rootrechten te hebben. Ook de datum van je BIOS-versie kun je zo opvragen:

cat /sys/class/dmi/id/bios_date

Vervang problematische tekens in bestandsnamen

Speciale tekencoderingen kunnen tot bestandsnamen leiden die onleesbaar zijn geworden. Vooral als je bestanden van andere besturingssystemen binnen krijgt, kan dit wel eens tot problemen leiden. Het programma detox pakt dit probleem drastisch aan: het vervangt alle tekens die niet in de 7-bits ASCII-verzameling vallen door alternatieven die erop lijken.

Maar daarnaast doet het meer. Zo weten we allemaal dat spaties in een bestandsnaam tot problemen kunnen leiden. En ook haakjes, een @ of een minteken in het begin van een bestandsnaam kunnen lastige situaties veroorzaken. Detox vervangt ze allemaal door een underscore of een minteken of verwijdert ze. Het resultaat is een bestandsnaam die je door alle programma’s veilig kunt laten verwerken.

Omdat bestandsnamen veranderen nogal ingrijpend kan zijn, voer je detox het best eerst als testrun uit met de optie -n. Meestal gebruik je ook de optie -r om directory’s recursief te verwerken:

detox -nr DIRECTORY

Bekijk de uitvoer: detox toont welke bestandsnamen het zou aanpassen en wat het resultaat zou zijn. Als je het eens bent met de veranderingen, voer ze dan effectief uit:

detox -vr DIRECTORY

De optie -v geeft je nog altijd de informatie over de veranderingen in de bestandsnamen. Deze optie wordt automatisch geactiveerd samen met -n, maar is ook buiten de testrun handig.

https://github.com/dharple/detox

Toon afbeeldingen op de commandline met lsix

Terminals vertonen doorgaans tekst, maar er bestaat ook een formaat om afbeeldingen op de commandline te tonen: sixel, wat staat voor “six pixels”. Een sixel is een patroon van zes pixels hoog en één breed, wat dus twee tot de zesde macht of 64 mogelijke patronen geeft. Elk van die patronen wordt gecodeerd als een ASCII-teken. Op die manier kun je op de commandline afbeeldingen tonen door ze op te splitsen in streepjes van zes pixels hoog en één breed.

Een van de programma’s die daarvan gebruikmaken is lsix, dat voorvertoningen van afbeeldingen in de terminal kan tonen. Het is een shellscript dat gebruikmaakt van de sixelondersteuning van ImageMagick. Installeer dus eerst die laatste en dan lsix zelf:

sudo apt install imagemagick
wget https://raw.githubusercontent.com/hackerb9/lsix/master/lsix
chmod +x lsix
sudo cp lsix /usr/local/bin

Overigens ondersteunen niet alle terminalemulators sixel. De goede oude xterm wel, maar dan moet je het programma wel met VT340-emulatie opstarten:

xterm -ti vt340

Daarna toont lsix een voorvertoning van alle afbeeldingen in de huidige directory.

https://github.com/hackerb9/lsix

Met lsix kun je voorvertoningen van afbeeldingen in een terminalvenster bekijken.

Digitale handtekeningen met ssh

Om bestanden digitaal te ondertekenen en de handtekening te verifiëren, wordt vaak gebruikgemaakt van GnuPG of OpenSSL. Maar bijna iedere gebruiker van Linux of een ander Unixachtig besturingssysteem heeft al een sleutelpaar voor ssh. Zou het dan niet interessant zijn om die te gebruiken voor digitale handtekeningen? Inderdaad, en OpenSSH ondersteunt dat sinds versie 8.1 (oktober 2019).

Stel dat je een bestand foobar-2.1.zip wilt verspreiden en wilt kunnen aantonen dat dit van jou komt. Dan onderteken je dit met je ssh-sleutel:

$ ssh-keygen -Y sign -f ~/.ssh/id_ed25519 -n file foobar-2.1.zip

Hierin vul je na -f het pad naar je geheime sleutel in en geef je met -n file aan dat je de namespace file gebruikt.

Daarna bevat het bestand foobar-2.1.zip.sig een digitale handtekening, die er zo uitziet:

—–BEGIN SSH SIGNATURE—–
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgsVO4iRVpiUd3wXy1o+xfjR/Blr
vx+4IOW4yBuPrtfm8AAAAEZmlsZQAAAAAAAAAGc2hhNTEyAAAAUwAAAAtzc2gtZWQyNTUx
OQAAAECUXg7i76yV83Z1RPVKszVRzWYeacX0g7/YJUbGp+I0auOvG7EwT8AYgbi/C4Evt5
tDv0zNlB6pRyjBbfPDvhsM
—–END SSH SIGNATURE—–

Dit zip-bestand publiceer je nu samen met het bijbehorende sig-bestand op je website. Anderen kunnen dan de handtekening verifiëren als ze je publieke sleutel weten. Daarvoor moeten ze eerst een bestand allowed_signers aanmaken met je publieke sleutel:

$ echo “koen@vervloesem.eu ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILFTuIkVaYlHd8F8taPsX40fwZa78fuCDluMgbj67X5v” >> ~/.ssh/allowed_signers

Als ze daarna het zip-bestand en de bijbehorende handtekening downloaden, kunnen ze die als volgt verifiëren:

$ ssh-keygen -Y verify -f ~/.ssh/allowed_signers -I koen@vervloesem.eu -n file -s foobar-2.1.zip.sig < foobar-2.1.zip
Good “file” signature for koen@vervloesem.eu with ED25519 key SHA256:YW8CodSB4GV6Bi4rBaZrwkm6+pgaC5FDm0IWPILcSCg

Verwijs hier na de optie -f naar het juiste bestand allowed_signers en na de optie -I naar de identifier die je in het bestand aan de publieke sleutel hebt toegekend. Met -n file gebruik je weer de namespace file.

Stel dat iemand nu het zip-bestand op de website heeft vervangen door een ander bestand, dan krijgt iemand die het bestand verifieert een foutmelding omdat de handtekening niet meer klopt:

Signature verification failed: incorrect signature
Could not verify signature.

SSH-sleutels van GitHub

Elke toepassing die van sleutelparen gebruikmaakt, heeft één belangrijke vraag: hoe maak je duidelijk wat jouw publieke sleutel is? Als je de vorige tip wilt uitvoeren om bestanden met je ssh-sleutel te ondertekenen, zul je je publieke sleutel aan anderen moeten verspreiden die je handtekeningen willen verifiëren.

Voor software die je via GitHub verspreidt, is dat redelijk eenvoudig. Elke publieke ssh-sleutel die je in de instellingen van je GitHub-account hebt toegevoegd, is door iedereen te downloaden op het adres https://github.com/gebruikersnaam.keys. Ook GitLab gebruikt hetzelfde patroon voor de url: de publieke ssh-sleutel van een gebruiker vind je op https://gitlab.com/gebruikersnaam.keys. Verwijs dus naar die url en vraag aan wie je handtekening wil verifiëren om de sleutel in hun bestand allowed_signers te plaatsen.