packetsnitch 1.5.604 → 1.5.605
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/FUNDING.yml +15 -0
- package/.webpack/main/index.js +1697 -0
- package/.webpack/main/index.js.map +1 -0
- package/.webpack/renderer/main_window/index.html +1036 -0
- package/.webpack/renderer/main_window/index.js +4736 -0
- package/.webpack/renderer/main_window/preload.js +1418 -0
- package/docs/Backend.md +278 -0
- package/docs/Filters.md +735 -0
- package/docs/Frontend.md +494 -0
- package/docs/README.md +43 -0
- package/docs/bitcoin-qr.png +0 -0
- package/docs/paypal-qr.png +0 -0
- package/docs/screenshots/PacketSnitch_ss10.png +0 -0
- package/docs/screenshots/PacketSnitch_ss9-2.jpg +0 -0
- package/docs/screenshots/comparison-operator-packetsnitch-ss21.png +0 -0
- package/docs/screenshots/packetSnitch_ss13.png +0 -0
- package/docs/screenshots/packetSnitch_ss20.png +0 -0
- package/docs/screenshots/packetsnitch-ss16.png +0 -0
- package/docs/screenshots/packetsnitch_32.png +0 -0
- package/docs/screenshots/packetsnitch_ss11.png +0 -0
- package/docs/screenshots/packetsnitch_ss12.png +0 -0
- package/docs/screenshots/packetsnitch_ss19.png +0 -0
- package/docs/screenshots/packetsnitch_ss23.png +0 -0
- package/docs/screenshots/packetsnitch_ss24.png +0 -0
- package/docs/screenshots/packetsnitch_ss25.png +0 -0
- package/docs/screenshots/packetsnitch_win_ss14.png +0 -0
- package/docs/screenshots/packetsntich_ss26.png +0 -0
- package/docs/screenshots/ps-views.gif +0 -0
- package/docs/screenshots/screenshot_7.png +0 -0
- package/docs/venmo-qr.png +0 -0
- package/forge.config.js +21 -33
- package/ideas/Dark-mode UI mockup for packetsnitch.png +0 -0
- package/ideas/Dark-packetsnitch-UI-mockup-5.png +0 -0
- package/ideas/PacketSnitch-timeline-landscape-mockup.png +0 -0
- package/ideas/Screenshot 2026-03-05 at 22-09-09 Packet Decoder Frontend /342/200/223 Figma Make.png +0 -0
- package/ideas/Screenshot 2026-03-07 at 12-31-05 Grok _ X.png +0 -0
- package/ideas/ideas.txt +340 -0
- package/logo/LidakzOne_PERSONAL_USE_ONLY.otf +0 -0
- package/logo/byline-packetsnitch.xcf +0 -0
- package/logo/logo-packetsnitch-2.png +0 -0
- package/logo/logo-packetsnitch-3.png +0 -0
- package/logo/logo-packetsnitch-4.png +0 -0
- package/logo/logo-packetsnitch-5.png +0 -0
- package/logo/logo-packetsnitch.png +0 -0
- package/logo/logo-packetsnitch.webp +0 -0
- package/logo/logo-packetsnitch.xcf +0 -0
- package/logo/packet-snitch-tag-transp-whitetext.png +0 -0
- package/logo/packet-snitch-tag-transp.png +0 -0
- package/logo/ps-icon.ico +0 -0
- package/logo/ps-installer-icon.ico +0 -0
- package/logo/qr-code(1).png +0 -0
- package/logo/qr-code.png +0 -0
- package/logo/rat-standing.png +0 -0
- package/package.json +1 -2
- package/samples/hosts.json +15112 -0
- package/samples/hustoj_capture.pcapng +0 -0
- package/.eslintrc.json +0 -28
- package/.webpack/x64/main/index.js +0 -2
- package/.webpack/x64/main/index.js.map +0 -1
- package/.webpack/x64/renderer/main_window/index.html +0 -3
- package/.webpack/x64/renderer/main_window/index.js +0 -3
- package/.webpack/x64/renderer/main_window/index.js.LICENSE.txt +0 -36
- package/.webpack/x64/renderer/main_window/index.js.map +0 -1
- package/.webpack/x64/renderer/main_window/preload.js +0 -2
- package/.webpack/x64/renderer/main_window/preload.js.map +0 -1
- /package/.webpack/{x64/renderer → renderer}/assets/css/rubikglitch.woff2 +0 -0
- /package/.webpack/{x64/renderer → renderer}/assets/css/style.css +0 -0
- /package/.webpack/{x64/renderer → renderer}/assets/images/loading.gif +0 -0
- /package/.webpack/{x64/renderer → renderer}/assets/images/logo.webp +0 -0
- /package/.webpack/{x64/renderer → renderer}/assets/images/packet-snitch-tag.webp +0 -0
|
@@ -0,0 +1,1036 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>PacketSnitch</title>
|
|
7
|
+
|
|
8
|
+
<!-- Google Font -->
|
|
9
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
10
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
11
|
+
|
|
12
|
+
<link rel="stylesheet" href="assets/css/style.css" type="text/css" />
|
|
13
|
+
<script defer src="/main_window/index.js"></script></head>
|
|
14
|
+
<body>
|
|
15
|
+
<div class="container_box">
|
|
16
|
+
<div class="top_bar">
|
|
17
|
+
<div class="tagline">
|
|
18
|
+
<img
|
|
19
|
+
class="tagline"
|
|
20
|
+
id="psbyline"
|
|
21
|
+
src="../assets/images/packet-snitch-tag.webp"
|
|
22
|
+
/>
|
|
23
|
+
</div>
|
|
24
|
+
<button id="close-btn" aria-label="Quit application" title="Quit">
|
|
25
|
+
✕
|
|
26
|
+
</button>
|
|
27
|
+
</div>
|
|
28
|
+
<div class="entry_bar">
|
|
29
|
+
<div class="logo-cont">
|
|
30
|
+
<img src="../assets/images/logo.webp" />
|
|
31
|
+
</div>
|
|
32
|
+
<div id="filters-container">
|
|
33
|
+
<input id="host_filter" type="text" placeholder="0.0.0.0" disabled />
|
|
34
|
+
<label style="color: white">Filter</label>
|
|
35
|
+
<div id="filterStr-wrap">
|
|
36
|
+
<div id="filterStr-highlight" aria-hidden="true"></div>
|
|
37
|
+
<input
|
|
38
|
+
id="filterStr"
|
|
39
|
+
type="text"
|
|
40
|
+
disabled
|
|
41
|
+
placeholder="wire.len: >100 && tcp.proto: https || dns.qname: example.com"
|
|
42
|
+
/>
|
|
43
|
+
<button
|
|
44
|
+
id="filterStr-clear"
|
|
45
|
+
type="button"
|
|
46
|
+
disabled
|
|
47
|
+
aria-label="Clear filter"
|
|
48
|
+
title="Clear filter"
|
|
49
|
+
>
|
|
50
|
+
Clear
|
|
51
|
+
</button>
|
|
52
|
+
</div>
|
|
53
|
+
<div id="filter-history">
|
|
54
|
+
<select
|
|
55
|
+
id="filter-history-select"
|
|
56
|
+
disabled
|
|
57
|
+
aria-label="Previously used filters"
|
|
58
|
+
>
|
|
59
|
+
<option value="" selected>Previous queries</option>
|
|
60
|
+
</select>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="menu_bar" id="dropdown" style="display: none">
|
|
65
|
+
<!-- this is where the dropdowns are handled, they are hidden by
|
|
66
|
+
default and only shown when called upon -->
|
|
67
|
+
</div>
|
|
68
|
+
<div class="menu_bar" id="tab-btns">
|
|
69
|
+
<input
|
|
70
|
+
type="button"
|
|
71
|
+
id="summary-btn"
|
|
72
|
+
value="Analysis"
|
|
73
|
+
class="custom-btns"
|
|
74
|
+
/>
|
|
75
|
+
<input
|
|
76
|
+
type="button"
|
|
77
|
+
id="data-btn"
|
|
78
|
+
value="Host Data"
|
|
79
|
+
class="custom-btns"
|
|
80
|
+
/>
|
|
81
|
+
<input
|
|
82
|
+
type="button"
|
|
83
|
+
id="data-tools-btn"
|
|
84
|
+
value="Conv"
|
|
85
|
+
title="Data Conversion"
|
|
86
|
+
class="custom-btns"
|
|
87
|
+
/>
|
|
88
|
+
<input
|
|
89
|
+
type="button"
|
|
90
|
+
id="crypt-btn"
|
|
91
|
+
value="Crypt"
|
|
92
|
+
title="Encryption workspace"
|
|
93
|
+
class="custom-btns"
|
|
94
|
+
/>
|
|
95
|
+
<input
|
|
96
|
+
type="button"
|
|
97
|
+
id="keystore-btn"
|
|
98
|
+
value="Keystore"
|
|
99
|
+
title="Persistent local keystore"
|
|
100
|
+
class="custom-btns"
|
|
101
|
+
/>
|
|
102
|
+
<input type="button" id="stats-btn" value="Stats" class="custom-btns" />
|
|
103
|
+
<input type="button" id="list-btn" value="List" class="custom-btns" />
|
|
104
|
+
<input type="button" id="notes-btn" value="Notes" class="custom-btns" />
|
|
105
|
+
<input type="button" id="log-btn" value="Log" class="custom-btns" />
|
|
106
|
+
<div id="rotate-btns" class="menu_bar">
|
|
107
|
+
<input
|
|
108
|
+
type="button"
|
|
109
|
+
id="prev-btn"
|
|
110
|
+
value="Prev"
|
|
111
|
+
class="custom-btns"
|
|
112
|
+
style="display: none"
|
|
113
|
+
/>
|
|
114
|
+
<input
|
|
115
|
+
type="button"
|
|
116
|
+
id="next-btn"
|
|
117
|
+
value="Next"
|
|
118
|
+
class="custom-btns"
|
|
119
|
+
style="display: none"
|
|
120
|
+
/>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
<div class="content_area">
|
|
124
|
+
<div class="sidebar">
|
|
125
|
+
<form
|
|
126
|
+
method="post"
|
|
127
|
+
enctype="multipart/form-data"
|
|
128
|
+
id="jsonFile"
|
|
129
|
+
name="jsonFile"
|
|
130
|
+
>
|
|
131
|
+
<input type="file" id="json-upload" name="json-up" hidden />
|
|
132
|
+
<label id="json-lab" for="json-upload" class="menu-btns"
|
|
133
|
+
>Load Session</label
|
|
134
|
+
>
|
|
135
|
+
</form>
|
|
136
|
+
<br />
|
|
137
|
+
<input type="button" id="pcap-filename" name="pcap-up" hidden />
|
|
138
|
+
<label id="pcap-lab" for="pcap-filename" class="menu-btns"
|
|
139
|
+
>Choose PCAP</label
|
|
140
|
+
>
|
|
141
|
+
<div id="llm-toggle">
|
|
142
|
+
<label class="menu-btns">
|
|
143
|
+
<input type="checkbox" id="use-llm" checked />
|
|
144
|
+
Enable LLM
|
|
145
|
+
</label>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<div id="leftside">
|
|
149
|
+
<!-- </form> -->
|
|
150
|
+
<!-- Dropdown menus -->
|
|
151
|
+
<label for="target_hosts" class="menu-btns left">Target Host</label>
|
|
152
|
+
<select id="target_hosts" hidden class="menu-btns left"></select>
|
|
153
|
+
<br />
|
|
154
|
+
<input
|
|
155
|
+
type="button"
|
|
156
|
+
id="setBookmark"
|
|
157
|
+
value="Bookmark"
|
|
158
|
+
class="menu-btns left"
|
|
159
|
+
/>
|
|
160
|
+
<select id="selectBookmark" class="menu-btns left">
|
|
161
|
+
<option class="menu-btns left" value="" disabled selected>
|
|
162
|
+
Select a bookmark
|
|
163
|
+
</option>
|
|
164
|
+
</select>
|
|
165
|
+
<input
|
|
166
|
+
type="button"
|
|
167
|
+
id="save-json-btn"
|
|
168
|
+
value="Save Session"
|
|
169
|
+
class="menu-btns left"
|
|
170
|
+
/>
|
|
171
|
+
<div id="file-info">
|
|
172
|
+
<div id="pcap-size">PCAP size: 0</div>
|
|
173
|
+
<div id="load-time">Load time:</div>
|
|
174
|
+
<div id="total-packets">Total Packets: 0</div>
|
|
175
|
+
<div id="filter-returned">Filtered Packets: 0</div>
|
|
176
|
+
<div id="timestamp"></div>
|
|
177
|
+
</div>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
<div id="main" class="main_panel">
|
|
181
|
+
<div id="loading-container">
|
|
182
|
+
<h2>Loading packets...</h2>
|
|
183
|
+
<br />
|
|
184
|
+
<img
|
|
185
|
+
width="25%"
|
|
186
|
+
height="25%"
|
|
187
|
+
id="loading"
|
|
188
|
+
src="../assets/images/loading.gif"
|
|
189
|
+
/>
|
|
190
|
+
</div>
|
|
191
|
+
<div id="error-container">
|
|
192
|
+
<h2>Error!</h2>
|
|
193
|
+
<br />
|
|
194
|
+
<p id="error-message"></p>
|
|
195
|
+
</div>
|
|
196
|
+
<div id="summary_box">
|
|
197
|
+
<div id="summary_content">
|
|
198
|
+
Load a file to get started!
|
|
199
|
+
<!-- <span id="loaderdots" class="loading">Loading</span> -->
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
<div id="stats_box">
|
|
203
|
+
<div id="stats_content"></div>
|
|
204
|
+
</div>
|
|
205
|
+
<div id="data_tools_box">
|
|
206
|
+
<div class="crypt-workspace-header">Conv Workspace</div>
|
|
207
|
+
<div class="crypt-subtab-row">
|
|
208
|
+
<button
|
|
209
|
+
id="conv-subtab-conversions"
|
|
210
|
+
class="crypt-subtab-btn active"
|
|
211
|
+
>
|
|
212
|
+
Conversions
|
|
213
|
+
</button>
|
|
214
|
+
<button id="conv-subtab-hashes" class="crypt-subtab-btn">
|
|
215
|
+
Hashes
|
|
216
|
+
</button>
|
|
217
|
+
<button id="conv-subtab-decodes" class="crypt-subtab-btn">
|
|
218
|
+
Decodes
|
|
219
|
+
</button>
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
<div id="conv-conversions-panel" class="crypt-subtab-panel">
|
|
223
|
+
<div class="data-tools-grid">
|
|
224
|
+
<div class="data-tools-section">
|
|
225
|
+
<div class="data-tools-title">Input</div>
|
|
226
|
+
<label for="data-tools-format">Input format</label>
|
|
227
|
+
<select id="data-tools-format">
|
|
228
|
+
<option value="base64">Base64</option>
|
|
229
|
+
<option value="binary">Binary</option>
|
|
230
|
+
<option value="hex" selected>Hex</option>
|
|
231
|
+
<option value="ascii">ASCII / UTF-8</option>
|
|
232
|
+
<option value="decimal">Decimal bytes</option>
|
|
233
|
+
</select>
|
|
234
|
+
<textarea
|
|
235
|
+
id="data-tools-input"
|
|
236
|
+
placeholder="Paste base64, binary, hex, ascii, or decimal byte values here..."
|
|
237
|
+
></textarea>
|
|
238
|
+
<div class="data-tools-actions">
|
|
239
|
+
<button id="data-tools-convert-btn">Convert</button>
|
|
240
|
+
<button id="data-tools-clear-btn">Clear</button>
|
|
241
|
+
</div>
|
|
242
|
+
<div id="data-tools-error" role="alert"></div>
|
|
243
|
+
</div>
|
|
244
|
+
<div class="data-tools-section">
|
|
245
|
+
<div class="data-tools-title">Converted Output</div>
|
|
246
|
+
<div class="data-tools-output-label">Hex</div>
|
|
247
|
+
<textarea id="data-tools-hex-output" readonly></textarea>
|
|
248
|
+
<div class="data-tools-output-label">Binary</div>
|
|
249
|
+
<textarea id="data-tools-binary-output" readonly></textarea>
|
|
250
|
+
<div class="data-tools-output-label">Decimal bytes</div>
|
|
251
|
+
<textarea id="data-tools-decimal-output" readonly></textarea>
|
|
252
|
+
<div class="data-tools-output-label">Decimal integer</div>
|
|
253
|
+
<textarea
|
|
254
|
+
id="data-tools-decimal-integer-output"
|
|
255
|
+
readonly
|
|
256
|
+
></textarea>
|
|
257
|
+
<div class="data-tools-output-label">ASCII</div>
|
|
258
|
+
<textarea id="data-tools-ascii-output" readonly></textarea>
|
|
259
|
+
<div class="data-tools-output-label">Base64</div>
|
|
260
|
+
<textarea id="data-tools-base64-output" readonly></textarea>
|
|
261
|
+
</div>
|
|
262
|
+
<div class="data-tools-section">
|
|
263
|
+
<div class="data-tools-title">Data Insights</div>
|
|
264
|
+
<div id="data-tools-byte-length" class="data-tools-kv">
|
|
265
|
+
Byte Length: 0
|
|
266
|
+
</div>
|
|
267
|
+
<div id="data-tools-mime-type" class="data-tools-kv">
|
|
268
|
+
MIME Type: Unknown
|
|
269
|
+
</div>
|
|
270
|
+
<div id="data-tools-entropy" class="data-tools-kv">
|
|
271
|
+
Shannon Entropy: 0.00 (Low)
|
|
272
|
+
</div>
|
|
273
|
+
</div>
|
|
274
|
+
</div>
|
|
275
|
+
</div>
|
|
276
|
+
|
|
277
|
+
<div id="conv-hashes-panel" class="crypt-subtab-panel" hidden>
|
|
278
|
+
<div class="data-tools-section data-tools-hashes-section">
|
|
279
|
+
<div class="data-tools-title">Hashes</div>
|
|
280
|
+
<div class="data-tools-hashes-grid">
|
|
281
|
+
<div class="data-tools-output-label">Hashed Input</div>
|
|
282
|
+
<textarea
|
|
283
|
+
id="data-tools-hash-input-reading"
|
|
284
|
+
class="data-tools-hash-input-reading"
|
|
285
|
+
placeholder="Type text here to hash..."
|
|
286
|
+
></textarea>
|
|
287
|
+
<div class="data-tools-output-label">MD5</div>
|
|
288
|
+
<input
|
|
289
|
+
type="text"
|
|
290
|
+
id="data-tools-md5-output"
|
|
291
|
+
class="data-tools-hash-output"
|
|
292
|
+
readonly
|
|
293
|
+
placeholder="—"
|
|
294
|
+
/>
|
|
295
|
+
<div class="data-tools-output-label">SHA-1</div>
|
|
296
|
+
<input
|
|
297
|
+
type="text"
|
|
298
|
+
id="data-tools-sha1-output"
|
|
299
|
+
class="data-tools-hash-output"
|
|
300
|
+
readonly
|
|
301
|
+
placeholder="—"
|
|
302
|
+
/>
|
|
303
|
+
<div class="data-tools-output-label">SHA-256</div>
|
|
304
|
+
<input
|
|
305
|
+
type="text"
|
|
306
|
+
id="data-tools-sha256-output"
|
|
307
|
+
class="data-tools-hash-output"
|
|
308
|
+
readonly
|
|
309
|
+
placeholder="—"
|
|
310
|
+
/>
|
|
311
|
+
<div class="data-tools-output-label">SHA-384</div>
|
|
312
|
+
<input
|
|
313
|
+
type="text"
|
|
314
|
+
id="data-tools-sha384-output"
|
|
315
|
+
class="data-tools-hash-output"
|
|
316
|
+
readonly
|
|
317
|
+
placeholder="—"
|
|
318
|
+
/>
|
|
319
|
+
<div class="data-tools-output-label">SHA-512</div>
|
|
320
|
+
<input
|
|
321
|
+
type="text"
|
|
322
|
+
id="data-tools-sha512-output"
|
|
323
|
+
class="data-tools-hash-output"
|
|
324
|
+
readonly
|
|
325
|
+
placeholder="—"
|
|
326
|
+
/>
|
|
327
|
+
<div class="data-tools-output-label">SHA3-256</div>
|
|
328
|
+
<input
|
|
329
|
+
type="text"
|
|
330
|
+
id="data-tools-sha3-256-output"
|
|
331
|
+
class="data-tools-hash-output"
|
|
332
|
+
readonly
|
|
333
|
+
placeholder="—"
|
|
334
|
+
/>
|
|
335
|
+
<div class="data-tools-output-label">SHA3-512</div>
|
|
336
|
+
<input
|
|
337
|
+
type="text"
|
|
338
|
+
id="data-tools-sha3-512-output"
|
|
339
|
+
class="data-tools-hash-output"
|
|
340
|
+
readonly
|
|
341
|
+
placeholder="—"
|
|
342
|
+
/>
|
|
343
|
+
<div class="data-tools-output-label">RIPEMD-160</div>
|
|
344
|
+
<input
|
|
345
|
+
type="text"
|
|
346
|
+
id="data-tools-ripemd160-output"
|
|
347
|
+
class="data-tools-hash-output"
|
|
348
|
+
readonly
|
|
349
|
+
placeholder="—"
|
|
350
|
+
/>
|
|
351
|
+
<div class="data-tools-output-label">Whirlpool</div>
|
|
352
|
+
<input
|
|
353
|
+
type="text"
|
|
354
|
+
id="data-tools-whirlpool-output"
|
|
355
|
+
class="data-tools-hash-output"
|
|
356
|
+
readonly
|
|
357
|
+
placeholder="—"
|
|
358
|
+
/>
|
|
359
|
+
</div>
|
|
360
|
+
</div>
|
|
361
|
+
</div>
|
|
362
|
+
|
|
363
|
+
<div id="conv-decodes-panel" class="crypt-subtab-panel" hidden>
|
|
364
|
+
<div class="data-tools-section data-tools-proto-section">
|
|
365
|
+
<div class="data-tools-title">Protocol Decoder</div>
|
|
366
|
+
<label for="data-tools-proto-select">Protocol</label>
|
|
367
|
+
<select id="data-tools-proto-select">
|
|
368
|
+
<option value="auto" selected>Auto-detect</option>
|
|
369
|
+
<option value="http">HTTP</option>
|
|
370
|
+
<option value="telnet">Telnet</option>
|
|
371
|
+
<option value="ssh">SSH / OpenSSH</option>
|
|
372
|
+
<option value="pop3">POP3</option>
|
|
373
|
+
<option value="imap">IMAP</option>
|
|
374
|
+
<option value="smtp">SMTP</option>
|
|
375
|
+
</select>
|
|
376
|
+
<div id="data-tools-proto-output"></div>
|
|
377
|
+
</div>
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
<div id="crypt_box">
|
|
381
|
+
<div class="crypt-workspace-header">Crypt Workspace</div>
|
|
382
|
+
<div class="crypt-subtab-row">
|
|
383
|
+
<button id="crypt-subtab-ssl" class="crypt-subtab-btn active">
|
|
384
|
+
SSL
|
|
385
|
+
</button>
|
|
386
|
+
<button id="crypt-subtab-pgp" class="crypt-subtab-btn">
|
|
387
|
+
PGP
|
|
388
|
+
</button>
|
|
389
|
+
<button id="crypt-subtab-openssh" class="crypt-subtab-btn">
|
|
390
|
+
OpenSSH
|
|
391
|
+
</button>
|
|
392
|
+
</div>
|
|
393
|
+
|
|
394
|
+
<div id="crypt-ssl-panel" class="crypt-subtab-panel">
|
|
395
|
+
<div class="crypt-grid">
|
|
396
|
+
<div class="crypt-section">
|
|
397
|
+
<div class="crypt-section-title">Encountered SSL/TLS</div>
|
|
398
|
+
<select id="crypt-encountered-list" size="10"></select>
|
|
399
|
+
<div class="crypt-actions-row">
|
|
400
|
+
<button id="crypt-refresh-btn">Refresh</button>
|
|
401
|
+
<button id="crypt-apply-filter-btn">Filter packets</button>
|
|
402
|
+
<button id="crypt-load-encountered-cert-btn">
|
|
403
|
+
Load cert text
|
|
404
|
+
</button>
|
|
405
|
+
</div>
|
|
406
|
+
<div id="crypt-encountered-details"></div>
|
|
407
|
+
</div>
|
|
408
|
+
|
|
409
|
+
<div class="crypt-section">
|
|
410
|
+
<div class="crypt-section-title">Certificate Loader</div>
|
|
411
|
+
<div class="crypt-actions-row">
|
|
412
|
+
<button id="crypt-load-cert-file-btn">
|
|
413
|
+
Load certificate file
|
|
414
|
+
</button>
|
|
415
|
+
<button id="crypt-use-cert-input-btn">
|
|
416
|
+
Use pasted certificate
|
|
417
|
+
</button>
|
|
418
|
+
<button id="crypt-clear-cert-btn">Clear</button>
|
|
419
|
+
</div>
|
|
420
|
+
<input
|
|
421
|
+
type="file"
|
|
422
|
+
id="crypt-cert-file-input"
|
|
423
|
+
accept=".pem,.crt,.cer,.der,.txt"
|
|
424
|
+
hidden
|
|
425
|
+
/>
|
|
426
|
+
<textarea
|
|
427
|
+
id="crypt-cert-input"
|
|
428
|
+
placeholder="Paste PEM certificate text here..."
|
|
429
|
+
></textarea>
|
|
430
|
+
<pre id="crypt-cert-preview">No certificate loaded.</pre>
|
|
431
|
+
</div>
|
|
432
|
+
|
|
433
|
+
<div class="crypt-section">
|
|
434
|
+
<div class="crypt-section-title">Private Key Loader</div>
|
|
435
|
+
<div class="crypt-actions-row">
|
|
436
|
+
<button id="crypt-load-key-file-btn">
|
|
437
|
+
Load private key file
|
|
438
|
+
</button>
|
|
439
|
+
<button id="crypt-use-key-input-btn">Use pasted key</button>
|
|
440
|
+
<button id="crypt-clear-key-btn">Clear</button>
|
|
441
|
+
</div>
|
|
442
|
+
<input
|
|
443
|
+
type="file"
|
|
444
|
+
id="crypt-key-file-input"
|
|
445
|
+
accept=".key,.pem,.txt"
|
|
446
|
+
hidden
|
|
447
|
+
/>
|
|
448
|
+
<textarea
|
|
449
|
+
id="crypt-key-input"
|
|
450
|
+
placeholder="Paste PEM private key text here..."
|
|
451
|
+
></textarea>
|
|
452
|
+
<pre id="crypt-key-preview">No private key loaded.</pre>
|
|
453
|
+
</div>
|
|
454
|
+
|
|
455
|
+
<div class="crypt-section">
|
|
456
|
+
<div class="crypt-section-title">TLS/SSL Decrypt</div>
|
|
457
|
+
<div class="crypt-actions-row">
|
|
458
|
+
<button id="crypt-decrypt-entry-btn">Decrypt selected</button>
|
|
459
|
+
<button id="crypt-send-decrypted-conv-btn" disabled>
|
|
460
|
+
Send to Conv
|
|
461
|
+
</button>
|
|
462
|
+
<button id="crypt-clear-decrypted-btn">Clear</button>
|
|
463
|
+
</div>
|
|
464
|
+
<pre id="crypt-decrypt-preview">
|
|
465
|
+
No decrypted TLS/SSL output yet.</pre
|
|
466
|
+
>
|
|
467
|
+
</div>
|
|
468
|
+
</div>
|
|
469
|
+
</div>
|
|
470
|
+
|
|
471
|
+
<div id="crypt-pgp-panel" class="crypt-subtab-panel" hidden>
|
|
472
|
+
<div class="crypt-placeholder">
|
|
473
|
+
PGP workspace reserved for future import/decrypt tooling.
|
|
474
|
+
</div>
|
|
475
|
+
</div>
|
|
476
|
+
|
|
477
|
+
<div id="crypt-openssh-panel" class="crypt-subtab-panel" hidden>
|
|
478
|
+
<div class="crypt-placeholder">
|
|
479
|
+
OpenSSH workspace reserved for future key/session tooling.
|
|
480
|
+
</div>
|
|
481
|
+
</div>
|
|
482
|
+
</div>
|
|
483
|
+
<div id="keystore_box">
|
|
484
|
+
<div class="keystore-workspace-header">Local Keystore</div>
|
|
485
|
+
<div class="keystore-grid">
|
|
486
|
+
<div class="crypt-section">
|
|
487
|
+
<div class="crypt-section-title">Create / Update Entry</div>
|
|
488
|
+
<div class="keystore-mode-row">
|
|
489
|
+
<label for="crypt-keystore-mode">Keychain:</label>
|
|
490
|
+
<select id="crypt-keystore-mode">
|
|
491
|
+
<option value="session">Session auto keychain</option>
|
|
492
|
+
<option value="persistent">Persistent keychain</option>
|
|
493
|
+
</select>
|
|
494
|
+
</div>
|
|
495
|
+
<div
|
|
496
|
+
id="crypt-keystore-unlock-status"
|
|
497
|
+
role="status"
|
|
498
|
+
aria-live="polite"
|
|
499
|
+
>
|
|
500
|
+
Persistent keychain is unlocked for this app session.
|
|
501
|
+
</div>
|
|
502
|
+
<input
|
|
503
|
+
id="crypt-keystore-label"
|
|
504
|
+
type="text"
|
|
505
|
+
placeholder="Entry label (optional)"
|
|
506
|
+
/>
|
|
507
|
+
<textarea
|
|
508
|
+
id="crypt-credential-input"
|
|
509
|
+
placeholder="Paste credentials/secrets/notes to store locally..."
|
|
510
|
+
></textarea>
|
|
511
|
+
<div class="crypt-actions-row">
|
|
512
|
+
<button id="crypt-save-cert-keystore-btn">Save cert</button>
|
|
513
|
+
<button id="crypt-save-key-keystore-btn">Save key</button>
|
|
514
|
+
<button id="crypt-save-secret-keystore-btn">
|
|
515
|
+
Save secret
|
|
516
|
+
</button>
|
|
517
|
+
</div>
|
|
518
|
+
</div>
|
|
519
|
+
|
|
520
|
+
<div class="crypt-section">
|
|
521
|
+
<div class="crypt-section-title">Saved Entries</div>
|
|
522
|
+
<select id="crypt-keystore-list" size="10"></select>
|
|
523
|
+
<div class="crypt-actions-row">
|
|
524
|
+
<button id="crypt-load-keystore-entry-btn">
|
|
525
|
+
Load selected
|
|
526
|
+
</button>
|
|
527
|
+
<button id="crypt-open-link-btn">Open link</button>
|
|
528
|
+
<button id="crypt-send-to-persistent-btn">
|
|
529
|
+
Send to persistent
|
|
530
|
+
</button>
|
|
531
|
+
<button id="crypt-delete-keystore-entry-btn">
|
|
532
|
+
Delete selected
|
|
533
|
+
</button>
|
|
534
|
+
</div>
|
|
535
|
+
<pre id="crypt-keystore-details">
|
|
536
|
+
No keystore entries saved.</pre
|
|
537
|
+
>
|
|
538
|
+
</div>
|
|
539
|
+
</div>
|
|
540
|
+
</div>
|
|
541
|
+
<div id="save-session-dialog" hidden>
|
|
542
|
+
<div class="crypt-keystore-unlock-content">
|
|
543
|
+
<div class="crypt-section-title">Save Session</div>
|
|
544
|
+
<div id="save-session-dialog-description">
|
|
545
|
+
Do you want to save your PacketSnitch session?
|
|
546
|
+
</div>
|
|
547
|
+
<div class="crypt-actions-row">
|
|
548
|
+
<button id="save-session-save-btn">Save Session</button>
|
|
549
|
+
<button id="save-session-discard-btn">Don't Save</button>
|
|
550
|
+
<button id="save-session-cancel-btn">Cancel</button>
|
|
551
|
+
</div>
|
|
552
|
+
</div>
|
|
553
|
+
</div>
|
|
554
|
+
<div id="crypt-keystore-unlock-dialog" hidden>
|
|
555
|
+
<div class="crypt-keystore-unlock-content">
|
|
556
|
+
<div class="crypt-section-title" id="crypt-keystore-unlock-title">
|
|
557
|
+
Unlock Keychain
|
|
558
|
+
</div>
|
|
559
|
+
<div id="crypt-keystore-unlock-description">
|
|
560
|
+
Enter password to unlock the persistent keychain.
|
|
561
|
+
</div>
|
|
562
|
+
<input
|
|
563
|
+
id="crypt-keystore-unlock-password"
|
|
564
|
+
type="password"
|
|
565
|
+
placeholder="Enter keychain password"
|
|
566
|
+
/>
|
|
567
|
+
<input
|
|
568
|
+
id="crypt-keystore-unlock-password-confirm"
|
|
569
|
+
type="password"
|
|
570
|
+
placeholder="Confirm keychain password"
|
|
571
|
+
hidden
|
|
572
|
+
/>
|
|
573
|
+
<div class="crypt-actions-row">
|
|
574
|
+
<button id="crypt-keystore-unlock-confirm-btn">Unlock</button>
|
|
575
|
+
<button id="crypt-keystore-unlock-cancel-btn">Cancel</button>
|
|
576
|
+
</div>
|
|
577
|
+
</div>
|
|
578
|
+
</div>
|
|
579
|
+
<div id="crypt-keystore-manual-uri-dialog" hidden>
|
|
580
|
+
<div class="crypt-keystore-unlock-content">
|
|
581
|
+
<div class="crypt-section-title">Add URI/URL to Keystore</div>
|
|
582
|
+
<div id="crypt-keystore-manual-uri-description">
|
|
583
|
+
Enter URI/URL to add to the session keychain.
|
|
584
|
+
</div>
|
|
585
|
+
<input
|
|
586
|
+
id="crypt-keystore-manual-uri-input"
|
|
587
|
+
type="text"
|
|
588
|
+
placeholder="https://example.com/path"
|
|
589
|
+
/>
|
|
590
|
+
<div class="crypt-actions-row">
|
|
591
|
+
<button id="crypt-keystore-manual-uri-confirm-btn">Save</button>
|
|
592
|
+
<button id="crypt-keystore-manual-uri-cancel-btn">Cancel</button>
|
|
593
|
+
</div>
|
|
594
|
+
</div>
|
|
595
|
+
</div>
|
|
596
|
+
<div id="list_box">
|
|
597
|
+
<div id="list_search_bar">
|
|
598
|
+
<input
|
|
599
|
+
id="list-search"
|
|
600
|
+
type="text"
|
|
601
|
+
placeholder="Filter list by host, IP, port, or protocol..."
|
|
602
|
+
/>
|
|
603
|
+
<label id="list-group-streams-wrap">
|
|
604
|
+
<input id="list-group-streams" type="checkbox" />
|
|
605
|
+
Group by stream
|
|
606
|
+
</label>
|
|
607
|
+
</div>
|
|
608
|
+
<div id="list_content"></div>
|
|
609
|
+
</div>
|
|
610
|
+
<div id="notes_box">
|
|
611
|
+
<div class="notes-header">Selected Note</div>
|
|
612
|
+
<div class="notes-editor-wrap">
|
|
613
|
+
<textarea
|
|
614
|
+
id="notes-editor"
|
|
615
|
+
placeholder="Select a note from the right panel..."
|
|
616
|
+
></textarea>
|
|
617
|
+
</div>
|
|
618
|
+
</div>
|
|
619
|
+
<div id="packetInfoPane">
|
|
620
|
+
<div id="timestamp"></div>
|
|
621
|
+
|
|
622
|
+
<div id="welcome">Processing packets...</div>
|
|
623
|
+
<div id="ip2ip"></div>
|
|
624
|
+
<div id="moredata"></div>
|
|
625
|
+
<div id="protoInfo">
|
|
626
|
+
<div id="protoInfoHead" class="PHead">Network Information</div>
|
|
627
|
+
<div id="protoInfoProto" class="infop">
|
|
628
|
+
<div id="protoInfoSrc" class="infop"></div>
|
|
629
|
+
<div id="protoInfoDest" class="infop"></div>
|
|
630
|
+
</div>
|
|
631
|
+
</div>
|
|
632
|
+
<div id="data-types">
|
|
633
|
+
<div id="dataTypesHead" class="PHead">Data Type List</div>
|
|
634
|
+
|
|
635
|
+
<div id="dataTypesPane">
|
|
636
|
+
<div id="type-head" class="infop">
|
|
637
|
+
<div id="mime-type"></div>
|
|
638
|
+
<div id="charset"></div>
|
|
639
|
+
<div id="encoding"></div>
|
|
640
|
+
<div id="language"></div>
|
|
641
|
+
</div>
|
|
642
|
+
<ul id="types-list"></ul>
|
|
643
|
+
</div>
|
|
644
|
+
</div>
|
|
645
|
+
<div id="active-recon">
|
|
646
|
+
<div id="protcols-head" class="PHead">Protcols Used</div>
|
|
647
|
+
<div id="protocols" class="active">Unavilable</div>
|
|
648
|
+
<div id="comp-head" class="PHead">Compression Information</div>
|
|
649
|
+
<div id="comp" class="active">Unavailable for datatype</div>
|
|
650
|
+
<div id="crypt-head" class="PHead">Encryption Details</div>
|
|
651
|
+
<div id="crypt" class="active">Unavailable for datatype</div>
|
|
652
|
+
<div id="website-head" class="PHead">Website Title</div>
|
|
653
|
+
<div id="website" class="active">Unavailable</div>
|
|
654
|
+
<div id="dns-head" class="PHead">DNS</div>
|
|
655
|
+
<div id="dns" class="active">Unavailable</div>
|
|
656
|
+
</div>
|
|
657
|
+
</div>
|
|
658
|
+
<div id="packetPayloadPane" class="main_panel">
|
|
659
|
+
<div id="payloadascii">
|
|
660
|
+
<div id="asciiText"></div>
|
|
661
|
+
<div id="asciiOffset"></div>
|
|
662
|
+
</div>
|
|
663
|
+
<div id="hexg" class="hexGrid"></div>
|
|
664
|
+
</div>
|
|
665
|
+
</div>
|
|
666
|
+
<div class="sidebar" id="sidedata">
|
|
667
|
+
<div id="rightside">
|
|
668
|
+
<div id="rightside-data">
|
|
669
|
+
<div class="sidebar-header">Datagram Frame</div>
|
|
670
|
+
<div id="sidedatatable" class="sidetable"></div>
|
|
671
|
+
<div class="sidebar-header">Location</div>
|
|
672
|
+
<div id="locationtable" class="sidetable"></div>
|
|
673
|
+
<div id="sideloctable" class="sidetable"></div>
|
|
674
|
+
<div class="sidebar-header">Payload Entropy</div>
|
|
675
|
+
<div id="entropybox"></div>
|
|
676
|
+
</div>
|
|
677
|
+
<div id="rightside-notes" hidden>
|
|
678
|
+
<div class="sidebar-header">Notes</div>
|
|
679
|
+
<select id="notes-select" size="10"></select>
|
|
680
|
+
<div class="notes-controls-row notes-sidebar-actions">
|
|
681
|
+
<label for="notes-new-color">Color</label>
|
|
682
|
+
<input type="color" id="notes-new-color" value="#4caf50" />
|
|
683
|
+
</div>
|
|
684
|
+
<textarea
|
|
685
|
+
id="notes-new-input"
|
|
686
|
+
placeholder="Write a new note..."
|
|
687
|
+
></textarea>
|
|
688
|
+
<div class="notes-controls-row notes-sidebar-actions">
|
|
689
|
+
<button id="notes-add-btn">Add note</button>
|
|
690
|
+
<button id="notes-remove-btn">Remove selected</button>
|
|
691
|
+
</div>
|
|
692
|
+
<div class="notes-controls-row notes-sidebar-actions">
|
|
693
|
+
<button id="notes-save-btn">Save notes file</button>
|
|
694
|
+
</div>
|
|
695
|
+
</div>
|
|
696
|
+
</div>
|
|
697
|
+
</div>
|
|
698
|
+
</div>
|
|
699
|
+
<div class="footer">
|
|
700
|
+
<div id="status" class="footer">Status: Ready</div>
|
|
701
|
+
<div id="copyright" class="footer">oxasploits, llc (© 2026)</div>
|
|
702
|
+
</div>
|
|
703
|
+
</div>
|
|
704
|
+
|
|
705
|
+
<div id="activity-log-panel">
|
|
706
|
+
<div id="activity-log-header">
|
|
707
|
+
<span>Activity Log</span>
|
|
708
|
+
<button id="close-log-btn" aria-label="Close log">×</button>
|
|
709
|
+
</div>
|
|
710
|
+
<div id="activity-log-path"></div>
|
|
711
|
+
<div id="activity-log-entries"></div>
|
|
712
|
+
<div id="activity-log-search-bar">
|
|
713
|
+
<input
|
|
714
|
+
id="activity-log-search"
|
|
715
|
+
type="text"
|
|
716
|
+
placeholder="Search log entries..."
|
|
717
|
+
/>
|
|
718
|
+
</div>
|
|
719
|
+
</div>
|
|
720
|
+
|
|
721
|
+
<div id="convert-context-menu" role="menu" aria-label="Context menu" hidden>
|
|
722
|
+
<div id="ctx-copy-submenu" class="ctx-submenu">
|
|
723
|
+
<button id="ctx-copy-branch" class="ctx-branch" type="button">
|
|
724
|
+
Copy...
|
|
725
|
+
</button>
|
|
726
|
+
<div class="ctx-submenu-panel">
|
|
727
|
+
<button id="ctx-copy" role="menuitem">Copy</button>
|
|
728
|
+
<button id="convert-context-copy-hex" type="button">Copy Hex</button>
|
|
729
|
+
<button id="convert-context-copy-ascii" type="button">
|
|
730
|
+
Copy ASCII
|
|
731
|
+
</button>
|
|
732
|
+
<button id="convert-context-copy-raw" type="button">
|
|
733
|
+
Copy Raw payload
|
|
734
|
+
</button>
|
|
735
|
+
<button id="ctx-copy-cookie-jar" role="menuitem">
|
|
736
|
+
Copy Cookie Jar
|
|
737
|
+
</button>
|
|
738
|
+
</div>
|
|
739
|
+
</div>
|
|
740
|
+
<button id="ctx-paste" role="menuitem">Paste</button>
|
|
741
|
+
<hr id="convert-context-divider" class="ctx-divider" />
|
|
742
|
+
<div id="ctx-convert-submenu" class="ctx-submenu">
|
|
743
|
+
<button id="ctx-convert-branch" class="ctx-branch" type="button">
|
|
744
|
+
Convert to...
|
|
745
|
+
</button>
|
|
746
|
+
<div class="ctx-submenu-panel">
|
|
747
|
+
<button id="convert-context-hex" type="button">Load as Hex</button>
|
|
748
|
+
<button id="convert-context-binary" type="button">
|
|
749
|
+
Load as Binary
|
|
750
|
+
</button>
|
|
751
|
+
<button id="convert-context-base64" type="button">
|
|
752
|
+
Load as Base64
|
|
753
|
+
</button>
|
|
754
|
+
<button id="convert-context-decimal" type="button">
|
|
755
|
+
Load as Decimal bytes
|
|
756
|
+
</button>
|
|
757
|
+
<button id="convert-context-ascii" type="button">
|
|
758
|
+
Load as ASCII / UTF-8
|
|
759
|
+
</button>
|
|
760
|
+
<button id="convert-context-load-cursor-ascii" type="button">
|
|
761
|
+
Load Cursor ASCII into Conv tab
|
|
762
|
+
</button>
|
|
763
|
+
<button id="convert-context-load-payload" type="button">
|
|
764
|
+
Load Raw Payload into Conv tab
|
|
765
|
+
</button>
|
|
766
|
+
</div>
|
|
767
|
+
</div>
|
|
768
|
+
<div id="ctx-notes-submenu" class="ctx-submenu">
|
|
769
|
+
<button id="ctx-notes-branch" class="ctx-branch" type="button">
|
|
770
|
+
Send to Notes...
|
|
771
|
+
</button>
|
|
772
|
+
<div class="ctx-submenu-panel">
|
|
773
|
+
<button id="ctx-notes-send-data" type="button">
|
|
774
|
+
Send selected/context data
|
|
775
|
+
</button>
|
|
776
|
+
<button id="ctx-notes-send-conv-output" type="button">
|
|
777
|
+
Send Conv converted output
|
|
778
|
+
</button>
|
|
779
|
+
<button id="ctx-notes-send-conv-hashes" type="button">
|
|
780
|
+
Send Conv hashes
|
|
781
|
+
</button>
|
|
782
|
+
</div>
|
|
783
|
+
</div>
|
|
784
|
+
<div id="ctx-filter-submenu" class="ctx-submenu">
|
|
785
|
+
<button id="ctx-filter-branch" class="ctx-branch" type="button">
|
|
786
|
+
Add to filter...
|
|
787
|
+
</button>
|
|
788
|
+
<div class="ctx-submenu-panel">
|
|
789
|
+
<div id="ctx-filter-and-submenu" class="ctx-submenu">
|
|
790
|
+
<button id="ctx-filter-and-branch" class="ctx-branch" type="button">
|
|
791
|
+
Add with &&...
|
|
792
|
+
</button>
|
|
793
|
+
<div class="ctx-submenu-panel">
|
|
794
|
+
<button id="ctx-filter-ip" type="button">Add IP to Filter</button>
|
|
795
|
+
<button id="ctx-filter-port" type="button">
|
|
796
|
+
Add Port to Filter
|
|
797
|
+
</button>
|
|
798
|
+
<button id="ctx-filter-mac" type="button">
|
|
799
|
+
Add MAC to Filter
|
|
800
|
+
</button>
|
|
801
|
+
<button id="ctx-filter-protocol" type="button">
|
|
802
|
+
Add Protocol to Filter
|
|
803
|
+
</button>
|
|
804
|
+
<button id="ctx-filter-mime" type="button">
|
|
805
|
+
Add MIME Type to Filter
|
|
806
|
+
</button>
|
|
807
|
+
</div>
|
|
808
|
+
</div>
|
|
809
|
+
<div id="ctx-filter-or-submenu" class="ctx-submenu">
|
|
810
|
+
<button id="ctx-filter-or-branch" class="ctx-branch" type="button">
|
|
811
|
+
Add with ||...
|
|
812
|
+
</button>
|
|
813
|
+
<div class="ctx-submenu-panel">
|
|
814
|
+
<button id="ctx-filter-or-ip" type="button">
|
|
815
|
+
Add IP to Filter
|
|
816
|
+
</button>
|
|
817
|
+
<button id="ctx-filter-or-port" type="button">
|
|
818
|
+
Add Port to Filter
|
|
819
|
+
</button>
|
|
820
|
+
<button id="ctx-filter-or-mac" type="button">
|
|
821
|
+
Add MAC to Filter
|
|
822
|
+
</button>
|
|
823
|
+
<button id="ctx-filter-or-protocol" type="button">
|
|
824
|
+
Add Protocol to Filter
|
|
825
|
+
</button>
|
|
826
|
+
<button id="ctx-filter-or-mime" type="button">
|
|
827
|
+
Add MIME Type to Filter
|
|
828
|
+
</button>
|
|
829
|
+
</div>
|
|
830
|
+
</div>
|
|
831
|
+
<div id="ctx-filter-not-submenu" class="ctx-submenu">
|
|
832
|
+
<button id="ctx-filter-not-branch" class="ctx-branch" type="button">
|
|
833
|
+
is not...
|
|
834
|
+
</button>
|
|
835
|
+
<div class="ctx-submenu-panel">
|
|
836
|
+
<button id="ctx-filter-not-ip" type="button">
|
|
837
|
+
Add IP to Filter
|
|
838
|
+
</button>
|
|
839
|
+
<button id="ctx-filter-not-port" type="button">
|
|
840
|
+
Add Port to Filter
|
|
841
|
+
</button>
|
|
842
|
+
<button id="ctx-filter-not-mac" type="button">
|
|
843
|
+
Add MAC to Filter
|
|
844
|
+
</button>
|
|
845
|
+
<button id="ctx-filter-not-protocol" type="button">
|
|
846
|
+
Add Protocol to Filter
|
|
847
|
+
</button>
|
|
848
|
+
<button id="ctx-filter-not-mime" type="button">
|
|
849
|
+
Add MIME Type to Filter
|
|
850
|
+
</button>
|
|
851
|
+
</div>
|
|
852
|
+
</div>
|
|
853
|
+
<div id="ctx-filter-parentheses-submenu" class="ctx-submenu">
|
|
854
|
+
<button
|
|
855
|
+
id="ctx-filter-parentheses-branch"
|
|
856
|
+
class="ctx-branch"
|
|
857
|
+
type="button"
|
|
858
|
+
>
|
|
859
|
+
Parentheses...
|
|
860
|
+
</button>
|
|
861
|
+
<div class="ctx-submenu-panel">
|
|
862
|
+
<button id="ctx-filter-paren-open" type="button">Append (</button>
|
|
863
|
+
<button id="ctx-filter-paren-close" type="button">
|
|
864
|
+
Append )
|
|
865
|
+
</button>
|
|
866
|
+
<button id="ctx-filter-paren-wrap" type="button">
|
|
867
|
+
Wrap current query with (...)
|
|
868
|
+
</button>
|
|
869
|
+
</div>
|
|
870
|
+
</div>
|
|
871
|
+
<hr class="ctx-divider" />
|
|
872
|
+
<div id="ctx-filter-clear-submenu" class="ctx-submenu">
|
|
873
|
+
<button
|
|
874
|
+
id="ctx-filter-clear-branch"
|
|
875
|
+
class="ctx-branch"
|
|
876
|
+
type="button"
|
|
877
|
+
>
|
|
878
|
+
Clear and...
|
|
879
|
+
</button>
|
|
880
|
+
<div class="ctx-submenu-panel">
|
|
881
|
+
<button id="ctx-filter-clear-ip" type="button">
|
|
882
|
+
Add IP to Filter
|
|
883
|
+
</button>
|
|
884
|
+
<button id="ctx-filter-clear-port" type="button">
|
|
885
|
+
Add Port to Filter
|
|
886
|
+
</button>
|
|
887
|
+
<button id="ctx-filter-clear-mac" type="button">
|
|
888
|
+
Add MAC to Filter
|
|
889
|
+
</button>
|
|
890
|
+
<button id="ctx-filter-clear-protocol" type="button">
|
|
891
|
+
Add Protocol to Filter
|
|
892
|
+
</button>
|
|
893
|
+
<button id="ctx-filter-clear-mime" type="button">
|
|
894
|
+
Add MIME Type to Filter
|
|
895
|
+
</button>
|
|
896
|
+
</div>
|
|
897
|
+
</div>
|
|
898
|
+
</div>
|
|
899
|
+
</div>
|
|
900
|
+
<div id="ctx-keystore-submenu" class="ctx-submenu">
|
|
901
|
+
<button id="ctx-keystore-branch" class="ctx-branch" type="button">
|
|
902
|
+
Add to Keystore...
|
|
903
|
+
</button>
|
|
904
|
+
<div class="ctx-submenu-panel">
|
|
905
|
+
<div id="ctx-keystore-password-submenu" class="ctx-submenu">
|
|
906
|
+
<button
|
|
907
|
+
id="ctx-keystore-password-branch"
|
|
908
|
+
class="ctx-branch"
|
|
909
|
+
type="button"
|
|
910
|
+
>
|
|
911
|
+
As Password
|
|
912
|
+
</button>
|
|
913
|
+
<div class="ctx-submenu-panel">
|
|
914
|
+
<button id="ctx-keystore-password-session" type="button">
|
|
915
|
+
Session keychain
|
|
916
|
+
</button>
|
|
917
|
+
<button id="ctx-keystore-password-persistent" type="button">
|
|
918
|
+
Persistent keychain
|
|
919
|
+
</button>
|
|
920
|
+
</div>
|
|
921
|
+
</div>
|
|
922
|
+
<div id="ctx-keystore-key-submenu" class="ctx-submenu">
|
|
923
|
+
<button
|
|
924
|
+
id="ctx-keystore-key-branch"
|
|
925
|
+
class="ctx-branch"
|
|
926
|
+
type="button"
|
|
927
|
+
>
|
|
928
|
+
As Private Key
|
|
929
|
+
</button>
|
|
930
|
+
<div class="ctx-submenu-panel">
|
|
931
|
+
<button id="ctx-keystore-key-session" type="button">
|
|
932
|
+
Session keychain
|
|
933
|
+
</button>
|
|
934
|
+
<button id="ctx-keystore-key-persistent" type="button">
|
|
935
|
+
Persistent keychain
|
|
936
|
+
</button>
|
|
937
|
+
</div>
|
|
938
|
+
</div>
|
|
939
|
+
<div id="ctx-keystore-cert-submenu" class="ctx-submenu">
|
|
940
|
+
<button
|
|
941
|
+
id="ctx-keystore-cert-branch"
|
|
942
|
+
class="ctx-branch"
|
|
943
|
+
type="button"
|
|
944
|
+
>
|
|
945
|
+
As Certificate
|
|
946
|
+
</button>
|
|
947
|
+
<div class="ctx-submenu-panel">
|
|
948
|
+
<button id="ctx-keystore-cert-session" type="button">
|
|
949
|
+
Session keychain
|
|
950
|
+
</button>
|
|
951
|
+
<button id="ctx-keystore-cert-persistent" type="button">
|
|
952
|
+
Persistent keychain
|
|
953
|
+
</button>
|
|
954
|
+
</div>
|
|
955
|
+
</div>
|
|
956
|
+
<div id="ctx-keystore-cookie-submenu" class="ctx-submenu">
|
|
957
|
+
<button
|
|
958
|
+
id="ctx-keystore-cookie-branch"
|
|
959
|
+
class="ctx-branch"
|
|
960
|
+
type="button"
|
|
961
|
+
>
|
|
962
|
+
As Session Cookie
|
|
963
|
+
</button>
|
|
964
|
+
<div class="ctx-submenu-panel">
|
|
965
|
+
<button id="ctx-keystore-cookie-session" type="button">
|
|
966
|
+
Session keychain
|
|
967
|
+
</button>
|
|
968
|
+
<button id="ctx-keystore-cookie-persistent" type="button">
|
|
969
|
+
Persistent keychain
|
|
970
|
+
</button>
|
|
971
|
+
</div>
|
|
972
|
+
</div>
|
|
973
|
+
<div id="ctx-keystore-uri-submenu" class="ctx-submenu">
|
|
974
|
+
<button id="ctx-keystore-uri-branch" class="ctx-branch" type="button">
|
|
975
|
+
As URI / URL (Manual)
|
|
976
|
+
</button>
|
|
977
|
+
<div class="ctx-submenu-panel">
|
|
978
|
+
<button id="ctx-keystore-uri-session" type="button">
|
|
979
|
+
Session keychain
|
|
980
|
+
</button>
|
|
981
|
+
<button id="ctx-keystore-uri-persistent" type="button">
|
|
982
|
+
Persistent keychain
|
|
983
|
+
</button>
|
|
984
|
+
</div>
|
|
985
|
+
</div>
|
|
986
|
+
</div>
|
|
987
|
+
</div>
|
|
988
|
+
<hr id="convert-context-save-divider" class="ctx-divider" />
|
|
989
|
+
<div id="ctx-export-submenu" class="ctx-submenu">
|
|
990
|
+
<button id="ctx-export-branch" class="ctx-branch" type="button">
|
|
991
|
+
Export...
|
|
992
|
+
</button>
|
|
993
|
+
<div class="ctx-submenu-panel">
|
|
994
|
+
<button id="ctx-save-json" role="menuitem">Save Session</button>
|
|
995
|
+
<button id="ctx-export-packet" role="menuitem">Export Packet</button>
|
|
996
|
+
<button id="ctx-export-payload" role="menuitem">
|
|
997
|
+
Export Payload
|
|
998
|
+
</button>
|
|
999
|
+
<button id="ctx-save-cookie-jar" role="menuitem">
|
|
1000
|
+
Save to cookie_jar.txt
|
|
1001
|
+
</button>
|
|
1002
|
+
</div>
|
|
1003
|
+
</div>
|
|
1004
|
+
<div id="ctx-http-file-submenu" class="ctx-submenu">
|
|
1005
|
+
<button id="ctx-http-file-branch" class="ctx-branch" type="button">
|
|
1006
|
+
HTTP File...
|
|
1007
|
+
</button>
|
|
1008
|
+
<div class="ctx-submenu-panel">
|
|
1009
|
+
<button id="ctx-http-file-save" type="button">
|
|
1010
|
+
Save body to file
|
|
1011
|
+
</button>
|
|
1012
|
+
<button id="ctx-http-file-load" type="button">
|
|
1013
|
+
Load body into Conv tab
|
|
1014
|
+
</button>
|
|
1015
|
+
<button id="ctx-http-file-preview" type="button">
|
|
1016
|
+
Preview in browser
|
|
1017
|
+
</button>
|
|
1018
|
+
</div>
|
|
1019
|
+
</div>
|
|
1020
|
+
</div>
|
|
1021
|
+
|
|
1022
|
+
<!-- Installation complete screen – shown only on first run after a new version install -->
|
|
1023
|
+
<div id="install-screen">
|
|
1024
|
+
<div id="install-screen-inner">
|
|
1025
|
+
<div id="install-title">PacketSnitch Installation Complete</div>
|
|
1026
|
+
<div id="install-version"></div>
|
|
1027
|
+
<hr class="install-divider" />
|
|
1028
|
+
<div id="install-files-heading">Installed Files</div>
|
|
1029
|
+
<ul id="install-file-list"></ul>
|
|
1030
|
+
<hr class="install-divider" />
|
|
1031
|
+
<div id="install-ollama-status"></div>
|
|
1032
|
+
<button id="install-continue-btn">Continue</button>
|
|
1033
|
+
</div>
|
|
1034
|
+
</div>
|
|
1035
|
+
</body>
|
|
1036
|
+
</html>
|