Skip to content

Commit 6feb969

Browse files
committed
feat: integrate AI chat and instant actions
1 parent aab2a23 commit 6feb969

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+3101
-1083
lines changed

BappDescription.html

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,43 @@
1-
<p> HopLa adds autocompletion support and useful payloads in Burp Suite to make your intrusion easier.</p>
1+
<p>HopLa extension enhances Burp Suite with intelligent autocompletion and built-in payloads to simplify intrusion testing.
2+
It supports integration with AI providers like Ollama, OpenAI, and Gemini to offer advanced features such as chat and
3+
content generation/transformation. You can also add your own payloads to tailor it to your needs!
4+
</p>
5+
6+
<h2>Features</h2>
7+
<ul>
8+
<li>Integrate AI-powered autocompletion (Copilot style)</li>
9+
<li>Enable AI-based chat for interaction and guidance</li>
10+
<li>Use AI instructions to quickly transform HTTP requests</li>
11+
<li>Copy formatted requests and responses for easy reporting</li>
12+
<li>Search and replace in Repeater</li>
13+
<li>Access a one-click payload insertion menu</li>
14+
<li>Insert Burp Collaborator domains dynamically</li>
15+
<li>Assign keyboard shortcuts to specific payloads</li>
16+
<li>Add custom keywords on the fly during testing</li>
17+
</ul>
18+
19+
<h2>Basic usage</h2>
20+
21+
<p>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.
22+
(See the <a href="https://github.com/synacktiv/HopLa/blob/main/src/main/resources/default-payloads.yaml">Default payloads file</a> for reference.)</p>
23+
24+
<p>AI providers can be configured by importing your YAML configuration (see <a href="https://github.com/synacktiv/HopLa/">Configure AI providers</a>).
25+
HopLa supports multiple AI providers (OpenAI, Gemini, Ollama), but AI-powered autocompletion is only available with Ollama.
26+
</p>
27+
28+
<p>Several keyboard shortcuts are predefined by default and can be customized through configuration files.</p>
29+
<ul>
30+
<li><strong><code>Ctrl+Q</code></strong> - Open the <strong>Payload Library</strong> menu</li>
31+
<li><strong><code>Ctrl+J</code></strong> - Launch the <strong>AI Chat</strong></li>
32+
<li><strong><code>Ctrl+Alt+O</code></strong> - Open the <strong>Quick Actions</strong> menu</li>
33+
<li><strong><code>Ctrl+L</code></strong> - Open the <strong>Search & Replace</strong> menu</li>
34+
<li><strong><code>Ctrl+M</code></strong> - Insert a <strong>Burp Collaborator</strong> payload</li>
35+
<li><strong><code>Ctrl+Alt+J</code></strong> - Open the <strong>Custom Keywords Manager</strong></li>
36+
</ul>
37+
38+
<p>If you're using <strong>i3</strong>, add the following line to your <strong>$HOME/.config/i3/config</strong> to enable floating mode for the frame:</p>
39+
<pre><code>
40+
for_window [class=".*burp-StartBurp.*" title="^ $"] floating enable
41+
</code></pre>
42+
43+
<p>For more information, please refer to the documentation at <a href="https://github.com/synacktiv/HopLa">GitHub HopLa</a>.</p>

BappManifest.bmf

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ Uuid: 48006894b97966581660047517ea3f42
22
ExtensionType: 1
33
Name: HopLa
44
RepoName: HopLa
5-
ScreenVersion: 1.0
5+
ScreenVersion: 2.0
66
SerialVersion: 0
7-
MinPlatformVersion: 0
7+
MinPlatformVersion: 4
88
ProOnly: False
9-
Author: Alexis Danizan / Synacktiv
10-
ShortDescription: Enable autocompletion for payload.
9+
Author: Alexis Danizan
10+
ShortDescription: Enables autocompletion for payloads and AI features.
1111
EntryPoint: releases/HopLa.jar
12-
BuildCommand: gradle jar
12+
BuildCommand: gradle build
13+
SupportedProducts: Pro, Community

README.md

Lines changed: 192 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,206 @@
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

89
Developed by Alexis Danizan [![Twitter Follow](https://img.shields.io/twitter/follow/alexisdanizan?style=social)](https://twitter.com/alexisdanizan/)
910
Released 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
76175
shortcut_search_and_replace: Ctrl+L
77176
shortcut_payload_menu: Ctrl+Q
78177
shortcut_collaborator: Ctrl+M
79-
shortcut_ia_chat: Ctrl+J
178+
shortcut_add_custom_keyword: Ctrl+Alt+J
80179

81180
categories:
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: "../"
88196
keywords:
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
100206
keywords:
@@ -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

Comments
 (0)