1- # HopLa V2
1+ # HopLa - Burp copilot
22
3- 💥 All the power of PayloadsAllTheThings, without the overhead.
4- This extension adds autocompletion support and useful payloads in Burp Suite to make your intrusion easier.
3+ 💥 All the power of PayloadsAllTheThings, without the overhead.
54
6- Feel free to improve with your payloads ! ❤️
5+ This extension enhances Burp Suite with intelligent autocompletion and built-in payloads to simplify intrusion testing.
6+ It supports integration with AI providers like Ollama, OpenAI, and Gemini to offer advanced features such as chat and
7+ content generation/transformation. You can also add your own payloads to tailor it to your needs!
78
89Developed by Alexis Danizan [ ![ Twitter Follow] ( https://img.shields.io/twitter/follow/alexisdanizan?style=social )] ( https://twitter.com/alexisdanizan/ )
910Released as open source by [ Synacktiv 🥷] ( https://www.synacktiv.com/ )
1011
11-
1212![ Demo GIF] ( img/demo.gif )
1313
14+ <p float =" left " >
15+ <img src =" img/quick_actions.png " width =" 400 " />
16+ <img src =" img/ai_chat.png " width =" 550 " />
17+ </p >
18+
19+ ** Features** :
20+ * Integrate AI-powered autocompletion (Copilot style)
21+ * Enable AI-based chat for interaction and guidance
22+ * Use AI instructions to quickly transform HTTP requests
23+ * Copy formatted requests and responses for easy reporting
24+ * Search and replace in Repeater
25+ * Access a one-click payload insertion menu
26+ * Insert Burp Collaborator domains dynamically
27+ * Assign keyboard shortcuts to specific payloads
28+ * Add custom keywords on the fly during testing
29+
1430## Getting started
1531
1632### Installation
1733
18- * Download the jar file from the release directory
34+ * Download the jar file from the [ release directory] ( https://github.com/synacktiv/HopLa/releases )
1935 * Add it to Burp Suite using the Extender tab
2036
21- ### Build
22-
23- Build with Docker or Podman:
24-
25- ``` bash
26- $ podman build -t hopla .
37+ ## Usage
2738
28- $ podman run --rm -v " $PWD " :/data hopla gradle build
29- Starting a Gradle Daemon (subsequent builds will be faster)
30- > Task :compileJava
39+ By default, HopLa comes with a built-in set of payloads. You can extend them by loading your own custom YAML file via the top menu.
40+ (See the [ default payloads file] ( https://github.com/synacktiv/HopLa/blob/main/src/main/resources/default-payloads.yaml ) for reference.)
3141
32- > Task :encryptResource
33- Encrypting /data/src/main/resources/default-payloads.yaml to /data/build/encryptedResources/default-payloads.enc.yaml
42+ AI providers can be configured by importing your YAML configuration (see [ Configure AI providers] ( #configure-ai-providers ) )
3443
35- > Task :processResources
36- > Task :classes
37- > Task :jar
38- > Task :assemble
39- > Task :compileTestJava NO-SOURCE
40- > Task :processTestResources NO-SOURCE
41- > Task :testClasses UP-TO-DATE
42- > Task :test NO-SOURCE
43- > Task :check UP-TO-DATE
44- > Task :build
44+ Several keyboard shortcuts are predefined by default and can be customized through configuration files.
4545
46- BUILD SUCCESSFUL in 11s
47- 4 actionable tasks: 4 executed
46+ * ** ` Ctrl+Q ` ** - Open the ** Payload Library** menu
47+ * ** ` Ctrl+J ` ** - Launch the ** AI Chat**
48+ * ** ` Ctrl+Alt+O ` ** - Open the ** Quick Actions** menu
49+ * ** ` Ctrl+L ` ** - Open the ** Search & Replace** menu
50+ * ** ` Ctrl+M ` ** - Insert a ** Burp Collaborator** payload
51+ * ** ` Ctrl+Alt+J ` ** - Open the ** Custom Keywords Manager**
4852
49- $ ls build/libs/
50- HopLa-2.0.0.jar
53+ If you're using ** i3** , add the following line to your ` $HOME/.config/i3/config ` to enable floating mode for the frame:
54+ ```
55+ for_window [class=".*burp-StartBurp.*" title="^ $"] floating enable
5156```
5257
53- Execute ` gradle build ` and you'll have the plugin ready in ` build/libs/HopLa-2.0.0.jar ` .
54-
55- ## Usage
56-
57- By default HopLa is shipped with default payloads. You can add yours by loading a custom JSON file in the the menu.
58+ ### Configure AI providers
5859
59- At the first usage HopLa creates a JSON file containing all the payloads in the jar file directory .
60+ HopLa supports multiple AI providers (OpenAI, Gemini, Ollama), but AI-powered autocompletion is only available with Ollama .
6061
61- Press ` Ctrl+Q ` to display the payload library menu.
62+ | Features | Ollama | Gemini | OpenAI |
63+ | -------------------| :------:| :------:| :------:|
64+ | Chat | ✅ Yes | ✅ Yes | ✅ Yes |
65+ | Autocompletion | ✅ Yes | ❌ No | ❌ No |
66+ | Quick Action | ✅ Yes | ✅ Yes | ✅ Yes |
6267
63- You can disable the global autocompletion in the top menu.
6468
65- For i3, add the following line to ` $HOME/.config/i3/config ` for floating frame :
69+ The YAML configuration file for AI is structured as follows (a sample file can be exported from the HopLa menu) :
6670
71+ ``` yaml
72+ shortcut_ai_chat : Ctrl+J
73+ shortcut_quick_action : Ctrl+Alt+O
74+ # autocompletion_min_chars: 1 # Minimum input length for AI-powered autocompletion (default: 1)
75+
76+ providers :
77+ OPENAI :
78+ enabled : true
79+ chat_model : gpt-4.1
80+ chat_endpoint : https://api.openai.com/v1/chat/completions
81+ # chat_model_system_prompt: REPLACE_ME
82+ quick_action_model : gpt-4.1
83+ # quick_action_system_prompt: REPLACE_ME
84+ quick_action_endpoint : https://api.openai.com/v1/chat/completions
85+ headers :
86+ Authorization : " Bearer REPLACE_ME"
87+ proxy :
88+ enabled : true
89+ host : 127.0.0.1
90+ port : 5555
91+ username : user123
92+ password : pass123
93+ type : SOCKS # SOCKS or HTTP
94+ GEMINI :
95+ enabled : true
96+ chat_model : gemini-2.0-flash
97+ chat_endpoint : https://generativelanguage.googleapis.com/v1beta/models/@model:streamGenerateContent?alt=sse&key=@key # HopLa replace @key with api_key value
98+ # chat_model_system_prompt: REPLACE_ME
99+ quick_action_endpoint : https://generativelanguage.googleapis.com/v1beta/models/@model:streamGenerateContent?alt=sse&key=@key # HopLa replace @key with api_key value
100+ # quick_action_system_prompt: REPLACE_ME
101+ api_key : REPLACE_ME
102+ proxy :
103+ enabled : true
104+ host : 127.0.0.1
105+ port : 5555
106+ username : user123
107+ password : pass123
108+ type : SOCKS # SOCKS or HTTP
109+
110+ OLLAMA :
111+ enabled : true
112+ completion_model : qwen2.5-coder:3b
113+ completion_endpoint : http://localhost:11434/api/generate
114+ # completion_model_system_prompt: REPLACE_ME
115+ completion_prompt : " <|fim_prefix|>@before<|fim_suffix|>@after<|fim_middle|>" # @input, @section, @before, @after
116+ completion_params :
117+ seed : 42
118+ temperature : 0.0
119+ top_p : 1.0
120+ top_k : 0
121+ num_predict : 15
122+ completion_stops :
123+ - " \n "
124+ - " <|fim_middle|>"
125+ chat_model : qwen2.5-coder:3b
126+ # chat_model_system_prompt: REPLACE_ME
127+ chat_endpoint : http://localhost:11434/api/chat
128+ # chat_stops:
129+ # - "\n"
130+ # chat_params:
131+ # - temperature: 0.0
132+ quick_action_model : qwen2.5-coder:7b
133+ quick_action_endpoint : http://localhost:11434/api/generate
134+ # quick_action_system_prompt: REPLACE_ME
135+ # quick_action_stops:
136+ # - "\n"
137+ # quick_action_params:
138+ # - temperature: 0.0
139+
140+
141+ defaults :
142+ chat_provider : OLLAMA # OLLAMA, OPENAI, GEMINI
143+ completion_provider : OLLAMA # OLLAMA, OPENAI, GEMINI
144+ quick_action_provider : OLLAMA # OLLAMA, OPENAI, GEMINI
145+ timeout_sec : 60
146+
147+ prompts :
148+ - name : technologies
149+ description : " Fingerprint web technologies"
150+ content : |
151+ Analyze the following HTTP response and identify the web technologies used.
152+ List your reasoning for each technology detected.
153+
154+ quick_actions :
155+ - name : multipart
156+ description : " Transform request to multipart"
157+ content : |
158+ Transform the following HTTP POST request into a multipart/form-data request:
159+ - name : json
160+ description : " Transform request to json"
161+ content : |
162+ Transform the following HTTP POST request into a JSON request:
163+ - name : headers_name
164+ description : " Extract HTTP header names"
165+ content : |
166+ From the HTTP request below, extract only the unique header names. List each name on a separate line. Do not include header values.
67167` ` `
68- for_window [class=".*burp-StartBurp.*" title="^ $"] floating enable
69- ```
70168
71- ### How to add payloads
72169
73- The YAML payloads file follow the structure:
170+ ### How to customize payloads
171+
172+ The YAML payloads file follow the structure (there is no nesting limit):
74173
75174` ` ` yaml
76175shortcut_search_and_replace : Ctrl+L
77176shortcut_payload_menu : Ctrl+Q
78177shortcut_collaborator : Ctrl+M
79- shortcut_ia_chat : Ctrl+J
178+ shortcut_add_custom_keyword : Ctrl+Alt +J
80179
81180categories :
82181 - name : " XSS"
83182 payloads :
84183 - name : " Fingerprint"
85184 value : " \" ><h1>"
86- shortcut : Ctrl+k
87-
185+ shortcut : Ctrl+k # Use this shortcut to insert a payload
186+ - name : " Path Traversal"
187+ categories :
188+ - name : " Simple"
189+ payloads :
190+ - name : " "
191+ value : " ../"
192+ - name : " Simple 2"
193+ payloads :
194+ - name : " "
195+ value : " ../"
88196keywords :
89197 - name : " Headers"
90198 values :
91199 - " Accept"
92200 - " Accept-Charset"
93201` ` `
94202
95- There is no nesting limit.
96-
97- To add only keywords that do not appear in the menu, you can add them in the keywords category:
203+ To add only autocompletion keywords that do not appear in the menu, you can add them in the **keywords** category:
98204
99205` ` ` yaml
100206keywords :
@@ -104,6 +210,42 @@ keywords:
104210 - " Accept-Charset"
105211` ` `
106212
213+ ## Build
214+
215+ Build using Docker or Podman:
216+
217+ ` ` ` bash
218+ $ podman build -t hopla .
219+
220+ $ podman run --rm -v "$PWD":/data hopla gradle build
221+ Starting a Gradle Daemon (subsequent builds will be faster)
222+ > Task :compileJava
223+
224+ > Task :encryptResource
225+ Encrypting /data/src/main/resources/default-payloads.yaml to /data/build/encryptedResources/default-payloads.enc.yaml
226+
227+ > Task :processResources
228+ > Task :classes
229+ > Task :jar
230+ > Task :assemble
231+ > Task :compileTestJava NO-SOURCE
232+ > Task :processTestResources NO-SOURCE
233+ > Task :testClasses UP-TO-DATE
234+ > Task :test NO-SOURCE
235+ > Task :check UP-TO-DATE
236+ > Task :build
237+
238+ BUILD SUCCESSFUL in 11s
239+ 4 actionable tasks : 4 executed
240+
241+ $ ls releases
242+ HopLa.jar
243+ ```
244+
245+ Execute ` gradle build ` and you'll have the plugin ready in ` releases/HopLa.jar ` .
246+
247+ To avoid triggering antivirus alerts, the YAML payload file is encrypted at build time.
248+
107249## Thanks To
108250
109251 * https://github.com/Static-Flow/BurpSuiteAutoCompletion
0 commit comments