1 puan yazan GN⁺ 2024-02-24 | 1 yorum | WhatsApp'ta paylaş
  • ThinkPad X1 Carbon 6th Gen’in gizli xDCI denetleyicisi açılınca dizüstünün kendisi klavye veya depolama aygıtı gibi herhangi bir USB aygıtını emüle edebilir hale geldi
  • İpucu /sys/class/usb_role/intel_xhci_usb_sw-role-switch idi; ancak yalnızca xHCI rol geçişi yeterli değildi, ayrı bir DWC3 tabanlı xDCI UDC’nin PCIe aygıtı olarak görünür olması gerekiyordu
  • BIOS imajında xDCI Support ayarı vardı, ancak varsayılan Setup UI’da gizliydi; etkinleştirildikten sonra lspci içinde xDCI 8086:9d30 ve dwc3-pci sürücüsü göründü
  • Başarılı yöntem Advanced BIOS sayfasının kilidini açmak ve NVRAM yaması oldu; PCH register yeniden yapılandırması ise PMC’deki bazı değişikliklerle sınırlı kaldı ve PSF kilidi nedeniyle başarısız oldu
  • xDCI etkinleştirildikten sonra g_mass_storage, Raw Gadget, syzkaller reproducer’ı ve Facedancer backend’i harici donanım olmadan çalıştı; ancak VBUS hattı kesilmiş bir USB kablosu ve device rol geçişi gerekiyor

ThinkPad’de bulunan USB aygıt modu ipucu

  • Raw Gadget, Linux kernel USB Gadget alt sistemine kullanıcı alanı API’si sağlayan bir kernel modülüdür; hatalı USB descriptor’ları sağlayarak USB host fuzzing’i ve exploit geliştirmede kullanılabilir
  • Sıradan PC’lerde genellikle USB Device Controller, yani UDC bulunmaz; bu daha çok Raspberry Pi gibi tek kart bilgisayarlarda yerleşik olur
    • Önceki çalışmalar Raspberry Pi veya USB 3380 tabanlı EC3380-AB gibi harici donanım gerektiriyordu
  • ThinkPad X1 Carbon 6th Gen’de /sys/class/usb_role altında intel_xhci_usb_sw-role-switch bulundu
    • /sys/class/usb_role, donanımsal USB bileşenlerini host modu ile device modu arasında değiştiren arayüzdür
    • role dosyasına device yazılsa da başlangıçta dmesg mesajı veya /sys/class/udc/ girdisi oluşmadı
  • xHCI, x86 sistemlerde USB host olarak çalışmayı sağlayan HCD’dir; xDCI ise Intel’in USB device tarafı arayüzü için kullandığı addır

Kernel kodu ve mailing list ile doğrulanan yapı

  • Linux kernel’de intel_xhci_usb_sw iki yerde görülür
    • drivers/usb/roles/intel-xhci-usb-role-switch.c, device veya host yazıldığında xHCI register’larını yöneten USB Role Switch sürücüsünü uygular
    • drivers/usb/host/xhci-ext-caps.c, xHCI sürücüsü XHCI_INTEL_USB_ROLE_SW quirk’ünü ayarladığında intel_xhci_usb_sw sanal platform aygıtını oluşturur
  • ThinkPad’in xHCI PCIe device ID’si 0x9d2f idi ve kernel’deki PCI_DEVICE_ID_INTEL_SUNRISEPOINT_LP_XHCI ile eşleşiyordu
  • Linux kernel mailing list tartışmalarında xHCI ile DWC3 UDC’nin ayrı aygıtlar olduğu ve aralarında bir mux bulunduğu doğrulandı
    • role switch bu mux’u değiştirmekle görevlidir
    • DWC3 UDC’nin kendisi PCI aygıtı olarak görünmüyorsa device mode için kullanılacak UDC yok demektir
  • DWC3, Synopsys’in DesignWare Core SuperSpeed USB 3.0 Controller IP’sidir ve Intel dahil birçok üretici tarafından sistemlerde kullanılır
  • ThinkPad’de lspci kontrol edildiğinde başlangıçta yalnızca xHCI 8086:9d2f görünüyordu; dwc3-pci.c’ye göre Sunrise Point-LP’nin xDCI device ID’si olan 0x9d30 görünmüyordu

ACPI ve BIOS’ta kalan xDCI izleri

  • ACPI DSDT içinde Device (XDCI) ve _STA metodu bulunuyordu
    • /sys/bus/acpi/devices/device:33/path, \_SB_.PCI0.XDCI idi
    • /sys/bus/acpi/devices/device:33/status, 15 idi; bu da aygıtın enabled and functioning durumda olduğu anlamına gelir
    • Ancak lspci içinde xDCI olmadığı için yalnızca ACPI açısından düzgün görünen bir durumdu
  • Varsayılan BIOS Setup ekranında xDCI veya OTG ile ilgili ayar görünmüyordu
  • Lenovo BIOS Bootable CD güncelleme imajı indirilerek BIOS ikilisi /mnt/bios/FLASH/N23ET86W/$0AN2300.FL1 çıkarıldı ve UEFITool ile incelendi
  • Setup modülünün PE32 image section bölümünde string araması yapıldığında şu girdiler ortaya çıktı
    • xDCI Support
    • Enable/Disable xDCI (USB OTG Device).
  • BIOS içinde xDCI Support ayarı vardı, ancak varsayılan UI’da gizlenmişti

Advanced BIOS sayfasıyla xDCI’yi açmak

  • x1c6-hackintosh proje dokümantasyonu izlenerek gizli Advanced BIOS sayfasını açma yöntemi denendi
  • Bu yöntem, BIOS’un saklandığı SPI çipini yeniden flash’lamayı gerektiriyordu
    • SPI klipsi kullanmak yerine SPI çipi soketli bir çiple değiştirilerek, çipi defalarca çıkarıp takarak denemeler yapıldı
    • FTDI FT2232H Mini Module ve flashrom kullanılarak SPI çip içeriği dump edildi ve yeniden yazıldı
  • BIOS yaması iki aşamadan oluşuyordu
    • UEFIPatch ile Date/Time BIOS sayfası GUID referansı Advanced sayfasına yönlendirildi
    • Ayrı bir byte yamasıyla TPM MFG Mode’a zorlanarak Boot Guard’ın BIOS değişikliğini algılamaması sağlandı
  • BIOS 1.37’de yalnızca ilk yama uygulanınca dizüstü bip sesi çıkarıp boot etmedi; ikinci yama da uygulandıktan sonra Advanced sayfası göründü
  • Intel Advanced MenuPCI-IO ConfigurationUSB Configuration altındaki xDCI Support, Enabled olarak değiştirildiğinde boot sonrasında xDCI görünür oldu
    • lspci içinde 00:14.1 USB controller [8086:9d30] göründü
    • Kernel dwc3-pci sürücüsünü otomatik olarak yükledi
    • /sys/class/udc/ altında dwc3.1.auto oluştu

xDCI portu ve kablo koşulları

  • xDCI’nin bağlı olduğu harici USB portunu bulmak için rol device olarak bırakılmışken her porta USB flash bellek takılarak kontrol edildi
    • Belirli bir portta OS flash belleği algılamadı; rol host konumuna geri alınca yeniden çalıştı
    • Bu portun xDCI’ye bağlı port olduğu değerlendirildi
  • ThinkPad’in xDCI portu USB Type-A olduğu için host bilgisayara bağlamak üzere Type-A to Type-A male-to-male kablo gerekiyordu
  • role switching portun güç hattı VBUS’ı kapatmadığı için iki aygıtın VBUS hatlarının doğrudan bağlanmaması adına VBUS hattı kesilmiş bir kablo kullanıldı
    • Başta iki USB 2.0 kablo kesilerek VBUS hattı koparılmış male-to-male kablo elde yapıldı
    • Daha sonra PortaPow USB Power Blocker ve male-to-male USB 2.0 kablo kullanıldı
  • g_zero gadget driver’ı yüklendiğinde başka bir dizüstünde test USB aygıtı düzgün şekilde emüle edildi
  • 11 Haziran 2024 güncellemesine göre DataPro USB 3.0 Super-Speed A/A Debugging Cable’da USB 2.0 D- ve D+ hatları da kesilmiş olduğundan SuperSpeed bağlantısı kurmak için gereken High-Speed bağlantı başarısız oluyor
    • VBUS hattı elle kesilmiş LogiLink CU0038 kablosu SuperSpeed aygıt emülasyonunda çalışıyor

PCH register’larıyla yazılımsal etkinleştirme denemesi

  • BIOS’un xDCI’yi nasıl açtığını anlamak için Kaby Lake BIOS kaynak kodundaki Pch/Library/Private/PeiPchInitLib/PchXdci.c incelendi
  • BIOS’un xDCI devre dışı bırakma yolu, xDCI’yi PMC ve PSF içinde devre dışı bırakan bir yapıdaydı
  • PMC değişikliği

    • PMC’nin NST_PG_FDIS_1 register’ı offset 0x628 içindeki bit #24 XDCI Function Disable temizlenirse xDCI güç kesintisinin kaldırılabileceği düşünüldü
    • Linux kernel’deki pmc_core_device ve pmc->regbase eşlemesini yeniden kullanan bir kernel modülü yazıldı
    • Boot’tan hemen sonra ST_PG_FDIS1 içindeki ST_FDIS_LK bit #31 ayarlıydı, bu yüzden NST_PG_FDIS_1 değeri değiştirilemiyordu
    • Dizüstü suspend edilip uyandırıldıktan sonra lock bit ayarlı değildi ve XDCI Function Disable bit’i başarıyla temizlendi
  • PSF değişikliği

    • BIOS, PID_PSF2 Port ID 0xBB’nin PSF2 PCR’ında USB Dual Role (OTG) Function Disable bit’ini ayarlayarak xDCI’yi devre dışı bırakıyordu
    • PCR adresi PCH_PCR_BASE_ADDRESS 0xFD000000, Port ID ve offset birleşimiyle hesaplanıyordu
    • Kernel modülünde PSF2 PCR ioremap ile eşlendi, ancak okunan değer 0xffffffff oldu ve değişmedi
    • P2SB unhide edilse de sonuç aynıydı
    • BIOS’un RemoveSidebandAccess işlemi EPMASK5 ile PID_PSF2’yi IOSF-SB’den ayırıp MASKLOCK ile kilitlediği için OS üzerinden PSF yeniden ayarlanamıyordu
    • PCH erişimi PMC’deki bazı ayarlarda başarılı oldu, ancak PSF yeniden yapılandırması başarısız olduğundan xDCI etkinleştirme yöntemi olamadı

NVRAM yamasıyla Boot Guard bypass olmadan etkinleştirme

  • BIOS ayar değerleri SPI çipinin NVRAM alanında saklandığı için, gizli Advanced sayfasını açmadan yalnızca xDCI Support değerini değiştirme yöntemi denendi
  • IFRExtractor-RS ile Setup modülünün UEFI IFR bilgisi çıkarıldı
  • xDCI Support ayarı PchSetup UEFI değişkeni içinde saklanıyordu
    • VarStore GUID: 4570B7F1-ADE8-4943-8DC3-406472842384
    • VarStoreId: 0x5
    • VarOffset: 0x40
    • Değer aralığı: 0x0 veya 0x1
  • Linux efivarfs içinde /sys/firmware/efi/efivars/PchSetup-4570b7f1-ade8-4943-8dc3-406472842384 kontrol edildi
    • efivarfs dosyasının ilk 4 byte’ı header olduğundan gerçek xDCI Support değeri dosya offset 0x44 konumundadır
    • xDCI devre dışıyken değer 00, BIOS Advanced sayfasından etkinleştirildikten sonra 01 olarak değişti
  • Kullanıcı alanından veya EFI Shell’den bu değişken doğrudan yazılmaya çalışılınca EFI_WRITE_PROTECTED hatası alındı
    • efivarfs üzerindeki immutable özniteliği kaldırılsa da Read-only file system hatası oluştu
    • chipsec ile EFI Shell’den değiştirilse de aynı hata oluştu
  • SPI programmer ile okunan orijinal BIOS imajında PchSetup çevresindeki byte dizisi bulunup yalnızca xDCI Support bit’i 01 olarak yamalanıp yeniden flash’lanınca xDCI etkinleşti
  • Bu yöntem hâlâ SPI çip reflashing gerektiriyor, ancak Advanced sayfa yaması ve Boot Guard bypass gerektirmiyor; TPM de bozulmadı
  • BIOS 1.37’de NVRAM yamalandıktan sonra 1.61’e güncellendiğinde BIOS ayar değeri korundu, yamayı tekrar uygulamak gerekmedi

xDCI ile USB aygıtı emülasyonu

  • Tüm örnekler xDCI’nin BIOS’ta etkin olduğu, intel_xhci_usb_sw-role-switch’in device moduna geçirildiği ve xDCI portu ile USB host’un VBUS hattı kesilmiş kabloyla bağlı olduğu varsayımına dayanır
  • Legacy gadget drivers

    • Linux USB Gadget alt sisteminin legacy gadget drivers’ları, modül yüklendiğinde belirli USB class aygıtlarını emüle eder
    • g_mass_storage, bir dosya sistemi imajını USB mass storage aygıtı olarak sunar
    • FAT imajı disk.img oluşturulup file.txt içine Hi from xDCI yazıldıktan sonra sudo modprobe g_mass_storage file=./disk.img stall=0 ile yüklendi
    • USB host üzerinde sürücü otomatik olarak mount edildi ve dosya içeriği doğrulandı
  • Raw Gadget

    • Raw Gadget, xDCI ile birlikte çalıştırılarak USB klavye örneği denendi
    • Başta SET_CONFIGURATION işlenirken takıldı
    • Nedeni dwc3 ve bazı UDC sürücülerinin 0-length control request’i gadget driver onayı olmadan hemen acknowledge edebileceklerini varsaymasıydı
    • Raw Gadget’a workaround patch uygulanıp GadgetFS de düzeltildikten sonra klavye emülasyonu başarılı oldu
    • İlgili davranış dokümantasyon yaması commit ile düzenlendi

syzkaller ve Facedancer kullanımı

  • syzkaller, Raw Gadget kullanarak Linux kernel USB stack’ini harici olarak fuzz edebilir
  • Varsayılan syzkaller USB fuzzing’i, kernel içinde sanal USB Device ile Host controller’ı bağlayan Dummy HCD/UDC kullanır
  • xDCI kullanmak için syzkaller’ın UDC belirtme kodu dummy_udc yerine dwc3-gadget, dwc3.1.auto olacak şekilde değiştirildi
  • syzkaller’ın bulduğu WARNING in smsusb_start_streaming/usb_submit_urb hatasının reproducer’ı syz-execprog -enable=usb ile çalıştırıldı
    • Ubuntu 5.15.0-91-generic kernel’i host olarak çalışan dizüstünde usb_submit_urb uyarısı yeniden üretildi
    • Bu hata, smsusb sürücüsünün USB endpoint type doğrulamasını atlamasından kaynaklanan bir WARNING idi ve zararlı bir davranış değildi
  • Facedancer, Python tabanlı bir USB aygıt emülasyon framework’üdür
    • Raw Gadget tabanlı Facedancer backend henüz prototip aşamasındadır ve out-of-tree Raw Gadget yamalarına dayanır
    • BACKEND=rawgadget, RG_UDC_DRIVER=dwc3-gadget, RG_UDC_DEVICE=dwc3.1.auto ayarlanıp rubber-ducky.py örneği çalıştırılınca düzgün çalıştı
  • Raw Gadget tabanlı USB Proxy de xDCI ile çalıştı; xDCI kullanılarak dizüstü USB sniffer veya USB Man-in-the-Middle aracı olarak kullanılabilir

Diğer cihazlarda ve yazılımsal yöntemlerde olasılıklar

  • ThinkPad X1 Carbon 6th Gen dışındaki PC’lerde de xDCI etkinleştirme mümkün olabilir
    • En basit durumda BIOS ayarlarından xDCI’yi açmak yeterli olabilir
    • ACPI ve role switching desteği olmalı, ayrıca xDCI portu harici bir porta kablolanmış olmalıdır
  • Diğer ThinkPad’lerde de xDCI BIOS ayarı gizlenmiş ve korunuyor olabilir; bu yüzden SPI çip reflashing gerekebilir
    • NVRAM yöntemi Boot Guard bypass olmadan uygulanabilir
    • Bazı yeni sistemlerde SPI çip reflashing RPMC ile korunuyor olabilir; bu tür çiplerin adında W25R128FW gibi R harfi bulunabilir
  • Güncellemeye göre Shiny Quagsire, XPS 13 ve Surface Go 1’de grub-mod-setup_var ile PchSetup değişkenini düzenleyerek xDCI’yi etkinleştirmişti
    • Bu cihazlarda PchSetup değişkeni korunmadığı için tamamen yazılımsal yöntem mümkündü
  • Başka bir yazılımsal yaklaşım olarak BIOS zafiyetlerinden yararlanıp xDCI ile ilgili NVRAM değişkenlerini değiştirmek veya boot sırasında DMA ile BIOS’a saldırıp keyfi kod çalıştırmak mümkün olabilir
  • Başlıktaki “secret” sözcüğü, kasıtlı bir gizlemeden ziyade belgelenmemiş bir özelliği ifade etmeye daha yakındır

1 yorum

 
GN⁺ 2024-02-24
Hacker News yorumları
  • Bir dizüstü bilgisayarı başka bir bilgisayar için genel amaçlı klavye ve monitör olarak kullanma özelliğinin neden yaygın olmadığını hep merak etmişimdir
    Headless bir makinenin bakımını yapmak için yeni bir klavye ve monitör almak garip geliyor, çünkü eldeki dizüstü zaten bu işi yapabilir

    • GPD Pocket 3'te tam olarak bunu yapan bir KVM modülü var: HDMI ve USB-C girişi alıp bağlı makinenin ekranı, klavyesi ve faresi gibi davranıyor: https://gpd.hk/gpdpocket3
      Yakında çıkacak Minisforum V3 tabletinde de video girişi var, yani harici monitör gibi kullanılabiliyor, ama klavye ve fareyi de paylaşacak gibi görünmüyor
      Keşke bu özellik daha yaygın olsa
    • Evet. Bir arkadaşım sırf bunun için bir cyberdeck yaptı
      Fare ve klavyeyi harici porta yönlendirip kabloyla başka bir makineye bağlayabiliyor, ayrıca yan tarafında iki HDMI portu var; biri çıkış, biri giriş
      Dahili bir anahtarla monitör kaynağı olarak deck'in kendi makinesi ile harici giriş arasında seçim yapılabiliyor
    • Sık sık headless makinelerle uğraşan biri olarak, dizüstünü monitör gibi kullanmak için gördüğüm en iyi çözüm şu ürün oldu: https://www.amazon.com/dp/B0BJ2YDV7Q
      Temelde headless makinenin HDMI sinyalini yakalayıp USB üzerinden dizüstüne emüle edilmiş bir webcam olarak sunan bir çip ve elektronikler kablonun içine sığacak kadar küçük
      Klavye tarafında ise standart bir kablosuz klavye dışında, nadiren fare de gerekirse diye trackpad'li bir model almak dışında iyi bir çözüm bulamadım
    • Bir bilgisayarı diğerine doğrudan bağlayamamak bana hep can sıkıcı gelmiştir
      Duyduğuma göre USB 4'te bunu mümkün kılan bir mod varmış
    • hidclient ile dizüstünüzü Bluetooth klavye ve fareymiş gibi gösterebilirsiniz
      https://web.archive.org/web/20180610141436/http://anselm.hoffmeister.be/computer/hidclient/index.html.en
      https://github.com/benizi/hidclient
  • Bu bana birkaç yıl önce Travis Goodspeed'in yaptığı bir işi hatırlattı
    Bir akıllı TV, normal bir USB bellekteki dosyadan firmware güncellemesi alıyordu ve TV dijital imzayı doğrulamak için dosyayı baştan sona okuduktan sonra güncelleme için tekrar okuyordu
    USB depolama aygıtı gibi davranan bir cihaz, ilk okumada üreticinin firmware dosyasını, ikinci okumada ise resmi olmayan firmware'i verebilir

  • Gerçekten ilginç. Ben de benzer şekilde uygulanabilir seçenekleri araştırıyordum
    Kullanmak için sürekli bahane aradığım güçlü bir NAS sunucum var ve evin çeşitli yerlerine 40G ve 10G bağlantılar da çektim
    PS5 ve XBox, ek depolama alanı olarak USB sabit disk kullanıyor
    NAS depolamasını PS5 ve XBox'a gösterebilir miyim diye baktım ve mümkün görünüyor. NAS paylaşımını iSCSI ya da NFS ile mount edip ardından g_mass_storage modülüyle USB depolama aygıtı emüle ederek o depolamayı USB host'a sunabiliyorsunuz
    Şu an zaman ve maliyet dışında en büyük engel, böyle bir sistemin sağlayacağı bant genişliği. Kazanç çok büyük değil
    Raspberry Pi, USB-OTG desteğiyle tanınıyor ama USB 2.0 hızlarında kalıyor; baktığım benzer sınıftaki diğer SBC'lerin çoğu da böyleydi. İstisna RockPi4'tü ve RockPi'nin gigabit Ethernet portu var; Ethernet'i tam doldurabilirseniz hem PS5 hem de Xbox için tutarlı HDD hızları sağlayabilir
    1GbE'nin üzerine çıkabilen bir çözüm için özel PCIe ağ kartı ya da ExpressCard takılabilirse, USB 3.0 arayüzünü gerçekten doyurmak mümkün olur ve bu oldukça ilginç olurdu

    • Benzer bir homelab kurulumum var ve https://www.virtualhere.com ile IP üzerinden USB denemeleri yapıyorum
      Sunucuyla konuşacak bir istemci gerekiyor ama oldukça iyi çalışıyor gibi görünüyor
      Masada bir “ince USB istemcisi” bulundurup USB aygıtlarını ona takmayı, sonra da laboratuvardaki istediğim fiziksel host'a ya da VM host'una bağlamayı veya aralarında geçiş yapmayı düşünüyorum
    • PS5 ile NAS fiziksel olarak nasıl bağlanıyor merak ettim
      NAS → SBC → PS5 diye tahmin ediyorum; yoksa NAS'ı doğrudan USB kablosuyla PS5'e mi bağlıyorsunuz?
      PS5'te içerik oynatma işi nasıl oluyor onu da merak ediyorum. Dahili NVMe'nin belli bir hız şartını karşılaması gerektiğini biliyorum; bu harici sürücüler için geçerli değil mi?
    • Raspberry Pi 5'te gigabit Ethernet portu var, FriendlyElec'in NanoPi serisi gibi başka SBC'lerde de aynı durum geçerli
      Hatta NanoPi R6S, 1 gigabit porta ek olarak iki adet 2.5G Ethernet portu ile geliyor
  • Çok detaylı bir yazı, teşekkürler. Kalitesi yüksek
    Bunun mümkün olduğunu görmek, sadece modifiye edilmiş bir USB kablosuyla ağsız bir Synergy / Mouse Without Borders benzeri kurulum yapılabileceğine dair umut verdi
    Aynı anda birden fazla bilgisayarı kullanmak zorunda olanlar için çok iyi bir yön

    • KVM switch'ler var, hatta görüntü olmadan sadece USB klavye ve fareyi değiştiren cihazlar da mevcut
      Yine de önerdiğin yaklaşım ilginç geliyor
  • Kısa süre önce benzer bir şeyi araştırdım; tek bir USB-C kablosuyla iki USB-C makineyi bağlayıp 10Gbps iletişim kurmak istiyordum
    Ne yazık ki çoğu Ryzen kartında hâlâ Thunderbolt yok ve Thunderbolt olsaydı bunu yerel olarak kolayca desteklerdi
    “Dual-role” USB denetleyicileri de USB 3.2/4.0 öncesine kadar oldukça nadirdi ve bu yazıda ele alındığı gibi, mümkün olsa bile çoğu durumda desteklenmiyordu
    Thunderbolt olmadan iki makineyi bir USB-C kablosuyla ağ üzerinden birbirine bağlamanın bu kadar zor olması tamamen tuhaf geliyor
    Askıya alma sonrasında kilit bitlerinin temizlenmesi kısmı da hoştu. Bu tür sorunlar gerçekten çok yaygın. Örneğin bir SATA aygıtını güvenli silmeyi engelleyen durumdan çıkarmak için de çok sık kullanılan bir yöntemdir

  • Derinlik etkileyici düzeyde
    Bir PC’yi USB aygıtı olarak kullanabilmek birçok ilginç olasılığın önünü açıyor
    Gerekli xDCI seçeneğinin bu aygıtın donanımında bulunup ortaya çıkarılmamış olması ve erişmek için firmware hack’i gerekmesi biraz üzücü
    Donanım yapabiliyor ama üretici bunu sadece kapatmış ve denetim işlevlerini kilitlemiş

  • Lenovo’nun bunu bir ThinkPad ile başka bir ThinkPad’i debug etmek için bir yol olarak kullanıp kullanmadığını merak ediyorum
    https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/secure-coding/intel-debug-technology.html
    Güncelleme: Muhtemelen öyle
    https://www.youtube.com/watch?v=ExUvQa_jB7c
    Intel Firmware’i DCI ve USB 3.0 ile debug etmeyi anlatan bir video

  • “Ama Raspberry Pi ile uğraşmak zahmetli: kablo bağlama, kartı boot etme, shell’e girme vb.” kısmında muhtemelen USB OTG ayarlamak yeterli olurdu
    Takıldığı aygıttan güç alacak şekilde ayarlanabilir, shell açıldıktan sonra bir script ile işlenebilirdi
    Böylece SSH ile mount ayarları ya da komut çalıştırma yapılabilir, muhtemelen aygıt mount etme bile mümkün olurdu
    Yine de kendi aygıtını anlamaya ve çekirdeği okumaya çalışma çabasını takdir etmek gerekir. Daha iyi yapmayı sürdürmek istediğimiz bir şey bu ve yaklaşım şu: ekipmanımızı kendimiz onaralım

    • Bu deneyin özünün zaten USB OTG ile uğraşmak olduğunu ve Pi’de yalnızca bir OTG portu bulunduğu için bağlanmak adına başka bir yöntem gerektiğini belirtmek lazım
      Bunu bizzat denedim
  • İlk internet hacker kültürünü güçlü biçimde hatırlatıyor; nostalji uyandıracak kadar öyle. Gerçekten harika bir yazı
    ESR hacker olmayı, Hacker News anlamındaki hacker’ı anlatırken tam da bu tip insanlardan söz ediyordu
    Merak, sebat ve teknik yetkinliğin birleşimi son derece nadir ve çok etkileyici

  • Celeron N3350/Pentium N4200/Atom E3900 tabanlı bir sistemim var ve BIOS’ta xDCI anahtarı görünür durumda
    Etkinleştirince birkaç seçenek daha çıkıyor ve Linux ile boot edince PCI aygıtı olarak USB controller: Intel Corporation Device 5aaa (rev 0b) görünüyor
    Ancak UDC aygıt düğümü ortaya çıkmıyor. Asıl yazıdan ipucu alıp biraz daha kurcalamam gerekecek gibi görünüyor