เบเบตเปเปเบกเปเบเบชเปเบงเบเบเบตเบชเบญเบเปเบฅเบฐเบชเบธเบเบเปเบฒเบเบเบญเบเบเบปเบเบเบงเบฒเบกเบเปเบฝเบงเบเบฑเบเบเบฒเบ hack เปเบเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเบปเบเปเบญเบเบเบฒเบเบเบญเบ. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบเบทเบญเบเบเปเบฒเบเบงเปเบฒเบเปเปเบเบปเบเบกเบฒเบเบตเป, เปเบเบทเปเบญเบเบฎเปเบงเบกเบเบฒเบเปเบเปเบเปเบฒเปเบญเบปเบฒเบฎเบฒเบเบเบดเบ Patriot (Aigo) SK8671 เปเบซเปเบเบฑเบเบเปเบญเบ, เปเบฅเบฐเบเปเบญเบเปเบเปเบเบฑเบเบชเบดเบเปเบเบเบฑเบเบกเบฑเบ, เปเบฅเบฐเบเบญเบเบเบตเปเบเปเบญเบเปเบเปเบเบเบฑเบเบชเบดเปเบเบเบตเปเบญเบญเบเบกเบฒเบเบฒเบเบกเบฑเบ. เบเปเบญเบเบเบตเปเบเบฐเบญเปเบฒเบเบเปเปเปเบ, เปเบซเปเปเบเปเปเบเบงเปเบฒเบญเปเบฒเบ
4. เบเบงเบเปเบฎเบปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบตเปเบเบฐเปเบญเบปเบฒ dump เบเบฒเบเบเบฒเบเปเบ PSoC flash drive
เบเบฑเปเบเบเบฑเปเบ, เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบตเปเปเบซเปเปเบซเบฑเบ (เบเบฑเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบชเปเบฒเบเบเบฑเปเบเบเบถเปเบเปเบ [เบเบฒเบเบเปเบฒเบญเบดเบ] ()) เบงเปเบฒเบฅเบฐเบซเบฑเบ PIN เปเบเปเบเบทเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบงเปเปเบเบเบงเบฒเบกเปเบฅเบดเบ flash เบเบญเบ PSoC. เบเบฑเปเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบญเปเบฒเบเบเบงเบฒเบกเปเบฅเบดเบ Flash เปเบซเบผเบปเปเบฒเบเบตเป. เบเบฒเบโเบซเบเปเบฒโเบเบญเบโเบงเบฝเบโเบเบฒเบโเบเบตเปโเบเปเบฒโเปเบเบฑเบโ:
- เปเบญเบปเบฒเบเบฒเบเบเบงเบเบเบธเบก "เบเบฒเบเบชเบทเปเบชเบฒเบ" เบเบฑเบ microcontroller;
- เบเบญเบเบซเบฒเบงเบดเบเบตเบเบตเปเบเบฐเบเบงเบเปเบเบดเปเบเบงเปเบฒ "เบเบฒเบเบชเบทเปเบชเบฒเบ" เบเบตเปเบเบทเบเบเบปเบเบเปเบญเบเบเบฒเบเบเบฒเบเบญเปเบฒเบเบเบฒเบเบเบฒเบเบเบญเบ;
- เบเบญเบเบซเบฒเบงเบดเบเบตเบเบตเปเบเบฐเบเปเบฒเบกเบเบฒเบเบเบปเบเบเปเบญเบ.
เบกเบตเบชเบญเบเบเปเบญเบเบเบตเปเบกเบฑเบเบชเบปเบกเปเบซเบเบชเบปเบกเบเบปเบเบเบตเปเบเบฐเบเบญเบเบซเบฒเบฅเบฐเบซเบฑเบ PIN เบเบตเปเบเบทเบเบเปเบญเบ:
- เบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ flash เบเบฒเบเปเบ;
- 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
5.1. ISSP เปเบกเปเบเบซเบเบฑเบ
"เบเบฒเบเบชเบทเปเบชเบฒเบ" เบเบฑเบ microcontroller เบชเบฒเบกเบฒเบเบซเบกเบฒเบเปเบเบดเบเบชเบดเปเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ: เบเบฒเบ "เบเบนเปเบเบฒเบเบเบฑเบเบเบนเปเบเบฒเบ" เปเบเบชเบนเปเบเบฒเบเปเบเปเบเบญเบเปเบเบเปเบเปเบญเบฐเบเบธเบชเบฑเบเบเบฒ serial (เบเบปเบงเบขเปเบฒเบเปเบเบฑเปเบ ICSP เบชเปเบฒเบฅเบฑเบ Microchip's PIC).
Cypress เบกเบตเบญเบฐเบเบธเบชเบฑเบเบเบฒเบเบญเบเบเบปเบเปเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเป, เปเบญเบตเปเบเบงเปเบฒ ISSP (เปเบเบฅเบฐเบเบปเบ serial programming protocol), เปเบเบดเปเบเปเบเปเบญเบฐเบเบดเบเบฒเบเบเบฒเบเบชเปเบงเบเปเบ.
- reboot PSoC;
- เบชเบปเปเบเบญเบญเบเบเบปเบงเปเบฅเบ magic เบเบฑเบ PIN เบเปเปเบกเบนเบ serial เบเบญเบ PSoC เบเบตเป; เปเบเบทเปเบญเปเบเบปเปเบฒเบชเบนเปเปเบซเบกเบเบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเบเบฒเบเบเบญเบ;
- เบชเบปเปเบเบเปเบฒเบชเบฑเปเบ, เปเบเบดเปเบเปเบเบฑเบเบชเบฒเบเบเบดเบเบเบฒเบงเบเบตเปเปเบญเบตเปเบเบงเปเบฒ "vectors".
เปเบญเบเบฐเบชเบฒเบ ISSP เบเปเบฒเบเบปเบ vectors เปเบซเบผเบปเปเบฒเบเบตเปเบชเปเบฒเบฅเบฑเบเบเบฝเบเปเบเปเบเปเบฒเบเบงเบเบซเบเปเบญเบเบเบญเบเบเปเบฒเบชเบฑเปเบ:
- เปเบฅเบตเปเบกเบเบปเปเบ -1
- เปเบฅเบตเปเบกเบเบปเปเบ -2
- Initialize-3 (เบเบฒเบเปเบฅเบทเบญเบ 3V เปเบฅเบฐ 5V)
- ID-SETUP
- READ-ID-WORD
- SET-BLOCK-NUM: 10011111010ddddddddd111, where dddddddd=block #
- เบฅเบปเบเบซเบผเบฒเบ
- เปเบเบฃเปเบเบก-เบเบฅเบฑเบญเบ
- เบขเบทเบเบขเบฑเบ-เบเบฑเปเบเบเปเบฒ
- READ-BYTE: 10110aaaaaaZDDDDDDDDZ1, เบเปเบญเบเบเบตเป DDDDDDDD = เบเปเปเบกเบนเบเบญเบญเบ, aaaaaa = เบเบตเปเบขเบนเป (6 เบเบดเบ)
- WRITE-BYTE: 10010aaaaaaaddddddd111, เบเปเบญเบเบเบตเป dddddddd = เบเปเปเบกเบนเบเบขเบนเปเปเบ, aaaaaa = เบเบตเปเบขเบนเป (6 เบเบดเบ)
- SECURE
- เบเบงเบเบชเบญเบ-เบเบฑเปเบ
- READ-CheckSUM: 10111111001ZDDDDDDDDZ110111111000ZDDDDDDDDZ1, เบเปเบญเบเบเบตเป DDDDDDDDDDDDDDDD = เบเปเปเบกเบนเบเบญเบญเบ: เบเบฒเบเบเบงเบเบชเบญเบเบญเบธเบเบฐเบเบญเบ
- เบฅเบถเบเบเบฅเบฑเบญเบ
เบเบปเบงเบขเปเบฒเบ, vector for Initialize-2:
1101111011100000000111 1101111011000000000111
1001111100000111010111 1001111100100000011111
1101111010100000000111 1101111010000000011111
1001111101110000000111 1101111100100110000111
1101111101001000000111 1001111101000000001111
1101111000000000110111 1101111100000000000111
1101111111100010010111
vectors เบเบฑเบเบซเบกเบปเบเบกเบตเบเบงเบฒเบกเบเบฒเบงเบเบฝเบงเบเบฑเบ: 22 bits. เปเบญเบเบฐเบชเบฒเบ HSSP เบกเบตเบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบ ISSP: "Vector ISSP เบเปเปเบกเบตเบซเบเบฑเบเบเบญเบ เปเปเบทเบญ เบเบฒเบเบฅเปเบฒเบเบฑเบเปเบฅเบฑเบเบเปเบญเบเบเบตเปเบชเบฐเปเบเบเปเบเบดเบเบเบธเบเบเบญเบเบเปเบฒเปเบเบฐเบเปเบฒ."
5.2. Demystifying vectors
เบฅเบญเบเบเบดเบเปเบเบดเปเบเบงเปเบฒเบกเบตเบซเบเบฑเบเปเบเบตเบเบเบถเปเบเบขเบนเปเบเบตเป. เปเบเปเบเบทเปเบญเบเบเบปเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบชเบปเบกเบกเบธเบเบงเปเบฒ vectors เบเบฝเบงเบเบฑเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบกเปเบเบชเบฐเบเบฑเบเบเบดเบเบเบญเบเบเปเบฒเปเบเบฐเบเปเบฒ M8C, เปเบเปเบซเบผเบฑเบเบเบฒเบเบเบงเบเปเบเบดเปเบเบชเบปเบกเบกเบธเบเบเบดเบเบฒเบเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบปเปเบเบเบปเบเบงเปเบฒ opcodes เบเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเปเบเบปเบเบเบฑเบ.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเป googled vector เบเปเบฒเบเปเบเบดเบเปเบฅเบฐเบกเบฒเปเบเบเบปเปเบง
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบญเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบเปเปเบกเบนเบเบเบตเปเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเบเบฒเบเบเบฒเบเบชเปเบงเบ "Supervisory ROM (SROM)".
- 00h:SWBootReset
- 01h: ReadBlock
- 02h: WriteBlock
- 03h: EraseBlock
- 06h: TableRead
- 07h: CheckSum
- 08h: Calibrate0
- 09h: Calibrate1
เปเบเบเบเบฒเบเบเบฝเบเบเบฝเบเบเบทเป vector เบเบฑเบเบเบฑเบเบเบฑเบ SROM, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบเบเบเบตเปเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบเปเบเบตเปเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเปเบเบเปเบเปเบเบเบญเบเบเบตเปเบเบฑเบเบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบ SROM เบเบตเปเบเบฒเบเปเบงเป. เบเปเบเบญเบเปเบเบเบฑเบเบชเบดเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเบชเบฒเบกเบเบดเบเบเปเบฒเบญเบดเบเบเบญเบ ISSP vectors:
- 100 => โwremโ
- 101 => โrdmemโ
- 110 => โเบเบดเบโ
- 111 => โrdregโ
เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบขเปเบฒเบเบชเบปเบกเบเบนเบเบเปเบฝเบงเบเบฑเบเบเบฐเบเบงเบเบเบฒเบเปเบเบดเบเบเบดเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฝเบเปเบเปเบเปเบฒเบเบเบฒเบเบชเบทเปเบชเบฒเบเปเบเบเบเบปเบเบเบฑเบ PSoC.
5.3. เบเบฒเบเบชเบทเปเบชเบฒเบเบเบฑเบ PSoC
เบเบฑเบเบเบฑเปเบเปเบเป Dirk Petrautsky เปเบเปเปเบฅเปเบง
เบเบฐเบฅเบธเบเบฒเบชเบฑเบเปเบเบเบงเปเบฒเปเบเปเบฅเบเบฐเบเบฒเบเบเบปเปเบเบเบงเปเบฒเบเบญเบเบเปเบญเบ, เบเปเบญเบเปเบเปเบเปเบฝเบเบฅเบฐเบซเบฑเบเบเบญเบ Dirk เบเปเบญเบเบเปเบฒเบเปเบฅเบฑเบเบเปเบญเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบเบฒเบเบเบฑเบเปเบเปเบเบญเบเบเปเบญเบเปเบ GitHub:
เบเบฑเปเบเบเบฑเปเบ, เบเบฒเบเบเปเบฒเปเบเป Arduino, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเบฒเบญเบดเบเปเบเปเบเบฝเบเปเบเป vectors "เบเบฒเบเบเบฒเบ" เบชเปเบฒเบฅเบฑเบ "เบเบฒเบเบชเบทเปเบชเบฒเบ". เบเปเบญเบเบเบฐเบเบฒเบเบฒเบกเบญเปเบฒเบ ROM เบเบฒเบเปเบเปเบเบเปเบเปเบเปเบฒเบชเบฑเปเบ VERIFY. เบเบฑเปเบเบเบตเปเบเบฒเบเปเบงเป, เบเปเบญเบเบเปเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเปเบเป. เบญเบฒเบเบเบฐเปเบเบฑเบเบเปเบญเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบดเบเบเปเบญเบเบเบฑเบเบเบฒเบเบญเปเบฒเบเบเบทเบเปเบเบตเบเปเบเปเบเบฒเบเปเบ flash drive.
เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโ, เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเบชเปเบฒเบ vectors เบเปเบฒเบโเบเบฒเบโเบเบญเบโเบเบปเบโเปเบญเบโเบเปเบฒโเบเบงเบโเบซเบเบถเปเบโเบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบฝเบโเปเบฅเบฐโเบเบฒเบโเบญเปเบฒเบโเบเบงเบฒเบกโเบเบปเบโเบเปเบฒ / เบเบฒเบโเบเบปเบโเบเบฐโเบเบฝเบโ. เบเบฐเบฅเบธเบเบฒเบชเบฑเบเปเบเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบญเปเบฒเบ SROM เบเบฑเบเบซเบกเบปเบเปเบเบดเบเปเบกเปเบเบงเปเบฒ flash drive เบเบฐเบเบทเบเบเปเบญเบเบเบฑเบ!
5.4. เบเบฒเบเบเปเบฒเบเบปเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเปเบเบเบดเบ
เบซเบผเบฑเบเบเบฒเบเปเบเบดเปเบ vectors " disassembled ", เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบปเปเบเบเบปเบเบงเปเบฒเบญเบธเบเบฐเบเบญเบเปเบเปเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบเบตเปเบเปเปเบกเบตเปเบญเบเบฐเบชเบฒเบ (0xF8-0xFA) เปเบเบทเปเบญเบฅเบฐเบเบธ opcodes M8C เบเบตเปเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบเบเบปเบ, เบเปเบฒเบกเบเบฒเบเบเบปเบเบเปเบญเบ. เบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบ opcodes เบเปเบฒเบเปเปเบเบฑเปเบ "ADD", "MOV A, X", "PUSH" เบซเบผเบท "JMP". เบเปเบเบญเบเปเบเบเบฑเบเบเบงเบเปเบเบปเบฒ (เปเบเบเปเบเบดเปเบเบเบปเบเบเบฐเบเบปเบเบเปเบฒเบเบเบฝเบเบเบตเปเบเบงเบเปเบเบปเบฒเบกเบตเบขเบนเปเปเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบ) เบเปเบญเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบงเปเบฒเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบเบตเปเบเปเปเบกเบตเปเบญเบเบฐเบชเบฒเบเปเบกเปเบเบเบปเบงเบเบดเบเปเบฅเปเบงเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบเบปเบเบเบฐเบเบด (A, X, SP เปเบฅเบฐ PC).
เบเบฑเปเบเบเบฑเปเบ, เบฅเบฐเบซเบฑเบ "disassembled" เบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบเปเบเบทเปเบญเบเบกเบท 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 # ะะตะดะพะบัะผะผะตะฝัะธัะพะฒะฐะฝะฝะฐั ะพะฟะตัะฐัะธั: ะฒัะฟะพะปะฝะธัั ะฒะฝะตัะฝะธะน ะพะฟะบะพะด
5.5. เบเบดเบเบเบงเบฒเบกเบเบญเบเปเบ
เปเบเบเบฑเปเบเบเบญเบเบเบตเปเบเปเบญเบเบชเบฒเบกเบฒเบเบเบดเบเบเปเปเบเบฑเบ PSoC เปเบเปเปเบฅเปเบง, เปเบเปเบเปเบญเบเบเบฑเบเบเปเปเบกเบตเบเปเปเบกเบนเบเบเบตเปเปเบเบทเปเบญเบเบทเปเบเปเบเปเบฝเบงเบเบฑเบเบเบงเบฒเบกเบเบญเบเปเบเบเบญเบ flash drive. เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบปเบเบเบฐเบฅเบถเบเบซเบผเบฒเบเปเบเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒ Cypress เบเปเปเปเบเปเปเบซเปเบเบนเปเปเบเปเบญเบธเบเบฐเบเบญเบเปเบเปเปเบเบทเปเบญเบเบงเบเปเบเบดเปเบเบงเปเบฒเบเบฒเบเบเปเบญเบเบเบฑเบเบเบทเบเปเบเบตเบเปเบเป. เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบธเบเปเบฅเบดเบเปเบเบปเปเบฒเปเบเปเบ Google เปเบเบทเปเบญเปเบเบปเปเบฒเปเบเปเบเบเบตเปเบชเบธเบเบงเปเบฒเบฅเบฐเบซเบฑเบ HSSP เบเบตเปเปเบซเปเปเบเบ Cypress เปเบเปเบเบทเบเบเบฑเบเบเบธเบเบซเบผเบฑเบเบเบฒเบ Dirk เบเปเบญเบเบเบปเบงเบเบฑเบเปเบเปเบเบญเบเบฅเบฒเบง. เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบ! vector เปเบซเบกเปเบเบตเปเปเบเปเบเบฐเบเบปเบเบงเปเบฒ:
[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
เบเบฒเบเบเปเบฒเปเบเป vector เบเบตเป (เปเบเบดเปเบ read_security_data เปเบ psoc.py), เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ bits เบเบงเบฒเบกเบเบญเบเปเบเบเบฑเบเบซเบกเบปเบเปเบ SRAM เบเบตเป 0x80, เบเปเบญเบเบเบตเปเบกเบตเบชเบญเบ bits เบเปเปเบเบฑเบเบเปเบญเบเบเบฑเบ.
เบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเบเบปเบเบเปเปเบฒ: เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบทเบเบเบปเบเบเปเบญเบเปเบเปเบซเบกเบ "เบเบดเบเบเบฒเบเบญเปเบฒเบเปเบฅเบฐเบเบฝเบเบเบฒเบเบเบญเบ". เบเบฑเปเบเบเบฑเปเบ, เบเปเปเบเบฝเบเปเบเปเบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบเบญเปเบฒเบเบซเบเบฑเบเบเบฒเบ flash drive, เปเบเปเบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบเบเบฝเบเบซเบเบฑเบเปเบเป (เบเบปเบงเบขเปเบฒเบเปเบเบฑเปเบเบเบฒเบเบเบดเบเบเบฑเปเบ ROM dumper เบขเบนเปเบเบตเปเบเบฑเปเบ). เปเบฅเบฐเบงเบดเบเบตเบเบฝเบงเบเบตเปเบเบฐเบเบดเบเบเบฒเบเบเปเบฒเบเบฒเบเบเบญเบเบเบฒเบเบเบปเบเบเปเบญเบเปเบกเปเบเบเบฒเบเบฅเบปเบเบฅเปเบฒเบเบเบดเบเบเบฑเบเบซเบกเบปเบ. ๐
6. เบเบฒเบเปเบเบกเบเบตเบเบฑเปเบเบเปเบฒเบญเบดเบ (เบฅเบปเปเบกเปเบซเบฅเบง): ROMX
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฐเบเบฒเบเบฒเบก trick เบเบฑเปเบเบเปเปเปเบเบเบตเป: เปเบเบทเปเบญเบเบเบฒเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ opcodes arbitrary, เปเบเบฑเบเบซเบเบฑเบเบเบถเปเบเบเปเปเบเปเบฒเปเบเบตเบเบเบฒเบ ROMX, เปเบเบดเปเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบญเปเบฒเบ flash memory? เบงเบดเบเบตเบเบฒเบเบเบตเปเบกเบตเปเบญเบเบฒเบเบเบตเบเบตเปเบเบฐเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบฑเบเบเบฑเบ ReadBlock เบเบตเปเบญเปเบฒเบเบเปเปเบกเบนเบเบเบฒเบ SROM (เบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบเบ vectors) เบเบงเบเปเบเบดเปเบเบงเปเบฒเบกเบฑเบเบเบทเบเปเบญเบตเปเบเบเบฒเบ ISSP. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, ROMX opcode conceivably เบญเบฒเบเบเบฐเบเปเปเบกเบตเบเบฒเบเบเบงเบเบชเบญเบเบเบฑเปเบเบเปเบฒเบง. เบเบฑเปเบเบเบฑเปเบเบเบตเปเปเบกเปเบเบฅเบฐเบซเบฑเบ 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
เบเปเบญเบฐเปเบ, เบฅเบฐเบซเบฑเบเบเบตเปเปเบเปเบเปเปเปเบเป. ๐ เบซเบผเบทเปเบเบเบเบตเปเบเบฐเปเบฎเบฑเบเบงเบฝเบ, เปเบเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ opcodes เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบญเบเบขเบนเปเบเบตเปเบเบปเบเบเบฐเบฅเบดเบ (0x28 0x30 0x40)! เบเปเบญเบเบเปเปเบเบดเบเบงเปเบฒเบเบฒเบเบเปเบฒเบเบฒเบเบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเบเบญเบเบญเบธเบเบฐเบเบญเบเปเบกเปเบเบญเบปเบเบเบฐเบเบญเบเบเบญเบเบเบฒเบเบเบปเบเบเปเบญเบเบเบฒเบเบญเปเบฒเบ. เบเบตเปเปเบกเปเบเบเปเบฒเบเบเบท trick เบเปเบฒเบเบงเบดเบชเบฐเบงเบฐเบเปเบฒเบซเบผเบฒเบ: เปเบกเบทเปเบญเบเบฐเบเบดเบเบฑเบ opcodes เบเบฒเบเบเบญเบ, เบฅเบปเบเปเบก ROM เบเบฐเบเบทเบเปเบญเบเปเบเบซเบฒ buffer เบเบปเปเบงเบเบฒเบง.
7. เบเบฒเบเปเบเบกเบเบตเบเบฑเปเบเบเบตเบชเบญเบ: Cold Boot Tracing
เปเบเบทเปเบญเบเบเบฒเบ trick ROMX เบเปเปเปเบเปเบเบปเบ, เบเปเบญเบเปเบฅเบตเปเบกเบเบดเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเปเบฝเบเปเบเบเบญเบทเปเบเบเบญเบ trick เบเบตเป - เบญเบฐเบเบดเบเบฒเบเบขเบนเปเปเบเบชเบดเปเบเบเบดเบก.
7.1. เบเบฒเบเบเบฑเบเบเบฑเปเบเบเบฐเบเบดเบเบฑเบ
เปเบญเบเบฐเบชเบฒเบ ISSP เบชเบฐเบซเบเบญเบ vector เบเปเปเปเบเบเบตเปเบชเปเบฒเบฅเบฑเบ 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, เบเบฑเปเบเบเบตเปเบชเบฐเปเบเบเบขเบนเปเปเบเปเบญเบเบฐเบชเบฒเบ (เบเปเปเปเบฎเปเบเบปเบงเปเบเบตเปเบ):
เบเบฑเบเบเบฑเบเบเบตเปเบเบฒเบเบเบงเบเบชเบญเบเบเบฒเบเบเบงเบเบชเบญเบ. เบกเบฑเบเบเบดเบเปเบฅเป checksum 16-bit เบเบญเบเบเปเบฒเบเบงเบเบเบฅเบฑเบญเบเบเบตเปเบเบนเปเปเบเปเบฅเบฐเบเบธเปเบงเปเปเบเบซเบเบถเปเบ flash bank, เปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบชเบนเบ. เบเบปเบงเบเปเบฒเบเบปเบเบเบฒเบ BLOCKID เบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเปเบฒเบเบเปเบฒเบเบงเบเบเบญเบเบเบฑเบเบเบตเปเบเบฐเบเบทเบเบเปเบฒเปเบเปเปเบเปเบงเบฅเบฒเบเบดเบเปเบฅเป checksum. เบเปเบฒเบเบญเบ "1" เบเบฝเบเปเบเปเบเบฐเบเบดเบเปเบฅเป checksum เบชเปเบฒเบฅเบฑเบ block zero; เปเบเบเบฐเบเบฐเบเบตเป "0" เบเบฐเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเบดเบเปเบฅเปเบเบฑเบเบซเบกเบปเบเบเบญเบ 256 blocks เบเบญเบ flash bank. checksum 16-bit เปเบกเปเบเบชเบปเปเบเบเบทเบเบเปเบฒเบ KEY1 เปเบฅเบฐ KEY2. เบเบฒเบฃเบฒเบกเบดเปเบเบต KEY1 เปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเบฒเบชเบฑเปเบเบเปเปเบฒ 8 เบเบดเบเบเบญเบ checksum, เปเบฅเบฐเบเบฒเบฅเบฒเบกเบดเปเบเบต KEY2 เปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเบฒเบชเบฑเปเบเบชเบนเบ 8 เบเบดเบ. เบชเปเบฒโเบฅเบฑเบโเบญเบธโเบเบฐโเบเบญเบโเบเบตเปโเบกเบตโเบเบฐโเบเบฒโเบเบฒเบ flash เบเปเบฒโเบเบงเบโเบซเบเบถเปเบโ, เบเบฒเบโเบเปเบฒโเบเบฒเบ checksum เปเบกเปเบโเปเบญเบตเปเบโเบงเปเบฒโเบชเปเบฒโเบฅเบฑเบโเปเบเปโเบฅเบฐโเบเบปเบโเปเบเบโเบเปเบฒเบโเบซเบฒเบโ. เปเบฒเบเปเบฅเบเบเบฐเบเบฒเบเบฒเบเบเบตเปเบกเบฑเบเบเบฐเปเบฎเบฑเบเบงเบฝเบเปเบเปเบเบทเบเบเปเบฒเบเบปเบเปเบเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบ FLS_PR1 (เปเบเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบดเบเปเบเบกเบฑเบเบเบปเบเบเบฑเบ flash bank เปเบเบปเปเบฒเบซเบกเบฒเบ).
เปเบซเปเบชเบฑเบเปเบเบเบงเปเบฒเบเบตเปเปเบกเปเบ checksum เบเปเบฒเบเบเบฒเบ: bytes เปเบเปเบเบทเบเปเบเบตเปเบกเบเบฝเบเปเบเปเบซเบเบถเปเบเบซเบผเบฑเบเบเบฒเบเบเบตเปเบญเบทเปเบ; เบเปเปเบกเบต quirks CRC fancy. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบฎเบนเปเบงเปเบฒเบซเบผเบฑเบ M8C เบกเบตเบเบธเบเบฅเบปเบเบเบฐเบเบฝเบเบเปเบญเบเบซเบผเบฒเบ, เบเปเบญเบเบชเบปเบกเบกเบธเบเบงเปเบฒเปเบกเบทเปเบญเบเบดเบเปเบฅเป checksum, เบเปเบฒเบฅเบฐเบเบฑเบเบเบฒเบเบเบฒเบเบเบฐเบเบทเบเบเบฑเบเบเบถเบเปเบงเปเปเบเบเบปเบงเปเบเบเบฝเบงเบเบฑเบเบเบตเปเบชเบธเบเบเปเบฒเบเบเบฐเปเบเบซเบฒเบเบปเบเปเบเปเบฎเบฑเบ: KEY1 (0xF8) / KEY2 (. 0xF9).
เบเบฑเปเบเบเบฑเปเบ, เปเบเบเบฒเบเบเบดเบเบชเบฐเบเบต, เบเบฒเบเปเบเบกเบเบตเบเบญเบเบเปเบญเบเปเบเบดเปเบเบเบทเบงเปเบฒ:
- เบเบงเบเปเบฎเบปเบฒเปเบเบทเปเบญเบกเบเปเปเบเปเบฒเบ ISSP.
- เบเบงเบเปเบฎเบปเบฒเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเบดเบเปเบฅเป checksum เปเบเบเปเบเป vector CHECKSUM-SETUP.
- เบเบงเบเปเบฎเบปเบฒ reboot เปเบฎเบเบเบฒเบเบเบฐเบฅเบดเบเบซเบผเบฑเบเบเบฒเบเบเบตเปเปเบเปเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบปเบเปเบงเป T.
- เบเบงเบเปเบฎเบปเบฒเบญเปเบฒเบ RAM เปเบเบทเปเบญเปเบซเปเปเบเปเบฎเบฑเบ checksum C เปเบเบเบฐเบเบธเบเบฑเบ.
- เปเบฎเบฑเบเบเปเปเบฒเบเบฑเปเบเบเบญเบ 3 เปเบฅเบฐ 4, เปเบเบตเปเบก T เปเบฅเบฑเบเบเปเบญเบเปเบเปเบเปเบฅเบฐเบเบฑเปเบ.
- เบเบงเบเปเบฎเบปเบฒเบเบนเปเบเปเปเบกเบนเบเบเบฒเบ flash drive เปเบเบเบเบฒเบเบซเบฑเบเบฅเบปเบ checksum C เบเปเบญเบเปเปเบฒเบเบฒเบเบญเบฑเบเบเบฑเบเบเบธเบเบฑเบ.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบกเบตเบเบฑเบเบซเบฒ: vector Initialize-1 เบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบชเบปเปเบเบซเบผเบฑเบเบเบฒเบ reboot เบเบฝเบเบเบฑเบ 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) ... เบเบฒเบเบเบตเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบชเบปเปเบเปเบฅเบ magic (เบเบฒเบเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเปเบเบดเบ) เปเบเบทเปเบญเปเบเบปเปเบฒเบชเบนเปเปเบซเบกเบเบเบฒเบเบเบฝเบเปเบเบผเปเบเบผเบก, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบญเปเบฒเบ 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();
- เบญเปเบฒเบ checkum_delay.
- เบเปเบฒเปเบเบตเบเบเบฒเบเบเบดเบเปเบฅเป checksum (send_checksum_v).
- เบฅเปเบเปเบฒเปเบฅเบเบฐเปเบงเบฅเบฒเบเบตเปเบเปเบฒเบเบปเบเปเบงเป; เบเปเบฒเบเบถเบเปเบเบดเบ pitfalls เบเบฑเปเบเบเปเปเปเบเบเบตเป:
- เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเปเบชเบโเปเบงโเบฅเบฒโเบซเบผเบฒเบโเบเบปเบโเบโเปโเบงเบฒโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบญเบโเบซเบฒโเบชเบดเปเบโเบเบตเปโเบกเบฑเบโเบซเบฑเบโเบญเบญเบโ
เปเบฅเบทเปเบญเบเปเบกเปเบเบฃเบงเบดเบเบฒเบเบต เปเบฎเบฑเบเบงเบฝเบเบขเปเบฒเบเบเบทเบเบเปเบญเบเบเบฝเบเปเบเปเบกเบตเบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเบเปเปเปเบเบตเบ 16383 ฮผs; - เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเบเปเบฒเบเปเบฒเบเบงเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบเบเบปเบเบเปเบงเบฒเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบปเปเบเบเบปเบเบงเปเบฒเบเบฒเบเบเบฑเบเบเปเบฒเปเบกเปเบเบฃเบงเบดเบเบฒเบเบต, เบเปเบฒ 0 เบเบทเบเบชเบปเปเบเบเบฑเบเบกเบฑเบเปเบเบฑเบเบงเบฑเบเบชเบฐเบเบธเบเปเบญเบ, เปเบฎเบฑเบเบงเบฝเบเบเปเปเบเบทเบเบเปเบญเบเบขเปเบฒเบเบชเบปเบกเบเบนเบ!
- เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเปเบชเบโเปเบงโเบฅเบฒโเบซเบผเบฒเบโเบเบปเบโเบโเปโเบงเบฒโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบญเบโเบซเบฒโเบชเบดเปเบโเบเบตเปโเบกเบฑเบโเบซเบฑเบโเบญเบญเบโ
- เบฃเบตเบเบนเบ PSoC เปเบเบปเปเบฒเบชเบนเปเปเปเบเบเบฒเบเบเบฝเบเปเบเบฃเปเบเบฃเบก (เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบชเบปเปเบเปเบฅเบ magic, เปเบเบเบเปเปเบเปเบญเบเบชเบปเปเบ vectors เปเบเบทเปเบญเบเบเบปเปเบ).
เบฅเบฐเบซเบฑเบเบชเบธเบเบเปเบฒเบเปเบ 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))
เปเบเบเบซเบเปเป, เบฅเบฐเบซเบฑเบเบเบตเปเปเบฎเบฑเบเบซเบเบฑเบ:
- เบฃเบตเบเบนเบ PSoC (เปเบฅเบฐเบชเบปเปเบเบกเบฑเบเปเบฅเบ magic).
- เบชเบปเปเบ vector เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบฑเบก.
- เปเบเบซเบฒเบเบฑเบเบเบฑเบ Arduino Cmnd_STK_START_CSUM (0x85), เบเปเบญเบเบเบตเปเบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเปเบ microseconds เบเบทเบเบชเบปเปเบเบเปเบฒเบเปเบเบฑเบเบเบฒเบฅเบฒเบกเบดเปเบเบต.
- เบญเปเบฒเบ checksum (0xF8 เปเบฅเบฐ 0xF9) เปเบฅเบฐ undocumented register 0xF1.
เบฅเบฐเบซเบฑเบเบเบตเปเบเบทเบเบเบฐเบเบดเบเบฑเบ 10 เปเบเบทเปเบญเปเบ 1 microsecond. 0xF1 เปเบกเปเบเบฅเบงเบกเบขเบนเปเบเบตเปเบเบตเปเปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเปเบเบฑเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเบเบฝเบงเบเบตเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเปเบเปเบงเบฅเบฒเบเบดเบเปเบฅเป checksum. เบเบฒเบเบเบตเบกเบฑเบเปเบเบฑเบเบเบปเบงเปเบเบเบปเปเบงเบเบฒเบงเบเบฒเบเบเบฐเบเบดเบเบเบตเปเปเบเปเปเบเบเบซเบปเบงเปเปเบงเบเปเบซเบเบเบปเบเปเบฅเบเบเบฐเบเบดเบ. เปเบซเปเบชเบฑเบเปเบเบเบเบฒเบ hack เบเบตเปเบซเบเปเบฒเบเบฝเบเบเบตเปเบเปเบญเบเปเบเปเปเบเบทเปเบญเบเบฑเบ Arduino เปเบเบเปเบเป picocom เปเบกเบทเปเบญ Arduino เบขเบธเบเบชเบฐเปเบเบเบญเบฒเบเบฒเบเบเบญเบเบเบตเบงเบดเบ (เบเปเปเบฎเบนเปเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบ).
7.2. เบเบฒเบเบญเปเบฒเบเบเบปเบเปเบเปเบฎเบฑเบ
เบเบปเบเปเบเปเบฎเบฑเบเบเบญเบเบชเบฐเบเบดเบ 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 เบเบปเบงเบเบดเบ, a null byte เบเปเปเบเปเบฝเบเปเบเบเบเปเบฒเบเบตเปเบญเปเบฒเบ. เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบเบฑเบเบเบฑเปเบเปเบเปเบเบฑเปเบเบเบญเบเบเบฒเบเบเบดเบเปเบฅเปเบเบฑเบเบซเบกเบปเบ (8192 bytes) เปเบเปเปเบงเบฅเบฒ 0,1478 เบงเบดเบเบฒเบเบต (เบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเปเบฅเบฑเบเบเปเบญเบเปเบเปเบเปเบฅเบฐเบเบฑเปเบเบเบตเปเบกเบฑเบเปเบฅเปเบ), เปเบเบดเปเบเปเบเบปเปเบฒเบเบฑเบเบเบฐเบกเบฒเบ 18,04 ฮผsเบเปเป byte, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเปเปเบงเบฅเบฒเบเบตเปเปเบเบทเปเบญเบเบงเบเบชเบญเบเบกเบนเบเบเปเบฒ 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 dumps เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเปเบฒ microsecond เบเบธเบเป. เปเบงเบฅเบฒเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบดเปเบกเบเบฑเบเบซเบกเบปเบ 8192 bytes เบเบญเบ flash drive เปเบกเปเบเบเบฐเบกเบฒเบ 48 เบเบปเปเบงเปเบกเบ.
7.3. Flash เบเบฒเบเบเบทเปเบเบเบนเบเบฒเบเบชเบญเบ
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฑเบเบเปเปเบเบฑเบเปเบเปเบชเปเบฒเปเบฅเบฑเบเบเบฒเบเบเบฝเบเบฅเบฐเบซเบฑเบเบเบตเปเบเบฐเบชเปเบฒเบเบฅเบฐเบซเบฑเบเปเบเบเบเบฒเบเบเบญเบ flash drive เบขเปเบฒเบเบชเบปเบกเบเบนเบ, เบเปเบฒเบเบถเบเปเบเบดเบ deviations เบเบฑเบเบซเบกเบปเบเบเบตเปเปเบเปเปเบงเบฅเบฒ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบทเปเบเบเบนเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบตเปเปเบฅเปเบง. เปเบเบทเปเบญเปเบซเปเปเบเปเปเบเบงเปเบฒเบเปเบญเบเปเบฎเบฑเบเบขเปเบฒเบเบเบทเบเบเปเบญเบ, เบเปเบญเบเปเบเปเบเบญเบเบกเบฑเบเบญเบญเบเปเบเบเปเบเป 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
เปเบเบดเปเบโเปเบฅเปเบงโเปเบเบฑเบโเปเบโเปเบเปโ!
7.4. เบเบญเบเบซเบฒเบเบตเปเบขเบนเปเปเบเบฑเบเบฎเบฑเบเบชเบฒเบฅเบฐเบซเบฑเบ PIN
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบญเปเบฒเบ checksum เปเบเปเบงเบฅเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบงเบเปเบเบดเปเบเปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเปเบฅเบฐเบเปเบญเบเบเบตเปเบกเบฑเบเบเปเบฝเบเปเบเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒ:
- เปเบชเปเบฅเบฐเบซเบฑเบ PIN เบเบดเบ;
- เบเปเบฝเบเบฅเบฐเบซเบฑเบ PIN.
เบซเบเปเบฒเบเปเบฒเบญเบดเบ, เปเบเบทเปเบญเบเบญเบเบซเบฒเบเบตเปเบขเบนเปเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเปเบเบเบเบฐเบกเบฒเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบญเบปเบฒ checksum dump เปเบ 10 ms เปเบเบตเปเบกเบเบถเปเบเบซเบผเบฑเบเบเบฒเบ reboot. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบชเปเบฅเบฐเบซเบฑเบ PIN เบเบดเบเปเบฅเบฐเปเบฎเบฑเบเปเบเบฑเปเบเบเบฝเบงเบเบฑเบ.
เบเบปเบเปเบเปเบฎเบฑเบเปเบกเปเบเบเปเปเปเบเบฑเบเบชเบธเบเบซเบผเบฒเบ, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบซเบผเบฒเบ. เปเบเปเปเบเบเบตเปเบชเบธเบเบเปเบญเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบงเปเบฒ checksum เบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบขเบนเปเบเปเบญเบเปเบเบเปเบญเบเบซเบเบถเปเบเบฅเบฐเบซเบงเปเบฒเบ 120000 ยตs เปเบฅเบฐ 140000 ยตs เบเบญเบเบเบฒเบเบเบฑเบเบเปเบฒ. เปเบเป "pincode" เบเบตเปเบเปเบญเบเบชเบฐเปเบเบเบขเบนเปเบเบฑเปเบเบเปเปเบเบทเบเบเปเบญเบเบขเปเบฒเบเบชเบปเบกเบเบนเบ - เปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบเบญเบกเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเบฑเบเบเปเบฒMicrosconds, เปเบเบดเปเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเปเบเบเบเบฐเบซเบฅเบฒเบเปเบกเบทเปเบญ 0 เบเบทเบเบชเบปเปเบเบเบฑเบเบกเบฑเบ.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบซเบผเบฑเบเบเบฒเบเปเบเปเปเบงเบฅเบฒเปเบเบทเบญเบ 3 เบเบปเปเบงเปเบกเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบทเปเปเบเปเบงเปเบฒเบฅเบฐเบเบปเบ SROM เปเบเบซเบฒ CheckSum เปเบเปเบฎเบฑเบเบเบฒเบเปเบเปเบเบฝเบเปเบเบฑเบเบงเบฑเบเบชเบฐเบเบธเบเปเบญเบเบเบตเปเบฅเบฐเบเบธเบเปเบฒเบเบงเบเบเบฑเบเบชเปเบฒเบฅเบฑเบ checksum! เบเบฑเปเบ. เบเบงเบโเปเบฎเบปเบฒโเบชเบฒโเบกเบฒเบโเปเบฎเบฑเบโเปเบเปโเบขเปเบฒเบโเบเปเบฒเบโเบเบฒเบโเบเบตเปโเบขเบนเปโเบเบฒเบโเปเบเบฑเบโเบฎเบฑเบโเบชเบฒโเบเบญเบโเบฅเบฐโเบซเบฑเบ PIN เปเบฅเบฐ "เบเบฒเบโเบเบฐโเบเบฒโเบเบฒเบกโเบเบตเปโเบเปเปโเบเบทเบโเบเปเบญเบโ" counter, เบกเบตโเบเบงเบฒเบกโเบเบทเบโเบเปเบญเบโเบชเบนเบโเปเบเบดเบ 64-byte block.
เบเบฒเบเปเบฅเปเบเปเบเบทเปเบญเบเบเบปเปเบเบเบญเบเบเปเบญเบเปเบเปเบเบปเบเบเปเปเปเบเบเบตเป:
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเปเบฝเบเบฅเบฐเบซเบฑเบ PIN เบเบฒเบ "123456" เปเบเบฑเบ "1234567" เปเบฅเบฐเปเบเปเบฎเบฑเบ:
เบเบฑเปเบเบเบฑเปเบ, เบฅเบฐเบซเบฑเบ PIN เปเบฅเบฐเบเบปเบงเบเปเบฒเบเบเบฒเบเบเบญเบเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเบตเปเบเปเปเบเบทเบเบเปเบญเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบฐเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบเบฅเบฑเบญเบ 126.
7.5. เบเบฒเบเบเบดเปเบกเบเบตเปเปเบซเบเบทเปเบญเบเบญเบเบเบฑเบ เปเบฅเบเบเบต 126
เบเบฑเบ #126 เบเบงเบเบเบฑเปเบเบขเบนเปเบเปเบญเบเปเบเบเปเบญเบเบซเบเบถเปเบเบเบฐเบกเบฒเบ 125x64x18 = 144000ฮผs, เบเบฒเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบญเบเบเบฒเบเบเบดเบเปเบฅเป checksum, เปเบ dump เปเบเบฑเบกเบเบญเบเบเปเบญเบ, เปเบฅเบฐเบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเปเบญเบเบเปเบฒเบเปเบเบฑเบเปเบเปเบเป. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบซเบผเบฑเบเบเบฒเบเปเบญเบปเบฒเบเบตเปเปเบซเบเบทเปเบญเบเบตเปเบเปเปเบเบทเบเบเปเบญเบเบเปเบฒเบเบงเบเบซเบฅเบฒเบเบญเบญเบเบเปเบงเบเบเบปเบเปเบญเบ (เปเบเบทเปเบญเบเบเบฒเบเบเบฒเบเบชเบฐเบชเบปเบกเบเบญเบ "เบเบฒเบเบเบดเบเปเบเบทเบญเบเปเบงเบฅเบฒเปเบฅเบฑเบเบเปเบญเบ"), เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบชเบดเปเบเบชเบธเบเบเบฒเบเปเบเปเบฎเบฑเบ bytes เปเบซเบผเบปเปเบฒเบเบตเป (เปเบ latency เบเบญเบ 145527 ฮผs):
เปเบซเบฑเบเปเบเปเบเบฑเบเปเบเบเบงเปเบฒเบฅเบฐเบซเบฑเบ PIN เบเบทเบเปเบเบฑเบเปเบงเปเปเบเบฎเบนเบเปเบเบเบเบตเปเบเปเปเปเบเปเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบ! เบเปเบฒเปเบซเบผเบปเปเบฒเบเบตเป, เปเบเปเบเบญเบ, เบเปเปเปเบเปเบเบฝเบเปเบงเปเปเบเบฅเบฐเบซเบฑเบ ASCII, เปเบเปเบเปเบญเบเบงเปเบฒเบกเบฑเบเบเบฒเบเบปเบ, เบเบงเบเบกเบฑเบเบชเบฐเบเปเบญเบเปเบเบดเบเบเบฒเบเบญเปเบฒเบเบเบตเปเปเบญเบปเบฒเบกเบฒเบเบฒเบเปเบเปเบเบเบดเบก capacitive.
เบชเบธเบเบเปเบฒเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเปเบฒเปเบเบตเบเบเบฒเบเบเบปเบเบชเบญเบเปเบเบตเปเบกเปเบเบตเบกเปเบเบทเปเบญเบเบญเบเบซเบฒเบเปเบญเบเบเบตเปเปเบเบทเปเบญเบเบเบฑเบเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเบตเปเบเปเปเบเบตเบเบทเบเปเบเบฑเบเปเบงเป. เบเบตเปเปเบกเปเบเบเบปเบเปเบเปเบฎเบฑเบ:
0xFF - เบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ "15 เบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบก" เปเบฅเบฐเบกเบฑเบเบซเบผเบธเบเบฅเบปเบเปเบเปเบเปเบฅเบฐเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบเบตเปเบฅเบปเปเบกเปเบซเบฅเบง.
7.6. เบเบฒเบเบเบนเปเบฅเบฐเบซเบฑเบ 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
เปเบซเปเบ! เปเบฎเบฑเบเบงเบฝเบ!
เบเบฐเบฅเบธเบเบฒเบฎเบฑเบเบเบฒเบเบงเปเบฒเบเปเบฒ latency เบเบตเปเบเปเบญเบเปเบเปเปเบกเปเบเบญเบฒเบเบเบฐเบเปเบฝเบงเบเปเบญเบเบเบฑเบ PSoC เบชเบฐเปเบเบฒเบฐเบญเบฑเบเบเบฝเบง - เบญเบฑเบเบเบตเปเบเปเบญเบเปเบเป.
8. เบเปเปเปเบเปเบกเปเบเบซเบเบฑเบ?
เบเบฑเปเบเบเบฑเปเบ, เปเบซเปเบชเบฐเบซเบผเบธเบเบเปเบฝเบงเบเบฑเบเบเปเบฒเบ PSoC, เปเบเบชเบฐเบเบฒเบเบเบฒเบเบเบญเบเปเบ Aigo เบเบญเบเบเบงเบเปเบฎเบปเบฒ:
- เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบญเปเบฒเบ SRAM เปเบเบดเบเปเบกเปเบเบงเปเบฒเบกเบฑเบเบเบทเบเบญเปเบฒเบเบเบทเบเบเบปเบเบเปเบญเบ;
- เบเบงเบโเปเบฎเบปเบฒโเบชเบฒโเบกเบฒเบโเบซเบผเบตเบโเปเบงเบฑเปเบโเบเบฒเบโเบเปเบญเบโเบเบฑเบโเบเปเบฒเบ swipe เปเบเปโเปเบเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบเบฒเบโเปเบเบกโเบเบตโเบเบฒเบโเบเบดเบโเบเบฒเบกโเปเบเบตเบโเปเบขเบฑเบโเปเบฅเบฐโเปเบเบโเบเบปเบโเบเบฒเบโเบญเปเบฒเบโเบฅเบฐโเบซเบฑเบ PINโ.
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบฒเบเปเบเบกเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบเปเปเบเบปเบเบเปเบญเบเบเบฒเบเบขเปเบฒเบเปเบเบทเปเบญเบเบเบฒเบเบเบฑเบเบซเบฒเบเบฒเบ synchronization. เบกเบฑเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบฑเบเบเบธเบเบเบฑเปเบเบเปเปเปเบเบเบตเป:
- เบเบฝเบเบเบฐเปเบซเบเบเปเบเบทเปเบญเบเบญเบเบฅเบฐเบซเบฑเบเบเปเปเบกเบนเบเบเบปเบเบเบฐเบฅเบดเบเบเบตเปเปเบเปเบฎเบฑเบเบเบปเบเบกเบฒเบเบฒเบเบเบฒเบเปเบเบกเบเบต "เบเบดเบเบเบฒเบกเปเบเบตเบเปเบขเบฑเบ";
- เปเบเปเปเบเบทเปเบญเบเบกเบท FPGA เปเบเบทเปเบญเบชเปเบฒเบเบเบงเบฒเบกเบฅเปเบฒเบเปเบฒเปเบงเบฅเบฒเบเบตเปเบเบฑเบเปเบเบเบเบงเปเบฒ (เบซเบผเบทเปเบเปเบเบปเบงเบเบฑเบเปเบงเบฅเบฒเบฎเบฒเบเปเบง Arduino);
- เบเบฐเบเบฒเบเบฒเบกเปเบเบกเบเบตเบญเบทเปเบ: เปเบชเปเบฅเบฐเบซเบฑเบ PIN เบเบตเปเบเปเปเบเบทเบเบเปเบญเบเปเบเบเปเบเบเบเบฐเบเบฒ, เบเบดเบเปเบเบตเบเปเบซเบกเปเปเบฅเบฐ dump RAM, เบซเบงเบฑเบเบงเปเบฒเบฅเบฐเบซเบฑเบ PIN เบเบตเปเบเบทเบเบเปเบญเบเบเบฐเบเบทเบเบเบฑเบเบเบถเบเปเบงเปเปเบ RAM เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฝเบเบเบฝเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบตเปเบเปเปเปเบกเปเบเปเบฅเบทเปเบญเบเบเปเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบ Arduino, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบฅเบฐเบเบฑเบเบชเบฑเบเบเบฒเบ Arduino เปเบกเปเบ 5 volts, เปเบเบเบฐเบเบฐเบเบตเปเบเบฐเบเบฐเบเปเบฒเบกเบฐเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบงเบเบชเบญเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบชเบฑเบเบเบฒเบ 3,3 volt.
เบชเบดเปเบเบซเบเบถเปเบเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบเบฒเบเบฒเบกเปเบเปเปเบกเปเบเบเบฒเบเบซเบผเบตเปเบเบเบฑเบเบฅเบฐเบเบฑเบเปเบฎเบเบเบฑเบเปเบเบทเปเบญเบเปเบฒเบกเบเบฒเบเบเปเบญเบเบเบฑเบเบเบฒเบเบญเปเบฒเบ. เบเปเบฒเบงเบดเบเบตเบเบฒเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเปเปเบกเบนเบเบเบตเปเบเบทเบเบเปเบญเบเบขเปเบฒเบเปเบเปเบเบดเบเบเบฒเบ flash drive - เปเบเบเบเบตเปเบเบฐเบญเบตเบเปเบชเปเบเบฒเบเบญเปเบฒเบ checksum เบเบตเปเบกเบตเบเบฒเบเบเบฑเบเบเปเบฒเบเบญเบเปเบงเบฅเบฒเบเบตเปเบเปเปเบเบฑเบเปเบเบ.
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ SROM เบญเบฒเบเบเบฐเบญเปเบฒเบ bits guards เปเบเบเบเปเบฒเบเบเบฒเบเปเบเบฅเบฐเบเบปเบ ReadBlock, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ.
เบชเบดเปเบเบเบตเปเบกเปเบงเบเบญเบตเบเบญเบฑเบเบซเบเบถเปเบเบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเบเบทเบเบฒเบเบเบนเบเบเปเบฅเบฐเบเบตเบญเบญเบเบเบฒเบเบเบดเบ: เปเบญเบปเบฒ SRAM dump, เบเปเบฒเบเบปเบเบเบฒเบเปเบเบฅเบฐเบเบปเบเบเบตเปเบเปเปเบกเบตเปเบญเบเบฐเบชเบฒเบเปเบฅเบฐเบเบธเบเบญเปเบญเบ.
9 เบชเบฐเบซเบผเบธเบ
เบเบฑเปเบเบเบฑเปเบ, เบเบฒเบเบเบปเบเบเปเบญเบเปเบเบเบตเปเปเบเบฑเบเบชเบดเปเบเบเบตเปเบเปเบญเบเบเบฒเบเบซเบผเบฒเบ, เปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเปเบเป microcontroller เบเบปเบเบเบฐเบเบด (เบเปเป "เปเบเบ") เปเบเบทเปเบญเปเบเบฑเบเบฎเบฑเบเบชเบฒเบฅเบฐเบซเบฑเบ PIN ... เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเบญเบเบเบฑเบเบเปเปเปเบเปเปเบเบดเปเบ (เปเบเบทเปเบญ) เบงเปเบฒเบชเบดเปเบเบเบตเปเปเบเบฑเบเปเบเบเบฑเบเบเปเปเบกเบนเบ. เบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเปเบเบญเบธเบเบฐเบเบญเบเบเบตเป!
เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบฐเบเปเบฒเบซเบเบฑเบเบชเปเบฒเบฅเบฑเบ Aigo? เบซเบผเบฑเบโเบเบฒเบโเบเบฒเบโเบงเบดโเปเบเบฒเบฐโเบชเบญเบโเบชเบฒเบกโเปเบเบโเบเบญเบโเบเบฒเบโเปเบเบปเปเบฒโเบฅเบฐโเบซเบฑเบ HDD drivesโ, เปเบโเบเบต 2015 เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบเปโเปเบฎเบฑเบโ
เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบเปเปเบงเบฅเบฒเบชเบญเบเบเปเบฒเบเบญเบฒเบเบดเบเปเบฅเบฐเบซเบผเบฒเบเปเบเบญเบเปเบฅเบเปเบฎเบฑเบเบเบฒเบเบเบปเปเบเบเบงเปเบฒเบเบตเป. เบเบฑเบเปเบปเบเบเบฐเบกเบฒเบ 40 เบเบปเปเบงเปเบกเบ. เบเบฑเบเบเบฒเบเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบ (เปเบกเบทเปเบญเบเปเบญเบเปเบเบตเบเปเบเปเบ) เบเบปเบเปเบเบดเบเบเบตเปเบชเบธเบ (เบเบฒเบเบเบดเปเบกเบฅเบฐเบซเบฑเบ PIN). เบเบฝเบงเบเบฑเบ 40 เบเบปเปเบงเปเบกเบเบเบฐเบเบญเบเบกเบตเปเบงเบฅเบฒเบเบตเปเบเปเบญเบเปเบเปเปเบงเบฅเบฒเบเบฝเบเบเบปเบเบเบงเบฒเบกเบเบตเป. เบกเบฑเบเปเบเบฑเบเบเบฒเบเปเบเบตเบเบเบฒเบเบเบตเปเบซเบเปเบฒเบเบทเปเบเปเบเบฑเปเบเบซเบผเบฒเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com