αž€αžΆαžšαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸ αž“αž·αž„αž€αžΆαžšαž›αž½αž…αž™αž€ Aigo αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αžŠαŸ’αžšαžΆαž™ HDD αžαžΆαž„αž€αŸ’αžšαŸ…αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2: αž€αžΆαžšαž™αž€αž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž–αžΈ Cypress PSoC

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž•αŸ’αž“αŸ‚αž€αž‘αžΈ 8671 αž“αž·αž„αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸƒαž’αžαŸ’αžαž”αž‘αž’αŸ†αž–αžΈαž€αžΆαžšαž›αž½αž…αž™αž€αžŠαŸ’αžšαžΆαž™αžŠαŸ‚αž›αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αžαžΆαž„αž€αŸ’αžšαŸ…αŸ” αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžšαŸ†αž›αžΉαž€αž’αŸ’αž“αž€αžαžΆ αž€αžΆαž›αž–αžΈαž–αŸαž›αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡ αžŸαž αžŸαŸαžœαž·αž€αž˜αŸ’αž“αžΆαž€αŸ‹αž”αžΆαž“αž“αžΆαŸ† Hard Drive αž˜αŸ‰αžΆαž€ Patriot (Aigo) SKXNUMX αž˜αž€αžαŸ’αž‰αž»αŸ† αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸαžœαžΆ αž αžΎαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž…αŸαž‰αž–αžΈαžœαžΆαŸ” αž˜αž»αž“αž“αžΉαž„αž’αžΆαž“αž”αž“αŸ’αž αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž’αžΆαž“ αž•αŸ’αž“αŸ‚αž€αžŠαŸ†αž”αžΌαž„ αž’αžαŸ’αžαž”αž‘

4. αž™αžΎαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž…αŸαž‰αž–αžΈαžŠαŸ’αžšαžΆαž™αžœαŸαž–αž“αŸ’αž›αžΊ PSoC αžαžΆαž„αž€αŸ’αž“αž»αž„
5. αž–αž·αž’αžΈαž€αžΆαžš ISSP
– αŸ₯.៑. αžαžΎαž’αŸ’αžœαžΈαž‘αŸ…αž‡αžΆ ISSP
– αŸ₯.αŸ’αŸ” Demystifying Vectors
– αŸ₯.αŸ£αŸ” αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž‡αžΆαž˜αž½αž™ PSoC
– αŸ₯.αŸ€αŸ” αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž“αŸƒαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸ…αž›αžΎαž”αž“αŸ’αž‘αŸ‡αžˆαžΈαž”
– αŸ₯.αŸ₯αŸ” αž”αŸŠαžΈαžαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–
6. αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžŠαŸ†αž”αžΌαž„ (αž”αžšαžΆαž‡αŸαž™)αŸ– ROMX
7. αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž›αžΎαž€αž‘αžΈ XNUMX: Cold Boot Tracing
– ៧.៑. αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž
– ៧.αŸ’αŸ” αž€αžΆαžšαž’αžΆαž“αž›αž‘αŸ’αž’αž•αž›
– ៧.αŸ£αŸ” αž€αžΆαžšαž€αžŸαžΆαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžš Flash
– ៧.αŸ€αŸ” αžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž•αŸ’αž‘αž»αž€αž€αžΌαžŠ PIN
– ៧.αŸ₯αŸ” αž€αžΆαžšβ€‹αž”αŸ„αŸ‡β€‹αž…αŸ„αž›β€‹αž”αŸ’αž›αž»αž€β€‹αž›αŸαž ៑្៦
– ៧.αŸ¦αŸ” αž€αžΆαžšαžŸαŸ’αžαžΆαžšαž€αžΌαžŠ PIN
8. αžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž”αž“αŸ’αž‘αžΆαž”αŸ‹?
9 αŸ” αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž€αžΆαžšαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸ αž“αž·αž„αž€αžΆαžšαž›αž½αž…αž™αž€ Aigo αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αžŠαŸ’αžšαžΆαž™ HDD αžαžΆαž„αž€αŸ’αžšαŸ…αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2: αž€αžΆαžšαž™αž€αž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž–αžΈ Cypress PSoC


4. αž™αžΎαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž…αŸαž‰αž–αžΈαžŠαŸ’αžšαžΆαž™αžœαŸαž–αž“αŸ’αž›αžΊ PSoC αžαžΆαž„αž€αŸ’αž“αž»αž„

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž’αŸ’αžœαžΈβ€‹αž‚αŸ’αžšαž”αŸ‹β€‹αž™αŸ‰αžΆαž„β€‹αž”αž„αŸ’αž αžΆαž‰β€‹αžαžΆ (αžŠαžΌαž…β€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αž“αŸ…β€‹αž€αŸ’αž“αž»αž„ [αž•αŸ’αž“αŸ‚αž€β€‹αžŠαŸ†αž”αžΌαž„]()) αžαžΆβ€‹αž€αžΌαžŠ PIN αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžšαž€αŸ’αžŸαžΆβ€‹αž‘αž»αž€β€‹αž€αŸ’αž“αž»αž„β€‹αž‡αž˜αŸ’αžšαŸ…β€‹αž–αž“αŸ’αž›αžΊβ€‹αž“αŸƒ PSoCαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž’αžΆαž“β€‹αž‡αž˜αŸ’αžšαŸ…β€‹αž–αž“αŸ’αž›αžΊβ€‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ” αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž˜αž»αžαž“αŸƒαž€αžΆαžšαž„αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ–

  • αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ "αž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„" αž‡αžΆαž˜αž½αž™ microcontroller;
  • αžŸαŸ’αžœαŸ‚αž„αžšαž€αžœαž·αž’αžΈαžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎ "αž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„" αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžšαž–αžΆαžšαž–αžΈαž€αžΆαžšαž’αžΆαž“αž–αžΈαžαžΆαž„αž€αŸ’αžšαŸ…αž¬αž’αžαŸ‹αŸ”
  • αžšαž€αžœαž·αž’αžΈαžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ†αž›αž„αž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαŸ”

αž˜αžΆαž“αž€αž“αŸ’αž›αŸ‚αž„αž–αžΈαžšαžŠαŸ‚αž›αžœαžΆαžŸαž˜αž αŸαžαž»αž•αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž›αŸαžαž€αžΌαžŠ PIN αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž»αž–αž›αž—αžΆαž–αŸ–

  • αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž–αž“αŸ’αž›αžΊαžαžΆαž„αž€αŸ’αž“αž»αž„;
  • SRAM αžŠαŸ‚αž›αž›αŸαžαž€αžΌαžŠ pin αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžœαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž›αŸαžαž€αžΌαžŠ pin αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αžŠαŸ„αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ”

αžŸαž˜αŸ’αž›αžΉαž„αž˜αžΎαž›αž‘αŸ…αž˜αž»αž αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαžαŸ’αž‰αž»αŸ†αž“αŸ…αžαŸ‚αž’αžΆαž…αž…αžΆαž€αŸ‹αž…αŸ„αž›αž“αžΌαžœ PSoC flash drive αžαžΆαž„αž€αŸ’αž“αž»αž„ - αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆαžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αžŠαŸ‚αž›αž αŸ…αžαžΆ "cold boot tracing" - αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸαžŸαž˜αžαŸ’αžαž—αžΆαž–αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž“αŸƒαž–αž·αž’αžΈαž€αžΆαžš ISSP αŸ” αžœαžΆαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžαŸ’αž‰αž»αŸ†αž”αŸ„αŸ‡αž…αŸ„αž›αž€αžΌαžŠ PIN αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αŸ”

$ ./psoc.py 
syncing: KO OK
[...]
PIN: 1 2 3 4 5 6 7 8 9

αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž»αž„αž€αŸ’αžšαŸ„αž™αŸ–

5. αž–αž·αž’αžΈαž€αžΆαžš ISSP

αŸ₯.៑. αžαžΎαž’αŸ’αžœαžΈαž‘αŸ…αž‡αžΆ ISSP

"αž€αžΆαžšαž”αŸ’αžšαžΆαžŸαŸ’αžšαŸαž™αž‘αžΆαž€αŸ‹αž‘αž„" αž‡αžΆαž˜αž½αž™ microcontroller αž’αžΆαž…αž˜αžΆαž“αž“αŸαž™αžαž»αžŸαž‚αŸ’αž“αžΆαŸ– αž–αžΈ "αž’αŸ’αž“αž€αž›αž€αŸ‹αž‘αŸ…αž’αŸ’αž“αž€αž›αž€αŸ‹" αžŠαž›αŸ‹αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αž·αž’αžΈαž€αžΆαžšαžŸαŸ€αžšαŸ€αž› (αž§αž‘αžΆαž αžšαžŽαŸ ICSP αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Microchip's PIC)αŸ”

Cypress αž˜αžΆαž“αž–αž·αž’αžΈαž€αžΆαžšαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΏαž„αž“αŸαŸ‡ αžŠαŸ‚αž›αž αŸ…αžαžΆ ISSP (αž–αž·αž’αžΈαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŸαŸ€αžšαŸ€αž›αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’) αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžŠαŸ„αž™αž•αŸ’αž“αŸ‚αž€αž“αŸ…αž€αŸ’αž“αž»αž„ αž—αžΆαž–β€‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹β€‹αžαžΆαž„β€‹αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸ. αž”αŸ‰αžΆαžαž„αŸ‹ US7185162 αž€αŸαž•αŸ’αžαž›αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“αž˜αž½αž™αž…αŸ†αž“αž½αž“αž•αž„αžŠαŸ‚αžšαŸ” αžœαžΆαž€αŸαž˜αžΆαž“αžŸαž˜αž˜αžΌαž› OpenSource αžŠαŸ‚αž›αž αŸ…αžαžΆ HSSP (αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαžœαžΆαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αž”αž“αŸ’αžαž·αž…)αŸ” ISSP αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

  • αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜ PSoC αž‘αžΎαž„αžœαž·αž‰;
  • αž”αž‰αŸ’αž…αŸαž‰αž›αŸαžαžœαŸαž‘αž˜αž“αŸ’αžαž‘αŸ…αž›αŸαžαžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸ€αžšαŸ€αž›αž“αŸƒ PSoC αž“αŸαŸ‡; αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΆαž„αž€αŸ’αžšαŸ…;
  • αž•αŸ’αž‰αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž‡αžΆαžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαžœαŸ‚αž„αž αŸ…αžαžΆ "αžœαŸ‰αž·αž…αž‘αŸαžš" αŸ”

αž―αž€αžŸαžΆαžš ISSP αž€αŸ†αžŽαžαŸ‹αžœαŸ‰αž·αž…αž‘αŸαžšαž‘αžΆαŸ†αž„αž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ‚αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αžαžΌαž…αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ–

  • αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ - ៑
  • αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ - ៑
  • Initialize-3 (αž‡αž˜αŸ’αžšαžΎαžŸ 3V αž“αž·αž„ 5V)
  • ID-SETUP
  • αž’αžΆαž“-ID-WORD
  • SET-BLOCK-NUM: 10011111010ddddddddd111 αžŠαŸ‚αž› dddddddd=block #
  • αž›αž»αž”αž…αŸ’αžšαžΎαž“
  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ-αž”αŸ’αž›αž»αž€
  • αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹-αžšαŸ€αž”αž…αŸ†
  • αž’αžΆαž“-BYTE: 10110aaaaaaZDDDDDDDDZ1 αžŠαŸ‚αž› DDDDDDDD = αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αŸαž‰ aaaaaa = αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ (6 αž”αŸŠαžΈαž)
  • WRITE-BYTE: 10010aaaaaaadddddddd111, αžŠαŸ‚αž› ddddddddd = αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž€αŸ’αž“αž»αž„, aaaaaa = αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ (6 αž”αŸŠαžΈαž)
  • αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–
  • αž–αž·αž“αž·αžαŸ’αž™-αžšαŸ€αž”αž…αŸ†
  • READ-CheckSUM: 10111111001ZDDDDDDDDZ110111111000ZDDDDDDDDZ1 αžŠαŸ‚αž› DDDDDDDDDDDDDDDD = αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αŸαž‰αŸ– αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž§αž”αž€αžšαžŽαŸ
  • αž›αž»αž”αž”αŸ’αž›αž»αž€

αž§αž‘αžΆαž αžšαžŽαŸ αžœαŸ‰αž·αž…αž‘αŸαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Initialize-2αŸ–

1101111011100000000111 1101111011000000000111
1001111100000111010111 1001111100100000011111
1101111010100000000111 1101111010000000011111
1001111101110000000111 1101111100100110000111
1101111101001000000111 1001111101000000001111
1101111000000000110111 1101111100000000000111
1101111111100010010111

αžœαŸ‰αž·αž…αž‘αŸαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž˜αžΆαž“αž”αŸ’αžšαžœαŸ‚αž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ– 22 αž”αŸŠαžΈαžαŸ” αž―αž€αžŸαžΆαžš HSSP αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸ…αž›αžΎ ISSPαŸ– "αžœαŸ‰αž·αž…αž‘αŸαžš ISSP αž‚αŸ’αž˜αžΆαž“αž’αŸ’αžœαžΈαž›αžΎαžŸαž–αžΈαž›αŸ†αžŠαžΆαž”αŸ‹αž”αž“αŸ’αžαž·αž…αžŠαŸ‚αž›αžαŸ†αžŽαžΆαž„αž±αŸ’αž™αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αŸ”"

αŸ₯.្. Demystifying Vectors

αž…αžΌαžšαž™αžΎαž„αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αžαžΆαžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„αž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ” αžŠαŸ†αž”αžΌαž„ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαžœαŸ‰αž·αž…αž‘αŸαžšαžŠαžΌαž…αž‚αŸ’αž“αžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αŸ†αžŽαŸ‚αžŠαžΎαž˜αž“αŸƒαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ† M8C αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžŸαž˜αŸ’αž˜αžαž·αž€αž˜αŸ’αž˜αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆ opcodes αž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž˜αž·αž“αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž‘αŸαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αž‰αž»αŸ†αž”αžΆαž“ google αžœαŸ‰αž·αž…αž‘αŸαžšαžαžΆαž„αž›αžΎ αž αžΎαž™αž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹ αžœαžΆαž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž€αžΆαžšαžŸαž·αž€αŸ’αžŸαžΆαž˜αž½αž™αžŠαŸ‚αž›αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’ αž‘αŸ„αŸ‡αž”αžΈαž‚αžΆαžαŸ‹αž˜αž·αž“αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αž›αž˜αŸ’αž’αž·αžαž€αŸαžŠαŸ„αž™ αž•αŸ’αžαž›αŸ‹αž‚αž“αŸ’αž›αžΉαŸ‡αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ– β€œαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž“αžΈαž˜αž½αž™αŸ—αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ„αž™αž”αžΈαž”αŸŠαžΈαžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αžΉαž„αž˜αŸαž˜αŸ‰αžΌαž“αž·αž€αž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž”αž½αž“ (αž’αžΆαž“αž–αžΈ RAM αžŸαžšαžŸαŸαžšαž‘αŸ… RAM αž’αžΆαž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ αžŸαžšαžŸαŸαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡) αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αžΆαž“ 8 αž”αŸŠαžΈαžαž’αžΆαžŸαŸαž™αžŠαŸ’αž‹αžΆαž“ αž”αž“αŸ’αžαžŠαŸ„αž™ 8 αž”αŸŠαžΈαžαž‘αž·αž“αŸ’αž“αž“αŸαž™ (αž’αžΆαž“ ឬសរសេរ) αž αžΎαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™ αž”αŸŠαžΈαžαžˆαž”αŸ‹αž”αžΈαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž”αŸ’αžšαž˜αžΌαž›αž–αŸαžαŸŒαž˜αžΆαž“αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αž–αžΈαž•αŸ’αž“αŸ‚αž€ Supervisory ROM (SROM)αŸ” αžŸαŸ€αžœαž—αŸ…αžŽαŸ‚αž“αžΆαŸ†αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸ. SROM αž‚αžΊαž‡αžΆαžšαŸ‰αžΌαž˜αžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαž€αžΌαžŠαžšαžΉαž„αž“αŸ…αž€αŸ’αž“αž»αž„ PSoC αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž˜αž»αžαž„αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ (αžαžΆαž˜αžšαž”αŸ€αž”αžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„ Syscall) αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αŸ’αž“αž»αž„αž…αž“αŸ’αž›αŸ„αŸ‡αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ–

  • 00h: SWBootReset
  • 01h: ReadBlock
  • ០្ αž˜αŸ‰αŸ„αž„αŸ– WriteBlock
  • ០៣ αž˜αŸ‰αŸ„αž„αŸ– αž›αž»αž”αž”αŸ’αž›αž»αž€
  • αž˜αŸ‰αŸ„αž„ 06: TableRead
  • αž˜αŸ‰αŸ„αž„ 07: CheckSum
  • αž˜αŸ‰αŸ„αž„ αŸ αŸ¨αŸ– αž€αŸ’αžšαž·αžαžαžΆαž˜αžαŸ’αž“αžΆαž ០
  • αž˜αŸ‰αŸ„αž„ αŸ αŸ¨αŸ– αž€αŸ’αžšαž·αžαžαžΆαž˜αžαŸ’αž“αžΆαž ០

αžŠαŸ„αž™αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžˆαŸ’αž˜αŸ„αŸ‡αžœαŸ‰αž·αž…αž‘αŸαžšαž‘αŸ…αž“αžΉαž„αž˜αž»αžαž„αžΆαžš SROM αž™αžΎαž„αž’αžΆαž…αž‚αžΌαžŸαž•αŸ‚αž“αž‘αžΈαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž•αŸ’αžŸαŸαž„αŸ—αžŠαŸ‚αž›αž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ„αž™αž–αž·αž’αžΈαž€αžΆαžšαž“αŸαŸ‡αž‘αŸ…αž“αžΉαž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš SROM αžŠαŸ‚αž›αžšαŸ†αž–αžΉαž„αž‘αž»αž€αŸ” αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαžŠαž›αŸ‹αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡ αž™αžΎαž„αž’αžΆαž…αžŒαž·αž€αžΌαžŠαžœαŸ‰αž·αž…αž‘αŸαžš ISSP αž”αžΈαž”αŸŠαžΈαžαžŠαŸ†αž”αžΌαž„αž”αžΆαž“αŸ–

  • 100 => "wrem"
  • 101 => "rdmem"
  • 110 => "ខុស"
  • 111 => "rdreg"

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž€αžΆαžšαž™αž›αŸ‹αžŠαžΉαž„αž–αŸαž‰αž›αŸαž‰αž’αŸ†αž–αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž›αžΎαž”αž“αŸ’αž‘αŸ‡αžˆαžΈαž”αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž‡αžΆαž˜αž½αž™ PSoC αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αŸ₯.៣. αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž‡αžΆαž˜αž½αž™ PSoC

αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ Dirk Petrautsky αž˜αžΆαž“αžšαž½αž…αž αžΎαž™ αž…αŸ’αžšαž€ αž›αŸαžαž€αžΌαžŠ HSSP αžšαž”αžŸαŸ‹ Cypress αž“αŸ…αž›αžΎ Arduino αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎ Arduino Uno αžŠαžΎαž˜αŸ’αž”αžΈαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αž§αž”αž€αžšαžŽαŸαž—αŸ’αž‡αžΆαž”αŸ‹ ISSP αž“αŸƒαž€αŸ’αžŠαžΆαžšαž…αž»αž…αŸ”

αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžœαž‚αŸ’αž‚αžŸαž·αž€αŸ’αžŸαžΆαž“αŸƒαž€αžΆαžšαžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž›αŸαžαž€αžΌαžŠαžšαž”αžŸαŸ‹ Dirk αž”αž“αŸ’αžαž·αž…αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž“αŸ…αž›αžΎ GitHubαŸ– αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž“αž·αž„αž’αž€αŸ’αžŸαžš Python αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž‡αžΆαž˜αž½αž™ Arduino αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† cypress_psoc_tools.

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎ Arduino αžŠαŸ†αž”αžΌαž„αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαžΎαžαŸ‚αžœαŸ‰αž·αž…αž‘αŸαžš "αž•αŸ’αž›αžΌαžœαž€αžΆαžš" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ "αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„" αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αžΆαž“ ROM αžαžΆαž„αž€αŸ’αž“αž»αž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ VERIFY αŸ” αžαžΆαž˜β€‹αž€αžΆαžšβ€‹αžšαŸ†αž–αžΉαž„β€‹αž‘αž»αž€ αžαŸ’αž‰αž»αŸ†β€‹αž˜αž·αž“β€‹αž’αžΆαž…β€‹αž’αŸ’αžœαžΎβ€‹αž”αžΆαž“β€‹αž‘αŸαŸ” αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž€αžΆαžšαž’αžΆαž“αž”αŸŠαžΈαžαž€αžΆαžšαž–αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαž€αž˜αŸ’αž˜αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αžŠαŸ’αžšαžΆαž™αžœαŸαž–αž“αŸ’αž›αžΊαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž˜αž€β€‹αžαŸ’αž‰αž»αŸ†β€‹αž”αžΆαž“β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžœαŸ‰αž·αž…αž‘αŸαžšβ€‹αžŸαžΆαž˜αž‰αŸ’αž‰β€‹αž˜αž½αž™β€‹αž…αŸ†αž“αž½αž“β€‹αžšαž”αžŸαŸ‹β€‹αžαŸ’αž‰αž»αŸ†β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αžŸαžšαžŸαŸαžš αž“αž·αž„β€‹αž€αžΆαžšβ€‹αž’αžΆαž“ memory/registerαŸ” αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαž™αžΎαž„αž’αžΆαž…αž’αžΆαž“ SROM αž‘αžΆαŸ†αž„αž˜αžΌαž›αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆ flash drive αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžšαž–αžΆαžšαž€αŸαžŠαŸ„αž™!

αŸ₯.ៀ. αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž“αŸƒαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸ…αž›αžΎαž”αž“αŸ’αž‘αŸ‡αžˆαžΈαž”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž˜αžΎαž›αžœαŸ‰αž·αž…αž‘αŸαžš "αžšαž»αŸ‡αžšαžΎ" αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆαž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αž”αŸ’αžšαžΎαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž›αž‚αŸ’αž˜αžΆαž“αž―αž€αžŸαžΆαžš (0xF8-0xFA) αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž€αžΌαžŠ M8C αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αžŠαŸ„αž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαŸ” αžœαžΆαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžαŸ’αž‰αž»αŸ†αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš opcode αž•αŸ’αžŸαŸαž„αŸ—αžŠαžΌαž…αž‡αžΆ "ADD", "MOV A, X", "PUSH" ឬ "JMP" αŸ” αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαžŠαž›αŸ‹αž–αž½αž€αž‚αŸ (αžŠαŸ„αž™αž˜αžΎαž›αž–αžΈαž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž˜αžΆαž“αž›αžΎαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡) αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžαžΆαžαžΎαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ‚αž›αž‚αŸ’αž˜αžΆαž“αž―αž€αžŸαžΆαžšαžŽαžΆαž˜αž½αž™αž‚αžΊαž‡αžΆαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž’αž˜αŸ’αž˜αžαžΆ (A, X, SP αž“αž·αž„ PC) αŸ”

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž€αžΌαžŠ "αž•αŸ’αžαžΆαž…αŸ‹αž…αŸαž‰" αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αž§αž”αž€αžšαžŽαŸ HSSP_disas.rb αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡ (αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹)αŸ–

--== init2 ==--
[DE E0 1C] wrreg CPU_F (f7), 0x00   # сброс Ρ„Π»Π°Π³ΠΎΠ²
[DE C0 1C] wrreg SP (f6), 0x00      # сброс SP
[9F 07 5C] wrmem KEY1, 0x3A     # ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ для SSC
[9F 20 7C] wrmem KEY2, 0x03     # Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ
[DE A0 1C] wrreg PCh (f5), 0x00     # сброс PC (MSB) ...
[DE 80 7C] wrreg PCl (f4), 0x03     # (LSB) ... Π΄ΠΎ 3 ??
[9F 70 1C] wrmem POINTER, 0x80      # RAM-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
[DF 26 1C] wrreg opc1 (f9), 0x30        # Опкод 1 => "HALT"
[DF 48 1C] wrreg opc2 (fa), 0x40        # Опкод 2 => "NOP"
[9F 40 3C] wrmem BLOCKID, 0x01  # BLOCK ID для Π²Ρ‹Π·ΠΎΠ²Π° SSC
[DE 00 DC] wrreg A (f0), 0x06       # Π½ΠΎΠΌΠ΅Ρ€ "Syscall" : TableRead
[DF 00 1C] wrreg opc0 (f8), 0x00        # Опкод для SSC, "Supervisory SROM Call"
[DF E2 5C] wrreg CPU_SCR0 (ff), 0x12    # НСдокуммСнтированная опСрация: Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ внСшний ΠΎΠΏΠΊΠΎΠ΄

αŸ₯.αŸ₯. αž”αŸŠαžΈαžαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–

αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž‘αžΆαž€αŸ‹αž‘αž„αž‡αžΆαž˜αž½αž™ PSoC αžšαž½αž…αž αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž“αŸ…αžαŸ‚αž˜αž·αž“αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αžŠαŸ‚αž›αž’αžΆαž…αž‘αž»αž€αž…αž·αžαŸ’αžαž”αžΆαž“αž’αŸ†αž–αžΈαž”αŸŠαžΈαžαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒ flash drive αž‘αŸαŸ” αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž€αžΆαžšαž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αžŠαŸ„αž™αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆ Cypress αž˜αž·αž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αžΌαžœαž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŽαžΆαž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαž€αž˜αŸ’αž˜αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž‡αžΈαž€αž‡αŸ’αžšαŸ…αž‘αŸ…αž€αŸ’αž“αž»αž„ Google αžŠαžΎαž˜αŸ’αž”αžΈαž™αž›αŸ‹αžαžΆαž›αŸαžαž€αžΌαžŠ HSSP αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αžŠαŸ„αž™ Cypress αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ Dirk αž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž€αžΆαžšαž€αŸ‚αž”αŸ’αžšαŸ‚αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αŸ” αž αžΎαž™β€‹αžŠαžΌαž…αŸ’αž“αŸαŸ‡! αžœαŸ‰αž·αž…αž‘αŸαžšαžαŸ’αž˜αžΈαž“αŸαŸ‡αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αžαŸ’αž›αž½αž“αŸ–

[DE E0 1C] wrreg CPU_F (f7), 0x00
[DE C0 1C] wrreg SP (f6), 0x00
[9F 07 5C] wrmem KEY1, 0x3A
[9F 20 7C] wrmem KEY2, 0x03
[9F A0 1C] wrmem 0xFD, 0x00 # нСизвСстныС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹
[9F E0 1C] wrmem 0xFF, 0x00 # Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ
[DE A0 1C] wrreg PCh (f5), 0x00
[DE 80 7C] wrreg PCl (f4), 0x03
[9F 70 1C] wrmem POINTER, 0x80
[DF 26 1C] wrreg opc1 (f9), 0x30
[DF 48 1C] wrreg opc2 (fa), 0x40
[DE 02 1C] wrreg A (f0), 0x10   # Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ syscall !
[DF 00 1C] wrreg opc0 (f8), 0x00
[DF E2 5C] wrreg CPU_SCR0 (ff), 0x12

αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαŸ‰αž·αž…αž‘αŸαžšαž“αŸαŸ‡ (αžŸαžΌαž˜αž˜αžΎαž› read_security_data αž€αŸ’αž“αž»αž„ psoc.py) αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž”αŸŠαžΈαžαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ SRAM αž“αŸ… 0x80 αžŠαŸ‚αž›αž˜αžΆαž“αž–αžΈαžšαž”αŸŠαžΈαžαž€αŸ’αž“αž»αž„αž˜αž½αž™αž”αŸ’αž›αž»αž€αžŠαŸ‚αž›αž”αžΆαž“αž€αžΆαžšαž–αžΆαžšαŸ”

αž›αž‘αŸ’αž’αž•αž›αž‚αžΊαž’αŸ’αž›αžΆαž€αŸ‹αž‘αžΉαž€αž…αž·αžαŸ’αž: αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžšαž–αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” "αž”αž·αž‘αž€αžΆαžšαž’αžΆαž“αž“αž·αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαžαžΆαž„αž€αŸ’αžšαŸ…" αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž™αžΎαž„αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž˜αž·αž“αž’αžΆαž…αž’αžΆαž“αž’αŸ’αžœαžΈαž–αžΈ flash drive αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž€αŸαž˜αž·αž“αž’αžΆαž…αžŸαžšαžŸαŸαžšαž’αŸ’αžœαžΈαž”αžΆαž“αžŠαŸ‚αžš (αž§αž‘αžΆαž αžšαžŽαŸ αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αž‘αžΎαž„ ROM dumper αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡)αŸ” αž αžΎαž™αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž”αž·αž‘αž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž‚αžΊαžαŸ’αžšαžΌαžœαž›αž»αž”αž”αž“αŸ’αž‘αŸ‡αžˆαžΈαž”αž‘αžΆαŸ†αž„αž˜αžΌαž›αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” πŸ™

6. αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžŠαŸ†αž”αžΌαž„ (αž”αžšαžΆαž‡αŸαž™)αŸ– ROMX

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž™αžΎαž„αž’αžΆαž…αžŸαžΆαž€αž›αŸ’αž”αž„αž”αŸ’αžšαžΎαž›αŸ’αž”αž·αž…αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αŸ– αžŠαŸ„αž™αžŸαžΆαžšαž™αžΎαž„αž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠαžαžΆαž˜αž’αŸ†αž–αžΎαž…αž·αžαŸ’αž αž αŸαžαž»αž’αŸ’αžœαžΈαž˜αž·αž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· ROMX αžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžΆαž“αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž–αž“αŸ’αž›αžΊ? αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž˜αžΆαž“αž±αž€αžΆαžŸαž‡αŸ„αž‚αž‡αŸαž™αž›αŸ’αž’αŸ” αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž˜αž»αžαž„αžΆαžš ReadBlock αžŠαŸ‚αž›αž’αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈ SROM (αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαŸ„αž™αžœαŸ‰αž·αž…αž‘αŸαžš) αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αž–αžΈ ISSP αžŠαŸ‚αžšαž¬αž‘αŸαŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ ROMX opcode αžŠαŸ‚αž›αž’αžΆαž…αžŸαŸ’αžšαž˜αŸƒαž”αžΆαž“αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αŸ‚αž”αž“αŸαŸ‡αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αžΌαžŠ Python (αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αž“αŸ’αžαŸ‚αž˜αžαŸ’αž“αžΆαž€αŸ‹αž‡αŸ†αž“αž½αž™αž–αžΈαžšαž”αžΈαž‘αŸ…αž€αžΌαžŠ Arduino)αŸ–

for i in range(0, 8192):
    write_reg(0xF0, i>>8)       # A = 0
    write_reg(0xF3, i&0xFF)     # X = 0
    exec_opcodes("x28x30x40")    # ROMX, HALT, NOP
    byte = read_reg(0xF0)       # ROMX reads ROM[A|X] into A
    print "%02x" % ord(byte[0]) # print ROM byte

αž‡αžΆαž’αž€αž»αžŸαž›αž›αŸαžαž€αžΌαžŠαž“αŸαŸ‡αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸαŸ” πŸ™ αž¬αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž›αž‘αŸ’αž’αž•αž›αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΌαžŠαž€αžΌαžŠαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„ (0x28 0x30 0x40)! αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž‚αž·αžαžαžΆαž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαžšαž”αžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž‚αžΊαž‡αžΆαž’αžΆαžαž»αž•αŸ’αžŸαŸ†αž“αŸƒαž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž€αžΆαžšαž’αžΆαž“αž“αŸ„αŸ‡αž‘αŸαŸ” αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αžŠαžΌαž…αž‡αžΆβ€‹αž›αŸ’αž”αž·αž…β€‹αžœαž·αžŸαŸ’αžœαž€αž˜αŸ’αž˜β€‹αž‡αžΆαž„αŸ– αž–αŸαž›β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž€αžΌαžŠβ€‹αžαžΆαž„αž€αŸ’αžšαŸ… αž‘αžΆαž“αž€αŸ’αžšαž»αž„ ROM αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž‰αŸ’αž‡αžΌαž“β€‹αž”αž“αŸ’αžβ€‹αž‘αŸ…β€‹αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αŸ”

7. αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž›αžΎαž€αž‘αžΈ XNUMX: Cold Boot Tracing

αžŠαŸ„αž™αžŸαžΆαžšαž›αŸ’αž”αž·αž… ROMX αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžαŸ’αž‰αž»αŸ†αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‚αž·αžαž’αŸ†αž–αžΈαž€αžΆαžšαž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž“αŸƒαž›αŸ’αž”αž·αž…αž“αŸαŸ‡ - αž–αž·αž–αžŽαŸŒαž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™ "αž”αž‰αŸ’αž…αŸαž‰αž–αž“αŸ’αž›αžΊαž…αŸ’αžšαžΎαž“αž–αŸαž€αž›αžΎαž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžšαž”αžŸαŸ‹ Microcontroller".

ៀ.៑.៑. αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž

αž―αž€αžŸαžΆαžš ISSP αž•αŸ’αžαž›αŸ‹αžœαŸ‰αž·αž…αž‘αŸαžšαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ CHECKSUM-SETUPαŸ–

[DE E0 1C] wrreg CPU_F (f7), 0x00
[DE C0 1C] wrreg SP (f6), 0x00
[9F 07 5C] wrmem KEY1, 0x3A
[9F 20 7C] wrmem KEY2, 0x03
[DE A0 1C] wrreg PCh (f5), 0x00
[DE 80 7C] wrreg PCl (f4), 0x03
[9F 70 1C] wrmem POINTER, 0x80
[DF 26 1C] wrreg opc1 (f9), 0x30
[DF 48 1C] wrreg opc2 (fa), 0x40
[9F 40 1C] wrmem BLOCKID, 0x00
[DE 00 FC] wrreg A (f0), 0x07
[DF 00 1C] wrreg opc0 (f8), 0x00
[DF E2 5C] wrreg CPU_SCR0 (ff), 0x12

αž“αŸαŸ‡αž αŸ…αžαžΆαž˜αž»αžαž„αžΆαžš SROM 0x07 αžŠαžΌαž…αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš (αž’αžŽαŸ’αžαžΌαž„αžšαŸ‰αŸ‚αž‘αŸ’αžšαŸαž)αŸ–

αž˜αž»αžαž„αžΆαžšβ€‹αž“αŸαŸ‡β€‹αž–αž·αž“αž·αžαŸ’αž™β€‹αž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αŸ” αžœαžΆαž‚αžŽαž“αžΆαž˜αžΌαž›αž”αŸ’αž”αž‘αžΆαž“αž”αŸαžαŸ’αžš 16 αž”αŸŠαžΈαžαž“αŸƒαž…αŸ†αž“αž½αž“αž”αŸ’αž›αž»αž€αžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžŠαŸ„αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž“αžΆαž‚αžΆαžšαž–αž“αŸ’αž›αžΊαž˜αž½αž™ αžŠαŸ„αž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαžŸαžΌαž“αŸ’αž™αŸ” αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš BLOCKID αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž…αŸ†αž“αž½αž“αž”αŸ’αž›αž»αž€αžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž–αŸαž›αž‚αžŽαž“αžΆαž˜αžΌαž›αž”αŸ’αž”αž‘αžΆαž“αž”αŸαžαŸ’αžšαŸ” αžαž˜αŸ’αž›αŸƒαž“αŸƒ "1" αž“αžΉαž„αž‚αžŽαž“αžΆαžαŸ‚ checksum αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αž›αž»αž€αžŸαžΌαž“αŸ’αž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž…αŸ†αžŽαŸ‚αž€αž― "0" αž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž˜αžΌαž›αž”αŸ’αž”αž‘αžΆαž“αž”αŸαžαŸ’αžšαžŸαžšαž»αž”αž“αŸƒ 256 αž”αŸ’αž›αž»αž€αž“αŸƒαž’αž“αžΆαž‚αžΆαžšαž–αž“αŸ’αž›αžΊαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžŽαž“αžΆαŸ” αž˜αžΌαž›αž”αŸ’αž”αž‘αžΆαž“αž”αŸαžαŸ’αžš 16 αž”αŸŠαžΈαžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž˜αž€αžœαž·αž‰αžαžΆαž˜αžšαž™αŸˆ KEY1 αž“αž·αž„ KEY2 αŸ” αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš KEY1 αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž›αŸ†αžŠαžΆαž”αŸ‹αž‘αžΆαž” 8 αž”αŸŠαžΈαžαž“αŸƒ checksum αž αžΎαž™αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžš KEY2 αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž›αŸ†αžŠαžΆαž”αŸ‹αžαŸ’αž–αžŸαŸ‹ 8 αž”αŸŠαžΈαžαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž˜αžΆαž“ flash banks αž‡αžΆαž…αŸ’αžšαžΎαž“ αž˜αž»αžαž„αžΆαžš checksum αžαŸ’αžšαžΌαžœαž”αžΆαž“αž αŸ…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž“αžΈαž˜αž½αž™αŸ—αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆαŸ” αž›αŸαžαž’αž“αžΆαž‚αžΆαžšαžŠαŸ‚αž›αžœαžΆαž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ FLS_PR1 (αžŠαŸ„αž™αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž”αŸŠαžΈαžαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αž’αž“αžΆαž‚αžΆαžšαž–αž“αŸ’αž›αžΊαž‚αŸ„αž›αžŠαŸ…)αŸ”

αž…αŸ†αžŽαžΆαŸ†αžαžΆαž“αŸαŸ‡αž‚αžΊαž‡αžΆ checksum αžŸαžΆαž˜αž‰αŸ’αž‰: αž”αŸƒαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž™αŸ‰αžΆαž„αžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž˜αž·αž“αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸ CRC αžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αž‘αŸαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αžαžŠαŸ„αž™αžŠαžΉαž„αžαžΆαžŸαŸ’αž“αžΌαž› M8C αž˜αžΆαž“αžŸαŸ†αžŽαž»αŸ†αžαžΌαž…αž˜αž½αž™αž“αŸƒαž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž“αŸ…αž–αŸαž›αž‚αžŽαž“αžΆ checksum αžαž˜αŸ’αž›αŸƒαž˜αž’αŸ’αž™αž˜αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžαŸ’αžšαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸαžšαžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ‚αž›αž“αŸ…αž‘αžΈαž”αŸ†αž•αž»αžαž“αžΉαž„αž‘αŸ…αž›αž‘αŸ’αž’αž•αž›: KEY1 (0xF8) / KEY2 ( 0xF9) αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαžΆαž˜αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈ αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

  1. αž™αžΎαž„αž—αŸ’αž‡αžΆαž”αŸ‹αžαžΆαž˜αžšαž™αŸˆ ISSP αŸ”
  2. αž™αžΎαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαž‚αžŽαž“αžΆ checksum αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαŸ‰αž·αž…αž‘αŸαžš CHECKSUM-SETUP αŸ”
  3. αž™αžΎαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαž½αžšαž€αŸ’αž”αžΆαž›αž‘αžΎαž„αžœαž·αž‰αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž–αŸαž›αžœαŸαž›αžΆαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹ T.
  4. αž™αžΎαž„αž’αžΆαž“ RAM αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“ checksum C αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ”
  5. αž’αŸ’αžœαžΎαž‡αŸ†αž αžΆαž“αž‘αžΈ 3 αž“αž·αž„αž‘αžΈ 4 αž˜αŸ’αžαž„αž‘αŸ€αžαžŠαŸ„αž™αž”αž„αŸ’αž€αžΎαž“ T αž”αž“αŸ’αžαž·αž…αž˜αŸ’αžŠαž„αŸ—αŸ”
  6. αž™αžΎαž„αžŸαž„αŸ’αž‚αŸ’αžšαŸ„αŸ‡αž‘αž·αž“αŸ’αž“αž“αŸαž™αž–αžΈ flash drive αžŠαŸ„αž™αžŠαž€ checksum C αž˜αž»αž“αž–αžΈαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αŸ”

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž˜αž½αž™αŸ– αžœαŸ‰αž·αž…αž‘αŸαžš Initialize-1 αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž•αŸ’αž‰αžΎαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰ αžŸαžšαžŸαŸαžšαž‡αžΆαž“αŸ‹αž›αžΎ KEY1 αž“αž·αž„ KEY2αŸ–

1100101000000000000000  # Магия, пСрСводящая PSoC Π² Ρ€Π΅ΠΆΠΈΠΌ программирования
nop
nop
nop
nop
nop
[DE E0 1C] wrreg CPU_F (f7), 0x00
[DE C0 1C] wrreg SP (f6), 0x00
[9F 07 5C] wrmem KEY1, 0x3A # ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма пСрСзаписываСтся здСсь
[9F 20 7C] wrmem KEY2, 0x03 # и здСсь
[DE A0 1C] wrreg PCh (f5), 0x00
[DE 80 7C] wrreg PCl (f4), 0x03
[9F 70 1C] wrmem POINTER, 0x80
[DF 26 1C] wrreg opc1 (f9), 0x30
[DF 48 1C] wrreg opc2 (fa), 0x40
[DE 01 3C] wrreg A (f0), 0x09   # SROM-функция 9
[DF 00 1C] wrreg opc0 (f8), 0x00    # SSC
[DF E2 5C] wrreg CPU_SCR0 (ff), 0x12

αž€αžΌαžŠαž“αŸαŸ‡αžŸαžšαžŸαŸαžšαž‡αžΆαž“αŸ‹αž›αžΎ checksum αžŠαŸαž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ„αž™αž αŸ… Calibrate1 (αž˜αž»αžαž„αžΆαžš SROM 9)... αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž™αžΎαž„αž’αžΆαž…αž•αŸ’αž‰αžΎαž›αŸαžαžœαŸαž‘αž˜αž“αŸ’αž (αž–αžΈαžŠαžΎαž˜αž€αžΌαžŠαžαžΆαž„αž›αžΎ) αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αžšαž½αž…αž’αžΆαž“ SRAM? αž αžΎαž™αž”αžΆαž‘αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš! αž€αžΌαžŠ Arduino αžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž“αŸαŸ‡αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αžŽαžΆαžŸαŸ‹αŸ–

case Cmnd_STK_START_CSUM:
    checksum_delay = ((uint32_t)getch())<<24;
    checksum_delay |= ((uint32_t)getch())<<16;
    checksum_delay |= ((uint32_t)getch())<<8;
    checksum_delay |= getch();
    if(checksum_delay > 10000) {
        ms_delay = checksum_delay/1000;
        checksum_delay = checksum_delay%1000;
    }
    else {
        ms_delay = 0;
    }
    send_checksum_v();
    if(checksum_delay)
        delayMicroseconds(checksum_delay);
    delay(ms_delay);
    start_pmode();

  1. αž’αžΆαž“ checkum_delay αŸ”
  2. αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž‚αžŽαž“αžΆ checksum (send_checksum_v) αŸ”
  3. αžšαž„αŸ‹αž…αžΆαŸ†αžšαž™αŸˆαž–αŸαž›αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™; αžŠαŸ„αž™αž‚αž·αžαž‚αžΌαžšαž–αžΈαž”αž‰αŸ’αž αžΆαžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ
    • αžαŸ’αž‰αž»αŸ†β€‹αž”αžΆαž“β€‹αž…αŸ†αžŽαžΆαž™β€‹αž–αŸαž›β€‹αž‡αžΆβ€‹αž…αŸ’αžšαžΎαž“β€‹αžšαž αžΌαžβ€‹αžŠαž›αŸ‹β€‹αžαŸ’αž‰αž»αŸ†β€‹αžšαž€β€‹αžƒαžΎαž‰β€‹αžαžΆβ€‹αžœαžΆβ€‹αž”αŸ’αžšαŸ‚β€‹αž‘αŸ…β€‹αž‡αžΆβ€‹αž™αŸ‰αžΆαž„β€‹αžŽαžΆ αž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž˜αžΈαž€αŸ’αžšαžΌαžœαž·αž“αžΆαž‘αžΈ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžαŸ‚αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž˜αž·αž“αž›αžΎαžŸαž–αžΈ 16383 ΞΌs;
    • αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αŸ’αžαž„αž‘αŸ€αžαž”αžΆαž“αžŸαž˜αŸ’αž›αžΆαž”αŸ‹αž–αŸαž›αžœαŸαž›αžΆαžŠαžΌαž…αž‚αŸ’αž“αžΆαžšαž αžΌαžαžŠαž›αŸ‹αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆαž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›αž˜αžΈαž€αŸ’αžšαžΌαžœαž·αž“αžΆαž‘αžΈ αž”αŸ’αžšαžŸαž·αž“αž”αžΎ 0 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αžœαžΆαž‡αžΆαž’αžΆαžαž»αž”αž‰αŸ’αž…αžΌαž› αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„!
  4. αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜ PSoC αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ (αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž•αŸ’αž‰αžΎαž›αŸαžαžœαŸαž‘αž˜αž“αŸ’αž αžŠαŸ„αž™αž˜αž·αž“αž•αŸ’αž‰αžΎαžœαŸ‰αž·αž…αž‘αŸαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜) αŸ”

αž›αŸαžαž€αžΌαžŠαž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸ…αž€αŸ’αž“αž»αž„ PythonαŸ–

for delay in range(0, 150000):  # Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π² микросСкундах
    for i in range(0, 10):      # количСство считывания для ΠΊΠ°ΠΆΠ΄ΠΎΠΉΠΈΠ· Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ
        try:
            reset_psoc(quiet=True)  # ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ Π²Ρ…ΠΎΠ΄ Π² Ρ€Π΅ΠΆΠΈΠΌ программирования
            send_vectors()      # ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²
            ser.write("x85"+struct.pack(">I", delay)) # Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму + ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ послС Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ
            res = ser.read(1)       # ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ arduino ACK
        except Exception as e:
            print e
            ser.close()
            os.system("timeout -s KILL 1s picocom -b 115200 /dev/ttyACM0 2>&1 > /dev/null")
            ser = serial.Serial('/dev/ttyACM0', 115200, timeout=0.5) # ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚
            continue
        print "%05d %02X %02X %02X" % (delay,      # ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ RAM-Π±Π°ΠΉΡ‚Ρ‹
                read_regb(0xf1),
                read_ramb(0xf8),
                read_ramb(0xf9))

αžŸαžšαž»αž”αž˜αž€ αž€αžΌαžŠαž“αŸαŸ‡αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαŸ–

  1. αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜ PSoC αž‘αžΎαž„αžœαž·αž‰ (αž αžΎαž™αž•αŸ’αž‰αžΎαž›αŸαžαžœαŸαž‘αž˜αž“αŸ’αž)αŸ”
  2. αž•αŸ’αž‰αžΎαžœαŸ‰αž·αž…αž‘αŸαžšαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αŸαž‰αž›αŸαž‰αŸ”
  3. αž αŸ…αž‘αŸ…αž˜αž»αžαž„αžΆαžš Arduino Cmnd_STK_START_CSUM (0x85) αžŠαŸ‚αž›αž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž€αŸ’αž“αž»αž„αž˜αžΈαž€αŸ’αžšαžΌαžœαž·αž“αžΆαž‘αžΈαžαŸ’αžšαžΌαžœαž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž‡αžΆαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαŸ”
  4. αž’αžΆαž“αž˜αžΌαž›αž”αŸ’αž”αž‘αžΆαž“αž”αŸαžαŸ’αžš (0xF8 αž“αž·αž„ 0xF9) αž“αž·αž„αž€αžΆαžšαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž‚αŸ’αž˜αžΆαž“αž―αž€αžŸαžΆαžš 0xF1 αŸ”

αž›αŸαžαž€αžΌαžŠαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· 10 αžŠαž„αž€αŸ’αž“αž»αž„ 1 αž˜αžΈαž€αŸ’αžšαžΌαžœαž·αž“αžΆαž‘αžΈαŸ” 0xF1 αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžšαž½αž˜β€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αž“αŸ…β€‹αž‘αžΈαž“αŸαŸ‡β€‹αž–αŸ’αžšαŸ„αŸ‡β€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž…αž»αŸ‡β€‹αžˆαŸ’αž˜αŸ„αŸ‡β€‹αžαŸ‚β€‹αž˜αž½αž™β€‹αž‚αžαŸ‹β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌβ€‹αžšβ€‹αž“αŸ…β€‹αž–αŸαž›β€‹αž‚αžŽαž“αžΆ checksum αŸ” αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžœαžΆαž‡αžΆαž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž’αžαŸαžšαž”αžŽαŸ’αžαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž”αŸ’αžšαžΎαžŠαŸ„αž™αž―αž€αžαžΆαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž“αž–αŸ’αžœαž“αŸ’αž’αŸ” αž…αŸ†αžŽαžΆαŸ†αž€αžΆαžš hack αžŠαŸαž’αžΆαž€αŸ’αžšαž€αŸ‹αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹ Arduino αž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αž”αŸ’αžšαžΎ picocom αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› Arduino αžˆαž”αŸ‹αž”αž„αŸ’αž αžΆαž‰αžŸαž‰αŸ’αž‰αžΆαž“αŸƒαž‡αžΈαžœαž·αž (αž˜αž·αž“αžŠαžΉαž„αž˜αžΌαž›αž αŸαžαž»)αŸ”

៧.្. αž€αžΆαžšαž’αžΆαž“αž›αž‘αŸ’αž’αž•αž›

αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαžŸαŸ’αž‚αŸ’αžšαžΈαž” Python αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡ (αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž’αžΆαž“)αŸ–

DELAY F1 F8 F9  # F1 – Π²Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Ρ‹ΠΉ нСизвСстный рСгистр
                  # F8 младший Π±Π°ΠΉΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы
                  # F9 ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммы

00000 03 E1 19
[...]
00016 F9 00 03
00016 F9 00 00
00016 F9 00 03
00016 F9 00 03
00016 F9 00 03
00016 F9 00 00  # ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ сумма сбрасываСтся Π² 0
00017 FB 00 00
[...]
00023 F8 00 00
00024 80 80 00  # 1-ΠΉ Π±Π°ΠΉΡ‚: 0x0080-0x0000 = 0x80 
00024 80 80 00
00024 80 80 00
[...]
00057 CC E7 00   # 2-ΠΉ Π±Π°ΠΉΡ‚: 0xE7-0x80: 0x67
00057 CC E7 00
00057 01 17 01  # понятия Π½Π΅ имСю, Ρ‡Ρ‚ΠΎ здСсь происходит
00057 01 17 01
00057 01 17 01
00058 D0 17 01
00058 D0 17 01
00058 D0 17 01
00058 D0 17 01
00058 F8 E7 00  # Π‘Π½ΠΎΠ²Π° E7?
00058 D0 17 01
[...]
00059 E7 E7 00
00060 17 17 00  # Π₯ΠΌΠΌΠΌΠΌΠΌΠΌ
[...]
00062 00 17 00
00062 00 17 00
00063 01 17 01  # А, дошло! Π’ΠΎΡ‚ ΠΎΠ½ ΠΆΠ΅ пСрСнос Π² ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±Π°ΠΉΡ‚
00063 01 17 01
[...]
00075 CC 17 01  # Π˜Ρ‚Π°ΠΊ, 0x117-0xE7: 0x30

αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž“αž·αž™αžΆαž™αžαžΆαž™αžΎαž„αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž˜αž½αž™: αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž™αžΎαž„αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™ checksum αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠ αž”αŸƒ null αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αž”αžΆαž“αž’αžΆαž“αž‘αŸαŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžŠαŸ„αž™αžŸαžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‚αžŽαž“αžΆαž‘αžΆαŸ†αž„αž˜αžΌαž› (8192 αž”αŸƒ) αž…αŸ†αžŽαžΆαž™αž–αŸαž› 0,1478 αžœαž·αž“αžΆαž‘αžΈ (αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αž”αž“αŸ’αžαž·αž…αž”αž“αŸ’αžαž½αž…αžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš) αžŠαŸ‚αž›αžŸαŸ’αž˜αžΎαž“αžΉαž„αž”αŸ’αžšαž˜αžΆαžŽ 18,04 ΞΌs αž€αŸ’αž“αž»αž„αž˜αž½αž™αž”αŸƒ αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΎαž–αŸαž›αžœαŸαž›αžΆαž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαž˜αŸ’αž›αŸƒ checksum αž“αŸ…αž–αŸαž›αžŸαž˜αžŸαŸ’αžšαž”αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαžαŸ‹αž›αžΎαž€αžŠαŸ†αž”αžΌαž„ αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž“αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž› αž–αŸ’αžšαŸ„αŸ‡αžαžΆαžšαž™αŸˆαž–αŸαž›αž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‚αžŽαž“αžΆαž‚αžΊαžαŸ‚αž„αžαŸ‚αžŠαžΌαž…αž‚αŸ’αž“αžΆ αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž€αžΆαžšαž”αž‰αŸ’αž…αž”αŸ‹αž“αŸƒαž€αžΆαžšαž”αŸ„αŸ‡αž…αŸ„αž›αž“αŸαŸ‡αž‚αžΊαž˜αž·αž“αžŸαžΌαžœαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡ "αž‚αž˜αŸ’αž›αžΆαžαž–αŸαž›αžœαŸαž›αžΆαžαž·αž…αžαž½αž…" αž›αžΎαž€αžΆαžšαžšαžαŸ‹αž“αžΈαž˜αž½αž™αŸ— αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž—αžΆαž–αžŸαŸ†αžαžΆαž“αŸ‹αŸ–

134023 D0 02 DD
134023 CC D2 DC
134023 CC D2 DC
134023 CC D2 DC
134023 FB D2 DC
134023 3F D2 DC
134023 CC D2 DC
134024 02 02 DC
134024 CC D2 DC
134024 F9 02 DC
134024 03 02 DD
134024 21 02 DD
134024 02 D2 DC
134024 02 02 DC
134024 02 02 DC
134024 F8 D2 DC
134024 F8 D2 DC
134025 CC D2 DC
134025 EF D2 DC
134025 21 02 DD
134025 F8 D2 DC
134025 21 02 DD
134025 CC D2 DC
134025 04 D2 DC
134025 FB D2 DC
134025 CC D2 DC
134025 FB 02 DD
134026 03 02 DD
134026 21 02 DD

αž“αŸ„αŸ‡αž‚αžΊαž‡αžΆαž€αžΆαžšαž”αŸ„αŸ‡αž…αŸ„αž›αž…αŸ†αž“αž½αž“ 10 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΆαž›αŸ‹αž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž˜αžΈαž€αŸ’αžšαžΌαžœαž·αž“αžΆαž‘αžΈαŸ” αž–αŸαž›αžœαŸαž›αžΆαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŸαžšαž»αž”αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ„αŸ‡αž…αŸ„αž› 8192 αž”αŸƒαž“αŸƒ flash drive αž‚αžΊαž”αŸ’αžšαž αŸ‚αž› 48 αž˜αŸ‰αŸ„αž„αŸ”

៧.៣. αž€αžΆαžšαž€αžŸαžΆαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžš Flash

αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αžΌαžŠαžŠαŸ‚αž›αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžœαž·αž‰αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αžΌαžœαž€αžΌαžŠαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸƒ flash drive αžŠαŸ„αž™αž‚αž·αžαž‚αžΌαžšαž–αžΈαž‚αž˜αŸ’αž›αžΆαžαž‚αŸ’αžšαž”αŸ‹αž–αŸαž›αžœαŸαž›αžΆαŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαŸ’αžŠαžΆαžšαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαž€αžΌαžŠαž“αŸαŸ‡αžšαž½αž…αž αžΎαž™αŸ” αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž”αŸ’αžšαžΆαž€αžŠβ€‹αžαžΆβ€‹αžαŸ’αž‰αž»αŸ†β€‹αž”αžΆαž“β€‹αž’αŸ’αžœαžΎβ€‹αžœαžΆβ€‹αž”αžΆαž“β€‹αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αžαŸ’αž‰αž»αŸ†β€‹αž”αžΆαž“β€‹αžšαž»αŸ‡αžšαžΎβ€‹αžœαžΆβ€‹αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎ m8cdisαŸ–

0000: 80 67   jmp  0068h     ; Reset vector
[...]
0068: 71 10   or  F,010h
006a: 62 e3 87 mov  reg[VLT_CR],087h
006d: 70 ef   and  F,0efh
006f: 41 fe fb and  reg[CPU_SCR1],0fbh
0072: 50 80   mov  A,080h
0074: 4e    swap A,SP
0075: 55 fa 01 mov  [0fah],001h
0078: 4f    mov  X,SP
0079: 5b    mov  A,X
007a: 01 03   add  A,003h
007c: 53 f9   mov  [0f9h],A
007e: 55 f8 3a mov  [0f8h],03ah
0081: 50 06   mov  A,006h
0083: 00    ssc
[...]
0122: 18    pop  A
0123: 71 10   or  F,010h
0125: 43 e3 10 or  reg[VLT_CR],010h
0128: 70 00   and  F,000h ; Paging mode changed from 3 to 0
012a: ef 62   jacc 008dh
012c: e0 00   jacc 012dh
012e: 71 10   or  F,010h
0130: 62 e0 02 mov  reg[OSC_CR0],002h
0133: 70 ef   and  F,0efh
0135: 62 e2 00 mov  reg[INT_VC],000h
0138: 7c 19 30 lcall 1930h
013b: 8f ff   jmp  013bh
013d: 50 08   mov  A,008h
013f: 7f    ret

αž˜αžΎαž›αž‘αŸ…αž‘αŸ†αž“αž„αžŽαžΆαžŸαŸ‹!

៧.ៀ. αžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž•αŸ’αž‘αž»αž€αž€αžΌαžŠ PIN

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž’αžΆαž…αž’αžΆαž“αž˜αžΌαž›αž”αŸ’αž”αž‘αžΆαž“αž”αŸαžαŸ’αžšαž“αŸ…αž–αŸαž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš αž™αžΎαž„αž’αžΆαž…αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž–αžΈαžšαž”αŸ€αž” αž“αž·αž„αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αžœαžΆαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„:

  • αž”αž‰αŸ’αž…αžΌαž›αž›αŸαžαž€αžΌαžŠ PIN ខុស;
  • αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž›αŸαžαžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ”

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž•αŸ’αž‘αž»αž€αž”αŸ’αžšαž αžΆαž€αŸ‹αž”αŸ’αžšαž αŸ‚αž› αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž™αž€ checksum dump αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“ 10 ms αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž€αžΌαžŠ PIN ខុស αž αžΎαž™αž’αŸ’αžœαžΎαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”

αž›αž‘αŸ’αž’αž•αž›β€‹αž˜αž·αž“β€‹αžŸαžΌαžœβ€‹αžŸαž”αŸ’αž”αžΆαž™β€‹αž…αž·αžαŸ’αžβ€‹αž‘αŸ αž–αŸ’αžšαŸ„αŸ‡β€‹αž˜αžΆαž“β€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌαžšβ€‹αž‡αžΆβ€‹αž…αŸ’αžšαžΎαž“αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž‘αžΈαž”αž‰αŸ’αž…αž”αŸ‹αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αž”αžΆαž“αžαžΆ checksum αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™αžšαžœαžΆαž„ 120000 Β΅s αž“αž·αž„ 140000 Β΅s αž“αŸƒαž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚ "αž€αžΌαžŠ PIN" αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž‚αžΊαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ - αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αž“αŸ’αž™αžΆαž–αŸαž›Microsconds αžŠαŸ‚αž›αž’αŸ’αžœαžΎαžšαžΏαž„αž…αž˜αŸ’αž›αŸ‚αž€αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› 0 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αžœαžΆαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž…αŸ†αžŽαžΆαž™αž–αŸαž›αž‡αž·αž 3 αž˜αŸ‰αŸ„αž„ αžαŸ’αž‰αž»αŸ†αž…αžΆαŸ†αž”αžΆαž“αžαžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’ SROM αž αŸ… CheckSum αž‘αž‘αž½αž›αž”αžΆαž“αž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αž‡αžΆαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αžŠαŸ‚αž›αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž…αŸ†αž“αž½αž“αž”αŸ’αž›αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ checksum! αž“αŸ„αŸ‡αŸ” αž™αžΎαž„αž’αžΆαž…αž’αŸ’αžœαžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžΈαž™αž€αž˜αŸ’αž˜αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“αž•αŸ’αž‘αž»αž€αž€αžΌαžŠ PIN αž“αž·αž„αž”αž‰αŸ’αž‡αžš "αž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ" αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž› αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžšαž αžΌαžαžŠαž›αŸ‹αž”αŸ’αž›αž»αž€ 64 αž”αŸƒαŸ”

αž€αžΆαžšαžšαžαŸ‹αžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž‘αž‘αž½αž›αž”αžΆαž“αž›αž‘αŸ’αž’αž•αž›αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

αž€αžΆαžšαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸ αž“αž·αž„αž€αžΆαžšαž›αž½αž…αž™αž€ Aigo αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αžŠαŸ’αžšαžΆαž™ HDD αžαžΆαž„αž€αŸ’αžšαŸ…αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2: αž€αžΆαžšαž™αž€αž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž–αžΈ Cypress PSoC

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžαžΌαžšαž›αŸαžαž€αžΌαžŠ PIN αž–αžΈ "123456" αž‘αŸ… "1234567" αž αžΎαž™αž‘αž‘αž½αž›αž”αžΆαž“:

αž€αžΆαžšαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸ αž“αž·αž„αž€αžΆαžšαž›αž½αž…αž™αž€ Aigo αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αžŠαŸ’αžšαžΆαž™ HDD αžαžΆαž„αž€αŸ’αžšαŸ…αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2: αž€αžΆαžšαž™αž€αž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž–αžΈ Cypress PSoC

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž€αžΌαžŠ PIN αž“αž·αž„αž”αž‰αŸ’αž‡αžšαž“αŸƒαž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αž›αž»αž€αž›αŸαž 126αŸ”

៧.αŸ₯. αž€αžΆαžšβ€‹αž”αŸ„αŸ‡β€‹αž…αŸ„αž›β€‹αž”αŸ’αž›αž»αž€β€‹αž›αŸαž ៑្៦

αž”αŸ’αž›αž»αž€ #126 αž‚αž½αžšαžαŸ‚αžŸαŸ’αžαž·αžαž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™αž‡αž»αŸ†αžœαž·αž‰ 125x64x18 = 144000ΞΌs αž…αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαž€αžΆαžšαž‚αžŽαž“αžΆ checksum αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž–αŸαž‰αž›αŸαž‰αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž αžΎαž™αžœαžΆαž˜αžΎαž›αž‘αŸ…αž’αžΆαž…αž‡αžΏαž‡αžΆαž€αŸ‹αž”αžΆαž“αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαžšαž»αŸ‡αžšαžΎαž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ„αž™αžŠαŸƒ (αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž€αžΆαžšαž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž“αŸƒ "αž‚αž˜αŸ’αž›αžΆαžαž–αŸαž›αžœαŸαž›αžΆαžαž·αž…αžαž½αž…") αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαž‘αž‘αž½αž›αž”αžΆαž“αž”αŸƒαž‘αžΆαŸ†αž„αž“αŸαŸ‡ (αž“αŸ…αž—αžΆαž–αž™αžΊαžαž“αŸƒ 145527 ΞΌs):

αž€αžΆαžšαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸ αž“αž·αž„αž€αžΆαžšαž›αž½αž…αž™αž€ Aigo αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αžŠαŸ’αžšαžΆαž™ HDD αžαžΆαž„αž€αŸ’αžšαŸ…αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2: αž€αžΆαžšαž™αž€αž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž–αžΈ Cypress PSoC

αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αžαžΆαž›αŸαžαž€αžΌαžŠ PIN αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”! αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αžαž˜αŸ’αž›αŸƒαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ ASCII αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαž”αŸ’αžšαŸ‚αž…αŸαž‰ αžœαžΆαž†αŸ’αž›αž»αŸ‡αž”αž‰αŸ’αž…αžΆαŸ†αž„αž–αžΈαž€αžΆαžšαž’αžΆαž“αžŠαŸ‚αž›αž™αž€αž…αŸαž‰αž–αžΈαž€αŸ’αžαžΆαžšαž…αž»αž… capacitive αŸ”

αž‡αžΆαž…αž»αž„αž€αŸ’αžšαŸ„αž™ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‘αŸ€αž αžŠαžΎαž˜αŸ’αž”αžΈαžŸαŸ’αžœαŸ‚αž„αžšαž€αž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž§αž”αž€αžšαžŽαŸαžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αž˜αž·αž“αž›αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αŸ” αž“αŸαŸ‡αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αŸ–

αž€αžΆαžšαž”αž‰αŸ’αž…αŸ’αžšαžΆαžŸ αž“αž·αž„αž€αžΆαžšαž›αž½αž…αž™αž€ Aigo αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αžŠαŸ’αžšαžΆαž™ HDD αžαžΆαž„αž€αŸ’αžšαŸ…αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2: αž€αžΆαžšαž™αž€αž€αž“αŸ’αž›αŸ‚αž„αž…αžΆαž€αŸ‹αžŸαŸ†αžšαžΆαž˜αž–αžΈ Cypress PSoC

0xFF - αž˜αžΆαž“αž“αŸαž™αžαžΆ "αž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„ 15 αžŠαž„" αž αžΎαž™αžœαžΆαžαž™αž…αž»αŸ‡αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αž”αžšαžΆαž‡αŸαž™αž“αžΈαž˜αž½αž™αŸ—αŸ”

៧.៦. αž€αžΆαžšαžŸαŸ’αžαžΆαžšαž€αžΌαžŠ PIN

αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž€αžΌαžŠβ€‹αž’αžΆαž€αŸ’αžšαž€αŸ‹β€‹αžšαž”αžŸαŸ‹β€‹αžαŸ’αž‰αž»αŸ†β€‹αžŠαŸ‚αž›β€‹αžŠαžΆαž€αŸ‹β€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αž‚αŸ’αž“αžΆβ€‹αžαžΆαž„β€‹αž›αžΎαŸ–

def dump_pin():
  pin_map = {0x24: "0", 0x25: "1", 0x26: "2", 0x27:"3", 0x20: "4", 0x21: "5",
        0x22: "6", 0x23: "7", 0x2c: "8", 0x2d: "9"}
  last_csum = 0
  pin_bytes = []
  for delay in range(145495, 145719, 16):
    csum = csum_at(delay, 1)
    byte = (csum-last_csum)&0xFF
    print "%05d %04x (%04x) => %02x" % (delay, csum, last_csum, byte)
    pin_bytes.append(byte)
    last_csum = csum
  print "PIN: ",
  for i in range(0, len(pin_bytes)):
    if pin_bytes[i] in pin_map:
      print pin_map[pin_bytes[i]],
  print

αž“αŸαŸ‡αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžšαž”αžŸαŸ‹αžœαžΆαŸ–

$ ./psoc.py 
syncing: KO OK
Resetting PSoC: KO Resetting PSoC: KO Resetting PSoC: OK
145495 53e2 (0000) => e2
145511 5407 (53e2) => 25
145527 542d (5407) => 26
145543 5454 (542d) => 27
145559 5474 (5454) => 20
145575 5495 (5474) => 21
145591 54b7 (5495) => 22
145607 54da (54b7) => 23
145623 5506 (54da) => 2c
145639 5506 (5506) => 00
145655 5533 (5506) => 2d
145671 554c (5533) => 19
145687 554e (554c) => 02
145703 554e (554e) => 00
PIN: 1 2 3 4 5 6 7 8 9

αž αŸŠαžΊαž™! αž’αŸ’αžœαžΎαž€αžΆαžš!

αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαžαž˜αŸ’αž›αŸƒαž“αŸƒαž—αžΆαž–αž™αžΊαžαž™αŸ‰αžΆαžœαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎαž‘αŸ†αž“αž„αž‡αžΆαž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž‘αŸ…αž“αžΉαž„ PSoC αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ - αžαž˜αŸ’αž›αŸƒαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αŸ’αžšαžΎαŸ”

8. αžαžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž”αž“αŸ’αž‘αžΆαž”αŸ‹?

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αžŸαž„αŸ’αžαŸαž”αž“αŸ…αž›αžΎαž•αŸ’αž“αŸ‚αž€ PSoC αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž”αž‘αž“αŸƒαžŠαŸ’αžšαžΆαž™ Aigo αžšαž”αžŸαŸ‹αž™αžΎαž„:

  • αž™αžΎαž„αž’αžΆαž…αž’αžΆαž“ SRAM αž‘αŸ„αŸ‡αž”αžΈαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžšαž–αžΆαžšαž€αŸαžŠαŸ„αž™
  • αž™αžΎαž„αž’αžΆαž…αž‡αŸ€αžŸαž•αž»αžαž–αžΈαž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž€αžΆαžšαž’αžΌαžŸαžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαžœαžΆαž™αž›αž»αž€αžαžΆαž˜αžŠαžΆαž“αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αžαŸ’αžšαž‡αžΆαž€αŸ‹ αž“αž·αž„αž€αžΆαžšαž’αžΆαž“αž€αžΌαžŠ PIN αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αŸ”

αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αžΆαž“αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ„αž™αžŸαžΆαžšαž”αž‰αŸ’αž αžΆαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αŸ” αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αž›αž˜αŸ’αž’αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

  • αžŸαžšαžŸαŸαžšαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαžŒαž·αž€αžΌαžŠαž‘αž·αž“αŸ’αž“αž“αŸαž™αž›αž‘αŸ’αž’αž•αž›αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžš "cold boot trace" αŸ”
  • αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸ FPGA αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž–αŸαž›αžœαŸαž›αžΆαž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž (αž¬αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αŸ†αžŽαžαŸ‹αž˜αŸ‰αŸ„αž„αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„ Arduino);
  • αžŸαžΆαž€αž›αŸ’αž”αž„αž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαž˜αž½αž™αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ– αž”αž‰αŸ’αž…αžΌαž›αž€αžΌαžŠ PIN αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžŠαŸ„αž™αž…αŸαžαž“αžΆ αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž‘αžΎαž„αžœαž·αž‰ αž“αž·αž„αž”αŸ„αŸ‡αž”αž„αŸ‹ RAM αžŠαŸ„αž™αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαž›αŸαžαž€αžΌαžŠ PIN αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„ RAM αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‘αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž“αŸ…αž›αžΎ Arduino αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž€αž˜αŸ’αžšαž·αžαžŸαž‰αŸ’αž‰αžΆ Arduino αž‚αžΊ 5 αžœαŸ‰αž»αž› αžαžŽαŸˆαžŠαŸ‚αž›αž”αž“αŸ’αž‘αŸ‡αžŠαŸ‚αž›αž™αžΎαž„αž€αŸ†αž–αž»αž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαž‰αŸ’αž‰αžΆ 3,3 αžœαŸ‰αž»αž›αŸ”

αžšαžΏαž„αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž˜αž½αž™αžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž€αž›αŸ’αž”αž„αž‚αžΊαž€αžΆαžšαž›αŸαž„αž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αžšαž·αžαžœαŸ‰αž»αž›αžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ†αž›αž„αž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž€αžΆαžšαž’αžΆαž“αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž™αžΎαž„αž“αžΉαž„αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž–αžΈ flash drive αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž’αžΆαž“ checksum αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž–αŸαž›αžœαŸαž›αžΆαž˜αž·αž“αž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αŸ”

αžŠαŸ„αž™αžŸαžΆαžš SROM αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž’αžΆαž“αž†αŸ’αž˜αžΆαŸ†αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’ ReadBlock αž™αžΎαž„αž’αžΆαž…αž’αŸ’αžœαžΎαžŠαžΌαž…αž‚αŸ’αž“αžΆ αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆ αž“αŸ…αž›αžΎαž”αŸ’αž›αž»αž€αžšαž”αžŸαŸ‹ Dmitry Nedospasov - αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‘αžΎαž„αžœαž·αž‰αž“αŸƒαž€αžΆαžšαžœαžΆαž™αž”αŸ’αžšαž αžΆαžšαžšαž”αžŸαŸ‹ Chris Gerlinski αž”αžΆαž“αž”αŸ’αžšαž€αžΆαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž“αŸ’αž“αž·αžŸαžΈαž‘ "REcon Brussels 2017".

αž—αžΆαž–αžšαžΈαž€αžšαžΆαž™αž˜αž½αž™αž‘αŸ€αžαžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αž‚αžΊαž€αžΆαžšαž€αž·αž“αž€αžšαžŽαžΈαž…αŸαž‰αž–αžΈαž”αž“αŸ’αž‘αŸ‡αžˆαžΈαž”αŸ– αžŠαžΎαž˜αŸ’αž”αžΈαž™αž€ SRAM dump αž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž―αž€αžŸαžΆαžš αž“αž·αž„αž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αŸ”

9 αŸ” αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαžŠαŸ’αžšαžΆαž™αžœαŸαž“αŸαŸ‡ αž‘αž»αž€αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž…αž„αŸ‹αž”αžΆαž“αž…αŸ’αžšαžΎαž“ αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž”αŸ’αžšαžΎ microcontroller αž’αž˜αŸ’αž˜αžαžΆ (αž˜αž·αž“αž˜αŸ‚αž“ "αžšαžΉαž„") αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΌαžŠ PIN... αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž˜αžΎαž› (αž“αŸ…αž‘αžΎαž™) αžαžΆαžαžΎαž’αŸ’αžœαžΈαŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž€αžΆαžšαž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž“αŸ…αž›αžΎαž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡!

αžαžΎαž’αŸ’αž“αž€αž’αžΆαž…αžŽαŸ‚αž“αžΆαŸ†αž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Aigo? αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαžœαž·αž—αžΆαž‚αž‚αŸ†αžšαžΌαž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸƒαžŠαŸ’αžšαžΆαž™ HDD αžŠαŸ‚αž›αž”αžΆαž“αž’αŸŠαž·αž“αž‚αŸ’αžšαžΈαž”αž“αŸ…αž†αŸ’αž“αžΆαŸ† 2015 αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž’αŸ’αžœαžΎ αž”αž‘β€‹αž”αž„αŸ’αž αžΆαž‰ αž“αŸ…αž›αžΎ SyScan αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αž‚αžΆαžαŸ‹αž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž”αž‰αŸ’αž αžΆαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαžŠαŸ’αžšαžΆαž™ HDD αžαžΆαž„αž€αŸ’αžšαŸ…αž‡αžΆαž…αŸ’αžšαžΎαž“ αž αžΎαž™αž”αžΆαž“αž’αŸ’αžœαžΎαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αž›αž˜αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž½αž€αžœαžΆαŸ” πŸ™‚

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž–αžΈαžšαž…αž»αž„αžŸαž”αŸ’αžαžΆαž αŸ αž“αž·αž„αž–αŸαž›αž›αŸ’αž„αžΆαž…αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαžŸαŸ’αžšαžΆαžœαž‡αŸ’αžšαžΆαžœαž“αŸαŸ‡αŸ” αžŸαžšαž»αž”αž”αŸ’αžšαž αŸ‚αž› 40 αž˜αŸ‰αŸ„αž„αŸ” αžšαžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαžŠαžΎαž˜αžŠαŸ†αž”αžΌαž„ (αž–αŸαž›αžαŸ’αž‰αž»αŸ†αž”αžΎαž€αžŒαžΈαžŸ) αžŠαž›αŸ‹αž…αž”αŸ‹ (αž…αžΆαž€αŸ‹αž€αžΌαžŠ PIN) αŸ” 40 αž˜αŸ‰αŸ„αž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž‘αžΆαŸ†αž„αž–αŸαž›αžœαŸαž›αžΆαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αŸ” αžœαžΆβ€‹αž‡αžΆβ€‹αž€αžΆαžšβ€‹αž’αŸ’αžœαžΎβ€‹αžŠαŸ†αžŽαžΎαžšβ€‹αžŠαŸβ€‹αžšαŸ†αž—αžΎαž”β€‹αž˜αž½αž™β€‹αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹