
Whatportis : Durchsuchen Sie IANAs Liste der Ports
.. image:: https://github.com/opencve/opencve/workflows/Tests/badge.svg :target: https://github.com/ncrocfer/whatportis/actions/workflows/tests.yml
.. image:: https://badge.fury.io/py/whatportis.svg :target: https://pypi.python.org/pypi/whatportis/
.. image:: https://img.shields.io/badge/python-3.6%2B-blue.svg :target: https://pypi.python.org/pypi/whatportis/
.. image:: https://img.shields.io/github/license/ncrocfer/whatportis.svg :target: https://github.com/ncrocfer/whatportis/blob/master/LICENSE.txt
.. image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/python/black
Es ist eine häufige Aufgabe, die Standardportnummer eines Dienstes nachzuschlagen. Einige Ports sind in der :code:/etc/services-Datei verfügbar, aber die Liste ist nicht vollständig und diese Lösung ist nicht portabel.
Whatportis ist ein einfaches Werkzeug, das die Iana.org <http://www.iana.org/assignments/port-numbers>_-Datenbank herunterlädt und nutzt, um die offizielle Liste der Ports zu durchsuchen.
Mit Whatportis können Sie herausfinden, welcher Port mit einem Dienst verbunden ist:
.. code-block:: shell
$ whatportis redis
+-------+------+----------+---------------------------------------+
| Name | Port | Protocol | Beschreibung |
+-------+------+----------+---------------------------------------+
| redis | 6379 | tcp | Ein fortgeschrittener Key-Value-Cache und Store |
+-------+------+----------+---------------------------------------+
Oder umgekehrt, welcher Dienst mit einer Portnummer verbunden ist:
.. code-block:: shell
$ whatportis 5432
+------------+------+----------+---------------------+
| Name | Port | Protocol | Beschreibung |
+------------+------+----------+---------------------+
| postgresql | 5432 | tcp, udp | PostgreSQL-Datenbank |
+------------+------+----------+---------------------+
Sie können auch ein Muster suchen, ohne den genauen Namen zu kennen, indem Sie die Option :code:--like hinzufügen:
.. code-block:: shell
$ whatportis mysql --like
+----------------+-------+----------+-----------------------------------+
| Name | Port | Protocol | Beschreibung |
+----------------+-------+----------+-----------------------------------+
| mysql-cluster | 1186 | tcp, udp | MySQL-Cluster-Manager |
| mysql-cm-agent | 1862 | tcp, udp | MySQL-Cluster-Manager-Agent |
| mysql-im | 2273 | tcp, udp | MySQL-Instanz-Manager |
| mysql | 3306 | tcp, udp | MySQL |
| mysql-proxy | 6446 | tcp, udp | MySQL-Proxy |
| mysqlx | 33060 | tcp | MySQL-Datenbank-Erweiterungsschnittstelle |
+----------------+-------+----------+-----------------------------------+
.. code-block:: shell
$ pip install whatportis
Whatportis verwendet eine lokale JSON-Datei (:code:~/.whatportis_db.json), um die Portliste zu durchsuchen. Die erste Nutzung erstellt sie automatisch; danach können Sie die Option :code:--update verwenden, um sie zu synchronisieren:
.. code-block:: shell
$ whatportis --update
Previous database will be updated, do you want to continue? [y/N]: y
Downloading https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv...
Populating database...
14145 ports imported.
Sie können die Ergebnisse im JSON-Format ausgeben, indem Sie die Option :code:--json verwenden:
.. code-block:: shell
$ whatportis 5432 --json
[
{
"name": "postgresql",
"port": "5432",
"protocol": "tcp, udp",
"description": "PostgreSQL-Datenbank"
}
]
Whatportis kann auch als RESTful-API-Server gestartet werden. Diese Funktion ist standardmäßig nicht aktiviert; Sie müssen ein zusätzliches Paket installieren:
.. code-block:: shell
$ pip install whatportis[server]
$ whatportis --server localhost 8080
* Serving Flask app "whatportis.server" (lazy loading)
* Environment: prod
* Debug mode: off
* Running on http://127.0.0.1:8080/ (Press CTRL+C to quit)
Die Endpunkte sind :code:/ports für die gesamte Liste (kann lang sein) und :code:/ports/<search> für die Suche nach einem bestimmten Port:
.. code-block:: shell
$ curl http://127.0.0.1:8080/ports/3306
{"ports":[{"description":"MySQL","name":"mysql","port":"3306","protocol":"tcp, udp"}]}
$ curl http://localhost:8080/ports/redis
{"ports":[{"description":"Ein fortgeschrittener Key-Value-Cache und Store","name":"redis","port":"6379","protocol":"tcp"}]}
Sie können den Parameter :code:?like verwenden, um nach einem Muster zu suchen.