====== Diagnosi traffico TCP su Android (con root) ======
Su un dispositivo Android che abbia l'accesso root abilitato, se vogliamo scoprire quale app sta facendo traffico su una porta TCP, possiamo seguire questa procedura.
Anzitutto verifichiamo se c'è del traffico con **tcpdump**, in questo esempio cerchiamo del traffico IMAP su porta 143 oppure 993:
# tcpdump -i wlan0 -n 'port 143 or port 993'
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
15:13:52.625229 IP 10.0.1.225.38950 > 168.119.254.82.143: Flags [S], seq 66565344, ...
15:13:52.631946 IP 10.0.1.225.38952 > 168.119.254.82.143: Flags [S], seq 2647617764, ...
Se una sessione TCP è in corso, con **netstat** è possibile vedere anche il nome del programma che l'ha avviata:
# netstat -a -n -p | grep ':143'
tcp 0 0 10.0.1.225:39364 168.119.254.82:143 ESTABLISHED 12273/com.b44t.messenger
tcp 0 0 10.0.1.225:48700 78.47.39.235:143 ESTABLISHED 12273/com.b44t.messenger
Se invece la connessione non è andata a buon fine (il processo ha tentato la connessione, ma ha fallito) è possibile vedere il socket aperto con **ss** (socket statistics):
# ss -ntp | grep ':143'
SYN-SENT 0 1 10.0.1.225:48566 78.47.39.235:143 users:((".b44t.messenger",pid=12273,fd=136))
SYN-SENT 0 1 10.0.1.225:39022 168.119.254.82:143 users:((".b44t.messenger",pid=12273,fd=88))
Le opzioni sono **%%-n%%** don't resolve addresses/ports to names, **%%-t%%** TCP sockets. **%%-p%%** show the process/PID owning the socket.
È possibile cercare informazioni su in processo in base al PID con la normale procedura Linux:
cat /proc/12345/cmdline