Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
haptyc — Python-Bibliothek für Turbo Intruder, die Unterstützung für Payload-Positionen und die Angriffstypen Sniper/Clusterbomb/Pitchfork mit tag-basierter Testgenerierung für HTTP-Fuzzing hinzufügt. | Kitploit
Tools/GitHubGitHub/defparam/haptyc
Payload-GenerierungWebsicherheitFuzzingPenetrationstests
GitHubdefparam/haptyc

haptyc

Python-Bibliothek für Turbo Intruder, die Unterstützung für Payload-Positionen und die Angriffstypen Sniper/Clusterbomb/Pitchfork mit tag-basierter Testgenerierung für HTTP-Fuzzing hinzufügt.

Repository anzeigen
941526vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen


Haptyc


Testgenerierungs-Framework

tag

Was ist Haptyc?

Haptyc ist eine Python-Bibliothek, die entwickelt wurde, um Payload-Positionsunterstützung und Sniper/Clusterbomb/Batteringram/Pitchfork-Angriffstypen zu Turbo Intruder hinzuzufügen. Während Haptyc diese Ziele recht gut erreicht, führt es auch eine einfachere Möglichkeit ein, Testsequenzen im Allgemeinen auszudrücken. Obwohl diese Bibliothek für Turbo Intruder gedacht ist, hat sie keine harten Abhängigkeiten von Turbo Intruder und kann überall dort verwendet werden, wo Testgenerierung in einem Python-Kontext benötigt wird. Leider unterstützt Haptyc, da es für einen Jython-Interpreter gebaut wurde, derzeit nur Python 2.7 (zukünftige Änderungen werden dies jedoch beheben).

Was sind Haptyc-Tags?

Haptyc-Tags sind Tags, mit denen ein Tester einen ursprünglichen Eingabe-Payload annotieren kann. Ein Tester kann mehrere Tags verwenden, um Schlüsseldaten in einer HTTP-Anfrage zu umschließen und sie als Positions-Payload zu kennzeichnen. Wenn Tests generiert werden, parst Haptyc alle Tags im ursprünglichen Payload und generiert Tests gemäß den Funktionen, die mit den Tag-Namen verbunden sind. Wenn Haptyc ein Haptyc-Tag auswertet, führt es die zugehörige Tag-Funktion (dies wird als Haptyc-Transform bezeichnet) für einen Test-Payload aus, um ihn an der Position des zugehörigen Tags in der Anfrage zu platzieren. Jede Tag-Funktion erhält ein data-Argument und ein state-Argument. Das data-Argument kann die inneren Daten des Tags oder eine andere Test-Payload-Sequenz enthalten. Das state-Argument ist ein Zustandsobjekt, das mit dem Tag verbunden ist, in dem Zustand zwischen Testiterationen gespeichert werden kann. Sehen wir uns ein Beispiel an.

Beispiel 1: Einfache Listeniteration

Ursprünglicher Payload:

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

Haptyc-Klasse & Haptyc-Transform:

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)

Generierte Tests:

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

Im obigen Beispiel sehen wir, wie man Tests auf einfache Weise mit Haptyc ausdrücken kann. Zuerst wird die Haptyc-Bibliothek importiert. Zweitens haben wir die ursprünglichen Daten mit unseren Haptyc-Tag-Annotationen (GuessAnimal) definiert. Als nächstes wird die Klasse TestLogic definiert und als Transform-Klasse erweitert. Innerhalb dieser Klasse wird jede Methode, die mit test_ beginnt, als Haptyc-Tag zur Auswertung im ursprünglichen Payload registriert. Wir verwenden einen Logik-Dekorator, um die Zustandslogik für diesen Haptyc-Transform anzuwenden. In diesem Fall verwenden wir den @ApplyList(list)-Dekorator, um Haptyc anzuweisen, für jedes Element in der angegebenen Liste einen Test zu generieren und dieses Element als data-Argument in den Haptyc-Transform zu platzieren. Im Transform geben wir eine mutierte Version der Daten zurück, die wieder an die Position des Tags eingefügt wird. In diesem Fall ist die Mutation das Listenelement als data, verkettet mit den vom Tag umschlossenen Daten (dog) und dann verkettet mit dem iter-Wert im Zustandsobjekt. Der verbleibende Python-Code zeigt, wie das TestFactory-Objekt erstellt und alle Tests in einer for-Loop-Iteration generiert werden. Dies ist ein Beispiel für einen Standard-Sniper-Angriff, der eine einzelne Payload-Position anvisiert. Als nächstes sehen wir uns andere Angriffsarten an.

Beispiel 2: Clusterbomb

Ursprünglicher Payload:

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

Haptyc-Klasse & Haptyc-Transform:

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)

Generierte Tests:

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

Beispiel 1 hat gezeigt, wie man Transforms im Sniper-Stil auswertet, indem man das '+' Zeichen im Tag [+tag][+end] verwendet. Beispiel 2 zeigt, wie wir 2 Transforms/Positionen verwenden können, um einen Clusterbomb-Angriff durchzuführen. Wie zu sehen ist, verwenden wir zwei separate Transform-Tags namens [%type][%end] und [%name][%end]. Das '%' Zeichen weist Haptyc an, diese Transforms im Clusterbomb-Stil auszuwerten: Für jeden Payload im ersten Transform wird ein Test mit dem Payload aus dem zweiten Transform erstellt. Die Testanzahl ist die Anzahl der Tests jedes beteiligten Transforms multipliziert miteinander.

Beispiel 3: Pitchfork/BatteringRam

Mit demselben Python-Code können wir den Angriffsstil von Clusterbomb zu Pitchfork ändern, indem wir das '%' durch ein '#' ersetzen. Pitchfork-Angriffe platzieren die Positions-Payloads alle parallel. Die Testanzahl ist die niedrigste Anzahl von Tests aller beteiligten Transforms.

Ursprünglicher Payload:

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

Generierte Tests:

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

Beispiel 4: Persistente Transforms

Ursprünglicher Payload:

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

Haptyc-Klasse & Haptyc-Transform:

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)

Generierte Tests:

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
Tool herunterladen