[INFO] httpry mit Freetz für die FritzBox

sf3978

IPPF-Promi
Mitglied seit
2 Dez 2007
Beiträge
8,014
Punkte für Reaktionen
28
Punkte
48
Mit httpry kann man z. B. u. A. auch HTTP-traffic loggen:
/var/tmp/flash/mod # httpry -q -i dsl
2009-12-25 15:51:58 192.168.xxx.xxx 67.51.165.5 > GET dumpsterventures.com /jason/httpry/ HTTP/1.1 - -
2009-12-25 15:51:59 192.168.xxx.xxx 67.51.165.5 > GET dumpsterventures.com /jason/main.js HTTP/1.1 - -
2009-12-25 15:51:59 192.168.xxx.xxx 67.51.165.5 > GET dumpsterventures.com /jason/sub2.css HTTP/1.1 - -
2009-12-25 15:52:53 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /forumdisplay.php?f=361 HTTP/1.1 - -
2009-12-25 15:53:19 192.168.xxx.xxx 204.9.163.163 > GET mystatus.skype.com /smallicon/colonia1411 HTTP/1.1 - -
2009-12-25 15:55:29 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /images/gradients_mns/image_background.gif HTTP/1.1 - -
2009-12-25 15:55:29 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /images/gradients_mns/gradient_bg.gif HTTP/1.1 - -
2009-12-25 15:55:29 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /images/misc_mns/mns7_logo.gif HTTP/1.1 - -
2009-12-25 15:55:29 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /images/misc_mns/navbits_start.gif HTTP/1.1 - -
2009-12-25 15:55:33 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /newthread.php?do=newthread&f=525 HTTP/1.1 - -
2009-12-25 15:55:40 192.168.xxx.xxx 85.214.115.219 > POST www.ip-phone-forum.de /login.php?do=login HTTP/1.1 - -
2009-12-25 15:55:42 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /newthread.php?do=newthread&f=525& HTTP/1.1 - -
2009-12-25 15:55:42 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /clientscript/vbulletin_editor.css HTTP/1.1 - -
2009-12-25 15:55:43 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /images/editor/menupop.gif HTTP/1.1 - -
2009-12-25 15:55:43 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /images/editor/color.gif HTTP/1.1 - -
2009-12-25 15:55:43 192.168.xxx.xxx 85.214.115.219 > GET www.ip-phone-forum.de /images/editor/smilie.gif HTTP/1.1
Code:
/var/tmp/flash/mod # ldd /usr/bin/httpry
        libpcap.so.1.0 => /usr/lib/libpcap.so.1.0 (0x2aabe000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2aafa000)      
        libc.so.0 => /lib/libc.so.0 (0x2ab18000)              
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)
Code:
/var/tmp/flash/mod # httpry -h                                
httpry version 0.1.5 -- HTTP logging and information retrieval tool
Copyright (c) 2005-2009 Jason Bittel <[email protected]>      
Usage: httpry [ -dhpq ] [-b file ] [ -f format ] [ -i device ] [ -m methods ]
       [ -n count ] [ -r file ] [ -o file ] [ -u user ] [ 'expression' ]     

   -b file      write HTTP packets to a binary dump file
   -d           run as daemon                           
   -f format    specify output format string            
   -h           print this help information             
   -i device    listen on this interface                
   -m methods   specify request methods to parse        
   -n count     set number of HTTP packets to parse     
   -o file      write output to a file                  
   -p           disable promiscuous mode                
   -q           suppress non-critical output            
   -r file      read packets from input file            
   -u user      set process owner                       
   expression   specify a bpf-style capture filter      

Additional information can be found at:
   http://dumpsterventures.com/jason/httpry
httpry kann vielfältig konfiguriert werden, als daemon in ein file loggen, als nichtdaemon nach syslog. Mit den Dateien im Anhang, kann httpry für die FritzBox kompiliert und installiert werden.

EDIT:
Als daemon in ein file loggen:
Code:
/var/tmp/flash/mod # httpry -d -q -i dsl -o /var/media/ftp/uStor01/httpry.log
Geloggte Einträge mit "tail -f" und Konsole, in Echtzeit anschauen:
Code:
/var/tmp/flash/mod # tail -f /var/media/ftp/uStor01/httpry.log
# httpry version 0.1.5
# Fields: timestamp,source-ip,dest-ip,direction,method,host,request-uri,http-version,status-code,reason-phrase
2009-12-25 16:18:51     192.168.yyy.yyy   85.214.115.219  >       GET     www.ip-phone-forum.de   /clientscript/vbulletin_global.js?v=368 HTTP/1.1        -       -
2009-12-25 16:18:51     192.168.yyy.yyy   85.214.115.219  >       GET     www.ip-phone-forum.de   /images/misc_mns/navbits_finallink_ltr.gif      HTTP/1.1        -       -
2009-12-25 16:18:51     192.168.yyy.yyy   85.214.115.219  >       GET     www.ip-phone-forum.de   /images/buttons_mns/quote.gif   HTTP/1.1        -       -
2009-12-25 16:19:45     192.168.yyy.yyy   85.214.115.219  >       GET     www.ip-phone-forum.de   /clientscript/vbulletin_global.js?v=368 HTTP/1.1        -       -
2009-12-25 16:19:45     192.168.yyy.yyy   85.214.115.219  >       GET     www.ip-phone-forum.de   /clientscript/vbulletin_menu.js?v=368   HTTP/1.1        -       -
EDIT 2:
Betr. GUI für httpry siehe hier: klick

EDIT 3:

httpry für stable: klick
 

Anhänge

  • httpry.mk.txt
    770 Bytes · Aufrufe: 92
  • Config.in.txt
    631 Bytes · Aufrufe: 74
  • Makefile.in.txt
    66 Bytes · Aufrufe: 64
  • gui_httpry.patch.txt
    6.8 KB · Aufrufe: 35
Zuletzt bearbeitet:
Sowas suchen bestimmt viele.

sf3978 Danke erstmals, könntest du dadraus kein Freetz Packet machen?
Ich versuch mich sicherlich morgen mal mit deinen Angehängten Files aber da bin ich mir nicht sicher ob das klappt.
Was noch genial wäre, du schreibst ja man kann über die Konsole in Echtzeit mitschauen, könnte man nicht eine Art Live Ansicht per Browser machen direkt im Freetz ?

Ich denke mir das würde viele Leute interessieren.
 
Freetz-Paket gibt es doch schon. Das sind die 3 angehängten Dateien. Mehr brauchst Du nicht. Ich bin ein Gegner von cgi auf der kleinen Box. Mir reichen Textdateien.;)

EDIT:
Im Verzeichnis "make" ein Verzeichnis "httpry" erstellen und dorthin, die Dateien "httpry.mk, Config.in und Makefile.in" kopieren.
Dann noch die Datei "make/Config.in" im menu "Testing" mit "source make/httpry/Config.in" anpassen, mit "make menuconfig" httpry wählen und mit "make" mit dem Kompilieren beginnen.
 
Zuletzt bearbeitet:
Super Klasse funktioniert fast wunderbar.
Das einziege was ich nicht schaffe ist es beim hochfahren der Box mitstarten (autostart) zu lassen.

Dachte mir ich haus einfach ins "Freetz: rc.custom" aber da tut er nüx.

Ist es irgendwie möglich die ausgabe auf das File täglich zu cutten.
Also das er jeden Tag eine neue Datei erstellt?
zb. httpry05.01.10.log, httpry06.01.10.log, httpry07.01.10.log usw.
 
[...]
Das einziege was ich nicht schaffe ist es beim hochfahren der Box mitstarten (autostart) zu lassen.

Dachte mir ich haus einfach ins "Freetz: rc.custom" aber da tut er nüx.
[...]
Doch es funktioniert auch mit der rc.custom. Ich habe diesen Eintrag in der rc.custom:
Code:
[I]sleep 30[/I]
/usr/bin/httpry -d -q -i dsl -o /var/media/ftp/uStor01/httpry.log
Evtl. hast Du nach deinem Eintrag vergessen die rc.custom zu speichern (modsave) oder kein "sleep 30". "sleep" wird benötigt wegen dem verzögerten mounten des USB-Sticks.
Für das tägliche cutten kannst Du evtl. einen cronjob verwenden.

EDIT 2:
Für das cutten kannst Du jeden Tag mit einem Script (per cronjob), die Datei "httpry.log" in die Datei "httpry-`/bin/date`.log" kopieren und dann die Datei "httpry.log" mit echo "" > /Pfad/zur/httpry.log überschreiben/leeren.
 
Zuletzt bearbeitet:
Ja das sleep wars daran habe ich nicht gedacht.

Jetzt will ich nur mehr die einzellnen interface getrennt aufzeichen.

Mit -i dsl ist natürlich die komplette DSL leitung gemeint.
-i eth0 bis eth3 wird schätze ich die 4 lan Ports sein?
Aber wie nennt sich der Wlan ? wlan0 oder tiwlan0 ?
 
Schau dir die Ausgabe von "ifconfig" an und beobachte auch den Datenverkehr (TX und RX), den "ifconfig" für jedes Interface anzeigt. Evtl. kannst Du auch "vnstat" aus dem trunk, zur Identifizierung der Interfaces, verwenden.
 
Ja wie es scheint macht die Box bei den lan anschlüssen keinen unterschied.

Habe es nun so am laufen.
sleep 30
/usr/bin/httpry -d -q -i dsl -o /var/media/ftp/uStor01/dsl.log
/usr/bin/httpry -d -q -i eth0 -o /var/media/ftp/uStor01/lan.log
/usr/bin/httpry -d -q -i tiwlan0 -o /var/media/ftp/uStor01/wlan.log

dsl ist klar alles, eth0 wird alles mit lankabel geloggt und tiwlan0 ist das Wlan.

Bin happy und las das jetzt mal paar Wochen im Testbetrieb laufen.

Herzlichsten Dank sf3978 :groesste:
 
Ja hab nen 4GB Stick dran mal schaun was so nach einer Woche zusammenkommt, wenns mehr wird nehm ich halt nen 16GB oder ne Festplatte.

Jetzt mal im Live Dauerbetrieb testen, dann seh ma weiter, dann kann ich dich immer noch nerven :p
 
Wenn Du die log-Dateien von httpry, mit logrotate verwalten willst, im Anhang ein Paket (binary only) für die FritzBox:

EDIT:
Code:
var/mod/root # [B]ldd /usr/bin/logrotate[/B]
        libpopt.so.0 => /usr/lib/libpopt.so.0 (0x2aabe000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x2aad8000)
        libc.so.0 => /lib/libc.so.0 (0x2aaf6000)
        ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x2aaa8000)

/var/mod/root # [B][URL="http://schlayer.org/logrotate.html"]logrotate[/URL] --usage[/B]
Usage: logrotate [-dfv?] [-d|--debug] [-f|--force] [-m|--mail=command] [-s|--state=statefile] [-v|--verbose] [-?|--help] [--usage] [OPTION...] <configfile>

/var/mod/root # [B]logrotate --help[/B]
Usage: logrotate [OPTION...] <configfile>
  -d, --debug               Don't do anything, just test (implies -v)
  -f, --force               Force file rotation
  -m, --mail=command        Command to send mail (instead of `/sbin/mailer')
  -s, --state=statefile     Path of state file
  -v, --verbose             Display messages during rotation
Help options:
  -?, --help                Show this help message
      --usage               Display brief usage message
 

Anhänge

  • files_logrotate.tar.gz
    1.4 KB · Aufrufe: 17
Zuletzt bearbeitet:
logrotate

@ao
Versuch mal ohne den Patch "logrotate.patch" anzuwenden, vorher ein:
Code:
make popt-precompiled
 
Wie kann man nur eine bestimme IP mit httpry überwachen?
 
Im capture filter nur den einen host angeben. Z. B.:
Code:
httpry -q -i dsl 'host <[COLOR="Red"]IP-Adresse[/COLOR]>'

EDIT:
Wenn Du etwas ressourcenschonender Loggen willst (z. B. vom host weg, nur die Ports 80 und/oder 443, nur das tcp-Protokoll), dann kannst Du so einen capture-Filter benutzen:
Code:
httpry -q -i dsl 'src host <IP-Adresse> && dst port 80 || dst port 443 && proto TCP'
 
Zuletzt bearbeitet:
Gibt es Möglichkeiten den Log mit einem Programm aufzuarbeiten, also grafisch zu veranschlichen? Logge diesen Tagf mal mit, mal schauen was der Log so alles hergibt. :)
LG,

Andreas
 
Na ja, ich weiss ja nicht ob man angesurfte WEB-Adressen grafisch veranschaulichen kann. Aber Du kannst in Textdateien loggen und mit "suchen" bestimmte Daten (Datum, WEB-Adressen, etc.) anschauen.
 
Mal schauen was excel so anstellen kann :rolleyes: :) :D
Werde wohl morgen mich mal ran machen.

@sf3978:
Kann man auch eine Einstellen, dass man nur eine Mac Adresse loggt?
 
Zuletzt bearbeitet:
[...]
... , dass man nur eine Mac Adresse loggt?

Bei mir funktioniert das Loggen nach einer MAC-Adresse nicht:
Code:
/var/mod/root # httpry -q -i dsl 'ether src 00:17:E0:74:0A:D5 && dst port 80 || dst port 443 && proto TCP'

Error: Cannot compile capture filter 'ether src 00:17:E0:74:0A:D5 && dst port 80 || dst port 443 && proto TCP': [COLOR="Red"]ethernet addresses supported only on ethernet/FDDI/token ring/802.11/ATM LANE/Fibre Channel[/COLOR]

Wenn Du willst kannst auch packit zum Loggen verwenden (MAC-Adresse geht auch nicht). Siehe hier: klick.
Ein möglicher capture-Filter und die Daten, sehen dann so aus:
Code:
# packit -m cap 'tcp[tcpflags] != (tcp-ack|tcp-fin) && tcp[tcpflags] & (tcp-syn) != 0 and src host 192.168.11.180 and dst port 80 || 443 and not dst net 192.168' -i lan
Mode:  Packet Capture using device: lan [tcp[tcpflags] != (tcp-ack|tcp-fin) && tcp[tcpflags] & (tcp-syn) != 0 and src host 192.168.11.180 and dst port 80 || 443 and not dst net 192.168]

-| PID 1 |------------------------------------------------------------------

Timestamp:   20:05:05.516233
TCP header:  Src Port: 53114  Dst Port: 80  Flag(s): S
             Window: 5840  Seqn: 3472375256
IP header:   Src Address: 192.168.11.180  Dst Address: bw-in-f105.1e100.net
             TTL: 63  ID: 33101  TOS: 0x0  Len: 60  (DF)

-| PID 2 |------------------------------------------------------------------

Timestamp:   20:05:05.905250
TCP header:  Src Port: 53115  Dst Port: 80  Flag(s): S
             Window: 5840  Seqn: 3489896350
IP header:   Src Address: 192.168.11.180  Dst Address: bw-in-f105.1e100.net
             TTL: 63  ID: 10628  TOS: 0x0  Len: 60  (DF)

-| PID 3 |------------------------------------------------------------------

Timestamp:   20:05:06.925367
TCP header:  Src Port: 53116  Dst Port: 80  Flag(s): S
             Window: 5840  Seqn: 3486174301
IP header:   Src Address: 192.168.11.180  Dst Address: bw-in-f105.1e100.net
             TTL: 63  ID: 29299  TOS: 0x0  Len: 60  (DF)

-| PID 4 |------------------------------------------------------------------

Timestamp:   20:05:06.947062
TCP header:  Src Port: 59762  Dst Port: 80  Flag(s): S
             Window: 5840  Seqn: 3493193099
IP header:   Src Address: 192.168.11.180  Dst Address: fx-in-f101.1e100.net
             TTL: 63  ID: 23496  TOS: 0x0  Len: 60  (DF)
.................................
 
hallo

ich versuche gerade httpry für meinen Linksys zu kompilieren, was auch grundsätzlich funktioniert nur wenn ich es starten will kommt immer
HTML:
 line 1: syntax error: "(" unexpected

deshalb die Frage wie macht ihr das beim Komplieren für die Architektur dieser kleinen Kisten muss ich die Makefile abändern oder dem gcc auf meinem pc noch etwas besonderes mitgeben?

Mit eurem Freetz scheint ihr das Ding ja ontheFly auf der Box zu kompilieren seh ich das richtig?

Gruß Daniel
 
Auf der Box kompiliert gar nichts. Vllt. fragst du mal in passenden Foren (openwrt z.B.) wie man das dort macht?
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.