Table des matières:

Netcat en Python : 6 étapes
Netcat en Python : 6 étapes

Vidéo: Netcat en Python : 6 étapes

Vidéo: Netcat en Python : 6 étapes
Vidéo: Intro to Replacing Netcat - Black Hat Python - ep. 4 2024, Juillet
Anonim
Netcat en Python
Netcat en Python

Qu'est-ce que netcat ? La page de manuel de netcat dit ce qui suit: "l'utilitaire nc (ou netcat) est utilisé pour à peu près tout ce qui concerne les sockets TCP, UDP ou UNIX. Il peut ouvrir des connexions TCP, envoyer des paquets UDP, écouter des Les ports TCP et UDP, effectuent une analyse des ports et traitent à la fois IPv4 et IPv6. Contrairement à telnet(1), nc scripts bien et sépare les messages d'erreur en erreur standard au lieu de les envoyer à la sortie standard, comme telnet(1) le fait avec certains"

Essentiellement, netcat vous permet de vous connecter à d'autres serveurs en utilisant le protocole TCP ou UDP. TCP signifie Transmission Control Protocol et est orienté connexion. UDP signifie Universal Datagram Protocol et est sans connexion. TCP est couramment utilisé pour les applications Internet, tandis que UDP est utilisé pour le streaming multimédia ou les VPN.

Étape 1: Comment commençons-nous ?

Comment commençons-nous?
Comment commençons-nous?

Ci-dessus, comment s'appelle netcat. Vous pouvez voir qu'il y a deux arguments à la fin appelés "destination" et "port". La destination fait référence au nom d'hôte ou à l'adresse IP du serveur auquel nous essayons de nous connecter, tandis que le port fait référence au port du serveur auquel nous essayons de nous connecter.

Étape 2: Commençons

Commençons
Commençons

Ci-dessus se trouve un code python de début. Comme vous pouvez le voir, nous voulons traiter les arguments du programme de la même manière que l'utilitaire réel. Le nom d'hôte sera le premier argument après le nom de l'exécutable, tandis que le port sera le deuxième argument après le nom de l'exécutable dans la ligne de commande.

Étape 3: Création d'une connexion

Créer une connexion
Créer une connexion

Créons une fonction netcat que nous pouvons utiliser. Ce que nous faisons essentiellement ici, c'est créer un socket et nous connecter au serveur en utilisant les paramètres donnés. Pour la commande netcat, les paramètres actuels sont le nom d'hôte et le port du serveur auquel nous essayons de nous connecter. Le socket contient les paramètres "socket. AF_INET" et "socket. SOCK_STREAM" car nous utilisons par défaut une connexion TCP pour ce tutoriel.

Étape 4: Permet d'envoyer du contenu

Permet d'envoyer du contenu
Permet d'envoyer du contenu

Nous avons étendu notre fonction netcat pour prendre un troisième paramètre, "content". Il y a beaucoup de contenu ici, alors décomposons-le par numéro de ligne.

Ligne 14-16: nous envoyons tout le contenu sur le socket, nous attendons un peu, puis nous fermons le socket à toutes les données sortantes afin que le socket sache qu'il n'y a plus de données à venir.

Ligne 18-26: nous créons un tampon pour stocker la réponse du serveur, et pendant que le socket reçoit des données, nous ajoutons jusqu'à 1024 octets de données au résultat tant qu'il y a des données à lire.

Ligne 28-29: nous voulons que cette connexion netcat soit une connexion unique, nous déclarons donc la connexion fermée, puis nous fermons la connexion.

Ligne 31: Il s'agit d'une requête HTTP standard. Si vous exécutez le code avec les arguments de ligne de commande "google.com" et "80", alors vous verrez une réponse HTTP appropriée

Étape 5: Permet d'avoir une connexion ouverte

Ayons une connexion ouverte
Ayons une connexion ouverte

Le code ci-dessus (qui se trouve sous le code de la section précédente) nous permet simplement d'exécuter plusieurs commandes netcat sur une connexion pseudo-ouverte. (En réalité, chaque fois que vous exécutez une commande, elle ouvre puis ferme une nouvelle connexion TCP, elle n'émule donc pas vraiment le comportement de netcat, nous le faisons simplement à des fins d'apprentissage). Décomposons également cette ligne par ligne:

Ligne 31: Nous voulons lire les commandes indéfiniment afin de maintenir "l'interactivité"

Ligne 32: C'est notre buffer qui va stocker le contenu de notre requête

Ligne 36-45: Nous allons lire dans le tampon jusqu'à ce que nous lisions une ligne vide

Ligne 48: nous appelons simplement notre fonction netcat avec le nom d'hôte, le port et le contenu nouvellement créé (qui est correctement encodé)

Ligne 50: si le contenu de notre tampon contient "Connection: Close" (indiquant que nous voulons fermer la connexion), nous sortons simplement de la boucle

Étape 6: Conclusion

À la fin de ce didacticiel, vous devriez avoir une implémentation minimale de netcat fonctionnelle. Je laisserai à l'utilisateur le soin de mettre en œuvre des fonctionnalités telles que:

1. prenant en charge d'autres protocoles

2. corriger le code pour ne pas fermer la connexion à chaque fois

3. ajouter des drapeaux que netcat a déjà pour modifier le comportement

Conseillé: