ID.nl logo
Zo hack je de software in je hardware
© Reshift Digital
Huis

Zo hack je de software in je hardware

Bij hacken denken we vaak aan software die op een computer draait, maar er draait ook heel wat software in allerlei andere elektronische apparaten, zoals ESP8266- of ESP32-microcontrollerbordjes, een bluetooth-beacon of een Apple AirTag. Hoe haal je daar gevoelige informatie uit of pas je de werking van het apparaat aan?

Hardware-hacken is een heel breed domein en in deze ene masterclass kunnen we daar helemaal geen recht aan doen. Maar we tonen je enkele voorbeelden van wat er zoal mogelijk is. We hopen dat je daardoor geïnspireerd raakt om zelf op onderzoek uit te gaan.

Laten we beginnen met iets eenvoudigs. In PCM hebben we al vaak gewerkt met ESP8266- en ESP32-microcontrollerbordjes. Je schreef je code daarvoor, compileerde die en schreef die dan naar het ontwikkelbordje. Dat deed je bijvoorbeeld met:

- Arduino IDE;

- Arduino IoT Cloud;

- PlatformIO;

- ESPHome;

- esptool.

Wifi-wachtwoorden ontfutselen

Met een ESP8266 of ESP32 wil je bijna altijd met een wifi-netwerk verbinden. In je code geef je dus de SSID en het bijbehorende wachtwoord op van het gewenste wifi-netwerk. Dat wordt door esptool naar het flashgeheugen van je microcontroller geschreven. Vaak is dit gewoon onversleuteld, zodat iedereen met toegang tot de microcontroller je wifi-wachtwoord kan uitlezen. De ESP32 ondersteunt wel flash-encryptie met een sleutel die zich in de registers van de microcontroller bevindt. Maar dit wordt nog niet al te vaak gebruikt.

Je mag er dus van uitgaan dat heel wat ESP8266- en ESP32-bordjes, ook degene die jij in je huis hebt ingezet, je wifi-wachtwoord onversleuteld hebben opgeslagen. Iemand die een van je ontwikkelbordjes steelt, kan hier dus je wifi-wachtwoord uit ontfutselen en zo in je netwerk inbreken. Dit is ook iets om mee rekening te houden als je een defect ontwikkelbordje weggooit: hier kunnen nog allerlei gevoelige gegevens uitgehaald worden. Als je het flashgeheugen niet kunt overschrijven of vernietigen, dan zit er niet anders op dan het bordje bij je te houden tot je je wifi-wachtwoord hebt veranderd.

Flashgeheugen uitlezen

Het flashgeheugen van een ESP8266 of ESP32 uitlezen is even eenvoudig als er firmware naar schrijven. Dat doe je met het programma esptool. Als je de programmeertaal Python hebt geïnstalleerd en de bijbehorende pakketbeheerder pip, dan installeer je esptool eenvoudig met de opdracht:

pip3 install esptool

Sluit nu je ESP8266- of ESP32-ontwikkelbordje via een usb-kabel op je computer aan en identificeer de chip met:

esptool.py flash_id

Je krijgt dan iets te zien als:

esptool.py v3.1

Found 1 serial ports

Serial port /dev/ttyUSB0

Connecting....

Detecting chip type... ESP8266

Chip is ESP8266EX

Features: WiFi

Crystal is 26MHz

MAC: 2c:3a:e8:10:db:a3

Uploading stub...

Running stub...

Stub running...

Manufacturer: ef

Device: 4016

Detected flash size: 4MB

Hard resetting via RTS pin...

Je ziet dat het hier om een ESP8266EX gaat en dat die 4 MB flashgeheugen heeft. Dat laatste is belangrijk als je het hele flashgeheugen wilt uitlezen. Dat doe je nu met de volgende opdracht:

esptool.py read_flash 0x0 0x400000 esp8266.bin

Deze opdracht leest het flashgeheugen van adres 0 tot 0x400000 (hexadecimaal voor 4 MB) uit en slaat dit op in het bestand esp8266.bin.

©PXimport

Firmware analyseren

Je hebt nu een kopie van de firmware die op je ESP8266 draait en deze kun je verder op je computer analyseren. Als je op een Linux-computer werkt, is de tool strings meestal standaard geïnstalleerd (onderdeel van het pakket binutils): die toont je alle leesbare tekenreeksen in een binair bestand. In Windows maakt een gelijknamig en bijna identiek programmaonderdeel uit van Windows Sysinternals.

Je past het als volgt toe in een opdrachtvenster:

strings esp8266.bin

Toen we dit toepasten op ESPHome-firmware in onze ESP8266, vonden we onmiddellijk de SSID en wachtwoord van ons wifi-netwerk. Die kwamen zelfs bij herhaling voor in het bestand.

De opdracht strings is ook handig om te weten te komen met wat voor soort firmware je te maken hebt. Je ziet er snel functieaanroepen, versienummers en zelfs volledige html-code van een ingebouwde webinterface.

Via een entropiegrafiek krijg je een idee in welk deel van de firmware iets versleuteld is

-

Binwalk

Als je wat meer informatie te weten wilt komen over de structuur van het firmwarebestand, is het programma binwalk handig. Dit scant de inhoud van een firmwarebestand op bepaalde signatures, en zo kan het bestandssystemen of bestanden in de firmware detecteren en zelfs uitpakken.

Stel dat je binwalk uitvoert op een firmwarebestand en je krijgt het volgende te zien:

2837765 0x2B4D05 JPEG image data, EXIF standard

Dan weet je dat op adres 0x2B4D05 een jpeg-bestand start. Hoe haal je dit nu uit de firmware? Je kunt eenvoudig alle herkende bestandstypes extraheren met de opdracht:

binwalk -e firmware.bin

Je kunt het extraheren ook beperken tot een specifiek type data waarin je geïnteresseerd bent:

binwalk -D jpeg firmware.bin

Een andere nuttige functie van binwalk is de berekening van entropie (wanorde):

binwalk -E firmware.bin

Dit toont een grafiek met op de horizontale as de geheugenadressen en op de verticale as de entropie van 0 tot 1.

Entropie is een maat voor wanorde of willekeur. De geheugengebieden waar de entropie 0 is, zijn gebieden waar dezelfde byte (bijvoorbeeld 0x00 of 0xFF) herhaald wordt. Gebieden waar de entropie 1 is, bevatten volledig willekeurige bytes. Meestal is dat een teken dat deze gebieden versleuteld zijn. Licht de entropie dicht tegen 1 en schommelt die wat, dan is het gebied waarschijnlijk gecomprimeerd. En zie je dat een specifiek gebied een merkelijk lagere entropie heeft dan andere gebieden, dan weet je dat hierin veel herhaling voorkomt. De entropiegrafiek is dus een handige manier om te onderzoeken welke geheugengebieden in de firmware extra aandacht verdienen.

©PXimport

ImHex

Een grafisch programma om firmware te analyseren is ImHex, het is een hexeditor voor reverse-engineering. Het programma is te downloaden voor Windows, Linux en macOS. Open je firmwarebestand in ImHex en vink in het menu View de weergaven aan die je wilt zien.

Met Hex editor krijg je de data in het bestand te zien, met links de hexadecimale waardes van de bytes en rechts de overeenkomstige leesbare tekens die deze bytes als hun ASCII-code hebben. Met Strings kun je ImHex laten zoeken naar leesbare tekenreeksen van een opgegeven minimumlengte.

©PXimport

Chips identificeren

Niet alle elektronica heeft een eenvoudige seriële aansluiting via usb. Vaak moet je specifieke pinnen of testpunten op een printplaatje verbinden om het geheugen van de microcontroller uit te lezen. Als je geen technische documentatie over het product vindt, dien je eerst de chip te identificeren. Een vergrootglas of een digitale microscoop kan hierbij helpen. Zelf proberen we dit uit met een bluetooth-beacon dat we op AliExpress hadden gekocht.

Wanneer we de chip onder de microscoop leggen, zien we duidelijk dat het om een nRF51822 van Nordic Semiconductor gaat, een populaire ARM-chip met bluetooth-ondersteuning. Er lopen ook duidelijke sporen van de pinnetjes aan de zijkant van de chip naar een rij met testpunten. We willen vervolgens te weten komen waarvoor die testpunten dienen, en of ze ons kunnen helpen om het geheugen van de processor uit te lezen.

©PXimport

Testpunten identificeren

Om de pinnetjes van een microprocessor te identificeren, moeten we in de datasheet van de processor duiken. We zoeken in het InfoCenter van Nordic Semiconductor naar de product specification van de nRF51822. Op pagina 11 vinden we de pinnen van de QFN48-uitvoering van de nRF51822. De labels op de chip begint met QF, net zoals bij ons exemplaar.

Let op het zwarte bolletje in de linkerbovenhoek op de afbeelding met de pintoewijzing (zie boven/onder/plaatsaanduiding). Dit komt overeen met het bolletje op de chipbehuizing op je printplaatje. Oriënteer de chip hetzelfde. Je ziet dan in de afbeelding dat de pin rechtsonder in de onderste rij SWDCLK is en links ernaast SWDIO. Helemaal links zie je VSS, wat de negatieve spanning is (GND). In het rijtje pinnen links zie je twee keer VDD, de positieve spanning. Met deze vier pinnen weten we genoeg om verder te gaan. We hoeven alleen de sporen van die pinnen naar de overeenkomende testpunten te volgen. Voor SWDCLK en SWDIO is dat eenvoudig te zien: dat zijn de twee testpunten aan de rechterkant van de rij.

©PXimport

Serial Wire Debug (SWD)

De nRF51822 is een ARM Cortex-M0 32bit-processor, uitgerust met Serial Wire Debug (SWD). Dit is een debugpoort waarover kleinere ARM-processoren wel vaker beschikken. Ze bestaat uit twee pinnen (SWDIO en SWDCLK of ook wel SWCLK), en dan uiteraard nog een voedingspin en GND. Via SWDIO worden de data uitgewisseld, terwijl SWDCLK het kloksignaal vervoert.

Er is geen algemeen geldende standaardlay-out voor de SWD-pinnen, dus die zul je moeten uitzoeken. Op de meeste printplaatjes in commerciële producten zullen er geen labels bij de pinnen afgedrukt zijn. Zo ook bij het bluetooth-beacon dat we onderzochten. Maar als je de testpunten eenmaal geïdentificeerd hebt, is het een kwestie van een SWD-debugger op de correcte testpunten aan te sluiten.

Positieve en negatieve spanning identificeren

De SWDIO- en SWDCLK-testpunten hebben we al geïdentificeerd, terwijl VDD en GND moeilijker te identificeren zijn. Daarvoor heb je een multimeter nodig. Maar eerst moet je het printplaatje goed fixeren, zodat je er eenvoudig met meetpennen spanningen op kunt meten. Wij zijn zelf fan van de PCBite Kit van Sensepeek. Je plaatst twee of meer standaarden magnetisch op een metalen onderplaat, en bovenaan de standaarden klem je het printplaatje vast.

Plaats de batterij nu in het bluetooth-beacon. Het apparaatje start op en begint bluetooth-signalen uit te zenden. De SWD-testpunten hebben we al geïdentificeerd, dus nu is het enkel belangrijk om VDD en GND te vinden. Stel je multimeter in op een gelijkspanningsbereik rond 3 V, leg de zwarte meetpen van de multimeter op één testpunt en de rode op een ander testpunt. Zodra je een continue spanning van 3,3 V tussen beide punten meet, weet je dat het testpunt met de zwarte meetpen GND is en het testpunt met de rode meetpen VDD. Je hebt nu alle vier de benodigde testpunten geïdentificeerd.

©PXimport

SWD-debugger aansluiten

Om met deze testpunten te verbinden, heb je een SWD-debugger nodig. Wij gebruiken de Black Magic Probe, een JTAG- en SWD-debugger voor ARM Cortex-microcontrollers (Cortex-M en Cortex-A). In tegenstelling tot vele andere SWD-debuggers heb je hiervoor geen speciale software nodig, alleen gdb uit de GNU Arm Embedded Toolchain. Deze kun je op de website van ARM downloaden voor Windows, Linux en macOS.

Voor dit soort bewerkingen op printplaatjes met testpunten is de combinatie van de Black Magic Probe met de testnaalden van de PCBite Kit ideaal. Deze testprobes hebben een heel dunne naald die je op het kleinste testpunt laat rusten en die dan door het gewicht op de juiste plaats blijft liggen. De arm blijft magnetisch op de metalen onderplaat bevestigd. Aan de kop met de testnaald zijn twee pinnen te vinden waarop je jumperwires kunt aansluiten. De andere kant van de jumperwires sluit je aan op de overeenkomstige pinnen van het 7-pins JTAG-adapterbordje waarmee de Black Magic Probe wordt geleverd. Sluit SWDIO aan op TMS/SWDIO, SWDCLK op TCK/SWCLK, VSS op GND en VDD op VCC/tVref.

©PXimport

Continuïteit testen

Soms zijn er meerdere testpunten voor VDD of GND. Je kunt die eventueel nog identificeren door je multimeter in de continuïteitsstand te zetten en één meetpen op een bekend testpunt te zetten en met de andere meetpen onbekende testpunten aan te raken. Laat de multimeter een bliepje horen, dan weet je dat beide testpunten op dezelfde spanning staan omdat ze intern verbonden zijn. Wie weet vind je zo nog een handiger testpunt voor VDD of GND.

De Black Magic Probe en de PCBite Kit vormen de ideale combinatie

-

SWD in GDB

Sluit nu de usb-poort van de Black Magic Probe aan op je computer en kijk welke COM-poort (in Windows) of welk TTY-apparaat (in Linux of macOS) eraan wordt toegekend. De Black Magic Probe geeft zich uit voor twee seriële apparaten: een voor SWD en een voor UART. Start nu de ARM-versie van gdb en verbind met de gdb-server op de Black Magic Probe met de opdracht:

arm-none-eabi-gdb -ex "target extended-remote /dev/ttyACM0"

Gebruik het juiste apparaatbestand voor jouw situatie. Scan daarna in de debugger naar een SWD-apparaat:

monitor swdp_scan

Als je het volgende ziet in het opdrachtvenster, dan heb je geen correcte verbinding met een of meer van de testpunten:

Target voltage: 0.0V

SW-DP scan failed!

Kijk alles dan nog eens na. Mogelijk ligt een van de testnaalden net naast een testpunt.

Je zou iets moeten zien als:

Target voltage: 3.1V

Available Targets:

No. Att Driver

1 Nordic nRF51 M0

Verbind dan met doel 1:

attach 1

De waarschuwing die je dan krijgt, mag je negeren.

Firmware uitlezen via SWD

Je wilt nu de firmware uit het geheugen uitlezen en naar een bestand schrijven. In de productspecificatie van de nRF51822 vinden we dat het flashgeheugen van de microcontroller 256 of 128 KB groot is. Voor de nRF51822-QFAA is dat 256 KB. Dan lezen we de eerste 256 KB van het geheugen uit, omdat de code zich volgens de memory-map in de productspecificatie aan het begin bevindt:

dump binary memory nrf51822-beacon.bin 0x000000 0x040000

Als je een foutmelding krijgt dat je het geheugen niet kunt uitlezen, dan heeft de fabrikant de leesbeveiliging van de nRF51822 ingeschakeld. Er zijn manieren om dit te omzeilen en er bestaan tools die je daarmee helpen, maar dat zou te ver gaan in dit artikel. Zoek maar eens op nRF51822 Read Back Protection Configuration of RBPCONF.

Verlaat nu gdb met quit en bevestig dat je het doel wilt afkoppelen.

Firmware disassembleren met ImHex

Nu kun je het opgeslagen firmwarebestand weer openen met ImHex. In plaats van tekenreeksen te zoeken, gaan we nu de machinecode disassembleren. Kies daarvoor in het menu View de Disassembler View. Vul bij Code region het adresbereik in van 0 tot 3FFFF. Kies bij Settings als architectuur ARM32, Little Endian, Thumb mode en Cortex-M mode.

Klik op Disassemble, waarna je de firmware te zien krijgt als assembler, een min of meer leesbare vorm van machinecode. Je kunt hetzelfde overigens ook op de opdrachtregel doen met de opdracht arm-none-eabi-objdump uit de GNU Arm Embedded Toolchain:

arm-none-eabi-objdump -D -bbinary -marm nrf51822-beacon.bin -Mforce-thumb > nrf51822-beacon.s

Het resultaat vind je in het bestand nrf51822-beacon.s.

Een complete analyse van de code gaat te ver in dit artikel, maar in principe kun je hier nu ook code gaan aanpassen, het firmwarebestand opslaan en daarna de aangepaste firmware met de Black Magic Probe via SWD weer naar het flashgeheugen van de chip schrijven.

©PXimport

Een kleine puls schakelt de leesbeveiliging van de nRF52832 uit

-

Apple AirTags reverse-engineeren

Een groot deel van hardware-hacken bestaat uit het reverse-engineeren van de hardware en de firmware/software die erop draait. Een goed voorbeeld hiervan vind je op de webpagina Apple AirTag Reverse Engineering van Adam Catley. Hierop heeft de beveiligingsonderzoeker alle informatie verzameld die hij over de AirTag heeft gevonden, ook van andere onderzoekers.

Interessant aan de AirTag is dat Apple gebruikmaakt van de functie Access Port Protection (APPROTECT) van de nRF52832-chip, een geavanceerdere bescherming tegen het uitlezen van het interne flashgeheugen via de SWD-poort dan RBPCONF bij de nRF51822. Maar net zoals RBPCONF is ook APPROTECT niet onfeilbaar. Hacker LimitedResults vond in 2020 een manier om APPROTECT te omzeilen.

De truc zit erin om het hardware-initialisatieproces dat de bescherming van het flashgeheugen instelt, tijdens het opstarten uit te schakelen. Dat gebeurt door enkele condensatoren van het printplaatje te verwijderen en op het juiste moment een kleine puls aan te brengen op de juiste pin. Op die manier slaagde hacker Ghidra Ninja erin om het flashgeheugen van de AirTag volledig uit te lezen.

AirTag inbouwen

Adam Catley is nog verder gegaan en hij heeft een AirTag volledig gedemonteerd en in een afstandsbediening ingebouwd. Door de demontage van de behuizing krimpt de diameter van 32 mm tot 26 mm en de hoogte van 8 mm tot 3,3 mm, waardoor het in heel wat apparaten in te bouwen is.

In zijn afstandsbediening krijgt de AirTag stroom via de batterij van de afstandsbediening. De volledige functionaliteit van de AirTag blijft behouden en de ingebouwde microfoon werkt zelfs nog beter omdat de behuizing van de afstandsbediening als diafragma werkt.

©PXimport

BitLocker-decryptiesleutel uit TPM-chip halen

Onderzoekers van de Dolos Group slaagden er onlangs in om de BitLocker-decryptiesleutel uit een TPM-chip te halen van een versleutelde laptop. De onderzoekers merkten dat er geen pincode werd gevraagd, dus de communicatie met de TPM-chip afluisteren zou voldoende moeten zijn om de decryptiesleutel te onderscheppen. In de datasheet zagen de onderzoekers dat de TPM-chip via Serial Peripheral Interface (SPI) communiceerde.  Omdat de pinnetjes van de TPM-chip zelf te klein waren voor een stabiele verbinding, gingen ze op zoek naar andere SPI-chips in de buurt, omdat er vaak meerdere chips op dezelfde SPI-bus aangesloten zijn. Zo vonden ze een CMOS-chip in SOIC-8-formaat en op die grote pinnen konden ze eenvoudig hun logic analyzer aansluiten. Ze registreerden nu alle data die over de SPI-bus gingen tijdens het opstarten van de laptop en haalden de sleutel eruit met het script bitlocker-spi-toolkit.

©PXimport

▼ Volgende artikel
Oliebollen bakken in de airfryer, kan dat?
© sara_winter - stock.adobe.com
Huis

Oliebollen bakken in de airfryer, kan dat?

De geur van versgebakken oliebollen hoort bij december. Toch ziet niet iedereen het zitten om met een pan heet vet aan de slag te gaan. Oliebakken in de airfryer lijkt dan een aantrekkelijk alternatief: minder luchtjes en ook nog eens minder vet. Maar levert bakken in een airfryer dezelfde oliebol op, of moet je toch de frituurpan uit het vet halen?

In dit artikel

Je leest waarom je geen klassieke oliebollen kunt bakken in een airfryer en wat daar technisch misgaat. Ook leggen we uit wat je wel voor oudjaarsalternatief kunt maken met de airfryer én hoe je de airfryer slim gebruikt om gekochte oliebollen weer knapperig en warm te maken.

Lees ook: Ontdek de minder bekende functies van je airfryer

Oliebollen bakken in de airfryer, kan dat? Het korte antwoord is duidelijk: nee, een traditionele oliebol bak je niet in een airfryer. Klassiek oliebollenbeslag is vloeibaar en heeft direct contact met hete olie nodig om zijn vorm en structuur te krijgen. Een airfryer is in de basis een compacte heteluchtoven. Zonder een bad van hete olie kan het beslag niet snel genoeg stollen. Wie het toch probeert, ziet het deeg door het mandje zakken of uitlopen tot een platte, taaie schijf. Dat ligt niet aan het recept, maar aan de techniek.

Waarom hete olie onmisbaar is

Zodra je het beslag van de oliebol in de hete olie van de frituurpan schept, ontstaat er vrijwel direct een korstje om de buitenkant. Binnen in de bol ontstaat stoom, waardoor de bol uitzet en luchtig wordt. Die combinatie van afsluiten en opblazen zorgt voor de typische oliebolstructuur. In een airfryer ontbreekt die directe warmteoverdracht. Hete lucht is simpelweg minder krachtig dan hete olie. Zonder direct contact met heet vet kan het beslag niet snel genoeg stollen. Daardoor blijft een echte oliebol uit de airfryer onmogelijk.

©Gegenereerd door AI

Wat wel kan: kwarkbollen uit de airfryer

Wie toch iets zelf wil maken in de airfryer, moet het klassieke oliebollenbeslag loslaten. Met een steviger beslag, bijvoorbeeld op basis van kwark, kun je ballen vormen die hun vorm behouden. Deze bollen garen prima in de hete lucht en krijgen een mooie bruine buitenkant. De uitkomst lijkt qua vorm op een oliebol, maar de structuur is compacter en de smaak meer broodachtig. Denk aan iets tussen een zoet broodje en een scone. Lekker, lichter en prima als alternatief, maar: het is geen oliebol zoals je die van de kraam kent.

Kwarkbollen uit de airfryer

Meng 250 gram volle kwark met 1 ei en 50 gram suiker tot een glad mengsel. Voeg vervolgens 300 gram zelfrijzend bakmeel toe, samen met een snuf zout. Meng alles kort tot een samenhangend deeg. Het deeg moet stevig zijn en nauwelijks plakken. Is het te nat, voeg dan een beetje extra bakmeel toe. Wie wil, kan rozijnen, stukjes appel of wat citroenrasp door het deeg mengen.

Bestuif je handen licht met bloem en draai ballen ter grootte van een kleine mandarijn. Leg ze met wat ruimte ertussen in het mandje van de airfryer, eventueel op een stukje bakpapier. Bak de bollen in ongeveer 12 tot 15 minuten op 180 graden. Halverwege kun je ze voorzichtig keren zodat ze gelijkmatig bruin worden.

Laat de bollen kort afkoelen en bestuif ze eventueel met poedersuiker. Vers zijn ze het lekkerst, maar ook lauw blijven ze prima eetbaar.

Wat ook goed kan: oliebollen opwarmen in de airfryer

Waar de airfryer wel echt tot zijn recht komt, is bij het opwarmen van gekochte oliebollen. In de magnetron worden ze snel slap en taai. In de airfryer gebeurt het tegenovergestelde. Door de bollen een paar minuten op ongeveer 180 graden te verwarmen, wordt de korst weer knapperig en warmt de binnenkant gelijkmatig op. Je oliebollen smaken weer alsof je ze net gebakken (of gehaald) hebt!

Samenvatting

Wil je de échte oliebol, dan heb je twee opties: zelf bakken in een frituurpan of halen bij de kraam. Bakken in de airfryer kan niet, omdat vloeibaar beslag niet geschikt is voor hete lucht. Je kunt bijvoorbeeld wel kwarkbollen maken, maar dat is toch anders. De grootste winst zit in het opwarmen van kant-en-klare oliebollen: in de airfryer gaat dat snel, ze worden heerlijk knapperig en je hebt geen last van frituurlucht in huis.


Nog even niet aan denken...

...maar voor 1 januari, je goede voornemens

🎆 Vuurwerk op je Galaxy Smartphone? 👇

View post on TikTok
▼ Volgende artikel
Zo krijg je oude randapparatuur weer werkend onder Windows 10 en 11
© ID.nl
Huis

Zo krijg je oude randapparatuur weer werkend onder Windows 10 en 11

Het spreekwoord 'krakende wagens lopen het langst' gaat helaas vaak niet op in de computerwereld. Moderne systemen reageren soms allergisch op oudere hardware. Toch zijn er methoden en slimme trucs om zulke apparaten te laten werken onder Windows 10 of 11.

Dit gaan we doen

Je hebt nog een oudere printer, scanner of ander randapparaat in de kast liggen. Weggooien kan, maar het is duurzamer en goedkoper als je het toestel weer aan de praat krijgt op je moderne Windows-systeem. Zulke apparatuur wordt helaas niet altijd meteen herkend. Fabrikanten bieden namelijk vaak geen ondersteuning meer en Windows bevat lang niet alle stuurprogramma's (drivers) voor oudere apparaten.

Toch is er meer mogelijk dan je denkt. We laten stap voor stap zien wat je kunt doen als Windows het apparaat niet herkent, als de juiste driver ontbreekt of niet compatibel is, en als Windows de installatie weigert. We gaan ook kort in op alternatieve methoden, zoals compatibiliteitsmodi, universele drivers en virtualisatie. Sommige technieken zijn eenvoudig, andere vragen iets meer inspanning en technische kennis. Het loont in elk geval de moeite om het apparaat weer aan de praat te krijgen.

Apparaat niet herkend

Wanneer je een oud apparaat aansluit, kan het gebeuren dat Windows het niet herkent.. Daardoor verschijnt het niet in de lijst met apparaten. Je controleert dit door via een klik met rechts op de Windows-knop Apparaatbeheer te openen. Verschijnt hier iets als 'Onbekend apparaat' of zie je een geel driehoekje of vraagteken, dan heeft Windows het apparaat wel fysiek herkend, maar geen juiste driver gevonden. Je leest hier meer over bij de passage Driverprobleem. Mogelijke oorzaken zijn het ontbreken van een plug-and-playdriver of een verouderd aansluitingstype.

Je kunt dan verschillende dingen proberen. Controleer eerst de aansluiting en de stroomvoorziening. Zorg dat het apparaat juist is aangesloten en ingeschakeld. Bij usb-apparaten helpt het soms een andere poort te proberen. Oudere usb1.1-apparaten werken vaak beter via een usb2.0-poort of een usb-hub met eigen voeding dan via een usb3.0-poort. Heeft je pc nog een parallelle of seriële poort? Controleer dan in het systeem-BIOS of deze is ingeschakeld. Heeft je toestel zo'n poort niet, dan ben je meestal aangewezen op een adapter (zie de passage Aansluitingen).

Een apparaat dat niet wordt herkend, is niet te vinden in Apparaatbeheer.

Handmatige installatie

Je kunt het apparaat ook handmatig proberen te installeren. Misschien heb je nog een cd-rom met de installatiebestanden, zodat het zo lukt. Heeft je pc geen cd-station meer, dan sluit je een extern cd-station aan of kopieer je de bestanden op een andere pc met cd-station naar een usb-stick. Je kunt er ook een iso-bestand van maken en dit met een dubbelklik als virtuele schijf koppelen op je pc. Je kunt dit doen met bijvoorbeeld Burnaware Free. Ga naar www.burnaware.com en kies voor ISO-bestand aanmaken.

Heb je geen cd-rom? Start dan Apparaatbeheer, open het menu Actie en kies Oudere hardware toevoegen. Kies De hardware opsporen en automatisch installeren, geef het hardwaretype aan, zoals Beeldapparaten of Draagbare apparaten, en selecteer het juiste product en model. Heb je zelf een geschikte driver gevonden (bijvoorbeeld op de site van de producent), klik dan op Bladeren en verwijs naar het installatiebestand (inf).

Voor printers open je Instellingen in Windows en kies je Bluetooth en apparaten / Printers en scanners. Klik op Apparaat toevoegen en kies bij De printer die ik wil gebruiken, staat niet in de lijst voor Handmatig een nieuw apparaat toevoegen. In het dialoogvenster laat je Mijn printer is iets ouder. Help mij met zoeken geselecteerd. Werkt dat niet, probeer dan Een lokale printer of een netwerkprinter toevoegen met handmatige instellingen, waarna je de juiste poort en het stuurprogramma kiest. Klik hier ook op Windows Update: zo is de kans groter dat Windows alsnog de juiste driver ophaalt. Je kunt ook een vergelijkbaar model uit de lijst proberen.

De wizard Hardware toevoegen laat je eerst uit een productcategorie kiezen.

Soorten aansluitingen

Gaat het om oudere apparaten, dan hebben die vaak een interface die je op moderne pc's niet meer vindt, zoals een parallelle of seriële aansluiting of firewire. Voor parallel gebruik je een usb-naar-parallel-adapter (meestal usb-A naar 36-pins Sub-D). De printer verschijnt dan als 'USB Printing Support' en werkt vaak met generieke drivers. Sommige oude drivers verwachten een echte LPT-poort met een logische naam als LPT1. Je kunt dan de gedeelde usb-printerpoort mappen naar LPT1 met het opdrachtprompt-commando

net use LPT1: "\\localhost\<printershare>" /persistent:yes

(met net use LPT1: /delete verwijder je deze koppeling). <printershare> is de gedeelde printernaam, zoals ingesteld via Instellingen in Windows: klik op de printernaam, kies Printereigenschappen en open het tabblad Delen. Zo kun je vaak nog printen vanuit oude DOS- of Windows-apps.

Voor een seriële poort (met een DB9 RS232-kabel) gebruik je eveneens een usb-adapter, liefst met FTDI-chip en aangesloten op een usb2.0-poort. Mogelijk moet je eerst de adapterdriver installeren voordat deze in Apparaatbeheer verschijnt (onder een naam als '[…] COMx'). Om het juiste poortnummer (zoals COM1) in te stellen, klik je met rechts op het apparaat, open je Poortinstellingen en klik je op Geavanceerd.

Koop altijd adapters van goede kwaliteit (en van een bekend merk), aangezien goedkopere exemplaren zich niet altijd aan de specificaties houden.

Voor firewire kun je de installatie van een PCIe-naar-firewire (IEEE 1394) adapterkaart overwegen. Met de Microsoft 1394 OHCI Legacy Driver activeer je deze vervolgens in Windows 10/11 en kun je bijvoorbeeld een oude DV-camera of audio-interface aansluiten. Klik hier voor een downloadlink met instructies.

De LPT-poort wordt semipermanent aan de gedeelde usb-printerpoort gekoppeld.

Driverprobleem

Wanneer Windows het apparaat herkent via een van bovenstaande stappen, blijft het afwachten of er een geschikte driver voor Windows 10/11 beschikbaar is. Je kunt eerst een generieke driver proberen, die vaak via de Windows-updatefunctie beschikbaar is. Klik in Apparaatbeheer met rechts op het apparaat, kies Stuurprogramma bijwerken en klik vervolgens op Automatisch zoeken naar stuurprogramma's / In Windows Update zoeken naar bijgewerkte stuurprogramma's.

Soms vind je geschikte drivers bij de optionele updates. Ga hiervoor naar Instellingen, kies Windows Update / Geavanceerde opties / Optionele updates en open Stuurprogramma-updates. Je kunt ook zoeken naar een basisdriver, add-onmodule of universele driver van de fabrikant, zoals de (Smart) Universal Printer Driver van HP.

Vind je geen driver op de site van de fabrikant, dan kun je er ook zelf naar googelen op basis van het hardware-ID. Start Apparaatbeheer, klik met rechts op het apparaat (eventueel bij Andere apparaten of Onbekend apparaat), kies Eigenschappen en open het tabblad Details. Stel Eigenschap in op Hardware-id's. Klik met rechts op een gevonden ID, kies Kopiëren en plak dit met Ctrl+V in een zoekmachine als Google. Mogelijk levert dit een geschikte driver op.

Heb je nog een driver voor Windows 7 of ouder, probeer dan de installatie in compatibiliteitsmodus. Klik met rechts op het installatieprogramma, kies Eigenschappen en ga naar het tabblad Compatibiliteit. Zet een vinkje bij Dit programma uitvoeren in compatibiliteitsmodus voor en kies de laatst ondersteunde versie, zoals Windows 7 of Windows XP (Service Pack 2). Door ook Dit programma als administrator uitvoeren te selecteren, vergroot je de kans dat Windows de oudere driver alsnog aanvaardt, zeker als het geen 'kernel-driver' met volledige systeemrechten betreft (zie ook de passage Driverblokkade). Dit is ons bijvoorbeeld al gelukt voor een Canon Pixma iP4200-printer.

Lees ook: De perfecte printer kiezen? Hier moet je op letten

Soms zitten driverupdates wat verstopt bij de optionele updates.

Alternatieve drivers

Je kunt ook op zoek gaan naar alternatieve, niet-officiële stuurprogramma's. Er zijn verschillende community's en fora die voor populaire oudere apparaten aangepaste drivers aanbieden of INF-bestanden hebben aangepast om ze onder nieuwere Windows-versies te laten werken.

Voor scanners is de alternatieve software van VueScan populair. Deze ondersteunt bijna achtduizend oude scanner-modellen en werkt vaak prima, al is de software niet gratis (vanaf circa 19 euro per jaar). Een proefversie is wel beschikbaar (je kunt eventueel een wegwerpadres gebruiken), zodat je kunt nagaan of je scanner werkt onder Windows 10/11.

Voor printers is het Gutenprint-driverpakket bekend, voorheen bekend als Gimp-print, al is dit alleen beschikbaar voor Linux en macOS. We hebben helaas niet de ruimte om hier dieper op in te gaan, maar je kunt een al dan niet virtuele Linux-machine op je netwerk opzetten (ook op een Raspberry Pi) en hierop Gutenprint installeren. Vervolgens deel je de printer zodat je deze ook op je Windows-pc kunt gebruiken. Voor scanners bestaat een vergelijkbaar project: Scanner Access Now Easy, eveneens voor Linux.

De kans is groot dat je met VueScan je oude scanner nog prima aan de praat krijgt.

Driverblokkade

Het kan gebeuren dat er wel een driver beschikbaar is, maar dat Windows 10/11 de installatie blokkeert. Mogelijk is de driver technisch incompatibel, bijvoorbeeld een 32bit-driver op een 64bit-systeem (Windows 11 is altijd 64 bit), of een kerneldriver die noodzakelijke kernelfuncties mist doordat deze niet meer worden ondersteund door het geüpdatete besturingssysteem. In dit geval kun je nog de compatibiliteitsmodus proberen (zie de passage Driverprobleem), maar het resultaat blijft onzeker. Je maakt dan meer kans via een virtuele machine met een oudere Windows-versie, zoals Windows 10 voor 32bit-drivers.

Soms blokkeert Windows 10/11 de installatie omdat de (kernel)driver niet digitaal is ondertekend. Ben je zeker dat het om een betrouwbare driver gaat, dan kun je deze controle tijdelijk uitschakelen. Open Instellingen, kies Systeem / Systeemherstel en klik tweemaal op Nu opnieuw opstarten. Kies vervolgens Problemen oplossen / Geavanceerde opties / Opstartinstellingen en klik op Opnieuw opstarten. In het menu dat verschijnt, kies je optie 7: Afdwingen van stuurprogrammahandtekening uitschakelen. Windows start nu zonder handtekeningcontrole, zodat je de driver kunt installeren. Bij de volgende herstart is de controle weer actief, maar de driver blijft werken.

Ga je liever voor een iets doortastender aanpak? Voer dan de Opdrachtprompt uit als administrator, voer het commando bcdedit /set TESTSIGNING ON in en herstart je pc. Deze draait dan in testmodus, zie de indicatie rechtsonder. Installeer de driver en voer daarna meteen bcdedit /set TESTSIGNING OFF uit, gevolgd door een herstart om terug normaal te werken.

Deze Windows draait tijdelijk in een (minder veilige) testmodus.

Virtueel alternatief

Lukt het niet om je oude apparaat met een van de bovenstaande workarounds aan de praat te krijgen binnen Windows 10/11, dan zit er weinig anders op dan een ouder of ander besturingssysteem te gebruiken. Het handigst is om dit als virtuele machine (VM) bovenop je huidige Windows te draaien. Binnen deze VM installeer je dan de originele driver en software voor het apparaat.

Geschikte gratis tools zijn Oracle VirtualBox en VMware Workstation Pro (na registratie op https://support.broadcom.com). Via bijvoorbeeld https://archive.org kun je naar schijfkopiebestanden zoeken en downloaden. Wij vonden er onder meer diverse Windows XP-iso-bestanden en installeerden een exemplaar in VirtualBox.

Dit kan als volgt. Start VirtualBox, klik op Nieuw en vul de gegevens in, zoals Microsoft Windows XP (32-bit). Bij ISO-image verwijs je naar je download. Vink Overslaan zonder toezicht aan, klik op Afmaken en vervolgens op Starten. Volg de installatie-instructies. Je bezit of vindt wellicht een geldige licentie voor deze oude Windows.

Koppel het apparaat aan een fysieke poort op je pc en geef deze vervolgens door aan de VM, zodat de virtuele Windows het apparaat herkent. Dit kan vanuit het menu Apparaten in het venster met een opgestarte VM.

Bij printers kun je ook delen via het VM-netwerk, zodat je vanuit je gewone Windows via het netwerk kunt printen naar de VM. Selecteer de (uitgeschakelde) VM in VirtualBox, kies Instellingen, open Netwerk en vink Netwerkadapter inschakelen aan. Stel eventueel Gekoppeld aan in op Bridged Adapter zodat de VM een ip-adres krijgt binnen hetzelfde netwerk als je host-pc.

Een oude HP-printer werd succesvol op een virtuele Windows XP geïnstalleerd.

Extra tips

Soms brengen fabrikanten firmware-updates uit die de compatibiliteit met een nieuwer besturingssysteem verbeteren. Het kan dus lonen om de firmware van het apparaat te controleren en eventueel te updaten. Raadpleeg hiervoor de bijbehorende instructies. Het is ook mogelijk dat sommige apparaten, zoals printers, een legacy- of compatibiliteitsmodus hebben, waardoor ze wel ondersteund worden door Windows of een generieke driver. Raadpleeg ook hiervoor de handleiding.

Tot slot nog een tip die we met enige terughoudendheid geven. Vind je geen geschikte driver op de website van de fabrikant, probeer dan eventueel een gratis tool als IObit Driver Booster of Snappy Driver (Lite). Soms halen deze nog een oude driver uit de online Microsoft Update Catalog die werkt. Dit kan helaas ook zomaar fout gaan, dus maak vooraf zeker een herstelpunt. Let ook op dat je geen ongewenste extra's mee installeert.

Driver-installers: als het echt niet anders kan, en nadat je een herstelpunt hebt gemaakt.

 Nieuwe printer nodig? Kijk op Kieskeurig.nl/prijsdalers om voor de beste deal!

Inkt en cartridges

Voor je printer