.titleBar { margin-bottom: 5px!important; }

[Gelöst]: sl-mod 1.3 / mit dropbear, ether-wake, vi, sed, crontab, wget, etc.

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von han-solo, 25 Juni 2007.

  1. han-solo

    han-solo Mitglied

    Registriert seit:
    28 Juli 2005
    Beiträge:
    451
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 han-solo, 25 Juni 2007
    Zuletzt bearbeitet: 16 Sep. 2007
    VORWORT:
    Um der vernachlässigten Fritzbox SL ein wenig per PEP einzuhauchen, hatte ich mir vor einiger Zeit überlegt, wie man die Kiste ein wenig tunen kann und hab einen Weg über einen TFTP-Server genommen. (Anleitung hier: http://www.xobztirf.de/selfsite.php?aktion=Fritzbox SL Tuning)

    Danach hab ich versucht die abgespeckte busybox aus der Firmware zu entfernen und durch eine leistungsfähigere zu ersetzen.
    Und ausserdem wollte ich noch mehr rausholen und vor allem Dropbear auf die Box kriegen.
    Hier findet ihr die Ergebnisse meiner Arbeit.

    Hauptfunktionen im sl-mod:

    - tftp (put/get)
    - wget
    - vi
    - nvi
    - sed
    - telnetd (inkl. start/stop skript)
    - ether-wake
    - crond/crontab
    - Virtual-IP
    - rule (Portfreigaben per Commandline)
    - dropbear (SSH-Server ohne scp, client und dropbearkey)


    EDIT: 15.09.2007
    Neue Version 1.3 mit dropbear Librarys.
    Die benötigte Library libutil-0.9.26.so ist jetzt im Filesystem enthalten.
    Dafür hab ich das Keyfile für matrixtunnel und die slmod-info.html rausgeworfen.
    Dropbear läuft jetzt also noch stabiler.
    Ausserdem hab ich das "rule" Skript gefixt, sodaß beim Entfernen einer Regel keine Leerzeile mehr in der ar7.cfg zurück bleibt.

    EDIT: 13.09.2007
    Jetzt endlich auch mit dropbear.

    EDIT: 11.09.2007
    Neue Version 1.2 mit folgenden Zusätzlichen Features

    - Crontab im Flash-Speicher (bleibt bei reboot erhalten /var/flash/crontab.cfg)
    - /etc/init.d/rc.cron (ein Crontab Deamon, welcher alle 60 Sekunden die crontab erneuert)
    - /bin/telnetd.sh (eine kleines Skript, welches den telnetd starten und stoppen kann)
    - /bin/rule (Abgewandelte Kurzform von setforw.sh für die SL zum setzen von Portfreigaben per Commandline)
    - /sbin/reboot (Pseudo reboot, da das busybox reboot nicht mehr in den Speicher passte)


    EDIT: 09.09.2007
    Mittlerweile hab ich den slmod verbessert (Version 1.1).

    busybox Befehle:
    Currently defined functions:
    [, [[, ash, basename, busybox, cat, chmod, cp, crond, crontab, date, dirname, dmesg, echo, env, ether-wake,
    false, find, free, grep, ifconfig, init, insmod, kill, ln, ls, lsmod, mkdir, mknod, modprobe, more,
    mount, mv, netstat, nslookup, pidof, ping, ps, pwd, realpath, rm, rmmod, route, sed, sh, sleep, stty,
    sync, tar, telnetd, test, tftp, top, tr, traceroute, true, umount, uname, uptime, vi, wget


    Zusätzliches:
    /etc/init.d/rc.cron
    /bin/rule
    /bin/telnetd.sh
    /sbin/reboot
    /sbin/ar7login
    /sbin/dropbear_dss_host_key
    /sbin/dropbear_rsa_host_key
    /lib/libcrypt-0.9.26.so
    Link: libcrypt.so -> libcrypt-0.9.26.so
    Link: libcrypt.so.0 -> libcrypt-0.9.26.so
    Link: libgcc_s.so.1 -> libcrypt-0.9.26.so
    /lib/libutil-0.9.26.so
    Link: libutil.so.0 -> libutil-0.9.26.so

    Was wurde entfernt:
    Webmenü: Hilfe
    Webmenü: Assistent
    Driver: USB
    busybox: killall

    Damit man auch dropbear ordentlich laufen lassen kann hab ich die benötigten Librarys, Zertifikate und Keyfiles ins Filesystem eingebaut.
    Leider hat die SL zu wenig Speicher für die benötigten Librarys zum lokalen Erzeugen der keys auf der Box. Somit muss man fertige Keys benutzen.
    Wenn euch meine Keys zu unsicher sind, dann könnt ihr diese auch gerne selbst erzeugen und im Verzeichnis "tools" vor dem "make" ersetzen.


    ********* DEBUG.CFG *********
    Zusätzliche Features bekommt ihr durch das Erstellen einer debug.cfg (/var/flash/debug.cfg).
    Ihr könnt leider nicht alle Module gleichzeitig verwenden. Dies belastet die Box zu sehr.
    Bei mir läuft aber dropbear, ether-wake und crontab wunderbar zusammen (telnetd weglassen).

    Grunkonfiguration der debug.cfg:
    Code:
    #!/bin/sh
    
    # Virtuelle Ip-Adresse fuer Portfreigaben setzen
    ifconfig lan:1 192.168.178.253 netmask 255.255.255.0 broadcast 192.168.178.255 up
    sleep 3
    
    # Hauptpfade anpassen
    export PATH=$PATH:/var/tmp
    export LD_LIBRARY_PATH=/var/tmp
    cd /var/tmp
    
    Hier für WOL (Wake on Lan) mittels ether-wake:
    Code:
    # MAC address fuer ether-wake
    wolmac="01:23:45:67:89:AB"
    # interface to use for WOL
    # intf = std  - ata
    # eth0 = LAN1 - WAN
    # eth1 = LAN2 - LAN1
    wolinterface="eth0"
    
    # einfaches WOL script erzeugen
    echo "ether-wake -i ${wolinterface} ${wolmac}" > /var/tmp/startpc
    chmod +x startpc
    
    Hier für die Aktivierung von TELNET ohne Passwort
    Code:
    # Telnet und Cron Daemon starten
    telnetd
    
    .. mit Passwort:
    Code:
    # Telnet und Cron Daemon starten
    telnetd -l /sbin/ar7login
    

    Hier für die Aktivierung von SSH (dropbear nachladen) für PASSWD='rercTwQv2k1ML' müsst ihr einen eigenen Passwort HASH einsetzen:
    Code:
    # Passwort für SSH setzen
    cp -p /var/tmp/shadow /var/tmp/shadow.old
    PASSWD='rercTwQv2k1ML'
    sed -e "/root:/s#^root:[^:]*:#root:$PASSWD:#" /var/tmp/shadow.old > /var/tmp/shadow
    rm /var/tmp/shadow.old
    
    # dropbear nachladen
    serverurl="mydomain.de"
    serverdir="/fritzbox"
    
    # Warten bis die FritzBox den Server erreichen kann
    while !(ping $serverurl); do
    sleep 5
    done
    
    wget http://$serverurl$serverdir/dropbear
    chmod +x dropbear
    dropbear -p 22 -r /sbin/dropbear_rsa_host_key -d /sbin/dropbear_dss_host_key
    

    Hier zur Verwendung von crontab:
    ACHTUNG: Eure cronjobs müsst ihr mit nvi in die /var/flash/crontab.cfg eintragen. Dann bleiben sie fest im Flash-Speicher.
    Code:
    mkdir -p /var/spool/cron/crontabs
    mknod /var/flash/crontab.cfg c 252 129
    cat /var/flash/crontab.cfg > /var/spool/cron/crontabs/root
    /usr/sbin/crond
    /etc/init.d/rc.cron &
    

    Und hier die Anleitung zum Erstellen des sl-mod:
    Downloaden und unter Linux oder cygwin entpacken und starten.
    Das Skript holt sich die Firmware von AVM und modifiziert sie.

    ANLEITUNG:
    Code:
    cd /
    mkdir slmod
    cd slmod
    tar -xvf slmod_1.1.tar
    make
    .
    .
    make clean
    make
    
    Im Verzeichnis /slmod findet ihr dann die fertige Firmware: fritz.box_sl.10.03.94.image_slmod1.3

    So, also dann mal viel Spaß mit dem sl-mod.

    Gruß
    Han-Solo
     

    Anhänge:

  2. nsus

    nsus Neuer User

    Registriert seit:
    20 Jan. 2006
    Beiträge:
    33
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    #2 nsus, 25 Juni 2007
    Zuletzt bearbeitet: 25 Juni 2007
    Als erste "Spielerei" ;-) :

    unter http://www.ip-phone-forum.de/showthread.php?t=120900
    gibt es im busybox.image eine Busybox, die nur 574.860 Byte groß ist, aber auch noch libcrypt.so.0 (14.020 Byte) braucht.

    Ev. hilft die schon, wenn wir noch etwas zum löschen im Image finden?

    Ich denke aber, der bessere Weg wäre, wenn uns "Unwissenden" jemand
    erklärt, wie wir eine busybox sauber für die SL compilieren können, um sie dann
    in das Image einzubinden.
    (das compilieren einer Busybox per DS-Mod hat da schon jemand versucht, nur was macht er dabei falsch?
    http://www.ip-phone-forum.de/showthread.php?t=139705 )
     
  3. Darksun777

    Darksun777 Neuer User

    Registriert seit:
    19 März 2006
    Beiträge:
    187
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    mittlerweile funzt es bei mir, nachzulesen unter der oben angegeben URL...

    Das compilieren ist mit dem ds-mod wirklich recht einfach, dabei hat mir das Wiki sehr geholfen!

    Grüße :)
     
  4. milkpirate

    milkpirate Neuer User

    Registriert seit:
    11 Juli 2006
    Beiträge:
    136
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    hm... also bei meinem friboli läuft das ganze so:

    Code:
    gzip -d lsmod.tgz
    tar -xvf lsmod.tar
    cd slmod
    make
    ...
    kernelsquashfs.raw created
    ../../../tolls/unsquashfs: /lib/tls/libc.so.6: version 'GLIBC_2.4' not found (required by ../../../tools/unsquashfs)
    make: *** [root-fs] Fehler 1
    und dann nicht mehr... hilfe ?
     
  5. han-solo

    han-solo Mitglied

    Registriert seit:
    28 Juli 2005
    Beiträge:
    451
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #6 han-solo, 26 Juni 2007
    Zuletzt bearbeitet: 26 Juni 2007
    Hallo milkpirate,

    ich vermute du hast auf friboli Kernel 2.6 und unsquashfs braucht Kernel 2.4

    Ich habs mit einer vmware gemacht. Hier zu kriegen: http://developer.kde.org/~binner/vmware/

    Übrigens habe ich die kleinere busybox mit 572kb mal ausprobiert. Fehlanzeige! Funzt immer noch nicht:
    Auch die busybox aus dem ds-mod.0.2.9-p8 (563kb) brachte keinen Erfolg.

    Code:
    filesystem image size: 1376256 (max: 1310720)
    ERROR: filesystem image is 65536 bytes too big
    
    Das filesystem.image wird wohl komprimiert und in 65k blöcke aufgeteilt. Somit reicht es immer noch nicht aus.

    @Darksun: Wie gross ist deine busybox? Kannst du die hier mal uppen?

    Gruß
    HS
     
  6. milkpirate

    milkpirate Neuer User

    Registriert seit:
    11 Juli 2006
    Beiträge:
    136
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    aber warum zur hölle sollte der kram nicht abwärts kompatibel sein ?

    also 3 GB is schon n bissel viel...
     
  7. milkpirate

    milkpirate Neuer User

    Registriert seit:
    11 Juli 2006
    Beiträge:
    136
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    gibts hier irgendwas neues ?
     
  8. han-solo

    han-solo Mitglied

    Registriert seit:
    28 Juli 2005
    Beiträge:
    451
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    hat hier keiner die Möglichkeit das neu zu kompiliern?

    Gruß
    HS
     
  9. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    #10 MaxMuster, 8 Juli 2007
    Zuletzt bearbeitet: 8 Juli 2007
    ... ich werde es gleich mal versuchen...

    Jörg

    EDIT So, mit dem ds-mod p8 habe ich mal per "trial and error" so lange Dinge "rausgemacht", bis es passte. Keine Anhung, ob damit noch "genug" für ein funktionsfähiges Image drin ist. Was ich weggelassen habe und die .config-Datei sind mit drin...
    EDIT2 und dann noch ein "Mini-Patch" dazu, die defaults von 1und1 und avm sind gleich, da sollte doch ein Link reichen?!? Im Verzeichnis, das slmod enthält:
    Code:
    gzip -d slmod.diff.gz
    patch -p0 < slmod.diff
    
     

    Anhänge:

  10. han-solo

    han-solo Mitglied

    Registriert seit:
    28 Juli 2005
    Beiträge:
    451
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #11 han-solo, 8 Juli 2007
    Zuletzt bearbeitet: 8 Juli 2007
    Super, danke! Werd ich ausprobieren....

    EDIT: Hab´s gerade mal ausprobiert. Das Image lässt sich schonmal zusammen bauen. Sehr gut!
    Jetzt muss es nur noch mit dem Flashen klappen. Ich teste das Ende nächster Woche, dann hab ich erst wieder eine SL Box zum Basteln.


    Gruß
    HS
     
  11. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Aber auf jeden Fall vorher mal per FTP drauf spielen, um die grundsätzliche Funktionalität zu testen...

    Ansonsten noch mal kurz mein Vorgehen, falls das jemand selbst "nachstellen" will:
    ds-mod für Kernel 2.4 laden (ds-0.2.9-p8 ), dort habe ich einfach mal eine FBF ausgewählt (k.A., ob das nötig war), dann ein "make precompiled" (während der Stunden, die das läuft, kann man ein paar schöne andere Dinge tun ;-)), die Busybox dann mit "make busybox-menuconfig" konfiguriert und mit "make busybox-precompiled" gebaut.

    Als Ausgangspunkt könnte man ja die .config nehmen, die ich oben gepostet habe, und nach Bedarf Dinge verändern...

    Ich werde heute in Urlaub fahren und von daher vielleicht noch "mitdiskutieren", aber nicht mehr "mitbauen" können.

    Viel Spaß und Erfolg!

    Jörg
     
  12. han-solo

    han-solo Mitglied

    Registriert seit:
    28 Juli 2005
    Beiträge:
    451
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #13 han-solo, 13 Juli 2007
    Zuletzt bearbeitet: 13 Juli 2007
    Hallo MaxMuster,

    deine busybox funzt. Allerdings ist eine libary noch nicht eincompiliert.
    Beim ausführen von ./busybox kommt folgende Meldung

    Code:
    ./busybox: can't load library 'libcrypt.so.0' 
    
    Wenn ich per tftp diese libary nachlade, klappt es wunderbar.

    Was tun? Musst man neu compilieren oder kann man das slmod-script patchen, damit die libary eingebaut wird.

    EDIT: Ich hab gerade festgestellt, dass vi nicht funktioniert. Wenn man vi aufruft, gelangt man in einen Modus, aus dem man nicht wieder raus kommt.

    Gruß
    HS
     
  13. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Hi,

    muss ich nochmal schauen (kann ich aber erst in gut einer Woche). Ansonsten könntest du die Box ja "nachbauen" (die Zeit, die das "make-precompiled" dauert kann man ja sinnvoll nutzen).
    Ich weiß, dass er irgendwas mit der libcrypto in den Meldungen hatte, weils aber so schnell gehen musste, habe ich die dann kopiert...
    Müsste man mal sehen, ob man die dann mit ins Skript reinkopiert, oder die Funktion, die das benötigt, rauslässst.
    Beim VI hatte ich ein paar Dinge abgewählt, die meiner Meinung nach "weg könnten". Vielleicht was "Essentielles" mit dabei??

    Jörg
     
  14. han-solo

    han-solo Mitglied

    Registriert seit:
    28 Juli 2005
    Beiträge:
    451
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    wenn es dir nichts ausmacht, würde ich gern warten bis du das checken kannst. Wäre echt klasse. Bin selbst gerade im Urlaub aufem Zeltplatz mit UMTS und hab nicht die Möglichkeit dazu. Ausserdem hab ich das noch nie gemacht.

    Aber wenn ich zurück bin, versuche ich mich mal damit zu befassen.

    Gruß
    HS
     
  15. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Klar, schaue ich mir dann nochmal an.
    Hoffentlich mit besseren Empfangsraten als hier, wo ich nur GPRS habe ;-)

    Jörg
     
  16. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    So, habe mal was neues gebaut. Die Lib ist nun mit drin und wird vom Makefile kopiert (das diff ist zum "original-Makefile", also nicht für das mit obrigem Patch schon gepatchte Makefile). Teste doch mal bitte...

    Ich habe nun im vi wieder alle Optionen ausgewählt gelassen (so wie es Standard war). Damit es samt lib ins Image passt, habe ich noch folgendes abgewählt:
    Code:
    umount
    crond, crontab etc
    basename
    cut
    chown
    rdate
    etherwake
    
    Jörg
     

    Anhänge:

  17. han-solo

    han-solo Mitglied

    Registriert seit:
    28 Juli 2005
    Beiträge:
    451
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #18 han-solo, 23 Juli 2007
    Zuletzt bearbeitet: 24 Juli 2007
    ok, super! Danke. Werde es ausprobieren.
    Aber meinst du man kann noch etwas anderes abwählen, damit man "crond, crontab" und "etherwake" behalten kann?

    z.B. touch, poweroff, reboot, sh1sum, md5sum, mkfifo, mknod, arping, ash

    Gruß
    HS
     
  18. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    So besser?!?

    Jörg
     

    Anhänge:

  19. han-solo

    han-solo Mitglied

    Registriert seit:
    28 Juli 2005
    Beiträge:
    451
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #20 han-solo, 25 Juli 2007
    Zuletzt bearbeitet: 26 Juli 2007
    Hallo Jörg,

    ich hoffe ich nerve nicht *schäm*, aber aus irgendeinem Grund krieg ich mit deiner busybox den telnetd nicht zum Laufen.

    Ausserdem hab ich jetzt mal die orginial busybox mit der des ds-mod verglichen. Hier mal ein Auszug was in der Original enthalten ist.

    Code:
    Currently defined functions:
            [, ash, basename, busybox, cat, chmod, cp, date, dmesg, echo,
            env, false, fgrep, free, grep, ifconfig, init, insmod, kill, killall,
            ln, ls, lsmod, mkdir, mknod, modprobe, more, mount, mv, netstat,
            nslookup, pidof, ping, ps, pwd, reboot, rm, rmmod, route, sh,
            sleep, sync, tar, test, tftp, touch, tr, true, umount, uname
    
    Was zusätzlich für den slmod benötigt wird ist:

    Code:
    crond, crontab, dirname, ether-wake, find, ftpget, ftpput, realpath, sed, telnet, telnetd, vi, wget, which
    
    Könntest du also bitte nochmal eine busybox mit allen o.g. Befehlen erstellen? (Hoffe das passt von der Größe)
    Danke dir. Ich hab es selbst probiert, bekomme aber immer Fehlermeldungen beim "make busybox-precompiled".
    Werde das aber nochmal prüfen. Aber ich muss erst ein neues Linux aufsetzen. Meine VM fasst nicht soviel Plattenplatz für die ganzen downloads.

    Gruß
    HS