Debuggare una connessione, con tcpdump
Ogni tanto capita di essere curiosi, quando un sito nasconde da dove prende le proprie immagini, i media inseriti, e varie altre cose. Siccome il browser le visualizza, vuol dire che qualche server gliele invia, molto probabilmente l’immagine che cercate di salvare è solo sotto ad un immagine trasparente, per quello con click-destro -> salva immagine continuate a salvare GIF trasparenti di 1 pixel.
Vediamo come fare per vedere TUTTE le richieste HTTP che vengono inviate dal nostro PC. Questo può essere fatto per mille motivi, io ad esempio lo faccio per vedere quante GET servono per servire le pagine del mio sito. Ok, sono proprio un nerd. Il comando che uso io è semplice, e “raw” come piace a me. Il che vuol dire che è inelegante, brutto, ma funziona quel tanto che mi basta per usarlo.
tcpdump src port 80 or dst port 80 -s 0 -w – | grep -ao ‘GET.*[\ ]HTTP.*\|POST.*[\ ]HTTP.*’
Tcpdump intercetta (in modalità promiscua, quindi usate lo switch -p per evitare di intercettare robaccia non vostra, io non lo uso perchè tanto nella LAN ci sono solo io) tutti i pacchetti che rispondono al criterio ” src port 80 or dst port 80″ (quindi niente HTTPS), gli altri switch dicono di stampare l’intero pacchetto allo standard output. Se non mettete il grep vedrete tutte le pagine, le immagini, i dati, che passano fra voi e un server http, molto interessante per vedere quanti dati sulla vostra piattaforma invia il vostro browser.
In questo caso il grep (switch -o per stampare solo la parte di stringa che combacia) ricerca stringhe che iniziano per GET o POST (attenzione, esistono altri metodi HTTP meno utilizzati) e finiscono per HTTP*, in pratica le comuni richieste di pagine, immagini, script, dati (ajax?).
Altri “grep” interessanti potrebbero essere “User-Agent”, “Referer” e tutto quello che riuscite a pensare.

