You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Automate and document release process for Rust, Python, Wireshark, and Zeek components (#248)
* Separate release tags
* Add python app release
* Add checkout action before creating a release
* Fix prefix in release creation action
* Filter triggering paths
* Use conventional directory name in release archive
* Add release process section to documentation
* Update release asset names in documentation
* Add release instructions to component specific documentation
-`ja4-python-vX.Y.Z.tar.gz` (contains the full `python/` directory)
166
+
-**Wireshark:**
167
+
-`ja4.so.linux`, `ja4.so.macos`, `ja4.dll` (attached to a release named like `wireshark-vX.Y.Z`)
162
168
163
-
For example, `ja4-v0.18.5-x86_64-unknown-linux-musl.tar.gz` for Linux or `ja4-v0.18.5-aarch64-apple-darwin.tar.gz` for macOS ARM64. Choose the appropriate file for your system.
169
+
Choose the appropriate file for your system and component.
164
170
165
171
### Installing tshark
166
172
@@ -209,6 +215,52 @@ This database is under very active development. Expect orders of magnitude more
209
215
210
216
A sample [ja4plus-mapping.csv](./ja4plus-mapping.csv) is also available for quick reference.
211
217
218
+
## Release Process
219
+
220
+
221
+
JA4+ uses GitHub Actions to automate releases for its Rust, Python, Wireshark, and Zeek components. Releases are created by pushing a tag with a specific prefix to the repository, except for Zeek, which uses a pure semantic version (semver) tag. Release assets are named as follows:
-**Wireshark:**`ja4.so.linux`, `ja4.so.macos`, `ja4.dll` (in a release named like `wireshark-vX.Y.Z`)
226
+
227
+
The following workflows are available:
228
+
229
+
-**Rust Release:**
230
+
Push a tag starting with `rust-`, e.g., `rust-v0.18.5`, to trigger a release of the Rust binaries. The workflow will build and upload release assets automatically.
231
+
232
+
-**Python Release:**
233
+
Push a tag starting with `python-`, e.g., `python-v0.1.0`, to trigger a release of the Python implementation. The workflow will create a tarball of the `python/` directory and publish it as a release asset.
234
+
235
+
-**Wireshark Plugin Release:**
236
+
Push a tag starting with `wireshark-`, e.g., `wireshark-v2025.09.03`, to trigger a release of the Wireshark plugin binaries for all supported platforms.
237
+
238
+
-**Zeek Release:**
239
+
Push a tag that is a pure semantic version (e.g., `v1.2.3`), with no prefix, to trigger a Zeek release. This will automatically create a release on [packages.zeek.org](https://packages.zeek.org/).
240
+
241
+
### How to Create a Release
242
+
243
+
1. Ensure your changes are merged into the `main` branch.
244
+
245
+
2. Create and push a tag for the component you want to release:
246
+
- For Rust, Python, or Wireshark, use the appropriate prefix (e.g., `rust-v0.18.5`, `python-v0.1.0`, `wireshark-v2025.09.03`).
247
+
- For Zeek, use a pure semver tag (e.g., `v1.2.3`).
248
+
249
+
Example:
250
+
```sh
251
+
git tag v1.2.3
252
+
git push origin v1.2.3
253
+
```
254
+
(For Zeek)
255
+
256
+
Or, for Rust:
257
+
```sh
258
+
git tag rust-v0.18.5
259
+
git push origin rust-v0.18.5
260
+
```
261
+
262
+
3. The corresponding GitHub Actions workflow will run and publish the release assets automatically. For Zeek, the release will appear on [packages.zeek.org](https://packages.zeek.org/).
263
+
212
264
## JA4+ Details
213
265
214
266
JA4+ is a set of simple yet powerful network fingerprints for multiple protocols that are both human and machine readable, facilitating improved threat-hunting and security analysis. If you are unfamiliar with network fingerprinting, I encourage you to read my blogs releasing JA3 [here](https://medium.com/salesforce-engineering/tls-fingerprinting-with-ja3-and-ja3s-247362855967), JARM [here](https://medium.com/salesforce-engineering/easily-identify-malicious-servers-on-the-internet-with-jarm-e095edac525a), and this excellent blog by Fastly on the [State of TLS Fingerprinting](https://www.fastly.com/blog/the-state-of-tls-fingerprinting-whats-working-what-isnt-and-whats-next) which outlines the history of the aforementioned along with their problems. JA4+ brings dedicated support, keeping the methods up-to-date as the industry changes.
@@ -24,6 +25,7 @@ For more details on JA4+ and its implementations in other open-source tools (Rus
24
25
-[JSON Output Format](#json-output-format)
25
26
-[Using a Key File for TLS Decryption](#using-a-key-file-for-tls-decryption)
26
27
-[Testing](#testing)
28
+
-[Creating a Release](#creating-a-release)
27
29
-[License](#license)
28
30
29
31
## Dependencies
@@ -73,6 +75,14 @@ sudo apt install python3
73
75
74
76
[Download](https://www.python.org/downloads/windows/) and install Python 3 using the Windows installer.
75
77
78
+
## Release Assets
79
+
80
+
Release assets for the Python implementation are named as follows:
81
+
82
+
-`ja4-python-vX.Y.Z.tar.gz`
83
+
84
+
This archive contains the full `python/` directory and is attached to a release named like `python-vX.Y.Z`.
85
+
76
86
## Running JA4+
77
87
78
88
Once `tshark` and Python 3 are installed, you can run `ja4.py` as follows:
@@ -222,6 +232,15 @@ For details on generating an SSL key log file, see:
222
232
223
233
Sample PCAP files for testing `ja4.py` are available in the [`pcap`](../pcap/) directory. These files cover various network protocols and scenarios, including TLS, QUIC, HTTP, SSH, and edge cases. They can be used to verify expected output and assess fingerprinting accuracy.
224
234
235
+
## Creating a Release
236
+
237
+
To create a Python release, push a tag starting with `python-`, for example:
238
+
239
+
```sh
240
+
git tag python-v0.1.0
241
+
git push origin python-v0.1.0
242
+
```
243
+
225
244
## License
226
245
227
246
See the [Licensing](../README.md#licensing) section in the repo root. We are committed to work with vendors and open source projects to help implement JA4+ into those tools. Please contact [email protected] with any questions.
Copy file name to clipboardExpand all lines: rust/README.md
+13-5Lines changed: 13 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,6 +23,7 @@ For more details on JA4+ and its implementations in other open-source tools (Pyt
23
23
-[`ja4x` output](#ja4x-output)
24
24
-[Using a Key File for TLS Decryption](#using-a-key-file-for-tls-decryption)
25
25
-[Testing](#testing)
26
+
-[Creating a Release](#creating-a-release)
26
27
-[License](#license)
27
28
28
29
## Dependencies
@@ -60,13 +61,11 @@ Download the latest JA4 binaries from the [Releases](https://github.com/FoxIO-LL
60
61
61
62
### Release Assets
62
63
63
-
JA4 binaries are provided as compressed archives named according to the target platform, following a pattern like:
64
+
Release assets are named as follows:
64
65
65
-
```txt
66
-
ja4-vX.Y.Z-<architecture>-<platform>.tar.gz
67
-
```
66
+
-`ja4-vX.Y.Z-<architecture>-<platform>.tar.gz` (e.g., `ja4-v0.18.5-x86_64-unknown-linux-musl.tar.gz` for Linux, `ja4-v0.18.5-aarch64-apple-darwin.tar.gz` for macOS ARM64)
68
67
69
-
For example, `ja4-v0.18.5-x86_64-unknown-linux-musl.tar.gz` for Linux or `ja4-v0.18.5-aarch64-apple-darwin.tar.gz` for macOS ARM64. Choose the appropriate file for your system.
68
+
These files are attached to a release named like `rust-vX.Y.Z`. Choose the appropriate file for your system.
70
69
71
70
## Building
72
71
@@ -189,6 +188,15 @@ Run automated tests with:
189
188
cargo test
190
189
```
191
190
191
+
## Creating a Release
192
+
193
+
To create a Rust release, push a tag starting with `rust-`, for example:
194
+
195
+
```sh
196
+
git tag rust-v0.18.5
197
+
git push origin rust-v0.18.5
198
+
```
199
+
192
200
## License
193
201
194
202
See the [Licensing](../README.md#licensing) section in the repo root. We are committed to work with vendors and open source projects to help implement JA4+ into those tools. Please contact [email protected] with any questions.
Copy file name to clipboardExpand all lines: wireshark/README.md
+17-1Lines changed: 17 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -31,6 +31,7 @@ For more details on JA4+ and its implementations in other open-source tools (Pyt
31
31
-[Usage in TShark](#usage-in-tshark)
32
32
-[Using a Key File for TLS Decryption](#using-a-key-file-for-tls-decryption)
33
33
-[Testing](#testing)
34
+
-[Creating a Release](#creating-a-release)
34
35
-[License](#license)
35
36
36
37
## Binaries
@@ -39,7 +40,13 @@ Download the latest JA4+ Wireshark plugin binaries from the [Releases](https://g
39
40
40
41
### Release Assets
41
42
42
-
Plugin binaries are provided as dynamic libraries named according to the target platform. For example, `ja4.so.linux` for Linux or `ja4.dll` for Windows. Choose the appropriate file for your system.
43
+
Release assets are named as follows:
44
+
45
+
-`ja4.so.linux` (Linux)
46
+
-`ja4.so.macos` (macOS)
47
+
-`ja4.dll` (Windows)
48
+
49
+
These files are attached to a release named like `wireshark-vX.Y.Z`. Choose the appropriate file for your system.
43
50
44
51
### Previous Wireshark Versions
45
52
@@ -261,6 +268,15 @@ cd wireshark/test
261
268
pytest
262
269
```
263
270
271
+
## Creating a Release
272
+
273
+
To create a Wireshark plugin release, push a tag starting with `wireshark-`, for example:
274
+
275
+
```sh
276
+
git tag wireshark-v2025.09.03
277
+
git push origin wireshark-v2025.09.03
278
+
```
279
+
264
280
## License
265
281
266
282
See the [Licensing](../README.md#licensing) section in the repo root. We are committed to work with vendors and open source projects to help implement JA4+ into those tools. Please contact [email protected] with any questions.
0 commit comments