Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
haptyc — Bibliothèque Python pour Turbo Intruder qui ajoute la prise en charge des positions de charge utile et les types d'attaque Sniper/Clusterbomb/Pitchfork avec génération de tests basée sur des balises pour le fuzzing HTTP. | Kitploit
Outils/GitHubGitHub/defparam/haptyc
Génération de PayloadsSécurité WebFuzzingTests d'Intrusion
GitHubdefparam/haptyc

haptyc

Bibliothèque Python pour Turbo Intruder qui ajoute la prise en charge des positions de charge utile et les types d'attaque Sniper/Clusterbomb/Pitchfork avec génération de tests basée sur des balises pour le fuzzing HTTP.

Voir le dépôt
941526il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager


Haptyc


Cadre de génération de tests

tag

Qu'est-ce que Haptyc ?

Haptyc est une bibliothèque Python conçue pour ajouter la prise en charge des positions de payload et des types d'attaque Sniper/Clusterbomb/Batteringram/Pitchfork dans Turbo Intruder. Bien que Haptyc atteigne assez bien ces objectifs, il introduit également une manière plus simple d'exprimer les séquences de tests en général. Bien que cette bibliothèque soit destinée à Turbo Intruder, elle n'a pas de dépendance stricte envers Turbo Intruder et peut être utilisée partout où une génération de tests est nécessaire dans un contexte Python. Malheureusement, pour l'instant, comme Haptyc a été conçu pour un interpréteur Jython, il ne supporte que Python 2.7 (cependant, des changements futurs corrigeront cela).

Que sont les balises Haptyc ?

Les balises Haptyc sont des balises qu'un testeur peut utiliser pour annoter un payload d'entrée original. Un testeur peut utiliser plusieurs balises pour entourer des éléments clés d'une requête HTTP et les encapsuler en tant que payload positionnel. Lors de la génération des tests, Haptyc analysera toutes les balises du payload original et générera des tests conformément aux fonctions associées aux noms des balises. Lorsque Haptyc évalue une balise Haptyc, il exécute la fonction de balise associée (appelée Transformée Haptyc) pour un payload de test à placer à la position de la balise dans la requête. Chaque fonction de balise reçoit un argument data et un argument state. L'argument data peut contenir les données internes de la balise ou une autre séquence de payload de test. L'argument state est un objet d'état associé à la balise où l'état peut être stocké entre les itérations de test. Examinons un exemple.

Exemple 1 : Itération simple d'une liste

Payload original :

GET /animal/[+GuessAnimal]dog[+end] HTTP/1.1

Classe Haptyc et Transformée Haptyc :

from haptyc import *

original = "GET /animal/[+GuessAnimal]dog[+end] HTTP/1.1"

class TestLogic(Transform):
	@ApplyList(["snake","cat","owl","lion"])
	def test_GuessAnimal(self, data, state):
		return data + "?original=" + self.inner() + "&attempt=" + str(state.iter)

TestFactory = TestLogic(original)
for test in TestFactory:
	print(test)

Tests générés :

GET /animal/snake?original=dog&attempt=0 HTTP/1.1
GET /animal/cat?original=dog&attempt=1 HTTP/1.1
GET /animal/owl?original=dog&attempt=2 HTTP/1.1
GET /animal/lion?original=dog&attempt=3 HTTP/1.1

Dans l'exemple ci-dessus, nous montrons comment exprimer des tests de manière simple avec Haptyc. D'abord, la bibliothèque Haptyc est importée. Ensuite, nous avons défini les données originales avec nos annotations de balises Haptyc (GuessAnimal). Enfin, la classe TestLogic est définie et étendue en tant que classe Transform. À l'intérieur de cette classe, chaque méthode qui commence par test_ sera enregistrée comme une balise Haptyc pour évaluation dans le payload original. Nous utilisons un décorateur de logique pour appliquer la logique d'état de cette transformée Haptyc. Dans ce cas, nous utilisons le décorateur @ApplyList(list) pour indiquer à Haptyc de générer un test pour chaque élément de la liste spécifiée et de placer cet élément dans la transformée Haptyc en tant qu'argument data. À l'intérieur de la transformée, nous renvoyons une version mutée de data à insérer à la position de la balise. Dans ce cas, la mutation est l'élément de la liste en tant que data concaténé avec les données entourées par la balise (dog), puis concaténé avec la valeur iter dans l'objet state. Enfin, le code Python restant montre la création de l'objet TestFactory et la génération de tous les tests dans une boucle for. C'est un exemple d'attaque standard de type sniper qui cible une seule position de payload. Voyons maintenant d'autres styles d'attaques.

Exemple 2 : Clusterbomb

Payload original :

GET /animal?type=[%type]dog[%end]&name=[%name]fido[%end] HTTP/1.1

Classe Haptyc et Transformée Haptyc :

from haptyc import *

original = "GET /animal?type=[%type]dog[%end]&name=[%name]fido[%end] HTTP/1.1"

class TestLogic(Transform):
	@ApplyList("snake","cat","owl","lion")
	def test_type(self, data, state):
		return data
		
	@ApplyList("Frank", "Lisa", "Jin", "Tooth")
	def test_name(self, data, state):
		return data

TestFactory = TestLogic(original)
for test in TestFactory:
	print(test)

Tests générés :

GET /animal?type=snake&name=Frank HTTP/1.1
GET /animal?type=snake&name=Lisa HTTP/1.1
GET /animal?type=snake&name=Jin HTTP/1.1
GET /animal?type=snake&name=Tooth HTTP/1.1
GET /animal?type=cat&name=Frank HTTP/1.1
GET /animal?type=cat&name=Lisa HTTP/1.1
GET /animal?type=cat&name=Jin HTTP/1.1
GET /animal?type=cat&name=Tooth HTTP/1.1
GET /animal?type=owl&name=Frank HTTP/1.1
GET /animal?type=owl&name=Lisa HTTP/1.1
GET /animal?type=owl&name=Jin HTTP/1.1
GET /animal?type=owl&name=Tooth HTTP/1.1
GET /animal?type=lion&name=Frank HTTP/1.1
GET /animal?type=lion&name=Lisa HTTP/1.1
GET /animal?type=lion&name=Jin HTTP/1.1
GET /animal?type=lion&name=Tooth HTTP/1.1

L'exemple 1 a montré comment évaluer les transformées en mode sniper en utilisant l'annotation '+' dans la balise [+tag][+end]. L'exemple 2 montre comment utiliser 2 transformées/positions pour mener une attaque de type clusterbomb. Comme vous pouvez le voir, nous utilisons deux balises de transformée distinctes appelées [%type][%end] et [%name][%end]. Le signe '%' indique à Haptyc d'évaluer ces transformées en mode clusterbomb : pour chaque payload de la première transformée, créer un test avec le payload de la deuxième transformée. Le nombre de tests est le nombre de tests de chaque transformée impliquée multiplié entre eux.

Exemple 3 : Pitchfork/BatteringRam

En utilisant exactement le même code Python, nous pouvons passer du style d'attaque clusterbomb à pitchfork en remplaçant '%' par '#'. Les attaques de type pitchfork placent les payloads de position en parallèle. Le nombre de tests est le plus petit nombre de tests parmi toutes les transformées impliquées.

Payload original :

GET /animal?type=[#type]dog[#end]&name=[#name]fido[#end] HTTP/1.1

Tests générés :

GET /animal?type=snake&name=Frank HTTP/1.1
GET /animal?type=cat&name=Lisa HTTP/1.1
GET /animal?type=owl&name=Jin HTTP/1.1
GET /animal?type=lion&name=Tooth HTTP/1.1

Exemple 4 : Transformées persistantes

Payload original :

GET /animal?type=dog&id=[+idor]0[+end]&process=[@randbool]False[@end] HTTP/1.1

Classe Haptyc et Transformée Haptyc :

from haptyc import *
import random

original = "GET /animal?type=dog&id=[+idor]0[+end]&process=[@randbool]False[@end] HTTP/1.1"

class TestLogic(Transform):
        @ApplyIteration(10)
        def test_idor(self, data, state):
                return str(state.iter)

        def per_randbool(self, data):
                return random.choice(["True", "False"])

TestFactory = TestLogic(original)
for test in TestFactory:
        print(test)

Tests générés :

GET /animal?type=dog&id=0&process=False HTTP/1.1
GET /animal?type=dog&id=1&process=True HTTP/1.1
GET /animal?type=dog&id=2&process=False HTTP/1.1
GET /animal?type=dog&id=3&process=True HTTP/1.1
GET /animal?type=dog&id=4&process=False HTTP/1.1
GET /animal?type=dog&id=5&process=True HTTP/1.1
GET /animal?type=dog&id=6&process=False HTTP/1.1
GET /animal?type=dog&id=7&process=True HTTP/1.1
GET /animal?type=dog&id=8&process=False HTTP/1.1
GET /animal?type=dog&id=9&process=False HTTP/1.1
Télécharger l’outil