Capturing SSL/TLS plaintext without a CA certificate using eBPF. Supported on Linux/Android kernels for amd64/arm64.
456 matches across 5 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .golangci.yml | 1 | # This configuration file is not a recommendation. |
| LOW | kern/boringssl_na_kern.c | 1 | #ifndef ECAPTURE_BORINGSSL_NA_KERN_H |
| LOW | kern/boringssl_na_kern.c | 21 | |
| LOW | kern/boringssl_na_kern.c | 41 | #define SSL_CIPHER_ST_ID 0x10 |
| LOW | kern/boringssl_na_kern.c | 61 | // bssl::SSL_HANDSHAKE->hints |
| LOW | kern/gnutls_3_7_0_kern.c | 1 | #ifndef ECAPTURE_GNUTLS_3_7_0_KERN_H |
| LOW | kern/gnutls_3_7_0_kern.c | 21 | // gnutls_session_int->key.proto.tls13.e_ckey |
| LOW | kern/gnutls_3_8_7_kern.c | 1 | #ifndef ECAPTURE_GNUTLS_3_8_7_KERN_H |
| LOW | kern/gnutls_3_8_7_kern.c | 21 | // gnutls_session_int->key.proto.tls13.e_ckey |
| LOW | kern/openssl_3_4_0_kern.c | 1 | #ifndef ECAPTURE_OPENSSL_3_4_0_KERN_H |
| LOW | kern/openssl_3_4_0_kern.c | 21 | |
| LOW | kern/openssl_3_4_0_kern.c | 41 | #define SSL_CIPHER_ST_ID 0x18 |
| LOW | kern/openssl_3_4_0_kern.c | 61 | // bio_st->num |
| LOW | kern/openssl_3_5_0_kern.c | 1 | #ifndef ECAPTURE_OPENSSL_3_5_0_KERN_H |
| LOW | kern/openssl_3_5_0_kern.c | 21 | |
| LOW | kern/openssl_3_5_0_kern.c | 41 | #define SSL_CIPHER_ST_ID 0x18 |
| LOW | kern/openssl_3_5_0_kern.c | 61 | // bio_st->num |
| LOW | kern/openssl_masterkey_3.2.h | 1 | // Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved. |
| LOW | kern/openssl_3_2_4_kern.c | 1 | #ifndef ECAPTURE_OPENSSL_3_2_4_KERN_H |
| LOW | kern/openssl_3_2_4_kern.c | 21 | |
| LOW | kern/openssl_3_2_4_kern.c | 41 | #define SSL_CIPHER_ST_ID 0x18 |
| LOW | kern/openssl_3_2_4_kern.c | 61 | // bio_st->num |
| LOW | kern/tc.h | 1 | // Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved. |
| LOW | kern/openssl_masterkey.h | 1 | // Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved. |
| LOW | kern/bash_kern.c | 1 | // Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved. |
| LOW | kern/boringssl_a_15_kern.c | 1 | #ifndef ECAPTURE_BORINGSSL_A_15_KERN_H |
| LOW | kern/boringssl_a_15_kern.c | 21 | |
| LOW | kern/boringssl_a_15_kern.c | 41 | #define SSL_CIPHER_ST_ID 0x10 |
| LOW | kern/boringssl_a_15_kern.c | 61 | // bssl::SSL_HANDSHAKE->hints |
| LOW | kern/gnutls_3_6_13_kern.c | 1 | #ifndef ECAPTURE_GNUTLS_3_6_13_KERN_H |
| LOW | kern/gnutls_3_6_13_kern.c | 21 | // gnutls_session_int->key.proto.tls13.e_ckey |
| LOW | kern/postgres_kern.c | 1 | // Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved. |
| LOW | kern/openssl_3_3_2_kern.c | 1 | #ifndef ECAPTURE_OPENSSL_3_3_2_KERN_H |
| LOW | kern/openssl_3_3_2_kern.c | 21 | |
| LOW | kern/openssl_3_3_2_kern.c | 41 | #define SSL_CIPHER_ST_ID 0x18 |
| LOW | kern/openssl_3_3_2_kern.c | 61 | // bio_st->num |
| LOW | kern/gotls_kern.c | 1 | // Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved. |
| LOW | kern/gotls_kern.c | 141 | return 0; |
| LOW | kern/openssl.h | 1 | // Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved. |
| LOW | kern/ecapture.h | 1 | // Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved. |
| LOW | kern/ecapture.h | 41 | * supported by CLANG. |
| LOW | kern/ecapture.h | 61 | #include <bpf/bpf_helpers.h> |
| LOW | kern/openssl_1_1_0a_kern.c | 1 | #ifndef ECAPTURE_OPENSSL_1_1_0_A_KERN_H |
| LOW | kern/openssl_1_1_0a_kern.c | 21 | |
| LOW | kern/openssl_1_1_0a_kern.c | 41 | #define BIO_ST_NUM 0x28 |
| LOW | kern/nspr_kern.c | 1 | // Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved. |
| LOW | kern/openssl_1_1_1a_kern.c | 1 | #ifndef ECAPTURE_OPENSSL_1_1_1_A_KERN_H |
| LOW | kern/openssl_1_1_1a_kern.c | 21 | |
| LOW | kern/openssl_1_1_1a_kern.c | 41 | #define SSL_ST_EARLY_SECRET 0x134 |
| LOW | kern/openssl_1_1_1a_kern.c | 61 | // bio_st->method |
| LOW | kern/openssl_3_0_12_kern.c | 1 | #ifndef ECAPTURE_OPENSSL_3_0_12_KERN_H |
| LOW | kern/openssl_3_0_12_kern.c | 21 | |
| LOW | kern/openssl_3_0_12_kern.c | 41 | #define SSL_ST_EARLY_SECRET 0x544 |
| LOW | kern/openssl_3_0_12_kern.c | 61 | // bio_st->method |
| LOW | kern/openssl_3_3_0_kern.c | 1 | #ifndef ECAPTURE_OPENSSL_3_3_0_KERN_H |
| LOW | kern/openssl_3_3_0_kern.c | 21 | |
| LOW | kern/openssl_3_3_0_kern.c | 41 | #define SSL_CIPHER_ST_ID 0x18 |
| LOW | kern/openssl_3_3_0_kern.c | 61 | // bio_st->num |
| LOW | kern/openssl_3_2_0_kern.c | 1 | #ifndef ECAPTURE_OPENSSL_3_2_0_KERN_H |
| LOW | kern/openssl_3_2_0_kern.c | 21 | |
| 293 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | test/e2e/gnutls_e2e_test.sh | 138 | # Check if ecapture is still running |
| LOW | test/e2e/gnutls_e2e_test.sh | 173 | # Check if ecapture log has content |
| LOW | test/e2e/common.sh | 31 | # Check if running as root |
| LOW | test/e2e/common.sh | 61 | # Check if command exists |
| LOW | test/e2e/common.sh | 216 | # Check if a binary is linked against a specific library |
| LOW | test/e2e/mysql_advanced_test.sh | 41 | # Check if MySQL is available |
| LOW | test/e2e/bash_e2e_test.sh | 62 | # Check if bash has readline |
| LOW | test/e2e/bash_e2e_test.sh | 88 | # Check if still running |
| LOW | test/e2e/bash_e2e_test.sh | 139 | # Check if we captured some bash commands |
| LOW | test/e2e/mysql_e2e_test.sh | 49 | # Check if MySQL is available |
| LOW | test/e2e/mysql_e2e_test.sh | 53 | # Check if mysql client is available |
| LOW | test/e2e/mysql_e2e_test.sh | 59 | # Check if MySQL server is running |
| LOW | test/e2e/mysql_e2e_test.sh | 79 | # Check if MySQL is available |
| LOW | test/e2e/mysql_e2e_test.sh | 120 | # Check if still running |
| LOW | test/e2e/mysql_e2e_test.sh | 168 | # Check if we captured some MySQL activity |
| LOW | test/e2e/tls_text_advanced_test.sh | 343 | # Check if output contains hex patterns (0x or just hex digits in specific format) |
| LOW | test/e2e/zsh_e2e_test.sh | 58 | # Check if zsh is installed |
| LOW | test/e2e/zsh_e2e_test.sh | 88 | # Check if still running |
| LOW | test/e2e/zsh_e2e_test.sh | 136 | # Check if we captured some zsh commands |
| LOW | test/e2e/tls_keylog_advanced_test.sh | 320 | # Check if line starts with CLIENT_RANDOM or other valid key types |
| LOW | test/e2e/edge_cases_test.sh | 184 | # Check if process terminated gracefully |
| LOW | test/e2e/edge_cases_test.sh | 219 | # Check if process terminated gracefully |
| LOW | test/e2e/tls_e2e_test.sh | 75 | # Check if still running |
| LOW | test/e2e/tls_e2e_test.sh | 164 | # Check if still running |
| LOW | test/e2e/tls_e2e_test.sh | 189 | # Check if it's a valid pcapng file by checking magic bytes (0x0A0D0D0A at offset 0) |
| LOW | test/e2e/tls_e2e_test.sh | 230 | # Check if still running |
| LOW | test/e2e/tls_e2e_test.sh | 264 | # Check if it contains CLIENT_RANDOM entries (standard keylog format) |
| LOW | test/e2e/tls_e2e_test.sh | 382 | # Check if any test failed |
| LOW | test/e2e/gotls_e2e_test.sh | 131 | # Check if ecapture is still running |
| LOW | test/e2e/gotls_e2e_test.sh | 160 | # Check if ecapture log has content |
| LOW | test/e2e/ecaptureq_e2e_test.sh | 255 | # Check if client is running (meaning it connected and is receiving) |
| LOW | test/e2e/ecaptureq_e2e_test.sh | 365 | # Check if any test failed |
| LOW | test/e2e/postgres_e2e_test.sh | 49 | # Check if PostgreSQL is available |
| LOW | test/e2e/postgres_e2e_test.sh | 53 | # Check if psql client is available |
| LOW | test/e2e/postgres_e2e_test.sh | 59 | # Check if PostgreSQL server is running |
| LOW | test/e2e/postgres_e2e_test.sh | 79 | # Check if PostgreSQL is available |
| LOW | test/e2e/postgres_e2e_test.sh | 119 | # Check if still running |
| LOW | test/e2e/postgres_e2e_test.sh | 167 | # Check if we captured some PostgreSQL activity |
| LOW | test/e2e/android/build_android_tests.sh | 34 | # Check if running on Linux |
| LOW | test/e2e/android/android_tls_e2e_test.sh | 100 | # Check if ecapture is running |
| LOW | test/e2e/android/android_tls_e2e_test.sh | 199 | # Check if ecapture is running |
| LOW | test/e2e/android/android_tls_e2e_test.sh | 220 | # Check if pcap file exists on device |
| LOW | test/e2e/android/android_tls_e2e_test.sh | 329 | # Check if Go client exists locally and deploy it |
| LOW | test/e2e/android/android_tls_e2e_test.sh | 349 | # Check if ecapture binary exists locally |
| LOW | test/e2e/android/android_bash_e2e_test.sh | 93 | # Check if ecapture is running |
| LOW | test/e2e/android/android_bash_e2e_test.sh | 289 | # Check if sh/bash is available on device and record its path |
| LOW | test/e2e/android/android_bash_e2e_test.sh | 306 | # Check if ecapture binary exists locally |
| LOW | test/e2e/android/common_android.sh | 32 | # Check if running on macOS (development environment) |
| LOW | test/e2e/android/common_android.sh | 37 | # Check if ADB is available |
| LOW | test/e2e/android/common_android.sh | 49 | # Check if Android device/emulator is connected |
| LOW | test/e2e/android/common_android.sh | 137 | # Check if device is rooted |
| LOW | test/e2e/android/common_android.sh | 179 | # Set SELinux to permissive mode |
| LOW | test/e2e/android/common_android.sh | 324 | # Check if process is running on Android device |
| LOW | test/e2e/android/common_android.sh | 362 | # Check if file exists on Android device |
| LOW | test/e2e/android/common_android.sh | 492 | # Check if resolv.conf has IPv6 loopback as nameserver |
| LOW | test/e2e/android/common_android.sh | 561 | # Check if command exists on Android device |
| LOW | test/e2e/android/android_gotls_e2e_test.sh | 119 | # Check if ecapture is running |
| LOW | test/e2e/android/android_gotls_e2e_test.sh | 195 | # Check if ecapture is running |
| LOW | test/e2e/android/android_gotls_e2e_test.sh | 316 | # Check if ecapture binary exists locally |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | kern/boringssl_const.h | 11 | // ── Android ≤ 15 (TLS 1.3 secrets are private raw arrays) ───────────────── |
| MEDIUM | kern/boringssl_const.h | 31 | // ──────────────────────────────────────────────────────────────────────────── |
| MEDIUM | kern/boringssl_const.h | 34 | // ── Android 16+: three root values differ from older versions ─────────────── |
| MEDIUM | kern/boringssl_const.h | 46 | // ── Android ≤ 15: original layout ─────────────────────────────────────────── |
| MEDIUM | kern/boringssl_const.h | 59 | // ── Downstream offsets: identical formula for all versions ────────────────── |
| MEDIUM | internal/probe/gotls/event_test.go | 79 | // ── DecodeFromBytes ────────────────────────────────────────────────────────── |
| MEDIUM | internal/probe/gotls/event_test.go | 271 | // ── tuple() ───────────────────────────────────────────────────────────────── |
| MEDIUM | internal/probe/gotls/event_test.go | 316 | // ── String() / StringHex() ─────────────────────────────────────────────────── |
| MEDIUM | internal/probe/gotls/event_test.go | 406 | // ── UUID() ─────────────────────────────────────────────────────────────────── |
| MEDIUM | internal/probe/gotls/event_test.go | 454 | // ── Clone / Type / Validate ───────────────────────────────────────────────── |
| MEDIUM | internal/probe/gotls/event_test.go | 511 | // ── helper functions ───────────────────────────────────────────────────────── |
| MEDIUM | internal/probe/gotls/event_test.go | 555 | // ── IsRead / IsWrite ───────────────────────────────────────────────────────── |
| MEDIUM | internal/probe/gotls/event_test.go | 575 | // ── GetData / GetDataLen ───────────────────────────────────────────────────── |
| MEDIUM | internal/probe/gotls/event_test.go | 595 | // ── DecodeFromBytes round-trip ─────────────────────────────────────────────── |
| MEDIUM | utils/boringssl-offset.c | 42 | // ─── Type-trait probes ─────────────────────────────────────────────────────── |
| MEDIUM | utils/boringssl-offset.c | 66 | // ─── Output helpers ────────────────────────────────────────────────────────── |
| MEDIUM | utils/boringssl-offset.c | 83 | // ─── Per-field emitters (partial template specialisation) ──────────────────── |
| MEDIUM | utils/boringssl-offset.c | 149 | // ─── Main ──────────────────────────────────────────────────────────────────── |
| MEDIUM | utils/boringssl-offset.c | 155 | // ── ssl_st ──────────────────────────────────────────────────────────────── |
| MEDIUM | utils/boringssl-offset.c | 162 | // ── ssl_session_st ──────────────────────────────────────────────────────── |
| MEDIUM | utils/boringssl-offset.c | 167 | // ── bio / cipher ────────────────────────────────────────────────────────── |
| MEDIUM | utils/boringssl-offset.c | 173 | // ── bssl::SSL3_STATE ────────────────────────────────────────────────────── |
| MEDIUM | utils/boringssl-offset.c | 180 | // ── bssl::SSL_HANDSHAKE ─────────────────────────────────────────────────── |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | kern/gotls_kern.c | 113 | // Step 1: tls.Conn.conn is the first field (offset 0), it's an interface (16 bytes: type ptr + data ptr) |
| LOW | kern/gotls_kern.c | 121 | // Step 2: net.TCPConn.conn (embedded field at offset 0) |
| LOW | test/e2e/ecaptureq_e2e_test.sh | 96 | # Step 1: Start eCapture with ecaptureQ WebSocket server |
| LOW | test/e2e/ecaptureq_e2e_test.sh | 113 | # Step 2: Connect ecaptureq_client |
| LOW | test/e2e/ecaptureq_e2e_test.sh | 132 | # Step 3: Generate TLS traffic via curl |
| LOW | test/e2e/ecaptureq_e2e_test.sh | 144 | # Step 4: Stop processes gracefully |
| LOW | test/e2e/ecaptureq_e2e_test.sh | 162 | # Step 5: Verify results |
| LOW | test/e2e/android/setup_android_env.sh | 19 | # Step 1: Check ADB |
| LOW | test/e2e/android/setup_android_env.sh | 26 | # Step 2: Check device connection |
| LOW | test/e2e/android/setup_android_env.sh | 43 | # Step 3: Display device info |
| LOW | test/e2e/android/setup_android_env.sh | 62 | # Step 4: Check Android version |
| LOW | test/e2e/android/setup_android_env.sh | 70 | # Step 5: Check kernel |
| LOW | test/e2e/android/setup_android_env.sh | 78 | # Step 6: Check architecture |
| LOW | test/e2e/android/setup_android_env.sh | 86 | # Step 7: Check root access |
| LOW | test/e2e/android/setup_android_env.sh | 100 | # Step 8: Check SELinux |
| LOW | test/e2e/android/setup_android_env.sh | 117 | # Step 9: Fix DNS resolution |
| LOW | test/e2e/android/setup_android_env.sh | 121 | # Step 10: Check available tools |
| LOW | test/e2e/android/setup_android_env.sh | 159 | # Step 11: Check binaries |
| LOW | test/e2e/android/setup_android_env.sh | 213 | # Step 12: Summary |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | internal/probe/openssl/config.go | 347 | // Perhaps we can utilize the Android Version to choose a specific version of boringssl. |
| MEDIUM | .github/workflows/e2e.yml | 108 | # Run comprehensive e2e tests with sudo |