Post

Hardware Hacking Uart ile Seri Konsol Erişimi - ZTE ZXHN H108N #1

ZTE ZXHN H108N model bir modem üzerinde UART erişimi sağlamak ve temel hardware hacking adımlarını elimden geldiğince anlatmaya çalışacağım.

Hardware Hacking Uart ile Seri Konsol Erişimi - ZTE ZXHN H108N #1

Hepimizin evinde mutlaka bir modem bulunuyor. Peki bu modemlerin iç yapısını merak ettiniz mi? Ben bu soruya evet cevabını verdiğim için şimdi bu yazıyı ele alıyorum. Evimde bulunan ve zamanında çok popüler olan ZTE markasının ZXHN H108N modelini inceleyeceğim. Amacım hardware hacking dünyasına giriş yapmak ve bu girişi neyin nasıl olduğunu detaylıca öğrenmek, anlatmaktır.

Her hacking sürecinde olduğu gibi bu serüvende de belirli bir metodolojiyi izleyeceğim. İlk olarak cihazın üzerinde yazan bilgilerden başlayarak araştırma yapacağız. Ardından cihazı açıp iç yapısını inceleyip, bu incelemeler sonucunda cihaza daha hiçbir müdahalede bulunmadan çok fazla bilgi toplamış olacağız. Sonrasında UART erişimi sağlamak için gerekli bağlantıları yapacak ve son olarak da UART üzerinden cihazla iletişim kuracağız.

Keşif

Dış İnceleme

İlk aşamada cihazımızı iyi tanımak için üzerinde yazan bilgileri inceliyoruz.

Modem ön yüzü
Modem üst yüzü

Cihazın ön yüzünde TTNET logosunu ve ZTE ZXHN H108N model numarasını görüyoruz. Bu, cihazın standart bir ZTE modem olmayabileceğini, TTNET için özelleştirilmiş bir versiyon olabileceğini gösteriyor! (Bu bilgi birazdan fccid değerini bulamadığımızda daha anlamlı hale gelecektir.)

Cihazın üst yüzeyinde yazan etikette ilk başta tarih kısmı dikkatimi çekiyor. Date: OCT 2013 şeklinde yazılmış ve bu cihazın 12 yaşından büyük olduğunu anlıyoruz. Bu bana oldukça uzun bir süre gibi geliyor. Ayrıca bu aşamada işimize yaramayacak olsa da cihazın 12V 500mA bir güç kaynağı ile çalıştığını bilelim.

Elimizde cihazın arka yüzeyine baktığımızda ise farklı portlar, S/N MAC ve SAP numaralarını görüyoruz. Bu bilgiler de ileride işimize yarayabilir.

Burada değinmek istediğim önemli bir nokta ise bu cihazda herhangi bir fccid değerinin bulunmaması. Bu durum cihazın TTNET için özel olarak üretilmiş bir versiyon olduğunu düşündürüyor. Eğer cihazın fccid değeri olsaaydı, FCC veritabanlarından cihaz hakkında daha fazla bilgi edinebilirdik.

FCC ID Nedir: FCC ID numarası, Amerika Birleşik Devletleri FCC (Federal İletişim Komisyonu)’na kayıtlı bir cihaza atanan bir tanımlayıcı numaradır. ABD’de kablosuz cihazların yasal satışı için, üreticilerin cihazı FCC standartlarına uygunluğundan emin olmak için bağımsız bir laboratuvar tarafından değerlendirilmelidir. FCC ID numarası bir lisans veya iletim izni değildir, yalnızca ekipman türünün bir kaydıdır. FCC ID’si, aynı modelin tüm kopyaları için aynıdır. Daha fazla bilgi için.

Son olarak gözümüze CE 0197 yazısı çarpıyor. Bu yazının ne anlama geldiğini daha iyi anlamak için internet üzerinde bir araştırma yapıyoruz. Elde ettiğimiz bilgilere göre:

  • CE: Cihazın Avrupa standartlarına uygun olduğunu gösteriyor.
  • 0197: Bu kod, cihazın Almanya merkezli TÜV Rheinland laboratuvarlarında test edilip onaylandığını gösteriyor. Yani elimizdeki cihaz, Amerika için değil, Avrupa ve Türkiye altyapısı için özel olarak sertifikalandırılmış bir model.

İç İnceleme

Cihazın iç yapısını incelemek için vidaları dikkatlice söküyoruz ve kapağı açıyoruz. Diğer modemlere göre boyutu küçük olduğu için iç yapısının da biraz sıkışık olduğunu görüyoruz.

İşlemci ve çip yakın çekim
Ethernet portları ve anten kablosu
Ethernet portları ve anten kablosu
Anakart genel görünüm


İç yapıyı hayranlıkla izledikten sonra işe koyuluyoruz, bizim için önemli olan bileşenleri tespit ediyoruz:

  • Realtek RTL8676S: PCB üzerinde dikkatimizi en çok çeken büyük çipin üzerinde Realtek RTL8676S yazıyor. Bunu internette araştırdığızda ADSL2+ modemler ve gateway’ler için tasarlanmış, yüksek entegrasyonlu bir “System on Chip” (SoC) işlemcisidir.
Internal image - realtek
Realtek SoC
System on Chip (SoC) Nedir? : Bir bilgisayar kasasının içindeki ana parçaların (İşlemci, RAM kontrolcüsü vb) bir çipin içine sıkıştırılmasıdır. Bu sayede cihazlar daha küçük, daha hızlı ve daha az enerji tüketen hale gelir. Günümüzde akıllı telefonlar, tabletler ve IoT cihazları gibi birçok elektronik cihazda SoC'ler yaygın olarak kullanılır.


  • UART Pinleri: Dikkatimizi çeken ikinci önemli nokta Realtek SoC’nin hemen karşısında bulunan 4 adet yan yana bulunan deliklerdir. Bu delikleri biraz daha yakından incelediğimizde sırası ile GND, RX, TX ve 3.3V yazdığını görüyoruz. Bu deliklerin UART pinleri olduğundan artık eminiz. Ama yazılanlara tam olarak güvenemiyoruz, bu yüzden ilerleyen adımlarda bu pinleri doğrulayacağız.
İşlemci ve çip yakın çekim
Ethernet portları ve anten kablosu
Ethernet portları ve anten kablosu
Anakart genel görünüm
Anakart genel görünüm


Burada kısa bir ara vererek UART nedir, ne işe yarar ona bakalım:

UART (Universal Asynchronous Receiver/Transmitter), seri iletişim için kullanılan bir protokoldür ve cihazla doğrudan iletişim kurmamızı sağlar. UART pinleri genellikle cihazın debug veya servis amaçlı erişimi için kullanılır. UART pinleri genellikle 4 adet pin içerir:

  • GND (Ground): Topraklama pini, devrenin referans noktasıdır.
  • RX (Receive): Veri alma pini, cihazdan veri alır.
  • TX (Transmit): Veri gönderme pini, cihaza veri gönderir.
  • VCC (Voltage Common Collector): Güç pini, genellikle 3.3V veya 5V olur.

Burada konuyu çok daha fazla uzatmamak için sadece şimdilik ihtiyacımız olan bileşenleri ele alıyorm.

UART Pinleri Doğrulama - Pinout Verification

UART pinlerini doğrulamak için elimize multimetre kullanacağız. Multimetreyi ilk olarak continuity yani süreklilik moduna alıyoruz. ( Süreklilik modu, devredeki iki nokta arasında elektrik akışının olup olmadığını kontrol etmek için kullanılır. Eğer iki nokta arasında bağlantı varsa, multimetre bip sesi çıkarır. )

Multimetrenin bir ucunu GND pinine bağlıyoruz ve diğer ucunu cihazın metal kasasına yada antenine dokunduruyoruz. Eğer bip sesi duyarsak GND pinini doğrulamış oluruz. Diğer pinlerde ise bip sesi duymayacağız çünkü RX, TX ve VCC pinleri doğrudan kasa ile bağlantılı değildir.

Yukarıdaki videoda gördüğünüz gibi GND pinini doğruladık. Şimdi diğer pinleri de doğrulayalım ve işimizi sağlama alalım.

İlk olarak modemimize güç veriyoruz. Daha sonra multimetremizi Multimetreyi DC Voltaj (V⎓) moduna alıyoruz. Siyah probumuz yine USB metal gövdesinde - GND sabit kalıyor. Kırmızı probumuzu ise sırayla diğer pinlere dokunduracağız ve voltaj değerlerini ölçeceğiz.

  • RX Etiketli Pin: Voltaj sabit 3.2-3V seviyesindeydi.

    • Bu hat sessizce bekliyor. Dışarıdan bir komut gelmesi için dinleme modunda. Burası RX pinidir.
  • TX Etiketli Pin: Voltaj 3.20V ile 3.30V arasında sürekli değişiyordu.

    • Voltajın dalgalanması, modemin o an veri gönderdiğinin göstergesi olabilir. Cihaz açılırken Burası TX pinidir.
  • 3.3V Etiketli Pin: Multimetre ekranında sabit 3.31V gördüm.

    • Burası VCC yani güç hattıdır. Bu pine dikkat edilmesi oldukça önemlidir. Bu pi üzerine hiçbir bağlantı yapmayacağız, modem kenfi gücünü adaptörden alacak. Aksi durumda voltaj çakışması kartımızı yakabilir.

    • Bu pinin doğrulanması, diğer pinlerin doğru olduğunu teyit etmemize yardımcı olur.

Sonuç olarak pinlerin etiketlerinin doğru olduğunu teyit etmiş olduk. İşimizi sağlama aldık ve artık UART bağlantısını kurmaya hazırız.

UART Bağlantısı Kurma

UART bağlantısını kurmak için USB to TTL adlı dönüştürücüyü kullanacağız. Bu dönüştürücü, bilgisayarımızın USB portu ile modem arasındaki seri iletişimi sağlayacaktır.

USB to TTL Dönüştürücü
Silicon Labs CP2102

Silicon Labs CP2102 çipine sahip bir USB to TTL dönüştürücü kullanıyorum. Bu çip, çoğu işletim sistemi tarafından desteklenmektedir.


UART (Universal Asynchronous Receiver-Transmitter) haberleşmesinde en çok kafa karıştıran ve en önemli temel kural Çapraz Bağlantı yapılması gerektiğidir. Yani TX (Transmit) pinini RX (Receive) pinine, RX pinini ise TX pinine bağlamamız gerekiyor.

Basitçe anlatmak gerekirse; TX pinini ağıza, RX pinini ise kulağa benzetebiliriz.

  • TX bizim ağızımız, karşının kulağına RX‘e konuşur.

  • Karşının ağızı TX, bizim kulağımıza RX‘e konuşur.

Eğer TX’i TX’e bağlarsak - ağızdan ağıza -, iki cihaz da aynı anda konuşur ama kimse dinlemez. Bu yüzden bağlantı şemamızda TX ve RX pinlerini çapraz olacak şekilde bağlayacağız.

USB to TTL Dönüştürücü
Seri Haberleşme (UART) Nedir?


Aşağıdaki görselde göründüğü gibi USB to TTL dönüştürücümüzün pinlerine gerekli bağlantıları yapıyoruz:

USB to TTL Bağlantı Görseli
USB to TTL Bağlantı Görseli

Şimdi jumper kablomuzun diğer ucunu modemimizin üzerindeki UART pinlerine bağlıyoruz:

Modem UART Bağlantısı
Modem UART Bağlantısı 2

Şimdi USB to TTL dönüştürücümüzü bilgisayarımıza bağlıyoruz. Bilgisayarımızda gerekli sürücüler yüklüyse, cihaz otomatik olarak tanınacaktır. Yüklü değilse sürücüleri aşağıdaki videodan yararlanarak yükleyebilirsiniz.

Bundan sonra yapmamız gereken tek şey bir terminal programı kullanarak seri iletişim kurmak. Ben PuTTY programını kullanacağım. Siz dilediğiniz başka bir terminal programını da kullanabilirsiniz.

PuTTY programını açtıktan sonra Serial bağlantı türünü seçiyoruz. Ardından Serial line kısmına USB to TTL dönüştürücümüzün bağlı olduğu COM portunu yazıyoruz. (Benim cihazım COM3 portunda bağlı.) Son olarak Speed kısmına ise 115200 yazıyoruz. Bu, modemimizin varsayılan baud rate değeridir.

PuTTy Seri Bağlantı Ayarları
PuTTY Seri Bağlantı Ayarları

Buarda akıllarda soru işareti kalmamsı adına neden 1152200 baud rate kullandığımızı açıklamak istiyorum. Ama bundan önce baud rate nedir ona bakalım:

Baud Rate Nedir?

Baud rate, bir iletişim kanalında saniyede iletilen sembol sayısını ifade eder. Seri iletişimde, baud rate genellikle saniyede iletilen bit sayısı olarak kullanılır. Örneğin, 115200 baud rate, saniyede 115200 bit veri iletildiği anlamına gelir.

Peki bu 115200 neden yazdık? Çünkü çoğu gömülü sistem ve modemler varsayılan olarak bu değeri kullanır. Bu değer, veri iletiminde yeterli hız sağlar ve hata oranını düşük tutar.

Ancak yaygın baud rate değerlerini denemek ile uğraşmak yerine ilk başta araştırdığımız RTL8676 veya yakın olan işlemcisinin veri sayfasına bakabiliriz. Orada bu işlemcinin desteklediği baud rate değerlerini bulabiliriz. Bu işlemci için desteklenen yaygın baud rate değerleri şunlardır: 300bps 1200bps 2400bps 9600bps 19200bps 38400bps 57600bps 115200bps

Baud Rate değerini ve nasıl hesaplandığını başka bir yazıda daha detaylı ele alacağım.


PuTTY ayarlarını yaptıktan sonra Open butonuna tıklıyoruz ve terminal penceresini açıyor ve sonrasında modeme güç veriyoruz. Eğer her şey doğruysa, terminal penceresinde modemimizin açılış loglarını görmeye başlayacağız.

Debug loglarını gördüğümüzde atık UART bağlantısının başarılı olduğunu anlıyoruz. Artık modemle seri iletişim kurabiliriz.

Ama o da ne ?

ZTE ZXHN H108N Login Paneli
Login Panel Erişimi

Referanslar

Teşekkürler @batuhaner

This post is licensed under CC BY 4.0 by the author.