Lorsqu'on a un trou de mémoire sur le numéro de port de tel ou tel protocole, notre réflexe est d'effectuer une recherche sur Internet. Heureusement pour nous, un petit outil va vous permettre de faire cette recherche sur votre terminal !

Son nom est whatportis. Cet outil, écrit en Python, utilise les données du site iana.org pour récupérer la liste des ports et de leurs services associés.

L'installation de whatportis se fait rapidement, grâce à python-pip :

pip install whatportis

Pour connaître le numéro de port d'un service :

$ whatportis nmap
+------+------+----------+-------------+
| Name | Port | Protocol | Description |
+------+------+----------+-------------+
| nmap | 689  |   tcp    | NMAP        |
| nmap | 689  |   udp    | NMAP        |
+------+------+----------+-------------+

Simple, non ?!

A l'inverse, pour connaître le nom d'un service à partir du numéro de port :

$ whatportis 389
+------+------+----------+---------------------------------------+
| Name | Port | Protocol | Description                           |
+------+------+----------+---------------------------------------+
| ldap | 389  |   tcp    | Lightweight Directory Access Protocol |
| ldap | 389  |   udp    | Lightweight Directory Access Protocol |
+------+------+----------+---------------------------------------+

Si vous ne connaissez pas exactement le nom du service, utilisez le paramètre --like. Exemple avec les ports pour tous les services ldap :

$ whatportis ldap --like
+--------------+------+----------+----------------------------------------------------------------------------------+
| Name         | Port | Protocol | Description                                                                      |
+--------------+------+----------+----------------------------------------------------------------------------------+
| ldap         | 389  |   tcp    | Lightweight Directory Access Protocol                                            |
| ldap         | 389  |   udp    | Lightweight Directory Access Protocol                                            |
| ldaps        | 636  |   tcp    | ldap protocol over TLS/SSL (was sldap)                                           |
| ldaps        | 636  |   udp    | ldap protocol over TLS/SSL (was sldap)                                           |
| www-ldap-gw  | 1760 |   tcp    | www-ldap-gw                                                                      |
| www-ldap-gw  | 1760 |   udp    | www-ldap-gw                                                                      |
| ldap-admin   | 3407 |   tcp    | LDAP admin server port                                                           |
| ldap-admin   | 3407 |   udp    | LDAP admin server port                                                           |
| bmc-ctd-ldap | 6301 |   tcp    | BMC CONTROL-D LDAP SERVER                                                        |
|              |      |          | IANA assigned this well-formed service name as a replacement for "bmc_ctd_ldap". |
| bmc_ctd_ldap | 6301 |   tcp    | BMC CONTROL-D LDAP SERVER                                                        |
| bmc-ctd-ldap | 6301 |   udp    | BMC CONTROL-D LDAP SERVER                                                        |
|              |      |          | IANA assigned this well-formed service name as a replacement for "bmc_ctd_ldap". |
| bmc_ctd_ldap | 6301 |   udp    | BMC CONTROL-D LDAP SERVER                                                        |
| pgpkey-ldap  | ---  |   ---    | PGP Keyserver using LDAP                                                         |
+--------------+------+----------+----------------------------------------------------------------------------------+

Avec le paramètre --json, vous aurez une sortie en JSON au lieu du tableau basique :

$ whatportis ldap --json
[
    {
        "name": "ldap",
        "port": "389",
        "protocol": "tcp",
        "description": "Lightweight Directory Access Protocol"
    },
    {
        "name": "ldap",
        "port": "389",
        "protocol": "udp",
        "description": "Lightweight Directory Access Protocol"
    }
]

Vous pouvez également utiliser whatportis en tant qu'API, tout est détaillé ici.