Ich verwende tcpdump
, um HTTP-Daten abzurufen, indem ich den folgenden Befehl ausführe:
sudo tcpdump -A -s 1492 dst port 80
Das Ergebnis des obigen Befehls:
- Header, ich denke Anfrage- und Antwortheader.
- Unlesbare Daten.
- Die URL
GET /modules/mod_news_pro_gk1/cache/stories.ilbalad.ajayeb.strange-tractor.jpg
.
Ich benötige ein klareres Ergebnis, z. B. lesbare Anfrage> Antwortheader> Antworttext usw. Wie kann ich meine Ergebnisse filtern?
tcpdump
auf Android OS gelaufen ? Betten Sie den Befehl irgendwie in Ihre App ein oder führen Sie ihn auf einem PC aus, der mit dem Android-Telefon verbunden ist?Antworten:
Es gibt tcpdump-Filter für HTTP GET & HTTP POST (oder für beide plus Nachrichtentext):
Führen
man tcpdump | less -Ip examples
Sie einige Beispiele ausHier ist ein tcpdump Filter für HTTP GET (
GET
=0x47
,0x45
,0x54
,0x20
):sudo tcpdump -s 0 -A 'tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
Hier ist ein tcpdump Filter für HTTP POST (
POST
=0x50
,0x4f
,0x53
,0x54
):sudo tcpdump -s 0 -A 'tcp dst port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504f5354)'
Überwachen Sie den HTTP-Verkehr einschließlich der Anforderungs- und Antwortheader und des Nachrichtentexts ( Quelle ):
tcpdump -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' tcpdump -X -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Weitere Informationen zum Bit-Twiddling im TCP-Header finden Sie unter: String-Matching Capture Filter Generator (Link zur Erklärung von Sake Blok).
quelle
less -Ip
- was für eine ZeitersparnisIch würde die Verwendung von Wireshark empfehlen , das über die Option "TCP-Stream folgen" verfügt, mit der die vollständigen Anforderungen und Antworten für eine bestimmte TCP-Verbindung sehr einfach angezeigt werden können. Wenn Sie lieber die Befehlszeile verwenden möchten , können Sie tcpflow ausprobieren , ein Tool zum Erfassen und Rekonstruieren des Inhalts von TCP-Streams.
Andere Optionen wären die Verwendung eines HTTP-Debugging-Proxys wie Charles oder Fiddler, wie EricLaw vorschlägt. Diese haben den Vorteil, dass sie HTTP speziell unterstützen, um die Verarbeitung verschiedener Arten von Codierungen zu vereinfachen, sowie andere Funktionen wie das Speichern von Anforderungen zur Wiedergabe oder das Bearbeiten von Anforderungen.
Sie können auch ein Tool wie Firebug (Firefox), Web Inspector (Safari, Chrome und andere WebKit-basierte Browser) oder Opera Dragonfly verwenden , die alle die Möglichkeit bieten, die Header und Textkörper für Anforderungen und Antworten anzuzeigen (obwohl die meisten davon) Mit ihnen können Sie nicht den genauen Byte-Stream sehen, sondern wie die Browser die Anforderungen analysiert haben.
Und schließlich kann man immer Anfragen konstruiert von Hand, so etwas wie telnet, netcat oder socat auf Port 80 und geben Sie den Wunsch manuell, oder ein Werkzeug wie eine Verbindung HTTY zu Hilfe einfach eine Anfrage konstruieren und die Antwort überprüfen.
quelle
tcpdump -w outfile ...
, die Rohpakete in eine Datei zu kopieren, sie dann auf Ihren Computer zu kopieren und sie mit Wireshark zu analysieren. Wireshark kann einen Paketspeicherauszug öffnen, den TCP-Stream dekodieren und den HTTP-Inhalt dekomprimieren (ich gehe davon aus, dass der Grund dafür, dass er nicht lesbar ist, in der Komprimierung liegt).tcpdump -w outfile
und dann auf einen Computer mit Wireshark zu kopieren und Wireshark zum Anzeigen des Speicherauszugs zu verwenden.Hier ist eine andere Wahl: Chaosreader
Ich muss also eine Anwendung debuggen, die XML an eine Drittanbieteranwendung sendet. Ich habe ein brillantes kleines Perl-Skript gefunden, das die ganze harte Arbeit erledigt - Sie werfen es einfach in eine tcpdump-Ausgabedatei, und es erledigt alle Manipulationen und gibt alles aus, was Sie brauchen ...
Das Skript heißt Chaosreader0.94. Siehe http://www.darknet.org.uk/2007/11/chaosreader-trace-tcpudp-sessions-from-tcpdump/
Es hat wie ein Vergnügen funktioniert, ich habe folgendes getan:
tcpdump host www.blah.com -s 9000 -w outputfile; perl chaosreader0.94 outputfile
quelle