From d720958130593a3a852817680708544c45b24f77 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 20:17:06 +0000 Subject: [PATCH] Translated ['src/todo/hardware-hacking/jtag.md'] to tr --- src/todo/hardware-hacking/jtag.md | 110 +++++++++++++++++++++++++++--- 1 file changed, 101 insertions(+), 9 deletions(-) diff --git a/src/todo/hardware-hacking/jtag.md b/src/todo/hardware-hacking/jtag.md index a6b238b9e..d81900c15 100644 --- a/src/todo/hardware-hacking/jtag.md +++ b/src/todo/hardware-hacking/jtag.md @@ -2,25 +2,117 @@ {{#include ../../banners/hacktricks-training.md}} +{{#ref}} +README.md +{{#endref}} + ## JTAGenum -[**JTAGenum** ](https://github.com/cyphunk/JTAGenum), bilinmeyen bir çipten JTAG pinlerini bulmak için Raspberry PI veya Arduino ile kullanılabilecek bir araçtır.\ -**Arduino**'da, **2'den 11'e kadar olan pinleri JTAG'a ait olabilecek 10 pinle bağlayın**. Programı Arduino'ya yükleyin ve JTAG'a ait olan pinleri bulmak için tüm pinleri brute force ile denemeye çalışacaktır.\ -**Raspberry PI**'da yalnızca **1'den 6'ya kadar olan pinleri** kullanabilirsiniz (6 pin, bu nedenle her potansiyel JTAG pinini test ederken daha yavaş ilerleyeceksiniz). +[**JTAGenum**](https://github.com/cyphunk/JTAGenum), bilinmeyen JTAG pin düzenlerini zorlamak ve hatta talimat kayıtlarını numaralandırmak için bir Arduino uyumlu MCU veya (deneysel olarak) bir Raspberry Pi'ye yükleyebileceğiniz bir araçtır. -### Arduino +- Arduino: dijital pinleri D2–D11'i 10'a kadar şüpheli JTAG pad/test noktalarına bağlayın ve Arduino GND'yi hedef GND'ye bağlayın. Hedefi ayrı bir şekilde besleyin, aksi takdirde rayın güvenli olduğunu bilmiyorsanız. 3.3 V mantığını tercih edin (örneğin, Arduino Due) veya 1.8–3.3 V hedefleri incelerken bir seviye dönüştürücü/seri dirençler kullanın. +- Raspberry Pi: Pi yapısı daha az kullanılabilir GPIO sunar (bu nedenle taramalar daha yavaştır); güncel pin haritası ve kısıtlamalar için repoyu kontrol edin. -Arduino'da, kabloları bağladıktan sonra (pin 2'den 11'e kadar JTAG pinlerine ve Arduino GND'yi ana kart GND'ye bağlayarak), **JTAGenum programını Arduino'ya yükleyin** ve Seri Monitörde **`h`** (yardım komutu) gönderin ve yardım metnini görmelisiniz: +Yüklendikten sonra, 115200 baud hızında seri monitörü açın ve yardım için `h` gönderin. Tipik akış: + +- `l` yanlış pozitifleri önlemek için döngü geri dönüşlerini bulun +- `r` gerekiyorsa dahili pull-up'ları değiştirin +- `s` TCK/TMS/TDI/TDO (ve bazen TRST/SRST) için tarama yapın +- `y` belgelenmemiş opcode'ları keşfetmek için IR'yi zorlayın +- `x` pin durumlarının sınır tarama anlık görüntüsü ![](<../../images/image (939).png>) ![](<../../images/image (578).png>) -**"No line ending" ve 115200baud** ayarlarını yapın.\ -Tarama başlatmak için s komutunu gönderin: - ![](<../../images/image (774).png>) -Eğer bir JTAG ile iletişim kuruyorsanız, JTAG pinlerini belirten **FOUND!** ile başlayan bir veya daha fazla **satır bulacaksınız**. +Geçerli bir TAP bulunursa, keşfedilen pinleri gösteren `FOUND!` ile başlayan satırlar göreceksiniz. + +İpuçları +- Her zaman toprak paylaşın ve bilinmeyen pinleri hedef Vtref'in üzerine çıkarmayın. Şüphe durumunda, aday pinlerde 100–470 Ω seri dirençler ekleyin. +- Cihaz 4 telli JTAG yerine SWD/SWJ kullanıyorsa, JTAGenum bunu tespit edemeyebilir; SWD araçlarını veya SWJ‑DP'yi destekleyen bir adaptörü deneyin. + +## Daha güvenli pin avlama ve donanım kurulumu + +- Öncelikle bir multimetre ile Vtref ve GND'yi belirleyin. Birçok adaptör, I/O voltajını ayarlamak için Vtref'e ihtiyaç duyar. +- Seviye kaydırma: itme-çekme sinyalleri için tasarlanmış iki yönlü seviye dönüştürücüler tercih edin (JTAG hatları açık-drenaj değildir). JTAG için otomatik yönlendirme I2C dönüştürücülerden kaçının. +- Kullanışlı adaptörler: FT2232H/FT232H kartları (örneğin, Tigard), CMSIS‑DAP, J‑Link, ST‑LINK (satıcıya özgü), ESP‑USB‑JTAG (ESP32‑Sx üzerinde). En azından TCK, TMS, TDI, TDO, GND ve Vtref'i bağlayın; isteğe bağlı olarak TRST ve SRST. + +## OpenOCD ile ilk temas (tarama ve IDCODE) + +OpenOCD, JTAG/SWD için de-facto OSS'dir. Desteklenen bir adaptör ile zinciri tarayabilir ve IDCODE'ları okuyabilirsiniz: + +- J‑Link ile genel bir örnek: +``` +openocd -f interface/jlink.cfg -c "transport select jtag; adapter speed 1000" \ +-c "init; scan_chain; shutdown" +``` +- ESP32‑S3 yerleşik USB‑JTAG (harici prob gerektirmez): +``` +openocd -f board/esp32s3-builtin.cfg -c "init; scan_chain; shutdown" +``` +Notlar +- "tüm birler/sıfırlar" IDCODE alırsanız, kablolamayı, gücü, Vtref'i kontrol edin ve portun sigortalar/seçenek baytları tarafından kilitlenmediğinden emin olun. +- Bilinmeyen zincirleri başlatırken manuel TAP etkileşimi için OpenOCD düşük seviyeli `irscan`/`drscan`'e bakın. + +## CPU'yu Durdurma ve Bellek/Flash Dump'lama + +TAP tanındıktan ve bir hedef betik seçildikten sonra, çekirdeği durdurabilir ve bellek bölgelerini veya dahili flash'ı dökebilirsiniz. Örnekler (hedefi, temel adresleri ve boyutları ayarlayın): + +- Başlatmadan sonra genel hedef: +``` +openocd -f interface/jlink.cfg -f target/stm32f1x.cfg \ +-c "init; reset halt; mdw 0x08000000 4; dump_image flash.bin 0x08000000 0x00100000; shutdown" +``` +- RISC‑V SoC (mümkünse SBA'yı tercih edin): +``` +openocd -f interface/ftdi/ft232h.cfg -f target/riscv.cfg \ +-c "init; riscv set_prefer_sba on; halt; dump_image sram.bin 0x80000000 0x20000; shutdown" +``` +- ESP32‑S3, OpenOCD yardımcı programı aracılığıyla programla veya oku: +``` +openocd -f board/esp32s3-builtin.cfg \ +-c "program_esp app.bin 0x10000 verify exit" +``` +Tips +- Uzun dökümlerden önce belleği kontrol etmek için `mdw/mdh/mdb` kullanın. +- Çoklu cihaz zincirleri için, hedef olmayanlarda BYPASS ayarlayın veya tüm TAP'leri tanımlayan bir kart dosyası kullanın. + +## Boundary-scan hileleri (EXTEST/SAMPLE) + +CPU hata ayıklama erişimi kilitli olsa bile, boundary-scan hala açığa çıkabilir. UrJTAG/OpenOCD ile şunları yapabilirsiniz: +- Sistem çalışırken pin durumlarını anlık görüntülemek için SAMPLE kullanın (veri yolu aktivitesini bulun, pin eşlemesini doğrulayın). +- Pinleri sürmek için EXTEST kullanın (örneğin, kart bağlantısı izin veriyorsa, harici SPI flash hatlarını MCU aracılığıyla bit-bang ile okuyun). + +FT2232x adaptörü ile minimal UrJTAG akışı: +``` +jtag> cable ft2232 vid=0x0403 pid=0x6010 interface=1 +jtag> frequency 100000 +jtag> detect +jtag> bsdl path /path/to/bsdl/files +jtag> instruction EXTEST +jtag> shift ir +jtag> dr +``` +Bölge kayıt bit sıralamasını bilmek için cihaz BSDL'ye ihtiyacınız var. Bazı satıcıların üretimde sınır tarama hücrelerini kilitlediğine dikkat edin. + +## Modern hedefler ve notlar + +- ESP32‑S3/C3, yerel bir USB‑JTAG köprüsü içerir; OpenOCD, harici bir prob olmadan doğrudan USB üzerinden iletişim kurabilir. Tahlil ve dökümler için çok kullanışlı. +- RISC‑V hata ayıklama (v0.13+) OpenOCD tarafından geniş ölçüde desteklenmektedir; çekirdek güvenli bir şekilde durdurulamadığında bellek erişimi için SBA'yı tercih edin. +- Birçok MCU, hata ayıklama kimlik doğrulaması ve yaşam döngüsü durumları uygular. JTAG ölü görünüyorsa ancak güç doğruysa, cihaz kapalı bir duruma kilitlenmiş olabilir veya kimlik doğrulaması yapılmış bir prob gerektirebilir. + +## Savunmalar ve güçlendirme (gerçek cihazlarda ne beklenir) + +- Üretimde JTAG/SWD'yi kalıcı olarak devre dışı bırakın veya kilitleyin (örneğin, STM32 RDP seviye 2, PAD JTAG'ı devre dışı bırakan ESP eFuses, NXP/Nordic APPROTECT/DPAP). +- Üretim erişimini korurken kimlik doğrulamalı hata ayıklama gerektirin (ARMv8.2‑A ADIv6 Hata Ayıklama Kimlik Doğrulaması, OEM yönetimli zorluk-cevap). +- Kolay test pad'leri yönlendirmeyin; test vias'larını gömün, TAP'ı izole etmek için dirençleri çıkarın/doldurun, anahtarlama veya pogo-pin aparatları ile konektörler kullanın. +- Güç açma hata ayıklama kilidi: TAP'ı güvenli önyüklemeyi zorlayan erken ROM'un arkasında kapatın. + +## Referanslar + +- OpenOCD Kullanıcı Kılavuzu – JTAG Komutları ve yapılandırma. https://openocd.org/doc-release/html/JTAG-Commands.html +- Espressif ESP32‑S3 JTAG hata ayıklama (USB‑JTAG, OpenOCD kullanımı). https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/api-guides/jtag-debugging/ {{#include ../../banners/hacktricks-training.md}}