แแก แแ แแก แกแขแแขแแแก แแแแ แ แแ แแแแ แแแฌแแแ แแแ แ แแแแแแแจแแคแแ แแก แแแกแแแแแก แแแขแแฎแแแก แจแแกแแฎแแ. แจแแแแฎแกแแแแแ, แ แแ แชแแขแ แฎแแแก แฌแแ แแแแแแแ แแแแแขแแแ แแแขแ แแแขแ (แแแแ) SK8671 แแงแแ แ แแแกแแ แแ แแแแแแฌแงแแแขแ แแแกแ แแแแแแ แฃแแแแ แแ แแฎแแ แแแแแแ แแ, แ แแช แแแแแแแแ. แกแแแแ แจแแแแแแ แฌแแแแแแฎแแแ, แแฃแชแแแแแแแ แฌแแแแแแฎแแ
4. แฉแแแ แแแฌแงแแแ แแแแแแกแแงแ แแแแก แแฆแแแแก แจแแแ PSoC แคแแแจ แแ แแแแแแแ
แแกแ แ แแ, แงแแแแแคแแ แ แแแฃแแแแแแก (แ แแแแ แช แฉแแแ แแแแแแแแแแ [แแแ แแแ แแแฌแแแจแ]()), แ แแ PIN แแแแ แแแแฎแแแ PSoC-แแก แคแแแจ แกแแฆแ แแแจแ. แแแแขแแ, แฉแแแ แฃแแแ แฌแแแแแแแฎแแ แแก แคแแแจ แกแแฆแ แแแแแ. แกแแญแแ แ แกแแแฃแจแแแแแแก แฌแแแ แแแฌแแแ:
- แแแแ แแแแแขแ แแแแ แแแ โแแแแฃแแแแแชแแแกโ แแแแขแ แแแ;
- แแแแแแแ แกแแจแฃแแแแแ แจแแแแแฌแแแ แแ แแก แแฃ แแ แ แแก โแแแแฃแแแแแชแแโ แแแชแฃแแ แแแ แแแแ แฌแแแแแฎแแแกแแแ;
- แแแแแแ แแแชแแแก แแแแ แแแก แแแแแ แแแ.
แแ แกแแแแแก แแ แ แแแแแแ, แกแแแแช แแแ แ แแฅแแก แกแฌแแ แ PIN แแแแแก แซแแแแแก:
- แจแแแ แคแแแจ แแแฎแกแแแ แแแ;
- SRAM, แกแแแแช แแแ แแแแ แจแแแซแแแแ แจแแแแแฎแแก แแแแฎแแแ แแแแแก แแแแ แจแแงแแแแแ แแแ แแแแแแ แจแแกแแแแ แแแแแ.
แฌแแแกแแแแก แงแฃแ แแแแ, แแฆแแแแจแแแ, แ แแ แแ แแแแแช แแแแแฎแแ แฎแ แจแแแ PSoC แคแแแจ แแ แแแแแก แแแแฆแแแ - แแแกแ แฃแกแแคแ แแฎแแแแแก แกแแกแขแแแแก แแแแ แแแก แแแแแ แขแแฅแแแแแก แจแแขแแแแก แแแแแงแแแแแแ, แกแแฎแแแฌแแแแแแ "แชแแแ แฉแแขแแแ แแแแก แแแแแแแแ" - ISSP แแ แแขแแแแแแก แแแฃแกแแแฃแแแแแแ แจแแกแแซแแแแแแแแแแก แจแแแ แฃแแแแแก แจแแแแแ. แแแแ แกแแจแฃแแแแแ แแแแชแ แแแ แแแแแ แแแแแแแแแ แคแแฅแขแแแ แแแ PIN แแแแ.
$ ./psoc.py
syncing: KO OK
[...]
PIN: 1 2 3 4 5 6 7 8 9
แแ แแแ แแแแก แกแแแแแแ แแแแ:
Arduino แแแแ HSSP-แกแแแแก ;แแแแแแแก แแ แแแแแ แ แแ ISSP แแแแแแขแแแ .
5. ISSP แแ แแขแแแแแ
5.1. แ แ แแ แแก ISSP
แแแแ แแแแแขแ แแแแ แแแ โแแแแฃแแแแแชแแโ แจแแแซแแแแ แแแจแแแแแแก แกแฎแแแแแกแฎแแ แ แแแแก: โแแแแงแแแแแแแแแ แแแแงแแแแแแแแแโ แกแแ แแฃแแ แแ แแขแแแแแแก แแแแแงแแแแแแ แฃแ แแแแ แแฅแแแแแแแแแ (แแแแแแแแแ, ICSP Microchip-แแก PIC-แแกแแแแก).
Cypress-แก แแฅแแก แแแแกแแแแก แกแแแฃแแแ แ แกแแแฃแแ แแแแก แแ แแขแแแแแ, แ แแแแแกแแช แแฌแแแแแ ISSP (แกแแกแขแแแแจแ แกแแ แแฃแแ แแ แแแ แแแแ แแแแก แแ แแขแแแแแ), แ แแแแแแช แแแฌแแแแแ แแ แแฆแฌแแ แแแแ
- แแแแแขแแแ แแแ PSoC;
- แแแแแแขแแแแ แฏแแแแกแแฃแ แ แแแแแ แ แแ PSoC-แแก แกแแ แแฃแแ แแแแแชแแแแแแก แแแแแ; แแแ แ แแ แแแ แแแแ แแแแก แ แแแแแจแ แจแแกแแแ;
- แแแแแแแแแ แแ แซแแแแแแแ, แ แแแแแแแช แแ แแก แแ แซแแแ แแแขแแแแ แกแขแ แแฅแแแแแ, แ แแแแแแกแแช แฃแฌแแแแแแ "แแแฅแขแแ แแแก".
ISSP แแแแฃแแแแขแแชแแ แแแแกแแแฆแแ แแแก แแ แแแฅแขแแ แแแก แแ แซแแแแแแแแก แแฎแแแแ แแชแแ แ แ แแแแแแแแแกแแแแก:
- แแแแชแแแแแแแชแแ-1
- แแแแชแแแแแแแชแแ-2
- Initialize-3 (3V แแ 5V แแแ แแแแขแแแ)
- ID-SETUP
- READ-ID-WORD
- SET-BLOCK-NUM: 10011111010dddddddd111, แกแแแแช dddddddd=แแแแแ #
- แแแงแแ แ แฌแแจแแ
- แแ แแแ แแแ-แแแแแ
- VERIFY-SETUP
- READ-BYTE: 10110aaaaaaZDDDDDDDDDZ1, แกแแแแช DDDDDDDD = แแแแแชแแแแแแก แแแแฆแแแ, aaaaaa = แแแกแแแแ แแ (6 แแแขแ)
- WRITE-BYTE: 10010aaaaaaddddddd111, แกแแแแช dddddddd = แแแแแชแแแแแ แจแแงแแแแแแแ, aaaaaa = แแแกแแแแ แแ (6 แแแขแ)
- แกแแแแฃแแแ
- CHECKSUM-SETUP
- READ-CHECKSUM: 10111111001ZDDDDDDDDDZ110111111000ZDDDDDDDDZ1, แกแแแแช DDDDDDDDDDDDDDDDDD = แแแแแชแแแแแ แแแแแแแก: แแแฌแงแแแแแแแแก แกแแแแแขแ แแแ แฏแแแ
- แแแแแแก แฌแแจแแ
แแแแแแแแแ, Initialize-2-แแก แแแฅแขแแ แ:
1101111011100000000111 1101111011000000000111
1001111100000111010111 1001111100100000011111
1101111010100000000111 1101111010000000011111
1001111101110000000111 1101111100100110000111
1101111101001000000111 1001111101000000001111
1101111000000000110111 1101111100000000000111
1101111111100010010111
แงแแแแ แแแฅแขแแ แก แแฅแแก แแแแแ แกแแแ แซแ: 22 แแแขแ. HSSP-แแก แแแแฃแแแแขแแชแแแก แแฅแแก แแแแแขแแแแแ แแแคแแ แแแชแแ ISSP-แแ: โISSP แแแฅแขแแ แ แกแฎแแ แแ แแคแแ แแ, แแฃ แแ แ แชแแขแ แแแแแแแแแแ แแแ, แ แแแแแแช แฌแแ แแแแแแแแก แแแกแขแ แฃแฅแชแแแแแก แแ แแแแแแแแแกโ.
5.2. แแแฅแขแแ แแแแก แแแแแกแขแแคแแแแชแแ
แแแแแ แแแแแ แแแแแ แ แ แฎแแแแ แแฅ. แแแแแแแแ แแแแแ แแแแ แแฃแแแแแ, แ แแ แแแแแ แแแฅแขแแ แแแ แแงแ M8C แแแกแขแ แฃแฅแชแแแแแก แแแแแแฃแแ แแแ แกแแแแ, แแแแ แแ แแ แฐแแแแแแแแก แจแแแแฌแแแแแก แจแแแแแ แแฆแแแแแฉแแแ, แ แแ แแแแ แแชแแแแแก แแแแแแแแ แแ แแแแฎแแแแ.
แแแ แ แแแแแฃแแแ แแแแแ แแแฅแขแแ แ แแ แฌแแแแฌแงแแ
แจแแแแแ แแ แจแแแซแแแ แซแแแแแ แกแแกแแ แแแแแ แแแคแแ แแแชแแแก แแแแแแแแ Supervisory ROM (SROM) แแแแงแแคแแแแแแแแ.
- 00 แกแ: SWBoot Reset
- 01 แกแ: ReadBlock
- 02 แกแ: WriteBlock
- 03 แกแ: แฌแแจแแ แแแแแ
- 06h: TableRead
- 07 แกแ: CheckSum
- 08 แกแ: แแแแแแแแ แแแ 0
- 09 แกแ: แแแแแแแแ แแแ 1
แแแฅแขแแ แฃแแ แกแแฎแแแแแแก SROM แคแฃแแฅแชแแแแแก แจแแแแ แแแแ, แฉแแแ แจแแแแแซแแแ แแแแแคแแฅแกแแ แแ แแ แแ แแขแแแแแแ แแฎแแ แแแญแแ แแแ แกแฎแแแแแกแฎแแ แแแแ แแชแแแแ แแแกแแแแแแแ SROM แแแ แแแแขแ แแแแแ. แแแแก แฌแงแแแแแแ, แฉแแแ แจแแแแแซแแแ แแแแจแแคแ แแ ISSP แแแฅแขแแ แแแแก แแแ แแแแ แกแแแ แแแขแ:
- 100 => "wrem"
- 101 => "rdmem"
- 110 => "wrreg"
- 111 => "แ แแแฃแแแชแแ"
แแฃแแชแ, แฉแแแแ แแ แแชแแกแแแแก แกแ แฃแแ แแแแแแ แจแแกแแซแแแแแแแ แแฎแแแแ PSoC-แแแ แแแ แแแแแ แ แแแแฃแแแแแชแแแ.
5.3. แแแแฃแแแแแชแแ PSoC-แแแ
แแแแแแแแ แแแ แ แแแขแ แแฃแชแแ แฃแแแ
แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แฉแแแ แแแแแแแก แแ แแก แแ แกแแแแแแ แจแแแชแแแแ แแแ แแแก แแแแ. แแฅแแแ แจแแแแซแแแแ แแแแแแ แฉแแแ แแแแแคแแแแชแแ GitHub-แแ:
แแกแ แ แแ, Arduino-แก แแแแแงแแแแแแ, แแแ แแแแแ แแแแแแแงแแแ แแฎแแแแ "แแคแแชแแแแฃแ แ" แแแฅแขแแ แแแ "แแแแฃแแแแแชแแแกแแแแก". แแชแแแ แจแแแ ROM-แแก แฌแแแแแฎแแ VERIFY แแ แซแแแแแแก แแแแแงแแแแแแ. แ แแแแ แช แแแกแแแแแแแแ แแงแ, แแ แแก แแแ แแแแแฎแแ แฎแ. แแแแแ แแแแก แแแแ, แ แแ แฌแแแแแฎแแแก แแแชแแแก แแแขแแแ แแแแฅแขแแฃแ แแแฃแแแ แคแแแจ แแ แแแแจแ.
แจแแแแแ แจแแแฅแแแแ แ แแแแแแแแ แฉแแแ แแแ แขแแแ แแแฅแขแแ แ แแแฎแกแแแ แแแแก/แ แแแแกแขแ แแแแก แฉแแฌแแ แแกแ แแ แฌแแแแแฎแแแกแแแแก. แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แฉแแแ แจแแแแแซแแแ แฌแแแแแแแฎแแ แแแแแ SROM, แแแฃแฎแแแแแแ แแแแกแ, แ แแ แคแแแจ แแ แแแแ แแแชแฃแแแ!
5.4. แฉแแแแ แ แแแแกแขแ แแแแก แแแแแขแแคแแแแชแแ
โแแแจแแแแโ แแแฅแขแแ แแแแก แแแแแแแแแ แแแแก แจแแแแแ แแฆแแแแแฉแแแ, แ แแ แแแฌแงแแแแแแแ แแงแแแแแก แแแฃแกแแแฃแแแแแ แ แแแแกแขแ แแแก (0xF8-0xFA) M8C แแแแแแแแแก แแแกแแแฃแกแขแแแแแ, แ แแแแแแแช แจแแกแ แฃแแแแฃแแแ แฃแจแฃแแแแ แแแชแแแก แแแแ แแแก แแแแแ. แแแแ แแแแชแ แกแแจแฃแแแแแ แแแแแขแแ แแแแแ แกแฎแแแแแกแฎแแ แแแแ แแชแแฃแแ แแแแ, แ แแแแ แแชแแ "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 # ะะตะดะพะบัะผะผะตะฝัะธัะพะฒะฐะฝะฝะฐั ะพะฟะตัะฐัะธั: ะฒัะฟะพะปะฝะธัั ะฒะฝะตัะฝะธะน ะพะฟะบะพะด
5.5. แฃแกแแคแ แแฎแแแแแก แแแขแแแ
แแ แแขแแแแ แฃแแแ แจแแแแซแแแ PSoC-แแแ แแแแฃแแแแแชแแ, แแแแ แแ แฏแแ แแแแแ แแ แแแฅแแก แกแแแแ แแแคแแ แแแชแแ แคแแแจ แแ แแแแแก แฃแกแแคแ แแฎแแแแแก แแแขแแแแก แจแแกแแฎแแ. แซแแแแแ แแแแแแแแ แแ แแก แคแแฅแขแ, แ แแ Cypress แแ แแฌแแแแก แแแฌแงแแแแแแแแก แแแแฎแแแ แแแแแก แแ แแแแแ แกแแจแฃแแแแแแก, แ แแแ แจแแแแแฌแแแก แแ แแก แแฃ แแ แ แแแชแแ แแแแฅแขแแฃแ แแแฃแแ. แฃแคแ แ แฆแ แแแ แฉแแแฃแฆแ แแแแแ Google-แก, แ แแแ แกแแแแแแแ แแแแแแ, แ แแ Cypress-แแก แแแแ แแแฌแแแแแฃแแ HSSP แแแแ แแแแแฎแแแ แแแก แจแแแแแ, แ แแช แแแ แแแ แแแแแฃแจแแ แแแแแกแ แแแแแคแแแแชแแ. แฒแแแขแแแแช! แแก แแฎแแแ แแแฅแขแแ แ แแแแแฉแแแ:
[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-แแ, แกแแแแช แแ แแก แแ แ แแแขแ แแแแ แแแชแฃแ แแแแแจแ.
แจแแแแแ แแแแแ แแฃแแแแแแ: แงแแแแแคแแ แ แแแชแฃแแแ "แแแ แ แแแแฎแแแกแ แแ แฌแแ แแก แแแแแ แแแ" แ แแแแแจแ. แแแจแแกแแแแแ, แคแแแจ แแ แแแแแแแ แแ แ แแฎแแแแ แแแ แแคแแ แก แฌแแแแแแแฎแแแ, แแ แแแแ แแแ แช แแแ แแคแแ แก แแแแฌแแ แ (แแแแแแแแแ, ROM-แแก แแฃแแแแ แแก แแแงแแแแแ). แแ แแแชแแแก แแแแแ แแแแก แแ แแแแแ แแ แแแ แแ แแก แแแแแ แฉแแแแก แแแแแแแแ แฌแแจแแ. ๐
6. แแแ แแแแ (แฉแแแแ แแแแแ) แจแแขแแแ: ROMX
แแฃแแชแ, แจแแแแแซแแแ แแชแแแแ แจแแแแแแ แฎแ แแแ: แแแแแแแแ แแแแฅแแก แแแแแแแแฃแ แ แแแแแแแแแก แจแแกแ แฃแแแแแก แจแแกแแซแแแแแแแ, แ แแขแแ แแ แฃแแแ แจแแแแกแ แฃแแแ ROMX, แ แแแแแแช แแแแแแงแแแแแ แคแแแจ แแแฎแกแแแ แแแแก แฌแแกแแแแแฎแแ? แแ แแแแแแแแก แแฅแแก แฌแแ แแแขแแแแก แแแ แแ แจแแแกแ. แแแแก แแแแ, แ แแ ReadBlock แคแฃแแฅแชแแ, แ แแแแแแช แแแแฎแฃแแแแก แแแแแชแแแแแก SROM-แแแ (แ แแแแแกแแช แแแฅแขแแ แแแ แแงแแแแแแ) แแแแฌแแแแก, แแ แแก แแฃ แแ แ แแแกแ แแแแแซแแฎแแแ ISSP-แแแ. แแฃแแชแ, ROMX opcode-แก แจแแแซแแแแ แแ แฐแฅแแแแแก แแกแแแ แจแแแแฌแแแแ. แแ, แแแแแแแก แแแแ (แแ แแฃแแแแก แแแแจแ แ แแแแแแแแ แแแแฎแแแ แ แแแแกแแก แแแแแขแแแแก แจแแแแแ):
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. แแแแ แ แจแแขแแแ: Cold Boot Tracing
แแแแก แแแแ, แ แแ ROMX แแแแแแ แแ แแแฃแจแแแ, แแแแแฌแงแ แคแแฅแ แ แแ แฎแ แแแแก แกแฎแแ แแแ แแแชแแแแ - แแฆแฌแแ แแแแ แแฃแแแแแแชแแแจแ
7.1. แแแแฎแแ แชแแแแแแ
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" แแแแแแแแแก แกแแแแแขแ แแแ แฏแแแก แแฎแแแแ แแฃแแแแแแ แแแแแแกแแแแก; แฎแแแ "0" แแแแแแฌแแแแก แคแแแจ แแแแแแก 256-แแ แแแแแแก แฏแแแฃแ แ แฏแแแแก แแแแแแแแแก. 16-แแแขแแแแ แกแแแแแขแ แแแ แฏแแแ แแ แฃแแแแแ KEY1 แแ KEY2 แแแจแแแแแแ. KEY1 แแแ แแแแขแ แ แแแแฎแแแก แกแแแแแขแ แแแ แฏแแแแก แแแแแแ แ แแแแก 8 แแแขแก, แฎแแแ KEY2 แแแ แแแแขแ แ แแแแฎแแแก แแแฆแแแ แ แแแแก 8 แแแขแก. แ แแแแแแแแ แคแแแจ แแแแแแก แแฅแแแ แแแฌแงแแแแแแแแแแกแแแแก, แกแแแแแขแ แแแ แฏแแแแก แคแฃแแฅแชแแ แแแแแแซแแฎแแแ แแแแแแฃแแแกแแแแก แชแแแแ. แแแแแแก แแแแแ แ, แ แแแแแแแช แแก แแแฃแจแแแแแก, แแแแแแแแ FLS_PR1 แ แแแแกแขแ แแ (แแแกแจแ แแแขแแก แแแงแแแแแแ, แ แแแแแแช แจแแแกแแแแแแแ แกแแแแแแ แคแแแจ แแแแแก).
แแแแแแแแแกแฌแแแแ, แ แแ แแก แแ แแก แแแ แขแแแ แกแแแแแขแ แแแ แฏแแแ: แแแแขแแแ แฃแแ แแแแ แแแแขแแแ แแ แแแแแแแแก แแแงแแแแแแ; แแ แแ แแก แแแแแแ CRC แฃแชแแแฃแ แแแแแ. แแแ แแ แแแแกแ, แแแแก แชแแแแ, แ แแ M8C แแแ แแแก แแฅแแก แ แแแแกแขแ แแแแก แซแแแแแ แแชแแ แ แแแแ แแแ, แแ แแแแแ แแฃแแ, แ แแ แกแแแแแขแ แแแ แฏแแแแก แแแแแแแ แแจแแแแกแแก, แจแฃแแแแแฃแ แ แแแแจแแแแแแแแแ แฉแแแฌแแ แแแ แแแแแ แชแแแแแแแจแ, แ แแแแแแแช แกแแแแแแแ แแแแแแ แแแแแกแแแแแแ: KEY1 (0xF8) / KEY2 ( 0xF9).
แแกแ แ แแ, แแแแ แแฃแแแ แฉแแแ แจแแขแแแ แแกแ แแแแแแงแฃแ แแแ:
- แฉแแแ แแฃแแแแจแแ แแแแแ ISSP-แแก แกแแจแฃแแแแแแ.
- แฉแแแ แแแฌแงแแแ แกแแแแแขแ แแแ แฏแแแแก แแแแแแแแแก CHECKSUM-SETUP แแแฅแขแแ แแก แแแแแงแแแแแแ.
- แฉแแแ แแแแแขแแแ แแแแ แแ แแชแแกแแ แก แแแแกแแแฆแแ แฃแแ แแ แแแก แจแแแแแ T.
- แฉแแแ แแแแแฎแฃแแแแ RAM-แก, แ แแ แแแแแฆแแ แแแแแแแแ แ แกแแแแแขแ แแแ แฏแแแ C.
- แแแแแแแ แแ แแแแแฏแแแ 3 แแ 4, แงแแแแ แฏแแ แแ แแแแแ แแแแแ แแแ T.
- แฉแแแ แแฆแแแแแแแ แแแแแชแแแแแก แคแแแจ แแ แแแแแแแ แฌแแแ แกแแแแแขแ แแแ แฏแแแแก 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
แแก แแแแ แแแแแฌแแ แก แฉแแแแก แซแแแ แคแแก แกแแแแแขแ แแแ แฏแแแก 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();
- แฌแแแแแแฎแแ checkum_delay.
- แแแฃแจแแแ แกแแแแแขแ แแแ แฏแแแแก แแแแแแแ แแจแแแ (send_checksum_v).
- แแแแแแแแ แแแแกแแแฆแแ แฃแ แแแ แแแแก; แจแแแแแแ แฎแแ แแแแแแแก แแแแแแแแกแฌแแแแแแ:
- แแแแ แ แแ แ แแแแแแ แแ, แกแแแแ แแ แแแแแแ, แ แ แแแแแแแก
แแแงแแแแแแ แแแแ แแฌแแแแแ แแฃแจแแแแก แกแฌแแ แแ แแฎแแแแ 16383 ฮผs-แแ แแแขแ แจแแคแแ แฎแแแแ; - แแ แจแแแแแ แแกแแ แแแแแแ แแ แแแแแ แแ แ, แกแแแแ แแ แแฆแแแแแฉแแแ, แ แแ delayMicroseconds, แแฃ แแแก 0 แแแแแแชแแแ แจแแงแแแแแก แกแแฎแแ, แแฃแจแแแแก แกแ แฃแแแแ แแ แแกแฌแแ แแ!
- แแแแ แ แแ แ แแแแแแ แแ, แกแแแแ แแ แแแแแแ, แ แ แแแแแแแก
- แแแแแขแแแ แแแ PSoC แแ แแแ แแแแ แแแแก แ แแแแแจแ (แฉแแแ แฃแแ แแแแ แแแแแแแแแ แฏแแแแกแแฃแ แแแแแ แก แแแแชแแแแแแแชแแแก แแแฅแขแแ แแแแก แแแแแแแแแก แแแ แแจแ).
แกแแแแแแ แแแแ แแแแแแจแ:
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-แก (แแ แฃแแแแแแแก แฏแแแแกแแฃแ แแแแแ แก).
- แแแแแแแแก แแแแชแแแแแแแชแแแก แกแ แฃแ แแแฅแขแแ แแแก.
- แแซแแฎแแแก Arduino แคแฃแแฅแชแแแก Cmnd_STK_START_CSUM (0x85), แกแแแแช แแแงแแแแแแ แแแแ แแฌแแแแแจแ แแแแแแแก แแแ แแแแขแ แแ.
- แแแแฎแฃแแแแก แกแแแแแขแ แแแ แฏแแแก (0xF8 แแ 0xF9) แแ แแแฃแกแแแฃแแแแแ แ แแแแกแขแ แก 0xF1.
แแก แแแแ แจแแกแ แฃแแแแฃแแแ 10 แฏแแ 1 แแแแ แแฌแแแจแ. 0xF1 แแฅ แจแแแแก, แ แแแแแ แแก แแงแ แแ แแแแแ แแ แ แแแแกแขแ แ, แ แแแแแแช แจแแแชแแแแ แกแแแแแขแ แแแ แฏแแแแก แแแแแแแแแกแแก. แจแแกแแซแแแ, แแก แแ แแก แ แแฆแแช แแ แแแแแแ แชแแแแแ, แ แแแแแกแแช แแงแแแแแก แแ แแแแแขแแแฃแแ แแแแแแฃแ แ แแ แแแฃแแ. แแแแแแแแแกแฌแแแแ แแแฎแแแฏแ แฐแแแ, แ แแแแแกแแช แแแงแแแแ แแ แแฃแแแแก แแแแแขแแแ แแแแกแแแแก แแแแแแแแแก แแแแแงแแแแแแ, แ แแแแกแแช Arduino แจแแฌแงแแแขแก แกแแชแแชแฎแแแก แแแจแแแแแก แฉแแแแแแแก (แฌแแ แแแแแแแ แแ แแแฅแแก แ แแขแแ).
7.2. แจแแแแแแก แแแแฎแแ
แแแแแแแก แกแแ แแแขแแก แจแแแแแ แแกแ แแแแแแงแฃแ แแแ (แแแแแ แขแแแแแฃแแแ แฌแแแแแฎแแแกแแแแก):
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
แ แแแแ แช แแแฅแแแ, แแแแฅแแก แแ แแแแแแ: แแแแแแแแ แฉแแแ แแแฃแจแแแแ แ แแแแฃแ แ แแแแจแแแแ แฏแแแแ, แแฃแแแแแแ แแแแขแ แแ แชแแแแก แฌแแแแแฎแฃแ แแแแจแแแแแแแแก. แแฃแแชแ, แแแแแแแแ แแแแแ แแแแแแแแแก แแ แแชแแแฃแ แแก (8192 แแแแขแ) แกแญแแ แแแแ 0,1478 แฌแแแ (แแชแแ แ แแแ แแแชแแแแแ แงแแแแแ แแแจแแแแแกแแก), แ แแช แฃแแ แแก แแแแฎแแแแแแ 18,04 ฮผs แแแแ แแแแขแก, แฉแแแ แจแแแแแซแแแ แแแแแแแงแแแแ แแก แแ แ แจแแกแแแแฌแแแแแแ แฏแแแแก แแแแจแแแแแแแแก แจแแกแแแแฌแแแแแแ แจแแกแแแแแแก แแ แแก. แแแ แแแแ แแแจแแแแแกแแแแก, แงแแแแแคแแ แ แแแแแฎแแแ แกแแแแแแ แแแ แขแแแแ, แ แแแแแ แแแแแแแแแแ แแ แแชแแแฃแ แแก แฎแแแแ แซแแแแแแ แงแแแแแแแแก แแแแฅแแแก แแแแแแ. แแฃแแชแ, แแ แแแแแแกแแงแ แแแแก แแแกแแกแ แฃแแ แแแแแแแแ แแฃแกแขแแ, แ แแแแแ โแแ แแแก แแชแแ แ แแแแแฎแ แแแโ แงแแแแแ แแแจแแแแแกแแก แแแขแฃแแแแก แแแแจแแแแแแแแแ:
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 แแแแขแแก แแแแแงแ แแก แกแแแ แแ แแแแ แแชแแฃแแ แแ แ แแแแฎแแแแแแ 48 แกแแแแแ.
7.3. แคแแแจ แแ แแแแแ แ แแแแแกแขแ แฃแฅแชแแ
แแ แฏแแ แแ แแแแแกแ แฃแแแแแ แแแแแก แแแฌแแ แ, แ แแแแแแช แกแ แฃแแแ แแฆแแแแแแก แคแแแจ แแ แแแแแก แแ แแแ แแแแก แแแแก, แงแแแแ แแ แแแก แแแแแฎแ แแก แแแแแแแแกแฌแแแแแแ. แแฃแแชแ, แแ แฃแแแ แแฆแแแแแแแ แแ แแแแแก แแแกแแฌแงแแกแ. แแแแกแแแแแก, แ แแ แแแแ แฌแแฃแแแ, แ แแ แแก แกแฌแแ แแ แแแแแแแแ, แแ แแแจแแแ แแแ 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 แแแแแก แจแแแแฎแแแก แแแกแแแแ แแแก แแแแแ
แแฎแแ, แ แแแแกแแช แฉแแแ แจแแแแแซแแแ แฌแแแแแแแฎแแ แกแแแแแขแ แแแ แฏแแแ แกแแญแแ แ แแ แแก, แฉแแแ แจแแแแแซแแแ แแแ แขแแแแ แจแแแแแแฌแแแ แ แแแแ แแ แกแแ แแชแแแแแ แแก, แ แแแแกแแช แฉแแแ:
- แจแแแงแแแแแ แแ แแกแฌแแ แ PIN แแแแ;
- แจแแชแแแแแ แแแแแก แแแแ.
แแแ แแแ แ แแแจแ, แแแฎแกแแแ แแแแก แกแแแแ แแฃแแ แแแกแแแแ แแแก แแแกแแซแแแแแ, แแแแแขแแแ แแแแก แจแแแแแ แแแแฆแ แแแแจแแแแ แฏแแแแก แแแแแแกแแงแ แแแ 10 ms แแแขแแแแ. แแแ แ แแ แแกแฌแแ แ PIN แจแแแแงแแแแ แแ แแแแแ แแแแแแแแ.
แจแแแแแ แแ แช แแฃ แแกแ แกแแกแแแแแแแ แแงแ, แ แแแแแ แแแแ แ แชแแแแแแแ แแงแ. แแแแ แแ แกแแแแแแแ แแ แจแแแซแแแ แแแแแแแแแ, แ แแ แกแแแแแขแ แแแ แฏแแแ แจแแแชแแแแ แกแแแฆแแช 120000 ฮผs แแ 140000 ฮผs แแแแแแแแแแแ. แแแแ แแ โแแแแแแแโ, แ แแแแแแช แแ แแฅ แแฉแแแแ, แกแ แฃแแแแ แแ แแกแฌแแ แ แแงแ - delayMicroseconds แแ แแชแแแฃแ แแก แแ แขแแคแแฅแขแแก แแแแ, แ แแแแแแช แฃแชแแแฃแ แ แแแแแแก แแแแแแแก, แ แแแแกแแช แแแก 0 แแแแแแชแแแ.
แจแแแแแ, แแแแฅแแแก 3 แกแแแแแก แแแขแแ แแแแก แจแแแแแ, แแแแแฎแกแแแแ, แ แแ SROM แกแแกแขแแแแก แแแแแซแแฎแแแ CheckSum แแฆแแแก แแ แแฃแแแแขแก แจแแงแแแแแก แกแแฎแแ, แ แแแแแแช แแแแกแแแฆแแ แแแก แแแแแแแแก แ แแแแแแแแแก แกแแแแแขแ แแแ แฏแแแแกแแแแก! แ แแ. แฉแแแ แจแแแแแซแแแ แแแ แขแแแแ แแแแแฎแแแแแ PIN แแแแแก แจแแแแฎแแแก แแแกแแแแ แแแก แแแแแแแแแชแแ แแ โแแ แแกแฌแแ แ แแชแแแแแแแแแกโ แแ แแชแฎแแแแ, 64 แแแแขแแแแ แแแแแแก แกแแแฃแกแขแแ.
แฉแแแแ แแแแแแแแ แแแแแ แแแจแแแแแแแ แจแแแแแแ แจแแแแแ แแแแแแฆแ:
แจแแแแแ แจแแแชแแแแ PIN แแแแ "123456"-แแแ "1234567"-แแ แแ แแแแแฆแ:
แแแ แแแแ, PIN แแแแ แแ แแ แแกแฌแแ แ แแชแแแแแแแแแก แแ แแชแฎแแแแ, แ แแแแ แช แฉแแแก, แแแแฎแแแ No126 แแแแแจแ.
7.5. No126 แแแแแแก แแแแแแกแแงแ แแแแก แแฆแแแ
แแแแแ #126 แฃแแแ แแงแแก แแแแแแแแแฃแแ แกแแแฆแแช 125x64x18 = 144000ฮผs, แกแแแแแขแ แแแ แฏแแแแก แแแแแแแ แแจแแแแก แแแฌแงแแแแแแ, แฉแแแก แกแ แฃแ แแแแแแกแแงแ แแแจแ แแ แกแแแแแแ แแแแแฏแแ แแแแแ แแแแแแงแฃแ แแแ. แจแแแแแ, แแ แแแแแ แแ แแกแฌแแ แ แแแแแแกแแงแ แแแแก แฎแแแแ แแแแฆแแแแก แจแแแแแ (โแแชแแ แ แแ แแแก แแแแแฎแ แแแแกโ แแแแ แแแแแแก แแแแ), แแ แแแแแฆแ แแก แแแแขแแแ (145527 ฮผs แแแขแแแขแฃแ แแแแ):
แแจแแแ แแ, แ แแ PIN แแแแ แแแแฎแแแ แแแจแแคแ แฃแแ แกแแฎแแ! แแก แแแแจแแแแแแแแแ, แ แ แแฅแแ แฃแแแ, แแ แแฌแแ แแแ ASCII แแแแแแจแ, แแแแ แแ แ แแแแ แช แแ แแแแแ, แแกแแแ แแกแแฎแแแก แขแแแแแแแแก แแแแแแแขแฃแ แแแแ แแฆแแแฃแ แฌแแแแแฎแแแแก.
แแแแแแแก, แแแแแ แ แแแแแแแแ แขแแกแขแ แฉแแแแขแแ แ, แ แแแ แแแแแแ, แกแแ แแงแ แจแแแแฎแฃแแ แชแฃแแ แแชแแแแแแแก แแ แแชแฎแแแแ. แแ แจแแแแแ:
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
แฐแแ! แแฃแจแแแแก!
แแแฎแแแ, แแแแแแแแแกแฌแแแแ, แ แแ แแแขแแแขแฃแ แ แแแแจแแแแแแแแแ, แ แแแแแแแช แแ แแแแแแแงแแแ, แกแแแแ แแฃแแแ แจแแแกแแแแแแแ แแ แ แแแแแ แแขแฃแ PSoC-แก - แแ แแแแแแแงแแแ.
8. แ แ แแ แแก แจแแแแแแ?
แแกแ แ แแ, แแแแแ แจแแแแฏแแแแ PSoC แแฎแแ แแก, แฉแแแแ Aigo แแแกแแแก แแแแขแแฅแกแขแจแ:
- แฉแแแ แจแแแแแซแแแ แฌแแแแแแแฎแแ SRAM แแแจแแแแช แแ, แแฃ แแก แแแชแฃแแแ;
- แฉแแแ แจแแแแแซแแแ แแแแ แแ แแแฃแแ แแ แแแ แขแงแแแก แกแแฌแแแแแฆแแแแแ แแแชแแแก แชแแแ แฉแแขแแแ แแแแก แแแแแ แจแแขแแแแก แแแแแงแแแแแแ แแ แแแ แแแแแ PIN แแแแแก แฌแแแแแฎแแแ.
แแฃแแชแ, แฉแแแแก แจแแขแแแแก แแฅแแก แแแ แแแแฃแแ แฎแแ แแแแแแ แกแแแฅแ แแแแแแชแแแก แแ แแแแแแแแแก แแแแ. แแก แจแแแซแแแแ แแแฃแแฏแแแแกแแแก แจแแแแแแแแแ แแ:
- แแแฌแแ แแ แแ แแแ แแแ, แ แแแ แกแฌแแ แแ แแแจแแคแ แแ แแแแแแแแแแ แแแแแชแแแแแ, แ แแแแแแแช แแแแฆแแแ โแชแแแ แฉแแขแแแ แแแแก แแแแแโ แจแแขแแแแก แจแแแแแแ;
- แแแแแแงแแแแ FPGA แแแฏแแขแ แฃแคแ แ แแฃแกแขแ แแ แแแก แแแงแแแแแแแก แจแแกแแฅแแแแแแ (แแ แแแแแแงแแแแ Arduino แแแแ แแขแฃแ แแก แขแแแแแ แ);
- แกแชแแแแ แกแฎแแ แจแแขแแแ: แจแแแงแแแแแ แแแแแแแแแแ แแฃแแแ แแ แแกแฌแแ แ PIN แแแแ, แแแแแขแแแ แแแ แแ แฉแแแแแแ RAM, แแ แแแแแแ, แ แแ แกแฌแแ แ PIN แแแแ แจแแแแแฎแแแ RAM-แจแ แจแแแแ แแแแกแแแแก. แแฃแแชแ, แแแแก แแแแแแแแ แแ แช แแกแ แแแแแแแ Arduino-แแ, แ แแแแแ Arduino-แก แกแแแแแแแก แแแแ 5 แแแแขแแ, แฎแแแ แแแคแ, แ แแแแแกแแช แฉแแแ แแแแแแฎแแแแแ, แแฃแจแแแแก 3,3 แแแแขแแแแ แกแแแแแแแแแ.
แแ แแ แกแแแแขแแ แแกแ แ แแ, แ แแช แจแแแซแแแแ แกแชแแแแ, แแ แแก แซแแแแแก แแแแแกแแแ แแแแแจแ แฌแแแแแฎแแแก แแแชแแแก แแแแ แแแก แแแแแ. แแฃ แแก แแแแแแแ แแแฃแจแแแแแแ, แฉแแแ แจแแแซแแแแแแ แแแกแแแฃแขแฃแ แแ แแฃแกแขแ แแแแแชแแแแแแก แแแฆแแแแก แคแแแจ แแ แแแแแแแ - แแแแก แแแชแแแแ, แ แแ แแแแแงแ แแแแ แกแแแแแขแ แแแ แฏแแแแก แแแแฎแแแก แแ แแแฃแกแขแ แแ แแแก แแแแแแแแแแแ.
แแแแแแแแ SROM แกแแแแ แแฃแแแ แแแแฎแฃแแแแก แแแชแแแก แแแขแแแก ReadBlock แกแแกแขแแแฃแ แ แแแ แแก แกแแจแฃแแแแแแ, แฉแแแ แจแแแแแซแแแ แแแแแแแแแ แแแแแ, แ แแช
แแแแแ แแ แแ แกแแฎแแแแกแ แ แแ, แ แแกแ แแแแแแแแแช แจแแแซแแแแ, แแ แแก แฉแแแแแแ แแแ แกแแชแแแก แแแแฆแแแ: SRAM-แแก แแแแแแกแแงแ แแแแก แแแแฆแแแ, แกแแกแขแแแแก แแแฃแกแแแฃแแแแแแ แแแ แแแแก แแ แแแฃแชแแแแแแแก แแแแแขแแคแแชแแ แแแ.
9. แแแกแแแแ
แแกแ แ แแ, แแ แแแกแแแก แแแชแแ แกแแกแฃแ แแแแก แขแแแแแก, แ แแแแแ แแก แแงแแแแแก แ แแแฃแแแ แฃแ (แแ แ โแแแแแแ แแแฃแโ) แแแแ แแแแแขแ แแแแ แก PIN แแแแแก แจแแกแแแแฎแแ... แแแ แแ แแแแกแ, แแ แแ แแแแแฎแแแก (แฏแแ ) แ แแแแ แแแแแก แกแแฅแแแแแ แแแแแชแแแแแแแ แแแแแแจแแ แแแแ. แแแจแแคแแ แ แแ แแแฌแงแแแแแแแแแ!
แ แแก แฃแ แฉแแแ แแแแแก? แแแจแแคแ แฃแแ HDD แแแกแแแก แ แแแแแแแแ แแแแแแแก แแแแแแแแก แจแแแแแ, 2015 แฌแแแก แแแแแแแแ
แแ แ แจแแแแ-แแแแ แ แแ แ แแแแแแแแ แกแแฆแแแ แแแแแขแแ แ แแ แแแแแแแจแ. แกแฃแ แแแแฎแแแแแแ 40 แกแแแแ. แแแแ แแแแแแแแแ (แ แแชแ แแแแฎแกแแแ แแแกแแ) แแแแแแแ (PIN แแแแแก แแแแแแกแแงแ แแแ). แแแแแ 40 แกแแแแ แแแแชแแแก แแ แแ แแก, แ แแช แแแแฎแแ แฏแ แแ แกแขแแขแแแก แแแกแแฌแแ แแ. แแก แแงแ แซแแแแแ แกแแแแขแแ แแกแ แแแแแแฃแ แแแ.
แฌแงแแ แ: www.habr.com