Hier nous avions vu comment lister les ports en écoute sur une machine en utilisant netstat ou lsof. Aujourd’hui nous allons faire la même chose sans binaire ah ah ah.
Bien sûr c’est nettement moins facile il va falloir fouiller dans les données du système. En l’occurence nous allons fouillé dans /proc/net/tcp car c’est bien le protocole tcp qui nous intéresse.
La difficulté réside simplement dans le fait que les données sont en hexadécimales et il faut donc les convertir en décimale. Voici donc la ligne de commande que je vous propose :
array=($(tail -n +2 /proc/net/tcp | cut -d ":" -f "3" | cut -d " " -f "1")) && for port in ${array[@]}; do echo $((0x$port)); done
Donc :
- on fait un tail pour virer l’entête
- un premier cut avec pour séparaateur “:” et on garde la 3ème colonne
- un deuxième cut avec pour séparateur un espace ” ” et on garde la première colonne
- pour tous les éléments recueillis on convertit l’hexadécimal en décimal.