Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14

Een Hardware-Cracking Howto

Welkom in dit topic! We gaan hier met z'n allen kijken of we hardware-beveiligingen kunnen kraken. Als je je daar niets bij kan voorstellen: denk bijvoorbeeld aan een met een keypad beveiligde deur in een standaard actiefilm, maar ook het uitlezen van een beveiligde USB-stick zonder het bijbehorende password te kennen.
Waarom?
Ik wil nog wel eens beveiligde hardware reviewen, en morrelen aan de security hoort daar natuurlijk ook bij. Toen ik laatst daar weer eens mee bezig was besefde ik dat het eigenlijk best leuk is: het vinden van de juiste technieken en de creativiteit om ze in de praktijk toe te passen is net als het oplossen van een raadsel.

Verder is het natuurlijk interessant voor iedereen zelf ook beveiligde projecten wil maken: als je weet wat de technieken zijn kan je je eigen product ertegen beveiligen.
Opzet
De opzet van het geheel is zowel practisch als theoretisch. Ik zal proberen om van elke mogelijke manier van aanvallen een stukje theorie uiteen te zetten: hoe werkt het, wat heb je nodig, wat zijn de toepassingsmogelijkheden? Daarna komt het practische stuk: je krijgt een hex-bestand wat je in een microcontroller (een AVR) moet branden wat bijvoorbeeld om een pincode vraagt. De bedoeling is dat je door middel van de theorie je geprogrammeerde microcontroller overtuigt om te doen wat 'ie eigenlijk niet zou horen te doen...
Het nivo
Als je hieraan begint, is het nuttig om iets van microcontrollers programmeren te weten: die kennis word hier redelijk veel gebruikt. Elektro-kennis an sich is niet echt hard nodig: zolang je weet wat een pull-up-weerstand doet en wat het verschil is tussen spanning en stroom is zit je wel ongeveer goed. Kennis van digitale elektronica is daarentegen wel noodzakelijk: je moet ongeveer weten hoe een uC van binnen werkt en termen als 'program counter' en 'register' moeten je in ieder geval vaag bekend voorkomen. Ik raad je verder aan om in ieder geval een keer de assebleertaal van een (willekeurige) processor gezien te hebben.

Verder is het erg handig als je, naast de slachtoffer-AVR, een tweede microcontroller hebt waar je mee bekend bent en programma's voor kan schrijven. Dat is handig voor klusjes als brute-forcing (als in: veel pincodes per seconde heautomatiseerd uitproberen), meten van gebeurtenissen op microseconde-nauwkeurigheid etc. Ik ga er niet van uit dat iedereen AVRs compleet kent, maar je moet redelijk goed met je eigen uC-systeempje om kunnen gaan, of heeel veel geduld hebben en sommige klusjes handmatig doen.
Benodigdheden
Je kan de theorie natuurlijk altijd doorlezen, maar het hele verschil met $ander_droog_theoretisch_document is nou juist dat je hier hetgene waarover gepraat word, ook in de praktijk kan uitoefenen. Daar heb je een aantal dingen voor nodig:
  • Een ATTiny2313. Da's een uC van een paar euro, en het slachtoffer van alle praktijkoefeningen: je gaat hier het programma wat je dient te kraken inzetten.
  • Een kristal van 8MHz.
  • Een 'iets' om met TTL-nivo seriele communicatie te kunnen praten. Een MAX232, een FT232-bord, een gesloopte datakabel, wees creatief. Hier staan een aantal opties op; ook een stel die je kan gebruiken als je computer geen seriele poort heeft.
  • Een programmer voor de AVR. Dat kan als je PC een parallele poort heeft niet meer zijn dan een paar draden of je kan een usb-programmer bouwen als je ergens een AVR met de juiste code kan ritselen. (Mocht dat laatste echt een probleem zijn, dm dan even.) Mocht je nog een Arduino hebben is die ook te misbruiken.
  • Waar nodig een weerstand, condensator of ledje. Ik ga ervanuit dat je wel wat los grut aan componentjes hebt liggen, of er in ieder geval aan kan komen. Wat je precies nodig hebt word in de opdrachten wel duidelijk
  • Een voeding. Eentje die een spanning van 3.3V of 5V kan uitspugen op een mA of 100 is al prima; in het slechtste geval zet je maar 3 AA-batterijen in serie en voed je je AVR met de 4.5V die daaruitkomt.
  • Iets om alles op te zetten. Breadboard is OK, experimenteerprintplaat is ook prima. In het slechtste geval soldeer je alles tijdelijk met draden aan elkaar als 't moet :P
Verder zijn een aantal dingen erg handig om te hebben:
  • Een oscilloscoop. Digitaal en/of een storage-oscilloscoop is hier beter. Ik zal een poging doen om alles zo traag te houden dat je in 't slechtste geval met de line-in van je geluidskaart en een programma als Audacity afkan: ik kan me voorstellen dat niet iedereen een goede scoop heeft.
  • Een multimeter. Niet eens specifiek voor dit project handig :P
  • Een set goede hersenen :P Goed kunnen observeren wat een systeem doet, logisch denken en creativiteit komen je erg goed van pas bij dit soort zaken.
Regels
Een paar regeltjes:
• Mocht je iets willen zeggen waardoor anderen ongewild dichter in de buurt van het antwoord kunnen komen, zet er dan [spoiler]-tags omheen!
• Blijf ontopic aub.
• Errm... Verdere regels bedenk ik wel als ze nodig zijn ;)
Opdrachten
Opdracht 1
Opdracht 2
Nieuwe opdrachten komen uit zodra ik er tijd en zin voor heb. Mocht je zelf een gaaf idee hebben, schroom dan niet me te DMmen.
Disclaimer

Ik weet niet alles en kan fouten maken: mocht je door de instructies hierin $heel_duur_apparaat opblazen is de auteur of Tweakers.net niet verantwoordelijk. Mocht je huis met $duur_beveiligingssysteem leeggeroofd zijn door iemand die dit topic gelezen heeft, zijn de auteur of Tweakers.net evenmin verantwoordelijk. Deze howto is op dit moment geschreven voor GoT; vraag me om toestemming als je het wilt herdistribueren. De hex-bestanden die hier gepost zijn door de auteur vallen in het publieke domein, tenzij anders aangegeven. Alle rechten voorbehouden, void when prohibited, bladiebla etc.

Sprite_tm wijzigde deze reactie 01-07-2010 22:18 (6%)

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14

Opdracht 1.

Hoewel dit meer een inkomertje is dan daadwerkelijk het hacken van een serieuze beveiliging, geeft het op zich wel wat aan over hoe het kraken van een 'echte' beveiliging werkt.
Theorie
We gaan het hier hebben over een apparaat wat een code vraagt; pas als je de goede code intikt gaat 'ie bezig 'iets' te doen. Mocht je je daar niets bij voor kunnen stellen, denk aan de deur uit de actiefilms waar een numeriek toetsenbord naast hangt: druk de juiste code in en de deur gaat open, druk de foute code in en er gebeurt helemaal niets. Er zijn meerdere manieren om de deur zonder de code te weten te openen:
  • De code kan 'gegokt' worden. Zonder verdere informatie zul je echter alle codes moeten aflopen om de juiste pincode te krijgen. Film-equivalent: het 'kastje' wat de hacker in het verhaal aan het codeslot hangt wat 1-voor-1 de nummers van de code uitvogelt.
  • De hardware moet 'overtuigd' worden om de deur zonder de juiste code alsnog open te maken. Film-equivalent: Shotgun op het code-kastje en door de daaropvolgende kortsluiting valt de stroom over het slot weg en de deur is open.
  • Om de hardware heenwerken. Film-equivalent: RPG op de deur mikken >:)
We gaan in deze eerste opdracht de code proberen te gokken. Stel: je hebt een codeslot van 4 cijfers. Weet je verder niets over de code, betekent 10*10*10*10=10000 mogelijkheden die je uit zou moeten proberen om het slot open te maken (Dat is bruteforcen: begin bij 0001, als die fout is pak 0002, als die niet lukt probeer 0003 enzovoort.) Mocht je echter extra info kunnen bemachtigen worden de mogelijkheden al snel minder: als je ziet dat de 3, 4, 5 en 6 behoorlijk versleten zijn weet je dat alleen die cijfers gebruikt worden en hoef je nog maar 4*4*4*4=256 combinaties te proberen (Je weet namelijk dat je alle codes waar iets anders dan 3, 4, 5 en 6 inzit al meteen overgeslagen kunnen worden.) Mocht je deze manier van kraken proberen is het dus zaak om zo veel mogelijk informatie te verkrijgen: let goed op op je omgeving, welke signalen je krijgt en wat je daaruit af kan leiden: waarom zijn signalen zoals ze zijn? Als je een verschil ergens in opmerkt tov de vorige keer dat je een code probeert in te tikken: waarom is dat? Is het misschien omdat de code die je nu uitprobeert 'beter' of 'slechter' is dan de vorige?

Dit is een vrij nietszeggend stukje theorie, ik weet het :) maar ik wil toch graag door naar de...
Praktijk
Het hex-bestandje wat je krijgt zal de film-deur uit het tekstje hierboven simuleren via de seriele poort van de AVR. Het idee is dat je een code van 4 cijfers intikt op je PC; de AVR zal als 'ie de code fout vind 2 seconden wachten (als brute-force-beveiliging) en daarna 'WRONG' over de serieele poort terugsturen. Mocht je de code wel goed hebben zal je een 'OK terug over de lijn krijgen. Er zit echter een gigantisch gapend gat van een design flaw in het algoritme... kan je vinden wat dat is en daardoor de code vinden?

Je hebt voor deze opgave niet meer nodig dan de geprogrammeerde AVR (plus voeding en 8MHz kristal) en hardware om de seriele poort ervan op je PC aan te sluiten. Dit is het schema:
http://meuk.spritesserver.nl/uchacktut/lesson1.png
Dit is hoe ik 't opgebouwd heb:
http://meuk.spritesserver.nl/foto/foto/misc12/tmb-IMG_7634.JPG

Het .hex-bestand die je in de AVR moet programmeren kan je hier naarbenedenladen. Als je 'm in je AVR aan het branden bent, zet dan meteen even de fuses goed: de low fuse moet op 0xFD staan, de high fuse op 0xDF; zie de handleiding van het brandprogramma wat je gebruikt om erachter te komen hoe je dat moet doen. Als je het geheel aangesloten hebt zou je via de serieele poort op 9600 baud, 8 databits, geen paritybit en 1 stopbit (9800, 8n1) met het dingetje moeten kunnen communiceren. Je hebt verder geen meetinstrumenten of eigen uC nodig om deze opdracht te voltooien: je terminal en een goed stel hersenen zijn voldoende. Succes met de code uitvogelen!

Nog even wat zaken voor als je schakeling niet in 1 keer werkt:
• Zodra de microcontroller op de voeding aangesloten is, stuurt 'ie "Ready!" over de seriele port naar buiten. Krijg je die tekst weet je in ieder geval dat de microcontroller werkt.
• De cijfer die je intikt zie je niet terug op het scherm
• Een enter ofzo intikken na de combinatie die je uit wilt proberen is niet nodig: als je de cijfers ingetikt hebt krijg je meteen (na de 2 seconden delay iig) te zien of je code goed of fout is.
Hints
Natuurlijk niet kijken tot je 't echt niet meer weet.
spoiler:
(Nu al spieken? Je hebt de hardware nog niet eens opgezet, lul!)
Nog geen hints, probeer het eerst nog maar wat langer.

Sprite_tm wijzigde deze reactie 27-06-2010 01:05 (13%)

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


  • Fable
  • Registratie: juli 2009
  • Laatst online: 21:53
haha, nice spoiler :D

  • danielkraak
  • Registratie: juli 2006
  • Laatst online: 21-07 17:10
Leuk idee. Ik heb hier nog een Attiny2313 liggen, maar ik heb geen serial port. Of zou het ook mijn mijn USB-brander werken die eigenlijk gewoon een USB-Serial converter is?

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
Als je 'm ook zo kan gebruiken moet 't idd wel lukken dunkt me. De unit die ik gebruik is bijvoorbeeld stiekem ook een programmeerplug voor een Propellor-processor.

Sprite_tm wijzigde deze reactie 26-06-2010 23:05 (44%)

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


  • L0we
  • Registratie: mei 2004
  • Laatst online: 20-07 13:32
Cool idee!

Eens kijken of ik van de week wat tijd kan vinden om er eens in te duiken.

ben alleen bang dat ik het antwoord op die vraag al weet :(

  • lasharor
  • Registratie: december 2004
  • Laatst online: 21-07 17:53
offtopic:
misschien, is het wel leuk als terminologie en bepaalde andere ,voor de leek niet begrijpbare, materie goed uitgelegd gaat worden. Dit lijkt me imo leuk om te lezen maar, ik voorzie nu al dat ik er persoonlijk vrijwel niets van zal snappen omdat het waarschijnlijk voor mij totaal onbegrijpbaar gaat worden.

First Person View Drone racen!! - Ook meedoen? - Zelf proberen?


  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
In dat geval: vraagt vooral! Ik zit al vrij lang in de materie, en het kan zijn dat ik termen gebruik waarvan ik denk dat ze compleet begrijpelijk zijn; het valt me niet eens op dat er mensen zullen zijn die niet precies weten wat er gebeurt. Ik zal iig morgen of zodadelijk nog even over het verhaal heenlezen, misschien dat ik direct al het een en ander wat kan versimpelen.

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
Twee vraagjes;

- Is het kristal strikt noodzakelijk (er is ook een interne 8Mhz klok)?
- Geeft de Hex enige informatie dat er een connectie is?

  • Onbekend
  • Registratie: juni 2005
  • Laatst online: 23:39
Leuk idee voor zo'n project.
"t Is jammer dat ik alleen maar met PICs heb zitten hobbyen. En dat was alleen maar omdat de gratis samples van Atmel toen 2 maanden levertijd hadden. :(

Is het een idee om de C of ASM-code ook neer te zetten? Hierdoor zullen er waarschijnlijk (volgens mij) wel meer geïnteresseerden zijn terwijl ze nog nooit iets voor een uC hebben geprogrammeerd.

Speel ook Airplane Manager | De moeilijke puzzel!


  • Fish
  • Registratie: juli 2002
  • Niet online

Fish

How much is the fish

de source code ?

Het idee is toch dat je een black box aan het kraken bent :?

Iperf


  • FireWood
  • Registratie: augustus 2003
  • Laatst online: 20-07 22:58
spoiler:
Als je de hex code in een hex editor gooit kom je ook al een eind

Noobs don't use "F1", Pro's do, but they can't find the information they needed


  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
_Danny_: Waarschijnlijk wel. Voor de eerste opdracht kan je waarschijnlijk ook zonder, moet je wel even de fuses anders programmeren. Voor de latere opdrachten heb je waarschijnlijk wel een echt kristal nodig.

Onbekend: Kennis van de AVR an sich is hier niet voor nodig: ik wil de tutorials zo processor-onafhankelijk maken als maar kan en heb alleen de ATTiny2313 gekozen omdat ik dat toevallig een leuke proc vind :) Met je pic-kennis moet je dit in principe even goed kunnen doen als als je voor AVRs gekozen had.

h.edink: Als de opdrachten van een wat hoger nivo worden ga ik wel 'interessantere' manieren verzinnen om de pincode in de avr te krijgen. For now loop je echter vooral jezelf te cheaten als je in de hex spiekt.

Sprite_tm wijzigde deze reactie 26-06-2010 23:44 (17%)

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
euh ... Als je de C of ASM code hier neer gaat zetten wordt het wel erg makkelijk toch? Een 2313 koop je voor bijna niets. Een AVR programmer is ook peanuts, zeker als je de parallelle versie kunt gebruiken (overigens heb ik er daar nog twee van liggen mocht iemand interesse hebben).

Ik gebruik zelf een tinyusb programmer van ladyada - een cheap bouwpakketje dat top werkt.

Zie het als een investering in je kennis!

-- EDIT --
Fuses zonder kristal zijn volgens mij (en engbedded): lfuse E4 hfuse DF

_Danny_ wijzigde deze reactie 26-06-2010 23:46 (8%)


  • Onbekend
  • Registratie: juni 2005
  • Laatst online: 23:39
quote:
fish schreef op zaterdag 26 juni 2010 @ 23:39:
de source code ?

Het idee is toch dat je een black box aan het kraken bent :?
Ik begrijp uit de inleiding dat er gewoon "gedachtefouten" in de code zitten. Dus situaties waar een programmeur niet aan heeft gedacht.
De gegeven HEX-code kan ook handmatig naar ASM overgezet worden, maar dat kost wat werk. 8)

Speel ook Airplane Manager | De moeilijke puzzel!


  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
Onbekend: Het idee is dat je de 'gedachtenfouten' ook kan herkennen als je niet de sourcecode hebt, of zelfs maar fysiek bij de microcontroller kan. Jah, de code kan je atm gewoon uit de hex lezen als je wat moeite doet, maar daar heb je niets aan als je de hex niet hebt.

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


Acties:
  • 0Henk 'm!

  • LED-Maniak
  • Registratie: oktober 2003
  • Laatst online: 23:01

LED-Maniak

Bakkers klaar? Bakken maar!

Valt dat ook niet onder de 'gedachte fout'? De fabriek is vergeten de controller te beveiligen en dus blijkt hij uit te lezen zijn? :P

Spuit 11 ofzo

LED-Maniak wijzigde deze reactie 27-06-2010 00:16 (8%)

Appeltaart is lekker!


Acties:
  • 0Henk 'm!

  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
Ik heb niet de indruk dat een WRONG echt twee seconden duurt?

En mogelijk;
spoiler:
Er is geen lockout, een brute force duurt maximaal 11 uur ... - sorry. 2 seconden timeout dus 22 uur -


BTW - Met de fuses op E4-D4 krijg ik regelmatig "WRONG" ... Zonder kristal werkt dus op dit moment

_Danny_ wijzigde deze reactie 27-06-2010 00:44 (30%)


Acties:
  • 0Henk 'm!

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
Bruteforcen zou hier inderdaad kunnen, maar is niet echt de bedoeling; als je weet hoe kan je in een paar minuten de juiste code achterhalen.

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


Acties:
  • 0Henk 'm!

  • LED-Maniak
  • Registratie: oktober 2003
  • Laatst online: 23:01

LED-Maniak

Bakkers klaar? Bakken maar!

spoiler:
Gedachtegang:
Als er een delay in zit van 2 seconde dan zou je na het succesvol overdragen van de code de avr tijdelijk op een hogere frequentie(20Mhz bijv) kunnen laten lopen. Dan zou het nog maar 0.8 seconde duren en dus 'maar' 4.4uur om te kraken ipv. 11 uur. Ik weet niet of het lukt(niet in real life getest) maar wat als je hem nou altijd op 20MHz laat lopen en de uart ook omhoog doet naar 2.5 keer 9600 dus naar 24.000 kbps. Zou je dan ook sneller klaar zijn? :)

Maar dat is inderdaad bruteforce ja.. Nog maar eens denken hoe je dat anders zou kunnen doen.

LED-Maniak wijzigde deze reactie 27-06-2010 00:50 (9%)

Appeltaart is lekker!


Acties:
  • 0Henk 'm!

  • wartos
  • Registratie: december 2006
  • Laatst online: 17-07 10:28
Mss is het handig om hex'en ter naarbenedenladen aan te bieden voor verschillende uC's? De ATMega88/168/328 zijn ook vrij courante types. (en toevallig heb ik enkel die liggen ;) )
Als je in C programmeert is het niet zo'n grote moeite om meerdere compiles te maken en je spreekt er direct een groter doelpubliek mee aan...


*Kijkt Sprite_tm lief aan*

Acties:
  • 0Henk 'm!

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
Joah, ik kan morgen voor iig de eerste wel een ATMegaxx8-compile maken. Geen idee of dat me ook voor de rest van de opdrachten gaat lukken tho'; ik moet namelijk wel zeker weten dat hetgene wat ik uitleg ook voor de andere cpus geld.

LED-maniak: Da's ook brute-forcen :) maar ik moet zeggen dat ik de manier waarop je denkt wel OK vind; ik had aan dat soort geintjes zelf nog niet gedacht ;)

Sprite_tm wijzigde deze reactie 27-06-2010 01:03 (25%)

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


Acties:
  • 0Henk 'm!

  • Boudewijn
  • Registratie: februari 2004
  • Laatst online: 06:36

Boudewijn

omdat het kan

Hieronder wat gefilosofeer, lijkt me geen oplossing. Dit nav LED-maniak.
spoiler:
Theorie: is het niet zo dat de atmel meer stroom trekt als hij verder rekent. Als in: Stel dat sprite zoiets doet:

if getal0 == w getal1= x && getal2 == y && getal3 == z
print "klaar"
else
print "not klaar"
fi


Nu zie je dat als getal0 klopt de CPU langer actief blijft omdat hij de 2e vergelijking moet maken. Dit zul je in het stroomverbruik merken van het ding.

Echter is het niet triviaal om dat te meten zonder apparatuur dus dat lijkt me ook niet het trucje.

@Sprite: in hoeverre is dit haalbaar? Puur los gefilosofeer mijnerzijds. Weerstandje in de voedingslijn en scope over weerstandje.

Boudewijn wijzigde deze reactie 27-06-2010 01:06 (9%)


Acties:
  • 0Henk 'm!

  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
Ok, ik heb de code, en het geheim is erg simpel ...

Hele echte spoiler!!
spoiler:
kijke eens hoelang een WRONG melding op zich laat wachten na het indrukken van een toets ...

Acties:
  • 0Henk 'm!

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
@Boudewijn: Da's een andere manier van cracking die in een volgende opdracht aan bod komt; hier heb je 'm nog niet nodig, Je kan trouwens ook niet echt uit alleen de beschrijving de truuk halen; je moet bij deze opdracht echt even spelen met het ding voordat je erachter kan komen.

_Danny_: Feli!

Sprite_tm wijzigde deze reactie 27-06-2010 01:08 (3%)

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


Acties:
  • 0Henk 'm!

  • LED-Maniak
  • Registratie: oktober 2003
  • Laatst online: 23:01

LED-Maniak

Bakkers klaar? Bakken maar!

Ha, je maakt me wel erg benieuwd zo :P . Lijkt me veel van te leren!

Morgen eens in een mega168 gooien als je daar de hex van hebt :)

Appeltaart is lekker!


Acties:
  • 0Henk 'm!

  • Boudewijn
  • Registratie: februari 2004
  • Laatst online: 06:36

Boudewijn

omdat het kan

quote:
Sprite_tm schreef op zondag 27 juni 2010 @ 01:07:
@Boudewijn: Da's een andere manier van cracking die in een volgende opdracht aan bod komt; hier heb je 'm nog niet nodig, Je kan trouwens ook niet echt uit alleen de beschrijving de truuk halen; je moet bij deze opdracht echt even spelen met het ding voordat je erachter kan komen.
Ik zit bij mijn ouders en heb echt helemaal niets behalve mijn laptop ;).

Zou mijn idee trouwens in theorie haalbaar zijn?

Acties:
  • 0Henk 'm!

  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
Mijn eerste gedachte was; Als ik niet direct OK krijg haal ik de spanning van de AVR, "rebooten" duurt minder dan 2 seconden zelfs minder dan 0,8 seconden (=16 Miljoen no-ops op 20Mhz).

Acties:
  • 0Henk 'm!

  • robint91
  • Registratie: april 2007
  • Laatst online: 24-09-2014
spoiler:
HV-programmer + debugwire: clearen van lockbits en dan wat in de registers prullen


Wat hou ik toch van mijn AVR-dragon!

robint91 wijzigde deze reactie 27-06-2010 09:13 (25%)


Acties:
  • 0Henk 'm!

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
_Danny_: Had niet gewerkt: die 2 seconden moet je ook wachten voor 'ie 'OK' zegt.

robint91: Kan je doen maar in de praktijk staan die lockbits natuurlijk zo dat debugwire uitgeschakeld is.

Ik heb ook even een versie voor de Mega88 gebakken; voor zover ik weet zou deze ook op de Mega48, mega168 en mega328, met of zonder -a of -p, moeten werken. Ik heb 'm echter niet getest dus garanties krijg je er niet bij.

Sprite_tm wijzigde deze reactie 27-06-2010 12:01 (12%)

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


Acties:
  • 0Henk 'm!

  • Coolbone
  • Registratie: november 2008
  • Laatst online: 10-09-2014
quote:
Boudewijn schreef op zondag 27 juni 2010 @ 01:34:
[...]

Ik zit bij mijn ouders en heb echt helemaal niets behalve mijn laptop ;).

Zou mijn idee trouwens in theorie haalbaar zijn?
Dit idee is zeker haalbaar. Google maar eens op "vermogen aanvallen".

Brb feeding the watchdog.


Acties:
  • 0Henk 'm!

  • Springuin
  • Registratie: juli 2002
  • Laatst online: 18-07 16:45
Voor de copy-paste mensen die geen zin hebben het juiste avrdude commando uit te zoeken: programmeren doe je zo:
avrdude -pattiny2313 -cusbasp -e -Uflash:w:lesson1.hex -Ulfuse:w:0xfd:m -Uhfuse:w:0xdf:m

edit: usbasp moet je dus vervangen door je eigen type programmer

'k heb hem, spoilers lezen is slecht voor je creativiteit. Wellicht moeten we even wachten met het posten van ook maar iets spoiler-achtigs totdat er een dag of drie voorbij is.

Ik vindt het trouwens een erg leuk initiatief, Sprite_tm!

Springuin wijzigde deze reactie 27-06-2010 12:55 (43%)


Acties:
  • 0Henk 'm!

  • robint91
  • Registratie: april 2007
  • Laatst online: 24-09-2014
Sprite_tm: Daar voor heb je je high voltage programmer waar je de lockbits kunt uitzetten. Dan is het ook simpel om het programma der uit halen.
En dat kan met een STK500 of AVR-DRAGON.

Acties:
  • 0Henk 'm!

  • Sh4wn
  • Registratie: december 2006
  • Laatst online: 12-11-2017

Sh4wn

Bio-informatica

Ik krijg dinsdag mijn AVRtjes binnen, dus dan ga ik ook even wat spelen :)

Acties:
  • 0Henk 'm!

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
robint91: Als de code-protection-bits aanstaan kan je je lock-bits alleen uitzetten als je daarmee ook het programmageheugen wist. In de praktijk heb je de code van de uC niet en zit je dan met een ge-unlockede, maar waardeloze, controller.

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


Acties:
  • 0Henk 'm!

  • Boudewijn
  • Registratie: februari 2004
  • Laatst online: 06:36

Boudewijn

omdat het kan

offtopic:
Als er mensen in de buurt van Leiden zijn die geen spullen hebben en een keer een middagje wat spul willen gebruiken voor dit projectje mogen ze DMen. Ik heb vrij veel speelgoed.

Acties:
  • 0Henk 'm!

  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
@springuin: Er staan natuurlijk niet voor niets spoiler tags omheen ... ik heb er zelfs nog aan toegevoegd dat het een hele echte spoiler is ;)

Acties:
  • 0Henk 'm!

  • Rubu
  • Registratie: september 2007
  • Laatst online: 04-06 08:20
cool initiatief! ik heb het helaas een beetje druk met tentamens en daarna vakantie, maar daarna ga ik ook wel een poging wagen, tot die tijd hard m'n best doen om geen spoilers te lezen :P

Acties:
  • 0Henk 'm!

  • DaWaN
  • Registratie: oktober 2002
  • Laatst online: 21-07 14:09

DaWaN

'r you wicked ??

Ik heb de spoilers niet gelezen en ga er morgen mee aan de slag.
Misschien is het leuk om deze opdrachten -als ze echt leuk worden- niet als HEX file te leveren maar als gelockte ATTiny's...voorkomt cheaters :)

If you do not change direction, you may end up where you are heading


Acties:
  • 0Henk 'm!

  • pientertje
  • Registratie: februari 2009
  • Niet online
grrr, door alle lollige spoilers heb ik nou ook de echte spoiler gelezen. Maar goed tegen de tijd dat ik al genoeg avrtjes in huis heb is opdracht 2 wel aan de gang denk ik.

  • ikbenalzeven
  • Registratie: juni 2009
  • Laatst online: 20-07 17:34
super tof dat je dit hebt opgezet, sprite_tm!

binnenkort maar eens een poging wagen. tot die tijd kom ik niet meer in dit topic, want de drang om de spoilers te lezen is veel te groot. ;)

  • Anthor
  • Registratie: juni 2002
  • Niet online
Ik heb de opdracht vanochtend ook even gedaan.

Ik had toen ik begon een probleempje met putty:
spoiler:
Met de standaard instellingen die ik had moest ik een enter geven om de data te versturen.
Die enter werd ook verstuurd, en gezien als foute input.


p.s.
Waarom een 8 Mhz kristal? Dat is juist degene die ik niet heb liggen omdat de rc-oscillator al 8 MHz doet.

  • _ferry_
  • Registratie: januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

Ik vind het idee erg leuk.
Alleen zou ik niet weten waar te beginnen :P Dus ik kijk voorlopig nog even mee :)

echte
spoiler:
Ah met de eerste spoiler+ bovenstaand bericht snap ik al wat
quote:
Hun naam verwezenlijken: Tips/oplossingen, dus je moet de tekst selecteren als je zeker weet dat je mogelijk de oplossing wilt lezen.

_ferry_ wijzigde deze reactie 28-06-2010 11:35 (68%)


  • Xanquezer
  • Registratie: maart 2009
  • Laatst online: 16-07 21:06
Wat zijn die spoilers voor?

DPC Chef-kok :)


  • Anthor
  • Registratie: juni 2002
  • Niet online
quote:
_ferry_ schreef op maandag 28 juni 2010 @ 11:30:
[...]

Hun naam verwezenlijken: Tips/oplossingen, dus je moet de tekst selecteren als je zeker weet dat je mogelijk de oplossing wilt lezen.
Of om nieuwsgierigheid op te wekken :P
geen echte spoiler:




  • Xanquezer
  • Registratie: maart 2009
  • Laatst online: 16-07 21:06
Ah zo!
Dus selecteren om echt door te lezen..
Zo ver was ik al, maar misschien was er een speciale codering voor of zo :P

Hoe maak je zulke spoilers?

geen echte spoiler:


Mij lukt het niet

DPC Chef-kok :)


  • epic_gram
  • Registratie: april 2010
  • Laatst online: 10-07 21:13

epic_gram

undercover moderator


code:
1
[spoiler=title] spoiler tekst [/spoiler]

Het Centrale Vodka Topic! win een iPad! Kras hier met een sleutel of ander scherp voorwerp: ███████████


  • Xanquezer
  • Registratie: maart 2009
  • Laatst online: 16-07 21:06
spoiler: 1ste keer :D
Ahhh, kijk
Weer wat geleerd!

Heel erg bedankt! :D

Xanquezer wijzigde deze reactie 28-06-2010 12:24 (25%)

DPC Chef-kok :)


  • Zjosh
  • Registratie: november 2004
  • Laatst online: 03-07 20:13
Dit lijkt me ook wel tof om aan mee te doen! Ik heb hier echter alleen maar een atmega 32 liggen... Iemand in enschede die zo'n andere over heeft? Morgen maar eens langs bij de stores, misschien dat die die dingen wel hebben liggen.

Heb natuurlijk al wel bedacht hoe we dit varkentje gaan wassen... ligt hier een heerlijke 18F2550 klaar om het atmeltje het vuur aan de schenen te leggen.

  • Boudewijn
  • Registratie: februari 2004
  • Laatst online: 06:36

Boudewijn

omdat het kan

Wat wil je met die pic gaan doen?

  • NjitsSs
  • Registratie: oktober 2007
  • Laatst online: 22:29
spoiler: Even een rare gedachtenkronkel...
Als bij het juist bevinden van de code er onmiddellijk een antwoord komt van de microcontroller... Dan kun je die 2 seconden delay wel overbruggen. B.v. Langer dan 50mS wachten op een antwoord = reset even omlaag en volgende code proberen. Dat zou het brute forcen natuurlijk wel wat versnellen... Hangt natuurlijk ook af van de tijd die de µC nodig heeft om te starten.

  • LED-Maniak
  • Registratie: oktober 2003
  • Laatst online: 23:01

LED-Maniak

Bakkers klaar? Bakken maar!

@njitsSs
Dat is al eerder geopperd maar zou geen effect hebben heb ik begrepen.

Appeltaart is lekker!


  • Zjosh
  • Registratie: november 2004
  • Laatst online: 03-07 20:13
@Boudewijn

spoiler:
Daarmee wil ik de atmel data gaan sturen. Ik ben niet zo'n hele grote expert met het besturen van seriele poorten op de pc (misschien dat putty wel nauwkeurig kan timestampen...). Ik laat dat liever over aan mijn PIC, kan ik ook wat nauwkeuriger de tijd tussen verzenden en ontvangen meten. In latere stadia van deze crack course verwacht ik nog wel wat dingen te moeten gaan meten aan stroomverbruik enz... maar beter meteen goed beginnen.

  • Boudewijn
  • Registratie: februari 2004
  • Laatst online: 06:36

Boudewijn

omdat het kan

@Zjosh:
spoiler:
Ook mijn idee. Ik wil mijn pc gewoon zoveel mogelijk data in de AVR laten beuken.
Vroeg of laat gaat hij dan wel 'open'.

Echter.... je weet dan de code nog niet. Ik weet niet of dat het hoofddoel is.


Uitleg:

Typische 'fuck up' is dat de 'reject' message pas na 2 secs wordt teruggestuurd, maar de unlock-actie als hij slaagt eerder 'gebeurt'. Gewoon continu er messages in blijven spammen en niet blijven wachten op bevestiging.

Probleem 1: Als je alfabet en keylength niet kent is het niet handig te voorspellen.
Probleem 2: De applicatie moet multithreaded zijn of met interrupts werken hiervoor. Als je hem compleet freezet voor 2 secs (en gewoon de inputs negeert) dan is het zo opgelost.

Boudewijn wijzigde deze reactie 29-06-2010 00:41 (54%)


  • Zjosh
  • Registratie: november 2004
  • Laatst online: 03-07 20:13
@ Boudewijn

spoiler:
Ik zat toch aan een iets subtieler methode te denken om het beestje te breken. Aangezien sprite het heeft over een gigantische fout in het algoritme wat gebruikt word om het juiste wachtwoord te selecteren, wil ik daar gebruik van gaan maken. Ik heb al een vermoeden wat er fout moet zijn, maar dat gaan we merken met het testen.

  • Boudewijn
  • Registratie: februari 2004
  • Laatst online: 06:36

Boudewijn

omdat het kan

Hmmm interesting. Maar ik begrijp dat het hier puur een software bugje is.
Geen gereedschap nodig dus , in dat geval.


@Sprite: echt verdomd interessant kerel!

  • Killerbert
  • Registratie: september 2007
  • Laatst online: 17-07 10:01
leuke opdracht!
helaas heb ik geen ATTiny.. ik zit hier met een pic (16f688)..
misschien dat iemand daarvoor een hex file wil maken..

Op een dag drink je geen bier meer maar drink je Grolsch... My specs


  • Boudewijn
  • Registratie: februari 2004
  • Laatst online: 06:36

Boudewijn

omdat het kan

Zou kunnen , maar is het niet makkelijk om voor 2.50 een atmelletje te kopen?
Scheelt sprite heel veel devtijd denk ik zo.

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
Inderdaad. Verder is dit misschien nog wel een software-only crack; later ben ik van plan ook zaken te doen waarvoor je in de hardware zaken moet veranderen. Als ik standaardiseer op 1 uC kan ik zelf testen wat er precies nodig is om de beveiliging te kraken, maar als ik ook Mega88's, PICs, ARMs of whatever ga ondersteunen moet ik dat voor elke individuele chip testen, en daar heb ik de tijd en zin niet voor; zeker niet omdat je die AVRs in principe voor minder dan E2 al kan kopen.

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


  • Mr_x007
  • Registratie: oktober 2001
  • Laatst online: 21:18
was even prutsen en uitvogelen, maar binnen 100 keer proberen gelukt!

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
Poll: En, heb je de eerste opdracht al?
Yep, ik weet de code nu.
Nope, ik ben nog aan het prutsen
Ik heb de hardware nog niet.
Te moeilijk voor me :/
Tussenstand:
http://poll.dezeserver.nl/results.cgi?pid=359230&layout=6&sort=org
Ook een poll maken? Klik hier

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


  • Killerbert
  • Registratie: september 2007
  • Laatst online: 17-07 10:01
@boudewijn, sprite

het zou idd makkelijker zijn om gewoon een atmeltje te kopen voor een paar euro.
maar, ik en anderen moeten dan ook een seriële kabel maken, een prog kabel enz.

ik kan 't er zelf wel in programmeren, als ik de code heb.
maar dan weet ik de oplossing ook al O-) (wat niet de bedoeling is...)

Killerbert wijzigde deze reactie 29-06-2010 19:42 (4%)

Op een dag drink je geen bier meer maar drink je Grolsch... My specs


  • Zjosh
  • Registratie: november 2004
  • Laatst online: 03-07 20:13
Oke, was een stuk makkelijker dan ik dacht... 33x proberen :P

De grote fout in het programma was nog een tikkie groter dan ik dacht:P

Zjosh wijzigde deze reactie 29-06-2010 20:15 (38%)


  • _ferry_
  • Registratie: januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

Ik wil kijken of ik morgen op mijn werk de uC kan proggen. Maarre.. met wat verzenden jullie codes/data, gewoon windows hyperterminal?

  • ikbenalzeven
  • Registratie: juni 2009
  • Laatst online: 20-07 17:34
ik gebruik deze: http://realterm.sourceforge.net/
maar windows hyperterminal zou ook moeten volstaan.

/edit: het is mij ook gelukt! zeer zwakke beveiliging zo. ;)
ik wacht met smart op de volgende uitdaging!!

ikbenalzeven wijzigde deze reactie 29-06-2010 21:40 (35%)


  • DaWaN
  • Registratie: oktober 2002
  • Laatst online: 21-07 14:09

DaWaN

'r you wicked ??

Zo ik heb ook eindelijk mijn setup af :)



U ziet:
ATTiny2313 bordje
MAX232 bordje
USB-->Serieel unit
AVR Dragon

Nu nog achter zien te komen waarom het zo makkelijk is :D

If you do not change direction, you may end up where you are heading


  • DaWaN
  • Registratie: oktober 2002
  • Laatst online: 21-07 14:09

DaWaN

'r you wicked ??

Echte spoiler !
spoiler:

oplossing+code:
Zo dat was makkelijk
Het viel mij meteen op dat het ding meteen WRONG zei zodra je ook maar één van de cijfers verkeerd deed... tja even alle combinaties proberen waarbij de WRONG uitbleef en zo erachter gekomen dat de combinatie 1471 is
Ik ben klaar voor de volgende challenge :)

_ferry_ wijzigde deze reactie 30-06-2010 07:30 (6%)
Reden: xtra waarschuwing

If you do not change direction, you may end up where you are heading


  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
Heeft dat dragon bord geen TTL RS232?? valt me een beetje tegen :P

Volledig offtopic: Die USB-Serial converter heeft (natuurlijk) al een max232 (kloon) aan boord ... lijkt een beetje zonde, TTL -> max232 -> max232 -> TTL ... Aan de andere kant heb ik het idee dat (bijvoorbeeld) een pl2303 soms een te lage spanning geeft voor TTL (waardoor het lijkt of signalen niet aankomen)?

PS: de spoilers beginnen nu wel hele hele echte spoilers te worden ...

  • DaWaN
  • Registratie: oktober 2002
  • Laatst online: 21-07 14:09

DaWaN

'r you wicked ??

quote:
_Danny_ schreef op woensdag 30 juni 2010 @ 01:23:
Heeft dat dragon bord geen TTL RS232?? valt me een beetje tegen :P

Volledig offtopic: Die USB-Serial converter heeft (natuurlijk) al een max232 (kloon) aan boord ... lijkt een beetje zonde, TTL -> max232 -> max232 -> TTL ... Aan de andere kant heb ik het idee dat (bijvoorbeeld) een pl2303 soms een te lage spanning geeft voor TTL (waardoor het lijkt of signalen niet aankomen)?
Het is idd beetje jammer dat die Dragon niets anders doet dan programmeren en debuggen, aan de andere kant vind ik het wel een top ding. Ik heb hier ook een USBasp liggen maar die wordt lang niet altijd herkent als USBasp als ik hem in mijn laptop steek...ding werd ik zo vreselijk zat. Directe integratie met AVR studio is ook ideaal :)

En die USB --> RS-232 converter haal ik voorlopig nog even niet uit elkaar, ik gebruik dat ding voor meerdere devboardjes en de meeste hebben al een MAX232 aan boord... Dus even zo'n MAX3232 printje gebouwd zodat hij nu compatible is met al mijn bordjes. Het leuke aan de MAX3232 is dat hij prima werkt op 5V maar ook op 3,3V dus hij is ook meteen compatible met mijn 3,3V FPGA :)

If you do not change direction, you may end up where you are heading


  • Springuin
  • Registratie: juli 2002
  • Laatst online: 18-07 16:45
DaWaN, is dat de goedkoopste usb-serieel converter van dealextreme? Wist je dat je daar ook de level converter af kunt halen en dan een usb-5V serieel converter hebt? 't is ff creatief met draadjes, maar dan heb je geen max232 meer nodig en je hebt ook 5V tot je beschikking.\

_Ferry_: hyperterminal werkt prima, putty werkt ook, echo 1234>com1: ook, alleen je ziet niks terugkomen ;) Onder linux gebruik ik picocom.

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14

Opdracht 2

Niet alle zaken zijn zo makkelijk te hacken als de uC uit opdracht 1. Zo nu kom je een microcontroller tegen die (gasp!) geen obvious fout in de beveiliging heeft. Je hebt echter wel toegang tot de hardware, en die toegang is (natuurlijk) te misbruiken.
Geschiedenis
Een hoop van deze security-hacks komen oorspronkelijk weg van het PayTV-circuit. Net zoals nu had je voor bijvoorbeeld satteliet-ontvangst een decoder nodig, waar je een smart-card inschoof. De smart-card was bedoeld als 'sleutel': alleen als de smartcard bepaalde berekeningen voor de decoder kon uitvoeren, kon het signaal gedecrypt worden. Vroeger waren de smartcards nog vrij simpele dingetjes: bijvoorbeeld een PIC16C84 of een AT90S2313 waren vrij standaard. (Tegenwoordig zitten er best brute cryptoprocessoren in die je niet zo 123 meer op deze manier hackt.)

Een abonnement op een sattelietkanaal heb je natuurlijk niet voor het leven: zodra je stopt met betalen moet de sattelietzender ervoor zorgen dat je decoder z'n ding niet meer kan doen zodat je geen TV meer kan kijken. Dit gebeurt door een soort van 'kill-signal' met het TV-signaal mee te sturen: via het TV-signaal word de smartcard verteld dat z'n diensten niet meer nodig zijn. De smartcard zette dan een bitje in z'n geheugen en weigerde verder te werken. Vaak gebeurde dit ongeveer als volgt:
code:
1
2
3
4
5
6
7
8
9
10
void commitSuicide() {
    writeEeprom(disabledBit, 1);
}

void main() {
    if (readEeprom(disabledBit)==1) {
        while(1);
    }
    goDecryptSignal();
}

Het niet-eindigende while-loopje werd hierbij door de compiler omgezet in een enkele 'hang: jmp hang'-assembly-instructie; de smartcard reageerde hierdoor compleet niet meer en kon weggegooid worden.

Of niet? Slimme hackers kwamen erachter dat je een aantal truukjes kon uitvoeren om uit de oneindigende loop te komen: het zogenaamde unloopen van een card. Een ervan is...
Voltage-glitching
De truuk hierachter is dat een microcontroller rare dingen gaat doen als je er een voedingsspanning opzet die buiten z'n bereik ligt. Vaak is het zo dat je uC tijdelijk helemaal niets meer doet als de spanning constant te laag is en permanent niets meer doet als 'ie te hoog is, maar als je spanningsdip of -piek maar klein genoeg is, komen slechts gedeeltes van de chip onder een te lage (of te hoge) spanning te staan. Daar kunnen enkele... interessante... resultaten uitkomen.
Praktijk
Hoewel een glitch een makkelijke manier is om een microcontroller net een instructie iets anders uit te voeren dan bedoeld is, is het daadwerkelijke uitvoeren wat lastiger: om een glitch net op het punt actief te krijgen waar je gewenste instructie uitgevoerd word is niet heel makkelijk, en dan hebben we 't niet eens over de precieze spanningsnivo's die nodig zijn, brown-out-detectoren, whatever.

Een unloop-glitch is echter erg voordelig: als er niets gebeurt kan je 't nog een keer proberen, als je uC reset kan je het nog eens proberen, als je uC wel glitcht ben je er.
De Opdracht
Wat, zonder meer info nu al een opdracht? Yep, deze is namelijk bedoeld om aan te geven hoe makkelijk het kan wezen, en er zijn vele manieren om deze code te glitchen. De volgende code vraagt om een twee-cijferig password en heeft geen anti-bruteforce-delay, maarrrrrr.... de firmware 'brickt' de chip na 5 pogingen. Aan jullie om toch het password te bruteforcen. (Of meteen al het password in 5 pogingen te gokken... maar kijk dan toch ff of je 't kan kraken.) Ter voorkoming van stukke AVRs: de glitches hoeven alleen 'naar beneden' te zijn, er is geen noodzaak om meer dan 5V op de AVR te zetten.

Het schema is hetzelfde als bij de eerste opdracht. De firmware is gecompileerd voor de ATTiny2313 of de ATMega88.

Succes. Als je 'm hebt zet dan meteen in een spoiler wat je gebruikt hebt.

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


  • Anthor
  • Registratie: juni 2002
  • Niet online
Ik heb hem.

edit:
toch maar een uitgebreidde spoiler, aangezien er al veel verklapt wordt in de andere spoilers


spoiler: met methode (pas op verborgen hyperlink)
Ik heb geen 8 MHz kristal in huis dus ik gebruik de interne oscillator.
Ik heb als eerste een spanningsdeler en een schakelaar toegevoegd

zie hier: http://www.scrap.cistron.nl/lesson2.png

De waardes van de weerstanden heb ik niet lang over nagedacht, gewoon een setje dat enigszins logisch leek om een spanning te krijgen die te laag is voor een attiny
Een beetje met de schakelaar rommelen, en opeens verscheen er -1 pogingen over.
Daarna was het gewoon codes proberen.

- Een 1K potmeter als spanningsdeler naar de voedingspin van de uC werkte ook
met een beetje rommelen (voorzichtig of snel draaien) kreeg ik soms weer 5 pogingen als ik er al een paar verbruikt had.

- ik heb net nog even geprobeerd of de eerste methode ook werkt zonder spanningsdeler. en daarbij kreeg ik ook -1 pogingen na een beetje rommelen.


Mijn idee bij het gebruiken van de schakelaar was gebruik maken van contact dender (hysterese) in de switch. Als je schakelt staat dat ding even te klapperen waardoor rare dingen gebeuren.

(cmiiaw:) Met een beetje geluk krijg je uC in een staat waarbij de registers gecleared zijn maar bv de programcounter niet , waardoor de pogingen check een leeg register krijgt, aftelt en wegschrijft

Anthor wijzigde deze reactie 02-07-2010 15:51 (91%)


Acties:
  • 0Henk 'm!

  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
Gotcha ...

Uitgebreide spoiler zonder het echte antwoord:
spoiler:
Het probleem is dat mijn werkwijze voor een ander hoogstwaarschijnlijk niet reproduceerbaar is, en ik (nog) niet precies begrijp wat er gebeurt ...

Ik heb: tiny2313 zonder extern kristal, usbtiny programmer aangesloten op ISP (inclusief voeding). In principe gebruik ik de usbtiny ook tijdens het testen als voeding.

Mijn werkwijze: Ik had in eerste instantie wat problemen met mijn terminal emulator (picocom) waardoor ik niet de kans kreeg zelf een poging te doen een getal in te geven (initalisatie van de serieele poort door picocom). Dat heb ik opgelost door een --noinit optie te gebruiken. Wat mij vervolgens opviel was dat het programma al werkt wanneer *enkel en alleen* RX, TX en GND aangesloten waren, de 2313 heeft aan de spanning op RX/TX pinnen schijnbaar voldoende om te booten?

Zodra ik iets in ging geven ging de controller rebooten, mijn gedachte was dat dit veroorzaakt wordt doordat de microcontroller na een mislukte poging in de eeprom wil schrijven maar daarvoor zoveel spanning/stroom nodig heeft dat de "voeding" van de usb/rs232 converter instort en daarmee de microcontroller reboot. Iets meer uitproberen toonde echter aan dat zelfs de ingave van een enkel karakter al een reboot veroorzaakte.

Dus; Toch de usbtiny weer aangesloten voor de voeding, toen zag ik dat ik weer in staat was 2 cijfers in te geven en een WRONG terugkreeg, maar dat er iets mis ging in de teller. De teller bleef op 2/3 hangen;

[code]
2 tries left.
Enter code.
WRONG
3 tries left.
Enter code.
WRONG
2 tries left.
Enter code.
WRONG
2 tries left.
Enter code.
WRONG
3 tries left.
Enter code.
WRONG
2 tries left.
Enter code.
WRONG
2 tries left.
Enter code.
WRONG
3 tries left.
[/code]

In deze staat is het natuurlijk niet moeilijk de code te vinden ... pas nadat ik de code had gevonden viel mij op dat de usbtiny programmer HELEMAAL NIET AAN DE PC HING ...

Ik heb nog geen sluitende verklaring voor het gedrag van de tiny, dat 'ie raar gaat doen bij lage spanningen is duidelijk, ik vermoed nog steeds dat 'ie niet in staat is de teller te updaten in de prom?

Acties:
  • 0Henk 'm!

  • ikbenalzeven
  • Registratie: juni 2009
  • Laatst online: 20-07 17:34
leuke opdracht weer sprite_tm! wat ik me afvraag: hoe heb je dit soort informatie geleerd? opleiding, beroepspraktijk of interesse?

ik ga vanavond meteen aan de slag. :)

Acties:
  • 0Henk 'm!

  • robint91
  • Registratie: april 2007
  • Laatst online: 24-09-2014
spoiler:
1 keer proberen en ik ben er al in!! 42 FTW

Acties:
  • 0Henk 'm!

  • AlexanderB
  • Registratie: maart 2007
  • Laatst online: 01:30

AlexanderB

I void warranties!

:o dat is wel een hele echte spoiler :P +1 voor nerdy social engeneering..

spoiler:
dat een avr niet naar zn prom kan schrijven bij te lage voedinsspanning is bekend, dat dr n heel dun lijntje zit tussen crash en random data schrijven ipv de juiste waarde kan je zelf uitvinden, of je hebt gewoon geluk zoals _Danny_ dat ie precies in het juiste gebied zit om onbeperkt te kunnen bruteforcen..

"Since there is no ending quote mark, everything after this is part of my quote. -Randal Munroe


Acties:
  • 0Henk 'm!

  • Springuin
  • Registratie: juli 2002
  • Laatst online: 18-07 16:45
Ik heb hem, na een paar keer herprogrammeren en wat mislukte pogingen.

Methode (let op: bevat antwoord!):
spoiler:
Eerst 330 ohm, later 2x 330 Ohm parallel in de voedingslijn (bij 330 resette de attyiny te snel en kwam er niks zinnigs uit), klok op 16MHz (ik had geen 8MHz kristal), terminal ook op dubbele snelheid, tekst intypen en wat rommelen met de resetlijn (pin 1 naar gnd) en op een zeker moment:

0 tries left.
Chip has self-destructed! Teh noez!!!1
U���.
0 tries left.
��6�����������7���к•�_��ό�����ϒ�@Ready.��������
0 tries left.
Chip has self-destructed! Teh noez!!!1
2UI����.
-2 tries left.
Enter code.
WRONG
-3 tries left.
�UAh�g�f�e�d�c�b�a�`�_�^�]�\�[�Z�Y�X�W�WRONG
�ҁ���e��҃c�Ready.
-3 tries left.
Enter code.
22�


Ha, -3; foutje van de programmeur: checken op tries_left==0 ipv tries_left <= 0. Als tries_left een byte is, en dat zal wel omdat dit een 8bitter is, dan hebben we nu ongeveer 252 pogingen om te proberen. Ik heb op dat moment de weerstand overbrugd, zodat de microcontroller weer netjes 5V krijgt en weer normaal werkt (anders bleven er rare dingen uitkomen en kon je niet zien of het wel of niet successvol was).
De code is 2 cijfers, dus dat moet in 100 pogingen lukken.

De eerste 10 met de hand ingetypt en vervolgens in een terminal venster het volgende:

for i in {10..99} ; do echo $i > /dev/ttyUSB0; echo $i ; sleep 1; done

Een hand op ctrl-c, de andere op enter om het commando uit te voeren. Ondertussen draait in het naastliggende venster de terminalverbinding naar de microcontroller en kan ik zien wat die antwoordt.

<knip>
-31 tries left.
Enter code.
WRONG
-32 tries left.
Enter code.
WRONG
-33 tries left.
Enter code.
WRONG
-34 tries left.
Enter code.
WRONG
-35 tries left.
Enter code.
OK! You're in.
5 tries left.
Enter code.

Ram, ctrl-C en in het andere venster zie ik staan:

<knip>
35
36
37
38
39
40
41
42
^C

Even nog een check, en inderdaad 42.

Acties:
  • 0Henk 'm!

  • _ferry_
  • Registratie: januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

Moet je hem na het "bricken" opnieuw proggen? want ik moet hem op mijn werk programmeren, dus ik kan moeilijk na 5x proberen/dingen testen opnieuw gaan programmeren als ik thuis zit :P

Acties:
  • 0Henk 'm!

  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
@_ferry_:

spoiler:
"spelen" met de spanning/GND van je rs232 connectie kan ook wanneer hij "bricked" is.


Als je thuis geen programmer hebt maar wel rs232 is het misschien een idee voor het testen een m88 te nemen met een bootloader. Net als een arduino zeg maar. Dan kan je 'm proggen via de serieele poort. Voor de opdrachten tot nu toe mag dat volgens mij geen probleem zijn. Er is ruim voldoende flash op de 88 (de hex files van de opdrachten zullen immers nooit groter dan 2K zijn.). Gebruik eventueel een I/O pin die niet op de tiny beschikbaar is om de bootloader te activeren.

Misschien kan Sprite aangeven of dat echt geen problemen veroorzaakt? Ik heb thuis werkende code voor zo'n bootloader en kan die eventueel wel posten.

Acties:
  • 0Henk 'm!

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
Moet theoretisch gezien kunnen; met een bootloader heb je echter wel een (kleine ) kans dat je in de bootloader-code terechtkomt als je met de spanning gaat spelen; in het slechtste geval brick je daarmee de user-code van de AVR echt :) Behalve dat moet 't niet veel kwaad kunnen, en als 't wel gebeurt is een keer herprogrammeren voldoende om 'm te fixen.

Ik wil op de langere termijn toch op 1 chip standaardiseren; ik merk echter wel dat er veel vraag is naar de Mega88/168/...-code. Ik kan nu nog omwisselen, moet ik wel even weten wat jullie willen.

Poll: Mega88 of Tiny2313?
Mega88!
Tiny2313!
Boeit niet, ik heb beide (of geen van de 2)
Tussenstand:
http://poll.dezeserver.nl/results.cgi?pid=359504&layout=6&sort=prc
Ook een poll maken? Klik hier

Sprite_tm wijzigde deze reactie 05-07-2010 10:21 (3%)

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


Acties:
  • 0Henk 'm!

  • _ferry_
  • Registratie: januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

Ik zie ook dat de arduino als programmer te gebuiken is. Kijken of ik daarmee aan de slag kan gaan. De 2313 heb ik liggen, alleen nog ff het EEA bouwen. Volgens mij kan ik de arduino dan ook voor de rs232 gebruiken.

* _ferry_ must resist the spoilers :P

_ferry_ wijzigde deze reactie 05-07-2010 10:22 (28%)


Acties:
  • 0Henk 'm!

  • Looney11
  • Registratie: december 2004
  • Laatst online: 20:44
Heb alles voor PIC-jes thuis liggen maar dit is wel erg interessant. Eens kijken voor een leuke Atmel starter setje :)

Acties:
  • 0Henk 'm!

  • Boudewijn
  • Registratie: februari 2004
  • Laatst online: 06:36

Boudewijn

omdat het kan

Ik ga deze week eens rustig kijken of het mij ook lukt. Nog steeds geen tijd+hardware (binnen bereik, thuis heb ik het wel) gehad.

Acties:
  • 0Henk 'm!

  • DaWaN
  • Registratie: oktober 2002
  • Laatst online: 21-07 14:09

DaWaN

'r you wicked ??

quote:
Looney11 schreef op maandag 05 juli 2010 @ 11:22:
Heb alles voor PIC-jes thuis liggen maar dit is wel erg interessant. Eens kijken voor een leuke Atmel starter setje :)
Ik zou een AVR Dragon kopen, kun je mee programmeren én debuggen.

If you do not change direction, you may end up where you are heading


Acties:
  • 0Henk 'm!

  • Proxx
  • Registratie: juni 2008
  • Laatst online: 19-07 10:57
bij ons code slot op het werk is 1x fout 15 sec wachten 2x 30sec 3x 3minuten 4x 15min

maar die kun je gewoon met een pinpas open maken precies zoals in de films :? echt slecht

Proxx wijzigde deze reactie 06-07-2010 12:39 (6%)

Proxx wijzigde deze reactie 31-07-2015 13:37 (1337%)


Acties:
  • 0Henk 'm!

  • _ferry_
  • Registratie: januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

Hmm, zit lekker te klooien met opdracht 1, maar ik krijg nog niets uit de atmel, stuur er via het printje van de arduino data naartoe (IPV de max232), ledje op de arduino knippert dan ook. Maar ik krijg niets terug.

Ik heb zo mijn twijfels over het programmeren, lang geleden dat ik de programmer op mijn werk gebruikt heb, en ik weet dat het toen ook niet vanzelf ging :P ik zie ook nergens de optie om de fuses in te stellen.

Ojah, als ik tussen GND en pin 3 meet staat er een freq. van 240hz op. Moet dat niet de 8mhz van het xtal zijn?

_ferry_ wijzigde deze reactie 06-07-2010 12:42 (11%)


Acties:
  • 0Henk 'm!

  • nick_haak
  • Registratie: december 2004
  • Laatst online: 21-07 00:38
heb je rx en tx goed geplaatst? moeten kruiselings worden aangesloten he :)

Acties:
  • 0Henk 'm!

  • Anthor
  • Registratie: juni 2002
  • Niet online
quote:
_ferry_ schreef op dinsdag 06 juli 2010 @ 12:35:
Ojah, als ik tussen GND en pin 3 meet staat er een freq. van 240hz op. Moet dat niet de 8mhz van het xtal zijn?
nee, de clock-out staat (als deze ingesteld is) op pin 6.

Heb je een verse attiny gebruikt? (fabriek settings) dan kan je 1200 baud proberen contact te maken.
Want als je zelf geen fuses heb gezet staat de clk/8 fuse waarschijnlijk nog aan.

De opdracht is denk ik ook wel te doen met die settings

Acties:
  • 0Henk 'm!

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
_Ferry_: Wat voor software gebruik je? Voor avrdude staat er iig een regeltje eerder in dit topic iirc.

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


Acties:
  • 0Henk 'm!

  • _ferry_
  • Registratie: januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

quote:
Anthor schreef op dinsdag 06 juli 2010 @ 13:44:
[...]

nee, de clock-out staat (als deze ingesteld is) op pin 6.

Heb je een verse attiny gebruikt? (fabriek settings) dan kan je 1200 baud proberen contact te maken.
Want als je zelf geen fuses heb gezet staat de clk/8 fuse waarschijnlijk nog aan.

De opdracht is denk ik ook wel te doen met die settings
Hmm, ik weet t wellicht al, dacht dat ik hetzelfde uCtje had maar ik heb nog de 90s2313, dus geen attiny.

  • 147126
  • Registratie: juni 2005
  • Laatst online: 24-03-2018
Hee leuk topic! Is voor de eerste opdracht echt een kristal van 8MHz nodig? Ik heb hier momenteel alleen 4, 12, 16 en 20 MHz liggen en zou er graag vanavond nog mee bezig willen :P

  • Springuin
  • Registratie: juli 2002
  • Laatst online: 18-07 16:45
Shadow, 16MHz werkt ook, zet je terminal op 19200 baud ipv 9600.

  • virus.elektro
  • Registratie: januari 2002
  • Laatst online: 23-11-2017

virus.elektro

profesionele monitor sloper

je kan het met 4 mhz proberen, wel rekening mee houden dat dan de communicatie op 4800 baud loopt en alles 2 keer zo langzaam is. je kan ook de interne rc-gebruiken schijnt. maar die zijn niet echt aan te raden voor seriele communicatie.

succes ermee

elektrotechniek is leuk (nog wel). ik ga dus weer verder met leuke dingen ontwerpen. amd 2200+ 256mb 333mhz,gf4 440mx, 120gb,16X dvd. jarr-url


  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
Ik heb beide opdrachten op de interne klok gedaan, werkt prima.

  • 147126
  • Registratie: juni 2005
  • Laatst online: 24-03-2018
Super! Bedankt allemaal! Schakelingetje opgebouwd, nu kijken of ik de hex-file er in kan krijgen :P

Acties:
  • 0Henk 'm!

  • NjitsSs
  • Registratie: oktober 2007
  • Laatst online: 22:29
De eerste is me gelukt. Ben nu bezig met de tweede, en die lukt ook aardig.
spoiler: Techtalk
Ik heb een 10k pot gebruikt als spanningsdeler, en nog een 100 ohm weerstand in serie met de RX, TX en VCC van de AVR. Door wat creatief met de spanning te draaien werd het aantal beurten getal random. Als het bijna op was, moest ik gewoon nog wat draaien met de potmeter om weer een nieuw random getal te krijgen.

Acties:
  • 0Henk 'm!

  • paularts
  • Registratie: september 2006
  • Laatst online: 05:17

paularts

Paulux !!!!!!

Leuk topic Sprite_tm,

kan helaas pas in Sept mee komen puzzelen ben nog ff in het buitenland :P
goede opzet met een lage instap drempel en een hoog leer gehalte
Me Like, ik hoop dat als ik terug ben het topic ook nog volop leeft

KUTGW.

(Multiple exclamation marks are a sure sign of a diseased mind)


  • mookie
  • Registratie: juni 2002
  • Laatst online: 25-06 22:53

mookie

Heerlijk Helder

eej, geen reacties meer?
Ik snap amper iets van microcontrollers of elektronica maar als ik dit topic lees is het net een boek.
Reuze spannend.
Ik kan er helaas niet aan medoen in verband met gebrek aan kennis maar als ik dan de uitkomsten lees over hoe het "probleem" is opgelost dan denk ik van, ja, dat had ik ook kunnen bedenken....
Ik hoop dat er snel een nieuwe opdracht komt en dat er weer vele reacties volgen....

mookie


  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 18-07 13:14
Komt eraan. Ik ben een weekje weggeweest en verder atm bezig met iets anders in deze richting wat binnenkort op T.net gaat verschijnen; zodra ik weer tijd en zin heb zet ik de derde opdracht wel inelkaar.

Relaxen und watchen das blinkenlichten. | Laatste project: VFD-restoratie


  • _Danny_
  • Registratie: augustus 2007
  • Laatst online: 06-05-2016
Nou ja! Wij zitten met smart op nieuwe opdrachten te wachten en meneer gaat gewoon weg en andere dingen doen! Ongehoord! :P
Pagina: 1 2 Laatste

Dit topic is gesloten.



OnePlus 7 Pro (8GB intern) Nintendo Switch Lite LG OLED C9 Google Pixel 3a XL FIFA 19 Samsung Galaxy S10 Sony PlayStation 5 Apple

Tweakers vormt samen met Tweakers Elect, Hardware.Info, Autotrack, Nationale Vacaturebank, Intermediair en Independer de Persgroep Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True