Strona 1 z 2 12 OstatniOstatni
Pokaż wyniki 1 do 10 z 11

Temat: Modemy Kablowe zabawa w reverse engineering

  1. #1
    Zarejestrowany
    Jul 2008
    Skąd
    /dev/random
    Postów
    556

    Domyślnie Modemy Kablowe zabawa w reverse engineering

    Przez pewien czas bawilem sie jako administrator sieci opartych o systemy DOCSIS, choc w sumie dalej to robie ale juz na zasadzie doradztwa i dostaw sprzetu. No i jak to zwykle bywa czlowiek sobie mysli co ten "wredny uzytkownik" moze wykombinowac. Wiec na pierwszy ogien poszlo google - i niestety niezbyt wiele. Od strona TCNISO, niestety zero jakis ciekawych informaci - wszystko komercja. Jednak widac ze jak sie kupi to cos tam mozna kombinowac.

    Pieniedzy nie mialem zamiaru wydawac bo niby po co, jednak odezwala sie mania
    grzebania w elektronice i pakowania paluchow tam gdzie sie nie powinno.
    Po rozebraniu modemu, ot plytka na nie uklad zasilania, glowica w.cz., kilka ledow, pamiec flash i ram, jakis duzy scalaczek BGA z napisami Broadcom BCM3348.

    Jak zwykle google nie pokazalo za wiele po wpisaniu symbolu scalaka, o dokladnej dokumentacji mozna bylo zapomniec. Choc w krotkiej reklamowce zawarta byla informacja o rdzeniu MIPS, a na stronie WWW modemu krotkie info "VxWorks Version: 5.4".

    Czyli juz mamy jakies tam podstawy, tak samo troche informacji przyniosla strona OpenWRT. Na plytce mamy pieknie wyprowadzone zlacze JTAG, a wiedzac ze mamy do czynienia z MIPS-em trzeba bylo zainteresowac sie protokolem EJTAG.

    Dalej juz mozna by powiedziec bylo "z gorki" - o ile tak mozna nazwac zabawe w disassemblacje. Ot ale IDA zawsze to wmiare ulatwia i jak ktos lubi nie jest to az takie tragiczne. Nalezy jeszcze tylko wspomniec ze image w FLASH-u jest kompresowane ale tutaj z pomoca przychodzi nam 7-Zip...

    Podstawa to odnalezienie funkcji systemowych VxWorks-a oc choc by prostych typu "printf", oraz obslugi samego DOCSIS-a. Ojj a kodu jest sporo i zapewni zabawe na dlugie zimowe wieczory.

    Dalej to juz kwestja fantacji jesli chodzi o aplikowanie zmian, ot poznanie ewentualnych slabych stron systemu DOCSIS (tutaj z pomoca przychodzi pelna dokumentacja dostepna na http://www.cablelabs.com/ ) lub slabych stron w konfiguracji konkretnej sieci...

    Z pomoca przychodzi nam jak zwykle niezawodne GCC i GAS przygotowane pod platforme MIPS. Choc nie ma co ukrywac ze w dalszych pracach warto pomyslec nad napisaniem sobie jakiegos wlasnego Assemblera z wygodnym IDE (ukierunkowanym w strone tego typu zabaw).

    No i tak po dlugim czasie powstalo jakies tam male "co nieco"... Radosc co nie miara i walory edukacyjne (ot choc by czlowiek poznal assembler kolejnego procesora).

    ...z interfejsem www dd-wrt (ot kiepski ze mnie grafik i webmaster - wiec wybralem wmiare ladnego gotowca)

    http://img169.imageshack.us/my.php?i...icsetupau0.jpg

    oraz oprogramowanko pomagajace sie dogadac przez zlacze JTAG...

    http://img186.imageshack.us/my.php?i...tagutilfw0.jpg

    Filmik Video jak tym sie mniejwiecje poslugiwac:
    http://rapidshare.com/files/13642785...orial.wmv.html

    Oraz paczka do sciagniecia:
    http://rapidshare.com/files/13811409...setup.zip.html

    a co z tym dalej
    to juz temat na inna bajke
    Ostatnio edytowane przez tom : 08-18-2008 - 02:33

  2. #2

    Domyślnie

    Witam
    Testowałem jtagutility v1.3 i musze powiedziec ze bardzo dobry program. Testowałem go na starym modemie kablowym NTL200 na bcm3348. Chcialem zapytac czy jest mozliwość zaimplementowania obsługi bcm6348 i bcm6338.
    pozdrawiam

  3. #3
    Zarejestrowany
    Jul 2008
    Skąd
    /dev/random
    Postów
    556

    Domyślnie

    hmm...

    a probowales dodac je do "drzewa" konfiguracyjnego ukladow ?

    tzn. katalog jtagparts\broadcom

    w pliku PARTS dodac ID tych ukladow (nie wiem czy wpisane nizej ID jest ok - ale mysle ze analogicznie do innych bedzie takie jak wpisalem. Jak nie to dane beda podane w JTAG Utility przy informacji Unknow Device (poczatek IDCODE)


    Kod:
    /*
    +=====================================================================+
    |                            JTAG Utility                             |
    |                      (c)2008 ToM - [email protected]                     |
    |                                                                     |
    +=====================================================================+
    */
    
    
    #######################################################################
    #ID,			folder,			Name                  #
    #######################################################################
    
    0x03345,		bcm3345,		BCM3345
    0x03348,		bcm3348,		BCM3348
    0x03349,		bcm3349,		BCM3349
    0x03350,		bcm3350,		BCM3350
    0x06348,                bcm6348,                BCM6348
    nastepnie zalozyc katalog bcm6348

    i w nim umiescic pliki:
    bcm6348.def i STEPPINGS

    stworzone na podstawie tych od np. z bcm3348.

    Niestety nie mam na stanie nic z takim prockiem wiec nawet nie mam jak sprawdzic i poeksperymentowac (bcm6348 - w jakis modemach ADSL chyba siedzi) - a z ADSL to juz dawno nie mialem do czynienia...

    W sumie na poczatek bym ustawil dla 6348 plik .def mniejwiecej tak:

    Kod:
    IRlength=5 
    Protocol=ejtag
    Endian=big
    
    Ram=0x80000000,0x800000		//Ram=RAM_ADDRESS_START,RAM_SIZE
    Flash=0x9fc00000		//Flash=FLASH_ADDRESS_START
    Jak wykryje pamiec Flash to mozna sie bawic z ustawieniem ewentualnych "MemoryTab" i zostanie ustawienie RAM-u

    jak nie wykryje zobacz jeszcze ustawienia:

    Flash=0x9f800000
    Flash=0x9f400000

    Flash=0x1fc00000
    Flash=0x1f800000
    Flash=0x1f400000
    Ostatnio edytowane przez tom : 10-09-2012 - 14:45
    --
    ToM's Super Fix IT "No Fucking Problem"

  4. #4

    Domyślnie

    Witam
    Zastosowałem się do twoich wskazówek i edytowałem pliki o ktorych wspomniałeś. Adres startowy flasha ustawiłem 0x1fc00000 bo taki uzyskałem w programie ejtag debrick utility:

    tjtag3.exe -probeonly /bypass /fc:85 /st5

    ==============================================
    EJTAG Debrick Utility v3.0.1 Tornado-MOD
    ==============================================

    Probing bus ... Done

    Instruction Length set to 5

    CPU Chip ID: 00000110001100111000000101111111 (0633817F)
    *** Found a Broadcom BCM6338 Rev 1 CPU chip ***

    - EJTAG IMPCODE ....... : 00000000100000000000100100000100 (00800904)
    - EJTAG Version ....... : 1 or 2.0
    - EJTAG DMA Support ... : Yes
    - EJTAG Implementation flags: R4k MIPS32

    Issuing Processor / Peripheral Reset ... Done
    Enabling Memory Writes ... Done
    Halting Processor ... <Processor Entered Debug Mode!> ... Done
    Clearing Watchdog ... Done

    Manual Flash Selection ... Done

    Flash Vendor ID: 00000000000000000000000101111110 (0000017E)
    Flash Device ID: 00000000000000000001101000000000 (00001A00)
    *** Manually Selected a Spansion S29GL032M BotB (4MB) Flash Chip ***

    - Flash Chip Window Start .... : 1fc00000
    - Flash Chip Window Length ... : 00400000
    - Selected Area Start ........ : 00000000
    - Selected Area Length ....... : 00000000
    Problem jest w tym że niebardzo wiem jak przeedytowac flash.def bo po odpaleniu twojego programu wyswietla się cos takiego:
    Read IDCODE: 0x0633817f
    Manufacturer: Broadcom
    Part: bcm6338
    Version: 0x0? (BCM6338KPB)
    ---------------------------------
    Create & Clear RAM Buffer (0x80000000 - 0x80800000)
    Load Configuration File: bcm6338.def
    IR Length: 0x5
    Endian: Big
    Protocol: EJTAG
    RAM Start Address: 0x80000000
    RAM Size: 0x800000
    FLASH Start Address: 0x1fc00000
    ---------------------------------
    Read IMPCODE: 0x00800904
    EJTAG Version: 1 or 2.0
    EJTAG DMA Support: Yes
    ---------------------------------
    Detect FLASH : Unknown (Manufacturer’s: 0x227e Device: 0x0001)
    ================================================== ============
    Jest to definicja: AMD 29lv320MT,
    Manufacture ID 0x0001,
    Device ID 0x227E,
    PROTOCOL 2,
    SIZE 0x400000,
    SECTORS,SECTOR SIZE 63,0x10000,8,0x2000

    A flash u mnie jest spansion s29gl032a90tfir4

    link do specyfikacj:

    http://www.dataman.com/media/datashe.../S29GLxxxA.pdf

    Jest to flash podobny do amd jeżeli chodzi o ilosc sektorów:
    71 sektorow, bottom boot, 8 sektorów po 0x2000 i 63 sektory po 0x10000.
    W pdf-ie w tabeli - Table 12. Autoselect Codes, (High Voltage Method)na stronie 31 są: Manufacture ID, Device ID, ale zabardzo nie wiem jak to zinterpretować.
    pozdrawiam

    zapomnialem dodac router to:
    Thomson TG585v7 Modem/WLAN-Router. It features ADSL2+, 4x Switch, b/g WLAN

    http://wiki.openwrt.org/toh/thomson/tg585
    Ostatnio edytowane przez jackfinch : 10-11-2012 - 06:22

  5. #5
    Zarejestrowany
    Jul 2008
    Skąd
    /dev/random
    Postów
    556

    Domyślnie

    Hi

    W sumie mialem odpisac wczoraj ale tez dokladnie nie przegladalem dokumentacji od flash-a (mam lekka kolomyje w pracy wiec odpisuje szybko). Mam nadzieje ze to cos da...

    Generalnie najlepiej zdefiniowac tak jak podaje program czyli patrzac na wyplute dane:

    Kod:
    S29GL032A, 0x227e, 0x0001, 2, 0x400000, 63, 0x10000, 8, 0x2000

    i po dodaniu zrobic odczyt Flasha, a nastepnie sprawdzic czy zawiera prawidlowe dane.
    --
    ToM's Super Fix IT "No Fucking Problem"

  6. #6

    Domyślnie

    witam
    Zrobiłem tak jak napisałeś i teraz mam prawidłowe wykrywanie flasha.
    Dla bcm6338 i spansion S29GL032A:
    ================================
    Read IDCODE: 0x0633817f
    Manufacturer: Broadcom
    Part: bcm6338
    Version: 0x0? (BCM6338KPB)
    ---------------------------------
    Create & Clear RAM Buffer (0x80000000 - 0x81600000)
    Load Configuration File: bcm6338.def
    IR Length: 0x5
    Endian: Big
    Protocol: EJTAG
    RAM Start Address: 0x80000000
    RAM Size: 0x1600000
    FLASH Start Address: 0x1fc00000
    ---------------------------------
    Read IMPCODE: 0x00800904
    EJTAG Version: 1 or 2.0
    EJTAG DMA Support: Yes
    ---------------------------------
    Detect FLASH : S29GL032A
    Create & Clear FLASH Buffer (0x1fc00000 - 0x20000000)
    Data from file flash.def:
    - Protocol: AMD
    - FLASH Size: 0x00400000
    - Block[0]: Sectors: 0x08, Sector Size: 0x00002000
    - Block[1]: Sectors: 0x3f, Sector Size: 0x00010000

    I dla bcm6348 i spansion s29gl064a (bt home hub 1.0)
    ================================================== ==
    Read IDCODE: 0x0634817f
    Manufacturer: Broadcom
    Part: bcm6348
    Version: 0x0? (BCM6348KPBG)
    ---------------------------------
    Create & Clear RAM Buffer (0x80000000 - 0x80800000)
    Load Configuration File: bcm6348.def
    IR Length: 0x5
    Endian: Big
    Protocol: EJTAG
    RAM Start Address: 0x80000000
    RAM Size: 0x800000
    FLASH Start Address: 0x1fc00000
    ---------------------------------
    Read IMPCODE: 0x00800904
    EJTAG Version: 1 or 2.0
    EJTAG DMA Support: Yes
    ---------------------------------
    Detect FLASH : S29GL064A
    Create & Clear FLASH Buffer (0x1fc00000 - 0x20400000)
    Read CFI Data:
    - Protocol: AMD
    - FLASH Size: 0x00800000
    - Block[0]: Sectors: 0x08, Sector Size: 0x00002000
    - Block[1]: Sectors: 0x7f, Sector Size: 0x00010000
    ================================================== ==
    Musze jeszcze dokladnie porobic odczyt i zapis. Pierwsze testy wygladaja na poprawne odczyty i zapisy.
    pozdrawiam

  7. #7
    Zarejestrowany
    Jul 2008
    Skąd
    /dev/random
    Postów
    556

    Domyślnie

    No to spoko jak bedzie ok daj znac W sumie softu sam dawno nie uzywalem, ale ciesze sie ze moglem pomoc. W sumie do tego softu warto zaopatrzyc sie w niedrogiego JTAG-a opartego o chip FTDI, dziala sporo szybciej niz na LPT...
    W sumie z tego wzgledu glownie pisalem JU, interfejsy na LPT byly bardziej dodatkiem...

    Ja akurat uzywalem JTAG-a zaprojektowanego przez kolege Freedie Chopin do ARM-ow (4R|\/|-JT4G Rev02):

    4R|\/|-JT4G Rev01 + Rev02

    Watek na temad jgo budowy jest tez gdzies na elektrodzie...
    --
    ToM's Super Fix IT "No Fucking Problem"

  8. #8

    Domyślnie

    witam
    czy jest mozliwosc dodania do programu odczytu flasha w przypadku Atherosa poprzez dodanie wpisu w katalogu \jtagparts\, chodzi mi o router Netgear WGR614v7. jezeli jest to co nalezaloby przeedytowac?

    odnosnie bcm6348 i flasha S29GL064A nalezy ustawic start address na 1f800000 poniewaz przy 1fc00000 jest poprawny odczyt ale nie dziala kasowanie. na 1f800000 dziala poprawnie i odczyt i kasowanie.


    http://wiki.openwrt.org/doku.php?id=...tgear:wgr614v7

    pozdrawiam

  9. #9
    Zarejestrowany
    Jul 2008
    Skąd
    /dev/random
    Postów
    556

    Domyślnie

    Sorry za zwloke, ale czasami mam kupe roboty i niezbyt czesto tutaj zagladam.

    Jesli jest to uklad zgodny z MIPS to powinno dac rade Wszystko na takiej samej zasadzie tylko trzeba zaczac edytowac drzewo od producenta, potem uklad itd.
    --
    ToM's Super Fix IT "No Fucking Problem"

  10. #10

    Domyślnie

    Witam
    Dzieki za pomoc, co do tego kiedy odpowiesz nie ma znaczenia wiadomo kazdy ma inne wazniejsze sprawy na glowie. Chcialbym zapytac jeszcze o to co napisales w pierwszym poscie o image flasha, tzn o kompresji 7-zip. Jak sie za to zabrac, zeby rozpakowac image uzywajac 7-zip.
    pozdrawiam

Strona 1 z 2 12 OstatniOstatni

Podobne wątki

  1. Zabawa "brute-force"
    By TQM in forum Przez WAS dla WAS
    Odpowiedzi: 56
    Autor: 06-22-2011, 11:44
  2. zabawa w "hackme"
    By blooregard in forum Off Topic
    Odpowiedzi: 3
    Autor: 08-04-2008, 19:43
  3. [zabawa] hack it
    By rip in forum Off Topic
    Odpowiedzi: 16
    Autor: 06-15-2008, 15:41
  4. Odpowiedzi: 3
    Autor: 07-18-2007, 17:38

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj