Brute-Force læsning af PAL-chips

Vi er vadet lidt langt fra emnet i det forrige blogindlæg, så jeg starter et nyt.

Opgaven er som sagt at udlæse nogle små PAL/GAL chips, som er "kopisikret".

(Hvis I ikke ved hvad PAL/GAL chips er, har Archive.org en glimrende AMD databog fra dengang de lavede den slags chips.)

Min analyse viser flg. komplikationer:

1] Output kan være Tri-State/High-Z
2] Output kan være latch'ed
3] Output kan lave feedback

Den første har to varianter:

1A] Output Tri-State's med kombinatorisk input
1B] Output Tri-State's med latch'ed signaler (evt + kombinatorisk input)

Hvis vi ser helt bort fra latches er det nemt nok, Tri-State kan detekteres ved at drive benene svagt og se om de følger eller ikke følger stimulus.

Jeg leger med en Olimex LPC-P1343 og det virker fint at sætte alle ben på ARM'en som inputs og bruge dens pull-up/down som stimulus.

Latch'ing er også nem at detektere: Man scanner alle input-kombinationer, inklusive de potientielle output ben, (svagt, jvf. ovenfor) først med høj CLOCK og derefter med lav CLOCK.

På den måde vil de outputs der er latch'ed ikke blive det, men i stedet give samme konstante værdi (når de ikke er tri-state'd).

Reduktion for det kombinatoriske "hits" er også temmelig lige ud af landevejen.

Her er et eksempel på output fra mit nuværende hack:

    ----------------------------------------
    dibrgal
    ----------------------------------------
    Pin ignore mask: 00000000010000000001
    Pin valid mask:  11111111101111111110
    Pin clock mask:  10000000000000000000
    Pin 12 is always driven as output
      Output pin 12 is combinatorial
      Combination:
        Pin 2 low, Pin 3 low
    Pin 13 is not driven as output (but OE could be latched)
    Pin 14 is not driven as output (but OE could be latched)
    Pin 15 is not driven as output (but OE could be latched)
    Pin 16 is not driven as output (but OE could be latched)
    Pin 17 is sometimes driven as output
      Output pin 17 is combinatorial
      Output Enable:
        Pin 2 low
      Combination:
        Pin 3 high, Pin 4 high, Pin 5 low, Pin 6 high
        Pin 3 high, Pin 4 high, Pin 5 high, Pin 6 low
    Pin 18 is sometimes driven as output
      Output pin 18 is combinatorial
      Output Enable:
        Pin 2 high
      Combination:
        Pin 4 high, Pin 5 low, Pin 8 low
        Pin 4 high, Pin 5 high, Pin 8 high
    Pin 19 is always driven as output
      Output pin 19 is combinatorial
      Combination:
        Pin 1 high, Pin 2 high
 

Næste trin bliverer at scanne for kombinationerne for de latch'ed outputs, antagende at der ikke er feedback termer.

Hvis der er feedbacks, er der en god chance for at man vil få inkonsistente resultater under dette scan, men dette er ikke garanteret.

Derefter bliver det uldent.

Worst case skal man igennem en 256(-delta) lang sekvens for stille outputs i den kombination man ønsker, således at man kan scanne for feedback termer med den kombination - vel at mærke hvis man har fundet løsninger hvor alle potientielle outputs er kommet ud af tri-state[1]

Hvis et af benene er tri-stated af en kombination der involveret feedback fra et andet output der aldrig ommer ud af tristate, begynder det blive trælst og vi at nærmer os hastigt den store brute-force øvelse, dog med sådanne short-cuts som kan udledes af hvad der allerede har afsløret sig.

En virkelig ondskabsfuldt programmeret PAL implementerer en 8-bits tæller, som er kombinatorisk gate'd så det kræver 255 unikke input-ord at tælle til ende, mens visse forkerte input-ord vil "hoppe" til lavere tælletal og alle outputs er Tri-state indtil det sidste tælletrin, hvor et enkelt output ben kommer ud af Tri-State. (Jeg får det til et søge-space på 2^(17+8), forudsat man har en pålidelig måde at reset'et PAL'en til et reproducerbart udgangspunkt.

Jeg krydser fingre for at det ikke kommer dertil...

phk

[1] I visse senere PAL'er kan man, af hensyn til tests, forcere output latches med en særlig programmerings-agtig sekvens der involverer højere spændinger end VCC.

Kommentarer (11)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Ole Geisler

Nu ved jeg ikke specifikt hvilke PAL/GAL chips det er, og hvad du vil opnå - men hvis det er for at få den BIN fil der skal til for at programmere en "ny", er der tjenester derude, som kan udlæse / kopiere en sådan chip - kodebeskyttelse eller ej.

Så hvis du har en "original" du vil ofre, samt x antal tomme er det ikke et problem at få dem duplikeret, og koden udlæst.

  • 0
  • 0
#4 Chris Bagge

PAL'er blev udviklet af Monolitic Memories Inc, normalt forkortet til MMI. MMI blev senere købt af AMD. Nogle har kombinatoriske udgange, andre har registre på udgangen. Som jeg kender dem, indeholder de registre (som en 74x374), og ikke ikke latche (som en 74x373). Clock til registrene er et fast signal (pin 1), ikke fra det kombinatoriske netværk. Det samme gør sig gældende for output Enable for registrene (pin 11). Et fælles træk er at de alle er i et 20 bens hus.

Den logiske funktion inde i chippen er et AND-OR array. Først en række 32 input AND gates fulgt af en 7 input OR gate.

De kombinatoriske udgange "udmærker" sig ved at deres tri-state funktion styres fra det logiske array. Benet kan også fungere som "input" til det logiske array.

Senere chips med 24 eller 28 ben er mere "ondsindede" men de er formodentligt for "nye" til at have været brugt.

  • 0
  • 0
#5 Nis Schmidt

Jeg ved ikke en dyt om PAL og PLD andet end hvad jeg læstei håndbogen, men det forekommer mig, at du går efter "en nem" løsning her:

OK - det behøver virkelig ikke at være ret kostbart ( du kommer langt for et par tusinde kr ),

"Et par tusind kr" per styk kan også blive til en slags penge, hvis man har eller flere snese kredse at aflure.

  • 1
  • 0
#7 Ole Geisler

Specielt i den situation datamuseum.dk står i nu har vi meget andet at bruge pengene til.

Klart nok - men checkede lige, det ligner at alle ældre PAL/GAL/MCU koster 200USD for udlæsning, op til 500USD for en større Altera FPGA. Jeg vil tro dine er i 200USD-klassen.

Det var blot til info om at det er muligt for relativt små penge. Kræver dog også at man har "tomme" kredse, da metoden er destruktiv.

  • 0
  • 0
#8 Poul-Henning Kamp Blogger

Det var blot til info om at det er muligt for relativt små penge. Kræver dog også at man har "tomme" kredse, da metoden er destruktiv.

Jep og der er jeg slet ikke nået til.

Jeg fandt ét sted der kunne gør det non-destruktivt, men deres priser var i en helt anden sfære :-(

Indtil videre regner jeg med at kunne klare det selv og så bliver min software kastet på github så andre kan arbejde videre derfra.

  • 5
  • 0
#9 Casper Reinhold

Jeg er på Geisler vognen, det er en fin øvelse at forsøge sig med stimuli, men som PHK selv skriver er udfordringen feedbacks, især når du har flere gate niveauer. Jeg kan udlæse de fleste gamle og nyere PAL/GAL non invasive, nogle kræver semi-invasive indgreb, dvs. ætsning ned til lige over masken, men dog sådan at kredsen kan genbruges. Hvis i har nogle få, men vigtige kredse, kan jeg godt udlæse dem uden beregning, med udstyr her i DK.

  • 5
  • 0
Log ind eller Opret konto for at kommentere