====== 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