Es tut sich wieder was bei Broadcom WLAN

  • Man kann nur hoffen, dass man (im Gegensatz zu iOS) immer mit csrutil und authenticated-root machen kann was man möchte. Sollte das irgendwann mal wie bei iOS sein wo man einen echten Jailbreak braucht kriege ich einen Brechreiz.

    Ich fürchte der Tag, an dem man das nur noch mit einem bezahlten Developer Account machen kann, dürfte nicht mehr weit sein. macOS bewegt sich immer mehr in Richtung iOS und dort war es schon immer so und dann auch nur für den User Space. Der Kernel war da ohne Jailbreak schon immer tabu.

  • Hallo zusammen,


    versprochen ist versprochen, und dieses Versprechen halte ich nun ein.:klatsch:


    Hier ein kurzes und einfaches Update zu meinem Projekt. Den neuen DriverKit-Treiber für diverse Broadcom-WLAN-Chips konnte ich erfolgreich bauen, linken und signieren.


    Der Treiber entspricht vollständig DriverKit Version 24.5 und läuft nur im User-Space (das war ein harter Kampf). Kernel Extensions werden daher nicht mehr benötigt. Das Build-System kümmert sich automatisch um die Einbindung der passenden Firmware. Unterstützt werden aktuell 23 verschiedene Broadcom-Chipsätze, zum Beispiel BCM4350, BCM4360 und BCM43602 etc. Die grundlegenden Hardware-Funktionen sind umgesetzt. Dazu gehören das MMIO-Mapping, die Verwaltung von DMA-Puffern und das Zurücksetzen der Hardware-Kerne etc. Der komplette Build-Prozess läuft automatisch ab und beinhaltet auch das Code-Signing sowie die anschließende Prüfung.


    Der Treiber ist damit bereit für die erste Installation und für erste Tests auf meiner Hardware. Nun muss die passende Hardware her. [hust]


    Ein paar Bilder befinden sich im Anhang

  • Super :thumbup:

    Jedoch sehe ich keine Firmware für die BCM4360. :/

    Ich war beim Verfassen meines Textes etwas voreilig, aber das ist zunächst nur ein kleines Problem. Solange ich das entsprechende Data Sheet und die Firmware im Netz finden kann, lässt sich die Implementierung problemlos durchführen, da das Grundgerüst bereits steht.


    Vielen Dank für den Hinweis.

  • Und wie sieht es aus mit BCM94360CS2?

    Ich benötige die Data Sheet und die passende Firmware, dann wäre eine Umsetzung unter Umständen möglich.

  • DerBeste Die Firmware habe ich noch nirgends gefunden. Ich habe so eine PCIe Karte im Rechner. Ist es nicht möglich die Firmware auszulesen und als .bin zu speichern?


    Gruß, karacho



    Bitte keine Supportanfragen via PN. Eure fragen gehören ins Forum!

    Ich hab noch drei Patronen, eine für dich und zwei für mich...

  • Die KI sagt mir:

    Zitat

    Für die Auslesung der Firmware eines solchen Chips ist ein spezielles Hardware-Tool erforderlich, wie z. B. ein JTAG- oder SPI-Programmiergerät, da die Firmware im Flash-Speicher des Chips gespeichert ist. Ohne Zugriff auf den physikalischen Chip und die entsprechende Hardware ist eine direkte Auslesung nicht möglich. Es gibt jedoch Ansätze, bei denen die Firmware aus Windows-Treibern extrahiert werden kann, da diese oft .CAB-Dateien enthalten, die .HEX-Dateien mit der Firmware enthalten. Diese Dateien können dann mit Tools wie 7-Zip entpackt werden. Eine solche Firmware kann dann in eine Binärdatei konvertiert werden, falls nötig.

    Die Windowstreiber hätte ich vorrätig. Im Screenshot zu sehen sind die extrahierten Dateien aus der .cab Datei.


    Gruß, karacho



    Bitte keine Supportanfragen via PN. Eure fragen gehören ins Forum!

    Ich hab noch drei Patronen, eine für dich und zwei für mich...

  • Es gibt keine Firmware für BCM4360.


    Diese Module werden in Linux mit der SMAC Firmware betankt.

    https://wireless.docs.kernel.o…rs/drivers/brcm80211.html

    Code
    1. /lib/firmware/brcm/bcm43xx-0.fw

    Apple verwendet eine eigene, proprietäre Firmware, die ist in AirPort_BrcmNIC enthalten (auch die FW für die BCM943602 und BCM94350 ist da integriert).

  • DerBeste Die Firmware habe ich noch nirgends gefunden. Ich habe so eine PCIe Karte im Rechner. Ist es nicht möglich die Firmware auszulesen und als .bin zu speichern?



    Würde gerne die Sachen liefern, jedoch hab keine Ahnung wie man das aus der Karte kopiert.


    Es gibt keine Firmware für BCM4360.


    Diese Module werden in Linux mit der SMAC Firmware betankt.

    https://wireless.docs.kernel.o…rs/drivers/brcm80211.html

    Code
    1. /lib/firmware/brcm/bcm43xx-0.fw

    Apple verwendet eine eigene, proprietäre Firmware, die ist in AirPort_BrcmNIC enthalten (auch die FW für die BCM943602 und BCM94350 ist da integriert).

    Hier eine Anleitung wie ihr die Firmware-ROM eines Broadcom-WLAN-Chips mit Nexmon extrahiert


    Beispielchip: BCM43602

    Ziel: Erzeugung einer originalen "rom.bin" direkt aus dem WLAN-Chip


    1. Voraussetzungen

    Bevor ihr beginnt, müssen alle folgenden Bedingungen erfüllt sein:


    - Betriebssystem: Linux (Ubuntu wird empfohlen)

    - Rechte: Root-Zugriff (`sudo`)

    - Hardware: Broadcom-WLAN-Chip, der von Nexmon unterstützt wird (z. B. BCM43602)

    - Systemstatus: Der WLAN-Chip wird vom System korrekt erkannt


    Ohne diese Voraussetzungen ist der Vorgang nicht erfolgreich durchführbar.


    2. System vorbereiten


    Öffne ein Terminal und aktualisiere dein System:

    bash

    sudo apt update

    sudo apt upgrade -y


    Installiere anschließend alle benötigten Werkzeuge:


    bash

    sudo apt install -y git build-essential make gcc bc python3


    Diese Pakete sind notwendig, um Nexmon zu kompilieren und Patches zu bauen.


    3. Nexmon herunterladen


    Wechsle in dein Home-Verzeichnis:


    bash

    cd ~


    Klone das offizielle Nexmon-Repository:


    bash

    git clone https://github.com/seemoo-lab/nexmon.git



    Wechsle in das Nexmon-Verzeichnis:


    bash

    cd nexmon


    4. Nexmon-Umgebung einrichten


    Initialisiere die Nexmon-Umgebung:


    bash

    source setup_env.sh


    Wichtig:

    Dieser Schritt setzt notwendige Umgebungsvariablen. Ohne ihn schlagen alle weiteren Befehle fehl.



    5. Passenden Chip auswählen


    Navigiere in das Patch-Verzeichnis:


    bash

    cd patches


    Suche den Ordner deines Chips, z. B.:


    bash

    bcm43602



    Wechsle in das Nexmon-Unterverzeichnis des Chips:


    bash

    cd bcm43602/nexmon



    6. ROM-Dump-Patch bauen


    Baue das ROM-Dump-Patch:


    bash

    make dump-rom



    Dabei wird ein kleines Patch-Programm erzeugt, das später den ROM-Inhalt des WLAN-Chips ausliest.



    7. WLAN-Interface vorbereiten


    Deaktiviere das WLAN-Interface, um Konflikte zu vermeiden:


    bash

    sudo ifconfig wlan0 down



    Falls dein Interface anders heißt (zB. "wlp2s0"), passe den Namen entsprechend an.



    8. ROM-Dump ausführen


    Starte nun den ROM-Dump:


    bash

    sudo make run-dump-rom



    Was dabei passiert:


    - Der WLAN-Chip wird initialisiert

    - Der ROM-Inhalt wird in den RAM gespiegelt

    - Die Daten werden ausgelesen

    - Der Dump wird in eine Datei geschrieben


    Der Vorgang dauert nur wenige Sekunden.



    9. Ergebnis prüfen


    Nach erfolgreichem Abschluss findest du eine Datei wie:


    bash

    rom.bin


    oder


    bash

    fw_rom.bin



    Prüfe die Dateigröße:


    bash

    ls -lh rom.bin



    Erwartet:


    - Größe zwischen 500 KB und 1 MB


    Fehlerfall:


    - Datei ist leer oder 0 Byte → Dump fehlgeschlagen



    10. ROM-Datei sichern


    Kopiere die Datei auf den USB-Stick


    bash

    cp rom.bin ~/firmware_bcm43602_rom.bin



    Diese Datei ist nun die Grundlage für die Analyse- oder Patch-Arbeiten.


    11. ROM-Datei analysieren (optional)


    Zur Analyse der Firmware kannst du "binwalk" verwenden:


    bash

    sudo apt install -y binwalk

    binwalk firmware_bcm43602_rom.bin



    Damit lassen sich Code-Bereiche und Strukturen identifizieren – insbesondere relevant für Reverse Engineering.



    12. Rechtliche Hinweise


    - Die Firmware ist proprietär

    - Nutzung ausschließlich zu Forschungs- und privaten Zwecken

    - Keine öffentliche Weiterverbreitung !

    - Broadcom- und ggf. Apple-Lizenzen gelten weiterhin


    Kurzfassung


    - Linux vorbereiten

    - Nexmon herunterladen und initialisieren

    - Broadcom-Chip auswählen

    - ROM-Dump-Patch bauen

    - ROM aus dem WLAN-Chip auslesen

    - "rom.bin" sichern und optional analysieren


    Ergebnis:

    Eine originale WLAN-Firmware direkt aus der Hardware.



    Edit:

    Lasst euch aber Zeit. Ich arbeite derzeit an einem anderen Projekt und kann mich erst dann darum kümmern, wenn ich das neue Projekt abgeschlossen habe.

  • Azteca Ein Live Linux wird nicht funktionieren, weil du die Abhängigkeiten installieren musst.


    DerBeste Hab nexmon mal geclont, aber da im Repository gibts leider keine patchverzeichnisse für bcm4360 oder bcm43602.

    Gruß, karacho



    Bitte keine Supportanfragen via PN. Eure fragen gehören ins Forum!

    Ich hab noch drei Patronen, eine für dich und zwei für mich...

  • WLAN Module enthalten keine Firmware, die wird vom OS in das Modul geladen - warum sollte man also eine Firmware aus dem Modul extrahieren?

    Das bedeutet doch die Firmware ist vorhanden.


    In Linux liegt die in /lib/firmware

  • Hier ist das vollautomatisierte Shell-Skript für Linux.


    Dieses Skript führt den gesamten Prozess (Abhängigkeiten installieren, Nexmon klonen, Umgebung einrichten, Chip auswählen, Dump durchführen) automatisch durch.


    Anleitung:


    Kopiere die Datei extract_firmware_linux.sh auf deinen Linux-Rechner (zB. per USB-Stick).

    Mache sie ausführbar: chmod +x extract_firmware_linux.sh

    Führe sie als Root aus: sudo ./extract_firmware_linux.sh

    Das Skript fragt dich interaktiv, welchen Chip du auslesen möchtest und wie dein WLAN-Interface heißt, und erledigt den Rest für dich.

  • DerBeste Das ist jetzt wirklich nicht böse gemeint, aber probiere doch, die Sache ordentlich zu lernen. LLMs sind nicht auf dem Level, realistische Treiber zu entwickeln. Wenn ein erfahrener Entwickler alles vorkaut, kommt vielleicht wenigstens etwas raus, aber so nicht. Ich mache gerade Compilerentwicklung - deutlich angenehmer als Treiberentwicklung - und nichtmal dort sind die LLMs eine große Hilfe, wenn es nicht gerade um Boilerplate oder sehr isolierte Bugs geht.


    Außerdem ist so der Lerneffekt fast 0. Deine Posts widersprechen sich immer wieder und dir fällt es entweder nicht auf oder es ist dir egal (wäre schade). Den allgemein bekannten Fakten wie der FW-Geschichte von schrup21 widersprechen sie ebenfalls. Erst gibt es einen halbfertigen Prototypen, der lädt, dann auf einmal können DriverKit-Treiber gar nicht geladen werden, dann geht es auf einmal doch wieder. Ich hoffe, das fällt nicht nur mir auf.


    Es gibt kompetente Netzwerkentwickler wie Mieze in der Community und es täte allen gut, eher auf sie als auf halluzinierende KIs zu hören. Soll jeder sein Lieblingsspielzeug nutzen, aber meine Studiokopfhörer machen mich auch nicht zum Spezialisten für Mix&Master…

  • DerBeste Das ist jetzt wirklich nicht böse gemeint, aber probiere doch, die Sache ordentlich zu lernen. LLMs sind nicht auf dem Level, realistische Treiber zu entwickeln. Wenn ein erfahrener Entwickler alles vorkaut, kommt vielleicht wenigstens etwas raus, aber so nicht. Ich mache gerade Compilerentwicklung - deutlich angenehmer als Treiberentwicklung - und nichtmal dort sind die LLMs eine große Hilfe, wenn es nicht gerade um Boilerplate oder sehr isolierte Bugs geht.


    Außerdem ist so der Lerneffekt fast 0. Deine Posts widersprechen sich immer wieder und dir fällt es entweder nicht auf oder es ist dir egal (wäre schade). Den allgemein bekannten Fakten wie der FW-Geschichte von schrup21 widersprechen sie ebenfalls. Erst gibt es einen halbfertigen Prototypen, der lädt, dann auf einmal können DriverKit-Treiber gar nicht geladen werden, dann geht es auf einmal doch wieder. Ich hoffe, das fällt nicht nur mir auf.


    Es gibt kompetente Netzwerkentwickler wie Mieze in der Community und es täte allen gut, eher auf sie als auf halluzinierende KIs zu hören. Soll jeder sein Lieblingsspielzeug nutzen, aber meine Studiokopfhörer machen mich auch nicht zum Spezialisten für Mix&Master…

    Hallo mhaeuser,


    danke für deine offenen Worte. Ich nehme das "nicht böse gemeint" mal so an, hier aber Klartext von meiner Seite:


    LLMs & Technik: Ich nutze KI als Werkzeug für Boilerplate und Ideen, nicht als Ersatz für meinen Kopf. Dass KI bei Treibern halluziniert, ist mir absolut bewusst; das Debugging und die Logik liegen bei mir.


    Widersprüche: Beim Reverse Engineering und Prototyping geht es oft einen Schritt vor und zwei oder drei zurück. Das kenne ich aus meiner jahrzehntelangen Tätigkeit als Konstrukteur nur zu gut. Wer Fehler nicht wagt und öffentlich macht, macht auch keinen Fortschritt.


    Experten & "Geht nicht": Ich habe großen Respekt vor Mieze & Co. Mein Projekt ist ein paralleler Versuch, kein Angriff. Dass Dinge als "unmöglich" gelten, war damals beim AMD-Kernel auch hier und in anderen deutschen Foren ein tägliches Gerede, und genau das ist mein Antrieb gewesen.


    Zum Thema Kritik: Da ich meinen Source Code bisher noch gar nicht veröffentlicht habe, ist deine vernichtende Kritik für mich faktisch nicht nachvollziehbar. Es wirkt eher wie ein Ausdruck von Missgunst als eine fachliche Einschätzung. Hättest du den Code im Ganzen gesehen und dann deine konstruktive Kritik geäußert, um die Entwicklung womöglich voranzutreiben, wäre das eine Hilfe für die Community gewesen. Aber so, ohne jede Basis, ist es das auf keinen Fall.


    Ich nehme das exakt so für mich auf und beende die Diskussion auf diesem Portal hiermit.


    Beste Grüße!

  • Marvin Häuser, u.A. im Team von Acidanthera.


    Azteca ernsthaft?

  • Ist mir egal, wenn er so gut ist, kann er doch helfen und nicht kritisieren. Und wenn er besser weisst wie das gemacht wird, warum macht er das nicht. Rhetorische Frage.

    DerBeste macht etwas worauf wir warten, und mhaeuser führt dazu dass er das womöglich nicht mehr weiterführt.