Tilbakevikling (Reverse Engineering) er en prosess eller metode hvor man prøver å forstå hvordan noe fungerer gjennom å observere, måle og eliminere muligheter. Det finnes ikke noe offisielt norsk ord for dette, men jeg vurderer alternativet "Tilbakevikling" som det minst flertydige ordet.
Oftere og oftere kommer produkter uten dokumentasjon eller servicemanual, og slike metoder blir nødvendige for å kunne reparere produkter. Dette er tidkrevende, og er med å å gjøre mange produkter umulig å reparere kommersielt framfor å kjøpe nye.
Det er også mulig å bruke tilbakevikling for å kommunisere med "dingser" utover det produktet er beregnet for. Her tar vi en kjapp titt på et sånt tilfelle.
Yaesu FT-7800
Yaesu FT-7800 er en "VHF" radio for samband, lignende det som finnes i bl.a. båter. Denne modellen er beregnet for radioamatører, og jeg ønsket å kunne endre innstillinger uten å at kontrollpanelet var fysisk tilgjengelig.
Denne modellen er konstruert sånn at kontrollpanelet kan tas av og monteres separat fra selve radio-delen, og ved å studere i servicemanualen kunne man avgjøre hvilke ledere som førte signalene til og fra kontrollpanelet. Det er derimot ikke spesifisert noen ting om hvordan kommunikasjonen mellom radio og kontrollpanelet fungerer. Tid for tilbakevikling.
Seriell kommiunikasjon
I dette tilfellet kunne jeg raskt finne ut at kommunikasjonen mellom radio og kontrollpanel foregikk via en vanlig seriell UART, med en fart på 19200 bps. Dette finner man raskt ut ved å bruke et oscilloskop til å observere og analysere kommunikasjonen. Samtidig observerer man også når kommunikasjonen foregår. Er den fortløpende, eller kun når det er endringer (ved knappetrykk eller lignende).
Når kommunikasjonsprotokollen var identifisert, koblet jeg en passende adapter mellom radioen og USB-porten på datamaskinen min. Med en gang jeg var i stand til å lese kommunikasjonen med datamaskinen, kunne jeg skrive noen verktøy for å analysere trafikken mellom enhetene.
Mission accomplished
Ved hjelp av verktøyene kunne jeg se hva som endret seg i kommunikasjonen mens jeg trykket på knapper og endret innstillinger på radioen, og til slutt var jeg i stand til å skrive et program som kan "emulere" kontrollpanelet til radioen.
Det betyr at jeg nå kan koble radioen direkte til en datamaskin og styre den, og ikke trenge kontrollpanelet lenger. I videoen er kontrollpanelet fremdeles tilkoblet for å vise hva som skjer.