diff --git a/README.md b/README.md
index 899b704..b22c297 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
# friTap
-![version](https://img.shields.io/badge/version-1.1.0.1-blue) [![PyPi](https://badge.fury.io/py/friTap.svg)](https://pypi.org/project/friTap)
+![version](https://img.shields.io/badge/version-1.1.0.5-blue) [![PyPi](https://badge.fury.io/py/friTap.svg)](https://pypi.org/project/friTap)
The goal of this project is to help researchers to analyze traffic encapsulated in SSL or TLS. For details have a view into the [OSDFCon webinar slides](assets/friTapOSDFConwebinar.pdf) or in [this blog post](https://lolcads.github.io/posts/2022/08/fritap/).
@@ -51,6 +51,47 @@ $ sudo -E /home/daniel/.local/bin/friTap
More examples on using friTap can be found in the [USAGE.md](./USAGE.md). A detailed introduction using friTap on Android is under [EXAMPLE.md](./EXAMPLE.md) as well.
+
+## Problems
+
+The absence of traffic or incomplete traffic capture in the resulting pcap file (-p ) may stem from various causes. Before submitting a new issue, consider attempting the following solutions:
+
+### Default Socket Information
+
+There might be instances where friTap fails to retrieve socket information. In such scenarios, running friTap with default socket information (`--enable_default_fd`) could resolve the issue. This approach utilizes default socket information (127.0.0.1:1234 to 127.0.0.1:2345) for all traffic when the file descriptor (FD) cannot be used to obtain socket details:
+
+```bash
+friTap -m --enable_default_fd -p plaintext.pcap com.example.app
+```
+
+### Handling Subprocess Traffic
+
+Traffic originating from a subprocess could be another contributing factor. To capture this traffic, friTap can leverage Frida's spawn gating feature, which intercepts newly spawned processes using the `--enable_spawn_gating` parameter:
+
+```bash
+friTap -m -p log.pcap --enable_spawn_gating com.example.app
+```
+
+### Library Support exist only for Key Extraction
+
+In cases where the target library solely supports key extraction (cf. the table below), you can utilize the `-k ` parameter alongside full packet capture:
+
+```bash
+friTap -m -p log.pcap --full_capture -k keys.log com.example.app
+```
+
+### Seeking Further Assistance
+
+If these approaches do not address your issue, please create a detailed issue report to aid in troubleshooting. To facilitate a more effective diagnosis, include the following information in your report:
+
+- The operating system and its version
+- The specific application encountering the issue or a comparable application that exhibits similar problems
+- The output from executing friTap with the specified parameters, augmented with friTap's debug output:
+```bash
+friTap -do -v com.example.app
+```
+
+
## Supported SSL/TLS implementations and corresponding logging capabilities
```markdown
@@ -83,6 +124,7 @@ More examples on using friTap can be found in the [USAGE.md](./USAGE.md). A deta
- scapy (`python3 -m pip install scapy`)
- watchdog (`python3 -m pip install watchdog`)
- importlib.resources (`python3 -m pip install importlib-resources`)
+- for hooking on Android ensure that the `adb`-command is in your PATH
## Planned features
diff --git a/agent/android/android_agent.ts b/agent/android/android_agent.ts
index 47c8582..2658cd1 100644
--- a/agent/android/android_agent.ts
+++ b/agent/android/android_agent.ts
@@ -1,12 +1,12 @@
-import { module_library_mapping } from "../shared/shared_structures.js"
-import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js"
-import { log, devlog } from "../util/log.js"
-import { gnutls_execute } from "./gnutls_android.js"
-import { wolfssl_execute } from "./wolfssl_android.js"
-import { nss_execute } from "./nss_android.js"
-import { mbedTLS_execute } from "./mbedTLS_android.js"
-import { boring_execute } from "./openssl_boringssl_android.js"
-import { java_execute} from "./android_java_tls_libs.js"
+import { module_library_mapping } from "../shared/shared_structures.js";
+import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js";
+import { log, devlog } from "../util/log.js";
+import { gnutls_execute } from "./gnutls_android.js";
+import { wolfssl_execute } from "./wolfssl_android.js";
+import { nss_execute } from "./nss_android.js";
+import { mbedTLS_execute } from "./mbedTLS_android.js";
+import { boring_execute } from "./openssl_boringssl_android.js";
+import { java_execute} from "./android_java_tls_libs.js";
var plattform_name = "linux";
diff --git a/agent/android/android_java_tls_libs.ts b/agent/android/android_java_tls_libs.ts
index 6217acb..cbfcc3d 100644
--- a/agent/android/android_java_tls_libs.ts
+++ b/agent/android/android_java_tls_libs.ts
@@ -1,6 +1,6 @@
-import { log } from "../util/log.js"
-import { execute as bouncy_execute } from "./bouncycastle.js"
-import { SSL_Java } from "../ssl_lib/java_ssl_libs.js"
+import { log } from "../util/log.js";
+import { execute as bouncy_execute } from "./bouncycastle.js";
+import { SSL_Java } from "../ssl_lib/java_ssl_libs.js";
export class SSL_Java_Android extends SSL_Java {
diff --git a/agent/android/bouncycastle.ts b/agent/android/bouncycastle.ts
index db39dd4..56e4b60 100644
--- a/agent/android/bouncycastle.ts
+++ b/agent/android/bouncycastle.ts
@@ -1,5 +1,5 @@
-import { log } from "../util/log.js"
-import { byteArrayToString, byteArrayToNumber, getAttribute, reflectionByteArrayToString } from "../shared/shared_functions.js"
+import { log } from "../util/log.js";
+import { byteArrayToString, byteArrayToNumber, getAttribute, reflectionByteArrayToString } from "../shared/shared_functions.js";
export function execute() {
setTimeout(function () {
Java.perform(function () {
diff --git a/agent/android/conscrypt.ts b/agent/android/conscrypt.ts
index 8ee8ecd..cfc399c 100644
--- a/agent/android/conscrypt.ts
+++ b/agent/android/conscrypt.ts
@@ -1,7 +1,7 @@
-import { log } from "../util/log.js"
+import { log } from "../util/log.js";
import { getAndroidVersion } from "../util/process_infos.js";
-function findProviderInstallerFromClassloaders(currentClassLoader: Java.Wrapper, backupImplementation: any) {
+function findProviderInstallerImplFromClassloaders(currentClassLoader: Java.Wrapper, backupImplementation: any) : Java.Wrapper | null {
var providerInstallerImpl = null
var classLoaders = Java.enumerateClassLoadersSync()
@@ -30,6 +30,35 @@ function findProviderInstallerFromClassloaders(currentClassLoader: Java.Wrapper,
return providerInstallerImpl
}
+function findProviderInstallerFromClassloaders(currentClassLoader: Java.Wrapper, backupImplementation: any) : Java.Wrapper | null {
+
+ var providerInstaller = null
+ var classLoaders = Java.enumerateClassLoadersSync()
+ for (var cl of classLoaders) {
+ try {
+ var classFactory = Java.ClassFactory.get(cl)
+ providerInstaller = classFactory.use("com.google.android.gms.security.ProviderInstaller")
+ break
+ } catch (error) {
+ log("Error in hooking ProviderInstallerImpl")
+ console.log(error);
+ // On error we return null
+ }
+
+ }
+
+ var version = getAndroidVersion()
+ //log("is here the error")
+ //log(typeof version)
+
+ if (version <= 12){
+ //Revert the implementation to avoid an infinitloop of "Loadclass"
+ currentClassLoader.loadClass.overload("java.lang.String").implementation = backupImplementation
+ }
+
+ return providerInstaller
+}
+
export function execute() {
//We have to hook multiple entrypoints: ProviderInstallerImpl and ProviderInstaller
@@ -42,7 +71,7 @@ export function execute() {
let retval = this.loadClass(className)
if (className.endsWith("ProviderInstallerImpl")) {
log("Process is loading ProviderInstallerImpl")
- var providerInstallerImpl = findProviderInstallerFromClassloaders(javaClassLoader, backupImplementation)
+ var providerInstallerImpl = findProviderInstallerImplFromClassloaders(javaClassLoader, backupImplementation)
if (providerInstallerImpl === null) {
log("ProviderInstallerImpl could not be found, although it has been loaded")
} else {
@@ -67,9 +96,26 @@ export function execute() {
callback.onProviderInstalled()
}
} catch (error) {
- log("Some error in hooking the Providerinstaller")
- console.log(error);
- // As it is not available, do nothing
+ try {
+ // probably class wasn't loaded by the app's main class loader therefore we load it
+ var providerInstallerFromClassloder = findProviderInstallerFromClassloaders(javaClassLoader, backupImplementation)
+ if (providerInstallerFromClassloder === null) {
+ log("ProviderInstaller could not be found, although it has been loaded")
+ }else{
+ providerInstallerFromClassloder.installIfNeeded.implementation = function (context: any) {
+ log("Providerinstaller redirection/blocking")
+ }
+ providerInstallerFromClassloder.installIfNeededAsync.implementation = function (context: any, callback: any) {
+ log("Providerinstaller redirection/blocking")
+ callback.onProviderInstalled()
+ }
+ }
+ }catch (error) {
+ log("Some error in hooking the Providerinstaller")
+ console.log(error);
+ // As it is not available, do nothing
+ }
+
}
})
diff --git a/agent/android/gnutls_android.ts b/agent/android/gnutls_android.ts
index a5557ad..7f20187 100644
--- a/agent/android/gnutls_android.ts
+++ b/agent/android/gnutls_android.ts
@@ -1,5 +1,5 @@
-import {GnuTLS } from "../ssl_lib/gnutls.js"
+import {GnuTLS } from "../ssl_lib/gnutls.js";
import { socket_library } from "./android_agent.js";
export class GnuTLS_Linux extends GnuTLS {
diff --git a/agent/android/mbedTLS_android.ts b/agent/android/mbedTLS_android.ts
index f4c46fc..6ecc28c 100644
--- a/agent/android/mbedTLS_android.ts
+++ b/agent/android/mbedTLS_android.ts
@@ -1,5 +1,5 @@
-import {mbed_TLS } from "../ssl_lib/mbedTLS.js"
+import {mbed_TLS } from "../ssl_lib/mbedTLS.js";
import { socket_library } from "./android_agent.js";
export class mbed_TLS_Android extends mbed_TLS {
diff --git a/agent/android/nss_android.ts b/agent/android/nss_android.ts
index 11db3f3..bb87f11 100644
--- a/agent/android/nss_android.ts
+++ b/agent/android/nss_android.ts
@@ -1,5 +1,5 @@
-import {NSS } from "../ssl_lib/nss.js"
+import {NSS } from "../ssl_lib/nss.js";
import { socket_library } from "./android_agent.js";
export class NSS_Android extends NSS {
diff --git a/agent/android/openssl_boringssl_android.ts b/agent/android/openssl_boringssl_android.ts
index d19d08c..0e53073 100644
--- a/agent/android/openssl_boringssl_android.ts
+++ b/agent/android/openssl_boringssl_android.ts
@@ -1,5 +1,5 @@
-import {OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js"
+import {OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js";
import { socket_library } from "./android_agent.js";
export class OpenSSL_BoringSSL_Android extends OpenSSL_BoringSSL {
diff --git a/agent/android/wolfssl_android.ts b/agent/android/wolfssl_android.ts
index d2ad2c8..80a2ccd 100644
--- a/agent/android/wolfssl_android.ts
+++ b/agent/android/wolfssl_android.ts
@@ -1,7 +1,7 @@
import {WolfSSL } from "../ssl_lib/wolfssl.js";
import { socket_library } from "./android_agent.js";
-import { toHexString } from "../shared/shared_functions.js"
+import { toHexString } from "../shared/shared_functions.js";
export class WolfSSL_Android extends WolfSSL {
diff --git a/agent/ios/ios_agent.ts b/agent/ios/ios_agent.ts
index 83dca79..98d39be 100644
--- a/agent/ios/ios_agent.ts
+++ b/agent/ios/ios_agent.ts
@@ -1,7 +1,7 @@
-import { module_library_mapping } from "../shared/shared_structures.js"
-import { log, devlog } from "../util/log.js"
-import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js"
-import { boring_execute } from "./openssl_boringssl_ios.js"
+import { module_library_mapping } from "../shared/shared_structures.js";
+import { log, devlog } from "../util/log.js";
+import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js";
+import { boring_execute } from "./openssl_boringssl_ios.js";
var plattform_name = "darwin";
diff --git a/agent/ios/openssl_boringssl_ios.ts b/agent/ios/openssl_boringssl_ios.ts
index 2c5c396..611fdcc 100644
--- a/agent/ios/openssl_boringssl_ios.ts
+++ b/agent/ios/openssl_boringssl_ios.ts
@@ -1,7 +1,7 @@
-import {OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js"
+import {OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js";
import { socket_library } from "./ios_agent.js";
-import { log, devlog } from "../util/log.js"
+import { log, devlog } from "../util/log.js";
export class OpenSSL_BoringSSL_iOS extends OpenSSL_BoringSSL {
diff --git a/agent/linux/gnutls_linux.ts b/agent/linux/gnutls_linux.ts
index 885df9f..2f5b7b2 100644
--- a/agent/linux/gnutls_linux.ts
+++ b/agent/linux/gnutls_linux.ts
@@ -1,5 +1,5 @@
-import {GnuTLS } from "../ssl_lib/gnutls.js"
+import {GnuTLS } from "../ssl_lib/gnutls.js";
import { socket_library } from "./linux_agent.js";
export class GnuTLS_Linux extends GnuTLS {
diff --git a/agent/linux/linux_agent.ts b/agent/linux/linux_agent.ts
index 50ac8a1..6292333 100644
--- a/agent/linux/linux_agent.ts
+++ b/agent/linux/linux_agent.ts
@@ -1,12 +1,12 @@
-import { module_library_mapping } from "../shared/shared_structures.js"
-import { log, devlog } from "../util/log.js"
-import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js"
-import { gnutls_execute } from "./gnutls_linux.js"
-import { wolfssl_execute } from "./wolfssl_linux.js"
-import { nss_execute } from "./nss_linux.js"
-import { mbedTLS_execute } from "./mbedTLS_linux.js"
-import { boring_execute } from "./openssl_boringssl_linux.js"
-import { matrixSSL_execute } from "./matrixssl_linux.js"
+import { module_library_mapping } from "../shared/shared_structures.js";
+import { log, devlog } from "../util/log.js";
+import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js";
+import { gnutls_execute } from "./gnutls_linux.js";
+import { wolfssl_execute } from "./wolfssl_linux.js";
+import { nss_execute } from "./nss_linux.js";
+import { mbedTLS_execute } from "./mbedTLS_linux.js";
+import { boring_execute } from "./openssl_boringssl_linux.js";
+import { matrixSSL_execute } from "./matrixssl_linux.js";
var plattform_name = "linux";
var moduleNames: Array = getModuleNames()
diff --git a/agent/linux/matrixssl_linux.ts b/agent/linux/matrixssl_linux.ts
index 127182b..7d75c6c 100644
--- a/agent/linux/matrixssl_linux.ts
+++ b/agent/linux/matrixssl_linux.ts
@@ -1,5 +1,5 @@
-import {matrix_SSL } from "../ssl_lib/matrixssl.js"
+import {matrix_SSL } from "../ssl_lib/matrixssl.js";
import { socket_library } from "./linux_agent.js";
export class matrix_SSL_Linux extends matrix_SSL {
diff --git a/agent/linux/mbedTLS_linux.ts b/agent/linux/mbedTLS_linux.ts
index 5853348..80613d1 100644
--- a/agent/linux/mbedTLS_linux.ts
+++ b/agent/linux/mbedTLS_linux.ts
@@ -1,5 +1,5 @@
-import {mbed_TLS } from "../ssl_lib/mbedTLS.js"
+import {mbed_TLS } from "../ssl_lib/mbedTLS.js";
import { socket_library } from "./linux_agent.js";
export class mbed_TLS_Linux extends mbed_TLS {
diff --git a/agent/linux/nss_linux.ts b/agent/linux/nss_linux.ts
index 2193816..f9af6e1 100644
--- a/agent/linux/nss_linux.ts
+++ b/agent/linux/nss_linux.ts
@@ -1,7 +1,7 @@
-import {NSS } from "../ssl_lib/nss.js"
+import {NSS } from "../ssl_lib/nss.js";
import { socket_library } from "./linux_agent.js";
-import { log, devlog } from "../util/log.js"
+import { log, devlog } from "../util/log.js";
export class NSS_Linux extends NSS {
diff --git a/agent/linux/openssl_boringssl_linux.ts b/agent/linux/openssl_boringssl_linux.ts
index 1f29ab0..62ea0df 100644
--- a/agent/linux/openssl_boringssl_linux.ts
+++ b/agent/linux/openssl_boringssl_linux.ts
@@ -1,5 +1,5 @@
-import {OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js"
+import {OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js";
import { socket_library } from "./linux_agent.js";
export class OpenSSL_BoringSSL_Linux extends OpenSSL_BoringSSL {
diff --git a/agent/linux/wolfssl_linux.ts b/agent/linux/wolfssl_linux.ts
index 24ea5ed..76234e7 100644
--- a/agent/linux/wolfssl_linux.ts
+++ b/agent/linux/wolfssl_linux.ts
@@ -1,7 +1,7 @@
import {WolfSSL } from "../ssl_lib/wolfssl.js";
import { socket_library } from "./linux_agent.js";
-import { toHexString } from "../shared/shared_functions.js"
+import { toHexString } from "../shared/shared_functions.js";
export class WolfSSL_Linux extends WolfSSL {
diff --git a/agent/macos/macos_agent.ts b/agent/macos/macos_agent.ts
index b3e581f..96f0a78 100644
--- a/agent/macos/macos_agent.ts
+++ b/agent/macos/macos_agent.ts
@@ -1,8 +1,8 @@
-import { module_library_mapping } from "../shared/shared_structures.js"
-import { log, devlog } from "../util/log.js"
-import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js"
-import { boring_execute } from "./openssl_boringssl_macos.js"
+import { module_library_mapping } from "../shared/shared_structures.js";
+import { log, devlog } from "../util/log.js";
+import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js";
+import { boring_execute } from "./openssl_boringssl_macos.js";
var plattform_name = "darwin";
diff --git a/agent/macos/openssl_boringssl_macos.ts b/agent/macos/openssl_boringssl_macos.ts
index ab401a9..d39e735 100644
--- a/agent/macos/openssl_boringssl_macos.ts
+++ b/agent/macos/openssl_boringssl_macos.ts
@@ -1,5 +1,5 @@
-import {OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js"
+import {OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js";
import { socket_library } from "./macos_agent.js";
diff --git a/agent/misc/socket_tracer.ts b/agent/misc/socket_tracer.ts
index 6077630..1b59694 100644
--- a/agent/misc/socket_tracer.ts
+++ b/agent/misc/socket_tracer.ts
@@ -1,7 +1,7 @@
-import { log, devlog } from "../util/log.js"
-import { get_process_architecture } from "../util/process_infos.js"
-import { readAddresses, getPortsAndAddresses } from "../shared/shared_functions.js"
-
+import { log, devlog } from "../util/log.js";
+import { get_process_architecture } from "../util/process_infos.js";
+import { readAddresses, getPortsAndAddresses } from "../shared/shared_functions.js";
+import { enable_default_fd } from "../ssl_log.js";
export function execute(moduleName:string) {
@@ -57,7 +57,7 @@ Interceptor.attach(addresses["socket"],
return;
}
if(has_valid_socket_type(this.fd)){
- var message = getPortsAndAddresses(this.fd as number, false, addresses)
+ var message = getPortsAndAddresses(this.fd as number, false, addresses, enable_default_fd)
message["function"] = "Full_read"
message["contentType"] = "netlog"
socketFDs.set(this.fd, message["dst_addr"])
@@ -80,7 +80,7 @@ Interceptor.attach(addresses["connect"],
return;
}
if(has_valid_socket_type(this.fd)){
- var message = getPortsAndAddresses(this.fd as number, false, addresses)
+ var message = getPortsAndAddresses(this.fd as number, false, addresses, enable_default_fd)
message["function"] = "Full_read"
message["contentType"] = "netlog"
socketFDs.set(this.fd, message["dst_addr"])
@@ -100,7 +100,7 @@ Interceptor.attach(addresses["read"],
return;
}
if(has_valid_socket_type(this.fd)){
- var message = getPortsAndAddresses(this.fd as number, true, addresses)
+ var message = getPortsAndAddresses(this.fd as number, true, addresses, enable_default_fd)
message["function"] = "Full_read"
message["contentType"] = "netlog"
socketFDs.set(this.fd, message["src_addr"])
@@ -122,7 +122,7 @@ Interceptor.attach(addresses["recv"],
return;
}
if(has_valid_socket_type(this.fd)){
- var message = getPortsAndAddresses(this.fd as number, true, addresses)
+ var message = getPortsAndAddresses(this.fd as number, true, addresses, enable_default_fd)
message["function"] = "Full_read"
message["contentType"] = "netlog"
socketFDs.set(this.fd, message["src_addr"])
@@ -146,7 +146,7 @@ Interceptor.attach(addresses["recvfrom"],
return;
}
if(has_valid_socket_type(this.fd)){
- var message = getPortsAndAddresses(this.fd as number, true, addresses)
+ var message = getPortsAndAddresses(this.fd as number, true, addresses, enable_default_fd)
message["function"] = "Full_read"
message["contentType"] = "netlog"
socketFDs.set(this.fd, message["src_addr"])
@@ -168,7 +168,7 @@ Interceptor.attach(addresses["send"],
return;
}
if(has_valid_socket_type(this.fd)){
- var message = getPortsAndAddresses(this.fd as number, false, addresses)
+ var message = getPortsAndAddresses(this.fd as number, false, addresses, enable_default_fd)
message["function"] = "Full_write"
message["contentType"] = "netlog"
socketFDs.set(this.fd, message["dst_addr"])
@@ -188,7 +188,7 @@ Interceptor.attach(addresses["sendto"],
return;
}
if(has_valid_socket_type(this.fd)){
- var message = getPortsAndAddresses(this.fd as number, false, addresses)
+ var message = getPortsAndAddresses(this.fd as number, false, addresses, enable_default_fd)
message["function"] = "Full_write"
message["contentType"] = "netlog"
socketFDs.set(this.fd, message["dst_addr"])
@@ -207,7 +207,7 @@ Interceptor.attach(addresses["write"],
return;
}
if(has_valid_socket_type(this.fd)){
- var message = getPortsAndAddresses(this.fd as number, false, addresses)
+ var message = getPortsAndAddresses(this.fd as number, false, addresses, enable_default_fd)
message["function"] = "Full_write"
message["contentType"] = "netlog"
socketFDs.set(this.fd, message["dst_addr"])
@@ -225,7 +225,7 @@ if(ObjC.available){
return;
}
if(has_valid_socket_type(fd)){
- var message = getPortsAndAddresses(fd as number, false, addresses)
+ var message = getPortsAndAddresses(fd as number, false, addresses, enable_default_fd)
message["function"] = "Full_write"
message["contentType"] = "netlog"
socketFDs.set(this.fd, message["dst_addr"])
@@ -250,7 +250,7 @@ Interceptor.attach(Module.getExportByName("libsystem_kernel.dylib","read"),
return;
}
if(has_valid_socket_type(this.fd)){
- var message = getPortsAndAddresses(this.fd as number, true, addresses)
+ var message = getPortsAndAddresses(this.fd as number, true, addresses, enable_default_fd)
message["function"] = "Full_read"
message["contentType"] = "netlog"
socketFDs.set(this.fd, message["src_addr"])
diff --git a/agent/shared/shared_functions.ts b/agent/shared/shared_functions.ts
index 7f398ad..36f84c5 100644
--- a/agent/shared/shared_functions.ts
+++ b/agent/shared/shared_functions.ts
@@ -1,5 +1,5 @@
-import { log, devlog } from "../util/log.js"
-import { AF_INET, AF_INET6 } from "./shared_structures.js"
+import { log, devlog } from "../util/log.js";
+import { AF_INET, AF_INET6 } from "./shared_structures.js";
function wait_for_library_loaded(module_name: string){
@@ -143,14 +143,25 @@ export function readAddresses(library_method_mapping: { [key: string]: Array {
+ enable_default_fd = value.payload;
+});
+enable_default_fd_state.wait();
+
send("experimental")
const exp_recv_state = recv('experimental', value => {
experimental = value.payload;
diff --git a/agent/util/anti_root.ts b/agent/util/anti_root.ts
index 302612f..175939c 100644
--- a/agent/util/anti_root.ts
+++ b/agent/util/anti_root.ts
@@ -1,5 +1,5 @@
-import { log, devlog } from "./log.js"
-import { readAddresses, getBaseAddress } from "../shared/shared_functions.js"
+import { log, devlog } from "./log.js";
+import { readAddresses, getBaseAddress } from "../shared/shared_functions.js";
/*
* mostly taken from here: https://codeshare.frida.re/@dzonerzy/fridantiroot/
diff --git a/agent/util/mobile_device_file_upload.ts b/agent/util/mobile_device_file_upload.ts
index 5a93c90..49e226a 100644
--- a/agent/util/mobile_device_file_upload.ts
+++ b/agent/util/mobile_device_file_upload.ts
@@ -1,6 +1,6 @@
//import fs from 'frida-fs';
-import * as fs from "fs";
-import { isAndroid } from "./process_infos.js"
+import * as fs from "fs.js";
+import { isAndroid } from "./process_infos.js";
// converts a hexstring to a bytearray
diff --git a/agent/windows/gnutls_windows.ts b/agent/windows/gnutls_windows.ts
index 85cd67c..9bfdc10 100644
--- a/agent/windows/gnutls_windows.ts
+++ b/agent/windows/gnutls_windows.ts
@@ -1,5 +1,5 @@
-import {GnuTLS } from "../ssl_lib/gnutls.js"
+import {GnuTLS } from "../ssl_lib/gnutls.js";
import { socket_library } from "./windows_agent.js";
export class GnuTLS_Windows extends GnuTLS {
diff --git a/agent/windows/matrixssl_windows.ts b/agent/windows/matrixssl_windows.ts
index 2a5ac4c..0edb028 100644
--- a/agent/windows/matrixssl_windows.ts
+++ b/agent/windows/matrixssl_windows.ts
@@ -1,5 +1,5 @@
-import {matrix_SSL } from "../ssl_lib/matrixssl.js"
+import {matrix_SSL } from "../ssl_lib/matrixssl.js";
import { socket_library } from "./windows_agent.js";
export class matrix_SSL_Windows extends matrix_SSL {
diff --git a/agent/windows/mbedTLS_windows.ts b/agent/windows/mbedTLS_windows.ts
index 4d5dc3d..aff1c1e 100644
--- a/agent/windows/mbedTLS_windows.ts
+++ b/agent/windows/mbedTLS_windows.ts
@@ -1,5 +1,5 @@
-import {mbed_TLS } from "../ssl_lib/mbedTLS.js"
+import {mbed_TLS } from "../ssl_lib/mbedTLS.js";
import { socket_library } from "./windows_agent.js";
export class mbed_TLS_Windows extends mbed_TLS {
diff --git a/agent/windows/nss_windows.ts b/agent/windows/nss_windows.ts
index 6141d04..ffcbe4d 100644
--- a/agent/windows/nss_windows.ts
+++ b/agent/windows/nss_windows.ts
@@ -1,5 +1,5 @@
-import {NSS } from "../ssl_lib/nss.js"
+import {NSS } from "../ssl_lib/nss.js";
import { socket_library } from "./windows_agent.js";
export class NSS_Windows extends NSS {
diff --git a/agent/windows/openssl_boringssl_windows.ts b/agent/windows/openssl_boringssl_windows.ts
index 0e4f772..04f96f1 100644
--- a/agent/windows/openssl_boringssl_windows.ts
+++ b/agent/windows/openssl_boringssl_windows.ts
@@ -1,5 +1,5 @@
-import {OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js"
+import {OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js";
import { socket_library } from "./windows_agent.js";
export class OpenSSL_BoringSSL_Windows extends OpenSSL_BoringSSL {
diff --git a/agent/windows/sspi.ts b/agent/windows/sspi.ts
index c420524..f15da3e 100644
--- a/agent/windows/sspi.ts
+++ b/agent/windows/sspi.ts
@@ -1,6 +1,6 @@
-import { readAddresses, getBaseAddress } from "../shared/shared_functions.js"
+import { readAddresses, getBaseAddress } from "../shared/shared_functions.js";
import { socket_library } from "./windows_agent.js";
-import { devlog, log } from "../util/log.js"
+import { devlog, log } from "../util/log.js";
import { experimental, offsets } from "../ssl_log.js";
/*
diff --git a/agent/windows/windows_agent.ts b/agent/windows/windows_agent.ts
index ed38ec3..9ee47c6 100644
--- a/agent/windows/windows_agent.ts
+++ b/agent/windows/windows_agent.ts
@@ -1,13 +1,13 @@
-import { module_library_mapping } from "../shared/shared_structures.js"
-import { log, devlog } from "../util/log.js"
-import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js"
-import { sspi_execute } from "./sspi.js"
-import { boring_execute } from "./openssl_boringssl_windows.js"
-import { gnutls_execute } from "./gnutls_windows.js"
-import { mbedTLS_execute } from "./mbedTLS_windows.js"
-import { nss_execute } from "./nss_windows.js"
-import { wolfssl_execute } from "./wolfssl_windows.js"
-import { matrixSSL_execute } from "./matrixssl_windows.js"
+import { module_library_mapping } from "../shared/shared_structures.js";
+import { log, devlog } from "../util/log.js";
+import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js";
+import { sspi_execute } from "./sspi.js";
+import { boring_execute } from "./openssl_boringssl_windows.js";
+import { gnutls_execute } from "./gnutls_windows.js";
+import { mbedTLS_execute } from "./mbedTLS_windows.js";
+import { nss_execute } from "./nss_windows.js";
+import { wolfssl_execute } from "./wolfssl_windows.js";
+import { matrixSSL_execute } from "./matrixssl_windows.js";
var plattform_name = "windows";
diff --git a/create_legacy_agent/create_legacy_code.py b/create_legacy_agent/create_legacy_code.py
index 6378d17..83628f7 100755
--- a/create_legacy_agent/create_legacy_code.py
+++ b/create_legacy_agent/create_legacy_code.py
@@ -8,17 +8,19 @@
import sys
import shutil
-__version__ = "1.0.0"
+__version__ = "1.1.0.6"
agent_folder_path = "../agent"
def create_backup_dir():
shutil.copytree(agent_folder_path, 'agent_backup', dirs_exist_ok=True)
def undo_replacements():
+ print("[*] doing undo replacements")
shutil.rmtree(agent_folder_path)
shutil.copytree('agent_backup', agent_folder_path, dirs_exist_ok=True)
shutil.rmtree("agent_backup")
- shutil.rmtree("node_modules")
+ if os.path.exists("node_modules"):
+ shutil.rmtree("node_modules")
def replace_file_inplace(ts_file,search_expression,replace_expression):
@@ -47,18 +49,28 @@ def replace_pattern_on_files(agent_folder, search_expression, replace_expression
def invoke_frida_compile():
+ print("[*] running frida-compile for legacy script")
output = subprocess.run(['npm', 'install','.'], capture_output=True, text=True)
+
+ #command = ["frida-compile", "../agent/ssl_log.ts", "-o", "../friTap/_ssl_log_legacy.js"]
+ #output = subprocess.run(command, capture_output=True, text=True)
+
+ if output.returncode == 0:
+ print(output.stdout)
+ else:
+ print(output.stderr)
def create_legacy_agent_code(agent_folder,verbose):
- create_backup_dir()
- remove_js_extension(agent_folder_path,verbose)
- invoke_frida_compile()
- undo_replacements()
- #add_js_extension(agent_folder_path,verbose)
+ #create_backup_dir()
+ #remove_js_extension(agent_folder_path,verbose)
+ #invoke_frida_compile()
+ #undo_replacements()
+ add_js_extension(agent_folder_path,verbose)
def add_js_extension(agent_folder, verbose):
+ print("[*] add .js to the TypeScript import statements")
replace_pattern_on_files(agent_folder,"\";",".js\";",verbose,False)
class ArgParser(argparse.ArgumentParser):
diff --git a/create_legacy_agent/package.json b/create_legacy_agent/package.json
index 788e82e..295e51d 100644
--- a/create_legacy_agent/package.json
+++ b/create_legacy_agent/package.json
@@ -1,6 +1,6 @@
{
"name": "friTap",
- "version": "1.0.9.6",
+ "version": "1.1.0.5",
"description": "Frida agent for logging SSL traffic and extracting SSL keys",
"private": true,
"main": "agent/ssl_log.ts",
diff --git a/friTap/__init__.py b/friTap/__init__.py
index 40d8317..a5fb1eb 100755
--- a/friTap/__init__.py
+++ b/friTap/__init__.py
@@ -2,5 +2,5 @@
# -*- coding: utf-8 -*-
__author__ = "Daniel Baier, Francois Egner, Max Ufer"
-__version__ = "1.1.0.1"
+__version__ = "1.1.0.5"
debug = False # are we running in debug mode?
diff --git a/friTap/_ssl_log.js b/friTap/_ssl_log.js
index b81d2a6..1fa4876 100644
--- a/friTap/_ssl_log.js
+++ b/friTap/_ssl_log.js
@@ -1,88 +1,88 @@
📦
-1793 /agent/ssl_log.js.map
-2416 /agent/ssl_log.js
-2429 /agent/android/android_agent.js.map
+2040 /agent/ssl_log.js.map
+2622 /agent/ssl_log.js
+2443 /agent/android/android_agent.js.map
2834 /agent/android/android_agent.js
-923 /agent/android/android_java_tls_libs.js.map
+937 /agent/android/android_java_tls_libs.js.map
1150 /agent/android/android_java_tls_libs.js
-4347 /agent/android/bouncycastle.js.map
+4361 /agent/android/bouncycastle.js.map
5111 /agent/android/bouncycastle.js
-2095 /agent/android/conscrypt.js.map
-3134 /agent/android/conscrypt.js
-1060 /agent/android/gnutls_android.js.map
+3203 /agent/android/conscrypt.js.map
+5078 /agent/android/conscrypt.js
+1074 /agent/android/gnutls_android.js.map
1053 /agent/android/gnutls_android.js
-720 /agent/android/mbedTLS_android.js.map
+734 /agent/android/mbedTLS_android.js.map
917 /agent/android/mbedTLS_android.js
-1086 /agent/android/nss_android.js.map
+1100 /agent/android/nss_android.js.map
1185 /agent/android/nss_android.js
-1071 /agent/android/openssl_boringssl_android.js.map
+1085 /agent/android/openssl_boringssl_android.js.map
1120 /agent/android/openssl_boringssl_android.js
-2728 /agent/android/wolfssl_android.js.map
+2742 /agent/android/wolfssl_android.js.map
3492 /agent/android/wolfssl_android.js
-1774 /agent/ios/ios_agent.js.map
+1788 /agent/ios/ios_agent.js.map
2005 /agent/ios/ios_agent.js
-1899 /agent/ios/openssl_boringssl_ios.js.map
+1913 /agent/ios/openssl_boringssl_ios.js.map
2855 /agent/ios/openssl_boringssl_ios.js
-1054 /agent/linux/gnutls_linux.js.map
+1068 /agent/linux/gnutls_linux.js.map
1051 /agent/linux/gnutls_linux.js
-2183 /agent/linux/linux_agent.js.map
+2197 /agent/linux/linux_agent.js.map
2476 /agent/linux/linux_agent.js
-720 /agent/linux/matrixssl_linux.js.map
+734 /agent/linux/matrixssl_linux.js.map
921 /agent/linux/matrixssl_linux.js
-710 /agent/linux/mbedTLS_linux.js.map
+724 /agent/linux/mbedTLS_linux.js.map
911 /agent/linux/mbedTLS_linux.js
-3211 /agent/linux/nss_linux.js.map
+3225 /agent/linux/nss_linux.js.map
4241 /agent/linux/nss_linux.js
-1202 /agent/linux/openssl_boringssl_linux.js.map
+1216 /agent/linux/openssl_boringssl_linux.js.map
1229 /agent/linux/openssl_boringssl_linux.js
-2721 /agent/linux/wolfssl_linux.js.map
+2735 /agent/linux/wolfssl_linux.js.map
3486 /agent/linux/wolfssl_linux.js
-1784 /agent/macos/macos_agent.js.map
+1798 /agent/macos/macos_agent.js.map
2133 /agent/macos/macos_agent.js
-1578 /agent/macos/openssl_boringssl_macos.js.map
+1592 /agent/macos/openssl_boringssl_macos.js.map
2257 /agent/macos/openssl_boringssl_macos.js
-7578 /agent/shared/shared_functions.js.map
-9267 /agent/shared/shared_functions.js
-383 /agent/shared/shared_structures.js.map
+7928 /agent/shared/shared_functions.js.map
+9581 /agent/shared/shared_functions.js
+397 /agent/shared/shared_structures.js.map
201 /agent/shared/shared_structures.js
-6215 /agent/ssl_lib/gnutls.js.map
-7001 /agent/ssl_lib/gnutls.js
-2372 /agent/ssl_lib/java_ssl_libs.js.map
-4608 /agent/ssl_lib/java_ssl_libs.js
-5419 /agent/ssl_lib/matrixssl.js.map
-6615 /agent/ssl_lib/matrixssl.js
-6650 /agent/ssl_lib/mbedTLS.js.map
-6716 /agent/ssl_lib/mbedTLS.js
-29547 /agent/ssl_lib/nss.js.map
-49898 /agent/ssl_lib/nss.js
-8239 /agent/ssl_lib/openssl_boringssl.js.map
-9364 /agent/ssl_lib/openssl_boringssl.js
-4318 /agent/ssl_lib/wolfssl.js.map
-5108 /agent/ssl_lib/wolfssl.js
-14069 /agent/util/anti_root.js.map
+6437 /agent/ssl_lib/gnutls.js.map
+7566 /agent/ssl_lib/gnutls.js
+2725 /agent/ssl_lib/java_ssl_libs.js.map
+5235 /agent/ssl_lib/java_ssl_libs.js
+5469 /agent/ssl_lib/matrixssl.js.map
+6672 /agent/ssl_lib/matrixssl.js
+6700 /agent/ssl_lib/mbedTLS.js.map
+6773 /agent/ssl_lib/mbedTLS.js
+30916 /agent/ssl_lib/nss.js.map
+51655 /agent/ssl_lib/nss.js
+8421 /agent/ssl_lib/openssl_boringssl.js.map
+9735 /agent/ssl_lib/openssl_boringssl.js
+4454 /agent/ssl_lib/wolfssl.js.map
+5419 /agent/ssl_lib/wolfssl.js
+14083 /agent/util/anti_root.js.map
17984 /agent/util/anti_root.js
-536 /agent/util/log.js.map
+550 /agent/util/log.js.map
290 /agent/util/log.js
-1549 /agent/util/process_infos.js.map
+1563 /agent/util/process_infos.js.map
1820 /agent/util/process_infos.js
-712 /agent/windows/gnutls_windows.js.map
+726 /agent/windows/gnutls_windows.js.map
708 /agent/windows/gnutls_windows.js
-757 /agent/windows/matrixssl_windows.js.map
+771 /agent/windows/matrixssl_windows.js.map
772 /agent/windows/matrixssl_windows.js
-720 /agent/windows/mbedTLS_windows.js.map
+734 /agent/windows/mbedTLS_windows.js.map
917 /agent/windows/mbedTLS_windows.js
-960 /agent/windows/nss_windows.js.map
+974 /agent/windows/nss_windows.js.map
1132 /agent/windows/nss_windows.js
-992 /agent/windows/openssl_boringssl_windows.js.map
+1006 /agent/windows/openssl_boringssl_windows.js.map
1214 /agent/windows/openssl_boringssl_windows.js
-12439 /agent/windows/sspi.js.map
+12453 /agent/windows/sspi.js.map
15804 /agent/windows/sspi.js
-2167 /agent/windows/windows_agent.js.map
+2181 /agent/windows/windows_agent.js.map
2571 /agent/windows/windows_agent.js
-1030 /agent/windows/wolfssl_windows.js.map
+1044 /agent/windows/wolfssl_windows.js.map
1098 /agent/windows/wolfssl_windows.js
✄
-{"version":3,"file":"ssl_log.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/ssl_log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AA2EnC,YAAY;AACZ,MAAM,CAAC,IAAI,OAAO,GAAa,WAAW,CAAC;AAC3C,YAAY;AACZ,MAAM,CAAC,IAAI,YAAY,GAAY,KAAK,CAAC;AACzC,YAAY;AACZ,MAAM,CAAC,IAAI,SAAS,GAAY,KAAK,CAAC;AAGtC;;EAEE;AAEF,IAAI,CAAC,cAAc,CAAC,CAAA;AACpB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE;IAChD,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;AACjC,CAAC,CAAC,CAAC;AACH,cAAc,CAAC,IAAI,EAAE,CAAC;AAEtB,IAAI,CAAC,MAAM,CAAC,CAAA;AACZ,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;IACjD,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;AAC9B,CAAC,CAAC,CAAC;AACH,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAA,KAAK;AAGhC;;;;;;;EAOE;AAGF,MAAM,UAAU,UAAU;IACtB,OAAO,OAAO,CAAC;AACnB,CAAC;AAID,SAAS,sBAAsB;IAC3B,IAAG,SAAS,EAAE,EAAC;QACX,GAAG,CAAC,2BAA2B,CAAC,CAAA;QAChC,0BAA0B,EAAE,CAAA;KAC/B;SAAK,IAAG,SAAS,EAAE,EAAC;QACjB,GAAG,CAAC,2BAA2B,CAAC,CAAA;QAChC,IAAG,SAAS,EAAC;YACT,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACjC,iBAAiB,EAAE,CAAC;SACvB;QACD,0BAA0B,EAAE,CAAA;KAC/B;SAAK,IAAG,OAAO,EAAE,EAAC;QACf,GAAG,CAAC,yBAAyB,CAAC,CAAA;QAC9B,wBAAwB,EAAE,CAAA;KAC7B;SAAK,IAAG,KAAK,EAAE,EAAC;QACb,GAAG,CAAC,uBAAuB,CAAC,CAAA;QAC5B,sBAAsB,EAAE,CAAA;KAC3B;SAAK,IAAG,OAAO,EAAE,EAAC;QACf,GAAG,CAAC,yBAAyB,CAAC,CAAA;QAC9B,wBAAwB,EAAE,CAAA;KAC7B;SAAI;QACD,GAAG,CAAC,qCAAqC,CAAC,CAAA;QAC1C,GAAG,CAAC,0HAA0H,CAAC,CAAA;KAClI;AAEL,CAAC;AAED,sBAAsB,EAAE,CAAA"}
+{"version":3,"file":"ssl_log.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ssl_log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AA2EpC,YAAY;AACZ,MAAM,CAAC,IAAI,OAAO,GAAa,WAAW,CAAC;AAC3C,YAAY;AACZ,MAAM,CAAC,IAAI,YAAY,GAAY,KAAK,CAAC;AACzC,YAAY;AACZ,MAAM,CAAC,IAAI,SAAS,GAAY,KAAK,CAAC;AACtC,YAAY;AACZ,MAAM,CAAC,IAAI,iBAAiB,GAAY,KAAK,CAAC;AAG9C;;EAEE;AAEF,IAAI,CAAC,WAAW,CAAC,CAAA;AACjB,MAAM,uBAAuB,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;IACtD,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC;AACtC,CAAC,CAAC,CAAC;AACH,uBAAuB,CAAC,IAAI,EAAE,CAAC;AAE/B,IAAI,CAAC,cAAc,CAAC,CAAA;AACpB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE;IAChD,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;AACjC,CAAC,CAAC,CAAC;AACH,cAAc,CAAC,IAAI,EAAE,CAAC;AAEtB,IAAI,CAAC,MAAM,CAAC,CAAA;AACZ,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;IACjD,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC;AAC9B,CAAC,CAAC,CAAC;AACH,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAA,KAAK;AAGhC;;;;;;;EAOE;AAGF,MAAM,UAAU,UAAU;IACtB,OAAO,OAAO,CAAC;AACnB,CAAC;AAID,SAAS,sBAAsB;IAC3B,IAAG,SAAS,EAAE,EAAC;QACX,GAAG,CAAC,2BAA2B,CAAC,CAAA;QAChC,0BAA0B,EAAE,CAAA;KAC/B;SAAK,IAAG,SAAS,EAAE,EAAC;QACjB,GAAG,CAAC,2BAA2B,CAAC,CAAA;QAChC,IAAG,SAAS,EAAC;YACT,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACjC,iBAAiB,EAAE,CAAC;SACvB;QACD,0BAA0B,EAAE,CAAA;KAC/B;SAAK,IAAG,OAAO,EAAE,EAAC;QACf,GAAG,CAAC,yBAAyB,CAAC,CAAA;QAC9B,wBAAwB,EAAE,CAAA;KAC7B;SAAK,IAAG,KAAK,EAAE,EAAC;QACb,GAAG,CAAC,uBAAuB,CAAC,CAAA;QAC5B,sBAAsB,EAAE,CAAA;KAC3B;SAAK,IAAG,OAAO,EAAE,EAAC;QACf,GAAG,CAAC,yBAAyB,CAAC,CAAA;QAC9B,wBAAwB,EAAE,CAAA;KAC7B;SAAI;QACD,GAAG,CAAC,qCAAqC,CAAC,CAAA;QAC1C,GAAG,CAAC,0HAA0H,CAAC,CAAA;KAClI;AAEL,CAAC;AAED,sBAAsB,EAAE,CAAA"}
✄
import { load_android_hooking_agent } from "./android/android_agent.js";
import { load_ios_hooking_agent } from "./ios/ios_agent.js";
@@ -98,9 +98,16 @@ export let offsets = "{OFFSETS}";
export let experimental = false;
//@ts-ignore
export let anti_root = false;
+//@ts-ignore
+export let enable_default_fd = false;
/*
This way we are providing boolean values from the commandline directly to our frida script
*/
+send("defaultFD");
+const enable_default_fd_state = recv('defaultFD', value => {
+ enable_default_fd = value.payload;
+});
+enable_default_fd_state.wait();
send("experimental");
const exp_recv_state = recv('experimental', value => {
experimental = value.payload;
@@ -154,7 +161,7 @@ function load_os_specific_agent() {
}
load_os_specific_agent();
✄
-{"version":3,"file":"android_agent.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/android/android_agent.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"android_agent.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/android/android_agent.ts"],"names":[],"mappings":"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"}
✄
import { module_library_mapping } from "../shared/shared_structures.js";
import { getModuleNames, ssl_library_loader } from "../shared/shared_functions.js";
@@ -220,7 +227,7 @@ export function load_android_hooking_agent() {
hook_Android_Dynamic_Loader(module_library_mapping);
}
✄
-{"version":3,"file":"android_java_tls_libs.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/android/android_java_tls_libs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAGtD,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAG1C,0BAA0B;QACtB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,UAAU,CAAC;gBAEP,IAAI,CAAC,OAAO,CAAC;oBAET,4BAA4B;oBAC5B,IAAI;wBACA,oFAAoF;wBACpF,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;wBAC7E,GAAG,CAAC,qCAAqC,CAAC,CAAA;wBAC1C,cAAc,EAAE,CAAA;qBACnB;oBAAC,OAAO,KAAK,EAAE;wBACZ,2BAA2B;qBAC9B;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,EAAE,CAAC,CAAC,CAAC;SACT;IACL,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;CAEJ;AAGD,MAAM,UAAU,YAAY;IACxB,IAAI,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,CAAC;AAC7B,CAAC"}
+{"version":3,"file":"android_java_tls_libs.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/android/android_java_tls_libs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAGvD,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAG1C,0BAA0B;QACtB,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,UAAU,CAAC;gBAEP,IAAI,CAAC,OAAO,CAAC;oBAET,4BAA4B;oBAC5B,IAAI;wBACA,oFAAoF;wBACpF,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;wBAC7E,GAAG,CAAC,qCAAqC,CAAC,CAAA;wBAC1C,cAAc,EAAE,CAAA;qBACnB;oBAAC,OAAO,KAAK,EAAE;wBACZ,2BAA2B;qBAC9B;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,EAAE,CAAC,CAAC,CAAC;SACT;IACL,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;CAEJ;AAGD,MAAM,UAAU,YAAY;IACxB,IAAI,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,CAAC;AAC7B,CAAC"}
✄
import { log } from "../util/log.js";
import { execute as bouncy_execute } from "./bouncycastle.js";
@@ -254,7 +261,7 @@ export function java_execute() {
java_ssl.execute_hooks();
}
✄
-{"version":3,"file":"bouncycastle.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/android/bouncycastle.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"bouncycastle.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/android/bouncycastle.ts"],"names":[],"mappings":"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"}
✄
import { log } from "../util/log.js";
import { byteArrayToString, byteArrayToNumber, getAttribute, reflectionByteArrayToString } from "../shared/shared_functions.js";
@@ -343,11 +350,11 @@ export function execute() {
}, 0);
}
✄
-{"version":3,"file":"conscrypt.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/android/conscrypt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,SAAS,qCAAqC,CAAC,kBAAgC,EAAE,oBAAyB;IAEtG,IAAI,qBAAqB,GAAG,IAAI,CAAA;IAChC,IAAI,YAAY,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAA;IACnD,KAAK,IAAI,EAAE,IAAI,YAAY,EAAE;QACzB,IAAI;YACA,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC5C,qBAAqB,GAAG,YAAY,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;YACxG,MAAK;SACR;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,wCAAwC,CAAC,CAAA;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,0BAA0B;SAC7B;KAEJ;IAED,IAAI,OAAO,GAAG,iBAAiB,EAAE,CAAA;IACjC,0BAA0B;IAC1B,qBAAqB;IAErB,IAAI,OAAO,IAAI,EAAE,EAAC;QACd,kEAAkE;QAClE,kBAAkB,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,cAAc,GAAG,oBAAoB,CAAA;KAClG;IAED,OAAO,qBAAqB,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,OAAO;IAEnB,mFAAmF;IACnF,IAAI,CAAC,OAAO,CAAC;QACT,sCAAsC;QACtC,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;QACvD,IAAI,oBAAoB,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAA;QAChG,+GAA+G;QAC/G,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,cAAc,GAAG,UAAU,SAAiB;YAC/F,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;YACtC,IAAI,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;gBAC7C,GAAG,CAAC,0CAA0C,CAAC,CAAA;gBAC/C,IAAI,qBAAqB,GAAG,qCAAqC,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAA;gBACxG,IAAI,qBAAqB,KAAK,IAAI,EAAE;oBAChC,GAAG,CAAC,uEAAuE,CAAC,CAAA;iBAC/E;qBAAM;oBACH,qBAAqB,CAAC,cAAc,CAAC,cAAc,GAAG;wBAClD,GAAG,CAAC,4CAA4C,CAAC,CAAA;oBAErD,CAAC,CAAA;iBAEJ;aACJ;YACD,OAAO,MAAM,CAAA;QACjB,CAAC,CAAA;QAED,kCAAkC;QAClC,IAAI;YACA,IAAI,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;YACrF,iBAAiB,CAAC,eAAe,CAAC,cAAc,GAAG,UAAU,OAAY;gBACrE,GAAG,CAAC,wCAAwC,CAAC,CAAA;YACjD,CAAC,CAAA;YACD,iBAAiB,CAAC,oBAAoB,CAAC,cAAc,GAAG,UAAU,OAAY,EAAE,QAAa;gBACzF,GAAG,CAAC,wCAAwC,CAAC,CAAA;gBAC7C,QAAQ,CAAC,mBAAmB,EAAE,CAAA;YAClC,CAAC,CAAA;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,GAAG,CAAC,6CAA6C,CAAC,CAAA;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,qCAAqC;SACxC;IACL,CAAC,CAAC,CAAA;AAIN,CAAC"}
+{"version":3,"file":"conscrypt.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/android/conscrypt.ts"],"names":[],"mappings":"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"}
✄
import { log } from "../util/log.js";
import { getAndroidVersion } from "../util/process_infos.js";
-function findProviderInstallerFromClassloaders(currentClassLoader, backupImplementation) {
+function findProviderInstallerImplFromClassloaders(currentClassLoader, backupImplementation) {
var providerInstallerImpl = null;
var classLoaders = Java.enumerateClassLoadersSync();
for (var cl of classLoaders) {
@@ -371,6 +378,30 @@ function findProviderInstallerFromClassloaders(currentClassLoader, backupImpleme
}
return providerInstallerImpl;
}
+function findProviderInstallerFromClassloaders(currentClassLoader, backupImplementation) {
+ var providerInstaller = null;
+ var classLoaders = Java.enumerateClassLoadersSync();
+ for (var cl of classLoaders) {
+ try {
+ var classFactory = Java.ClassFactory.get(cl);
+ providerInstaller = classFactory.use("com.google.android.gms.security.ProviderInstaller");
+ break;
+ }
+ catch (error) {
+ log("Error in hooking ProviderInstallerImpl");
+ console.log(error);
+ // On error we return null
+ }
+ }
+ var version = getAndroidVersion();
+ //log("is here the error")
+ //log(typeof version)
+ if (version <= 12) {
+ //Revert the implementation to avoid an infinitloop of "Loadclass"
+ currentClassLoader.loadClass.overload("java.lang.String").implementation = backupImplementation;
+ }
+ return providerInstaller;
+}
export function execute() {
//We have to hook multiple entrypoints: ProviderInstallerImpl and ProviderInstaller
Java.perform(function () {
@@ -382,7 +413,7 @@ export function execute() {
let retval = this.loadClass(className);
if (className.endsWith("ProviderInstallerImpl")) {
log("Process is loading ProviderInstallerImpl");
- var providerInstallerImpl = findProviderInstallerFromClassloaders(javaClassLoader, backupImplementation);
+ var providerInstallerImpl = findProviderInstallerImplFromClassloaders(javaClassLoader, backupImplementation);
if (providerInstallerImpl === null) {
log("ProviderInstallerImpl could not be found, although it has been loaded");
}
@@ -406,14 +437,32 @@ export function execute() {
};
}
catch (error) {
- log("Some error in hooking the Providerinstaller");
- console.log(error);
- // As it is not available, do nothing
+ try {
+ // probably class wasn't loaded by the app's main class loader therefore we load it
+ var providerInstallerFromClassloder = findProviderInstallerFromClassloaders(javaClassLoader, backupImplementation);
+ if (providerInstallerFromClassloder === null) {
+ log("ProviderInstaller could not be found, although it has been loaded");
+ }
+ else {
+ providerInstallerFromClassloder.installIfNeeded.implementation = function (context) {
+ log("Providerinstaller redirection/blocking");
+ };
+ providerInstallerFromClassloder.installIfNeededAsync.implementation = function (context, callback) {
+ log("Providerinstaller redirection/blocking");
+ callback.onProviderInstalled();
+ };
+ }
+ }
+ catch (error) {
+ log("Some error in hooking the Providerinstaller");
+ console.log(error);
+ // As it is not available, do nothing
+ }
}
});
}
✄
-{"version":3,"file":"gnutls_android.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/android/gnutls_android.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,YAAa,SAAQ,MAAM;IAEpC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;IAED,8BAA8B;QAC1B,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EACpD;YACI,OAAO,EAAE,UAAU,IAAS;gBACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAC1B,CAAC;YACD,OAAO,EAAE,UAAU,MAAW;gBAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACzB,MAAM,CAAC,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;YAEjG,CAAC;SACJ,CAAC,CAAA;IAEF,CAAC;CACJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,YAAY,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC7D,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
+{"version":3,"file":"gnutls_android.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/android/gnutls_android.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,YAAa,SAAQ,MAAM;IAEpC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;IAED,8BAA8B;QAC1B,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EACpD;YACI,OAAO,EAAE,UAAU,IAAS;gBACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAC1B,CAAC;YACD,OAAO,EAAE,UAAU,MAAW;gBAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACzB,MAAM,CAAC,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;YAEjG,CAAC;SACJ,CAAC,CAAA;IAEF,CAAC;CACJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,YAAY,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC7D,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
✄
import { GnuTLS } from "../ssl_lib/gnutls.js";
import { socket_library } from "./android_agent.js";
@@ -445,7 +494,7 @@ export function gnutls_execute(moduleName) {
gnutls_ssl.execute_hooks();
}
✄
-{"version":3,"file":"mbedTLS_android.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/android/mbedTLS_android.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAE1C,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAED;;;;;;MAME;IACF,8BAA8B;QAC1B,8BAA8B;IAClC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;CAEJ;AAGD,MAAM,UAAU,eAAe,CAAC,UAAiB;IAC7C,IAAI,WAAW,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAClE,WAAW,CAAC,aAAa,EAAE,CAAC;AAGhC,CAAC"}
+{"version":3,"file":"mbedTLS_android.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/android/mbedTLS_android.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAE1C,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAED;;;;;;MAME;IACF,8BAA8B;QAC1B,8BAA8B;IAClC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;CAEJ;AAGD,MAAM,UAAU,eAAe,CAAC,UAAiB;IAC7C,IAAI,WAAW,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAClE,WAAW,CAAC,aAAa,EAAE,CAAC;AAGhC,CAAC"}
✄
import { mbed_TLS } from "../ssl_lib/mbedTLS.js";
import { socket_library } from "./android_agent.js";
@@ -475,7 +524,7 @@ export function mbedTLS_execute(moduleName) {
mbedTLS_ssl.execute_hooks();
}
✄
-{"version":3,"file":"nss_android.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/android/nss_android.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,WAAY,SAAQ,GAAG;IAEhC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,IAAI,sBAAsB,GAAqC,EAAE,CAAC;QAClE,sBAAsB,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,gBAAgB,CAAC,CAAA;QAC9K,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAA;QAChF,sBAAsB,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,CAAA;QACrG,sBAAsB,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAEhG,KAAK,CAAC,UAAU,EAAC,cAAc,EAAC,sBAAsB,CAAC,CAAC;QAPzC,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAQlE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,sDAAsD;IAC1D,CAAC;CAEJ;AAGD,MAAM,UAAU,WAAW,CAAC,UAAiB;IACzC,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACzD,OAAO,CAAC,aAAa,EAAE,CAAC;AAG5B,CAAC"}
+{"version":3,"file":"nss_android.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/android/nss_android.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,WAAY,SAAQ,GAAG;IAEhC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,IAAI,sBAAsB,GAAqC,EAAE,CAAC;QAClE,sBAAsB,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,gBAAgB,CAAC,CAAA;QAC9K,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAA;QAChF,sBAAsB,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,CAAA;QACrG,sBAAsB,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAEhG,KAAK,CAAC,UAAU,EAAC,cAAc,EAAC,sBAAsB,CAAC,CAAC;QAPzC,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAQlE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,sDAAsD;IAC1D,CAAC;CAEJ;AAGD,MAAM,UAAU,WAAW,CAAC,UAAiB;IACzC,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACzD,OAAO,CAAC,aAAa,EAAE,CAAC;AAG5B,CAAC"}
✄
import { NSS } from "../ssl_lib/nss.js";
import { socket_library } from "./android_agent.js";
@@ -501,7 +550,7 @@ export function nss_execute(moduleName) {
nss_ssl.execute_hooks();
}
✄
-{"version":3,"file":"openssl_boringssl_android.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/android/openssl_boringssl_android.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IAE5D,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;IAED,8BAA8B;QAE1B,iBAAiB,CAAC,2BAA2B,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;QAEjJ,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAC5C;YACI,OAAO,EAAE,UAAU,IAAS;gBACxB,iBAAiB,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAA;YAC7F,CAAC;SAEJ,CAAC,CAAA;IACN,CAAC;CAEJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,yBAAyB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC1E,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
+{"version":3,"file":"openssl_boringssl_android.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/android/openssl_boringssl_android.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IAE5D,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;IAED,8BAA8B;QAE1B,iBAAiB,CAAC,2BAA2B,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;QAEjJ,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAC5C;YACI,OAAO,EAAE,UAAU,IAAS;gBACxB,iBAAiB,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAA;YAC7F,CAAC;SAEJ,CAAC,CAAA;IACN,CAAC;CAEJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,yBAAyB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC1E,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
✄
import { OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js";
import { socket_library } from "./android_agent.js";
@@ -530,7 +579,7 @@ export function boring_execute(moduleName) {
boring_ssl.execute_hooks();
}
✄
-{"version":3,"file":"wolfssl_android.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/android/wolfssl_android.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"wolfssl_android.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/android/wolfssl_android.ts"],"names":[],"mappings":"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"}
✄
import { WolfSSL } from "../ssl_lib/wolfssl.js";
import { socket_library } from "./android_agent.js";
@@ -589,7 +638,7 @@ export function wolfssl_execute(moduleName) {
wolf_ssl.execute_hooks();
}
✄
-{"version":3,"file":"ios_agent.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/ios/ios_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAG3D,IAAI,cAAc,GAAG,QAAQ,CAAC;AAC9B,IAAI,WAAW,GAAkB,cAAc,EAAE,CAAA;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAA;AAGjD,SAAS,uBAAuB,CAAC,sBAAmF;IAChH,IAAI;QACA,MAAM,WAAW,GAAG,mBAAmB,CAAA;QACvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;QACrE,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,MAAM,kCAAkC,CAAA;SAC3C;QAED,IAAI,MAAM,GAAG,QAAQ,CAAA;QAErB,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;YACtD,OAAO,EAAE,UAAU,IAAI;gBACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;YAC3C,CAAC;YACD,OAAO,EAAE,UAAU,MAAW;gBAC1B,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;oBAC9B,KAAK,IAAI,GAAG,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAE;wBACpD,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;wBAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;wBACjB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;4BAC7B,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,sCAAsC,CAAC,CAAA;4BAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;yBACxB;qBAEJ;iBACJ;YACL,CAAC;SAGJ,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;KAChD;IAAC,OAAO,KAAK,EAAE;QACZ,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAA;QAChC,GAAG,CAAC,+CAA+C,CAAC,CAAA;KACvD;AACL,CAAC;AAGD,SAAS,iBAAiB,CAAC,sBAAmF;IAC1G,kBAAkB,CAAC,cAAc,EAAE,sBAAsB,EAAC,WAAW,EAAC,KAAK,CAAC,CAAA;AAChF,CAAC;AAID,MAAM,UAAU,sBAAsB;IAClC,sBAAsB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC,CAAA;IACpF,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;IAC1C,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;AACpD,CAAC"}
+{"version":3,"file":"ios_agent.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ios/ios_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5D,IAAI,cAAc,GAAG,QAAQ,CAAC;AAC9B,IAAI,WAAW,GAAkB,cAAc,EAAE,CAAA;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAA;AAGjD,SAAS,uBAAuB,CAAC,sBAAmF;IAChH,IAAI;QACA,MAAM,WAAW,GAAG,mBAAmB,CAAA;QACvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;QACrE,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,MAAM,kCAAkC,CAAA;SAC3C;QAED,IAAI,MAAM,GAAG,QAAQ,CAAA;QAErB,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;YACtD,OAAO,EAAE,UAAU,IAAI;gBACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;YAC3C,CAAC;YACD,OAAO,EAAE,UAAU,MAAW;gBAC1B,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;oBAC9B,KAAK,IAAI,GAAG,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAE;wBACpD,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;wBAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;wBACjB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;4BAC7B,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,sCAAsC,CAAC,CAAA;4BAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;yBACxB;qBAEJ;iBACJ;YACL,CAAC;SAGJ,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;KAChD;IAAC,OAAO,KAAK,EAAE;QACZ,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAA;QAChC,GAAG,CAAC,+CAA+C,CAAC,CAAA;KACvD;AACL,CAAC;AAGD,SAAS,iBAAiB,CAAC,sBAAmF;IAC1G,kBAAkB,CAAC,cAAc,EAAE,sBAAsB,EAAC,WAAW,EAAC,KAAK,CAAC,CAAA;AAChF,CAAC;AAID,MAAM,UAAU,sBAAsB;IAClC,sBAAsB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC,CAAA;IACpF,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;IAC1C,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;AACpD,CAAC"}
✄
import { module_library_mapping } from "../shared/shared_structures.js";
import { log, devlog } from "../util/log.js";
@@ -639,7 +688,7 @@ export function load_ios_hooking_agent() {
hook_iOS_Dynamic_Loader(module_library_mapping);
}
✄
-{"version":3,"file":"openssl_boringssl_ios.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/ios/openssl_boringssl_ios.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAO,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;IAExD,8BAA8B;QAC1B,yGAAyG;QACzG,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,0EAA0E;YAC5F,IAAI,eAAe,GAAG,KAAK,CAAC;YAE5B,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,EAAE,UAAU,EAAE,CAAC;YACjH,IAAG,gBAAgB,IAAI,SAAS,EAAC;gBAC7B,MAAM,CAAC,kCAAkC,CAAC,CAAC;gBAC3C,eAAe,GAAG,KAAK,CAAC;aAC3B;iBAAM,IAAI,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,GAAG,QAAQ,EAAE;gBACpE,MAAM,CAAC,mCAAmC,CAAC,CAAC;gBAC5C,eAAe,GAAG,KAAK,CAAC,CAAC,eAAe;aAC3C;iBAAM,IAAI,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,IAAI,MAAM,EAAE;gBACnE,MAAM,CAAC,mCAAmC,CAAC,CAAC;gBAC5C,eAAe,GAAG,KAAK,CAAC,CAAC,eAAe;aAC3C;iBAAM,IAAI,gBAAgB,GAAG,MAAM,EAAE;gBAClC,MAAM,CAAC,mCAAmC,CAAC,CAAC;gBAC5C,eAAe,GAAG,KAAK,CAAC,CAAC,eAAe;aAC3C;YACD,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE;gBAC9D,OAAO,EAAE,UAAU,IAAU;oBAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;gBACpF,CAAC;aACF,CAAC,CAAC;SAEJ;IAEP,CAAC;IAGD,YAAmB,UAAiB,EAAS,cAAqB;QAE9D,IAAI,sBAAsB,GAAqC,EAAE,CAAA;QAEjE,yIAAyI;QACzI,sBAAsB,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAA;QACpK,sBAAsB,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA,CAAC,kFAAkF;QAEvL,KAAK,CAAC,UAAU,EAAC,cAAc,EAAC,sBAAsB,CAAC,CAAC;QARzC,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IASlE,CAAC;IAED,aAAa;QAET;;;;UAIE;QAEF,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;CAIJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,qBAAqB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACtE,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
+{"version":3,"file":"openssl_boringssl_ios.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ios/openssl_boringssl_ios.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAO,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,OAAO,qBAAsB,SAAQ,iBAAiB;IAExD,8BAA8B;QAC1B,yGAAyG;QACzG,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,0EAA0E;YAC5F,IAAI,eAAe,GAAG,KAAK,CAAC;YAE5B,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,EAAE,UAAU,EAAE,CAAC;YACjH,IAAG,gBAAgB,IAAI,SAAS,EAAC;gBAC7B,MAAM,CAAC,kCAAkC,CAAC,CAAC;gBAC3C,eAAe,GAAG,KAAK,CAAC;aAC3B;iBAAM,IAAI,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,GAAG,QAAQ,EAAE;gBACpE,MAAM,CAAC,mCAAmC,CAAC,CAAC;gBAC5C,eAAe,GAAG,KAAK,CAAC,CAAC,eAAe;aAC3C;iBAAM,IAAI,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,IAAI,MAAM,EAAE;gBACnE,MAAM,CAAC,mCAAmC,CAAC,CAAC;gBAC5C,eAAe,GAAG,KAAK,CAAC,CAAC,eAAe;aAC3C;iBAAM,IAAI,gBAAgB,GAAG,MAAM,EAAE;gBAClC,MAAM,CAAC,mCAAmC,CAAC,CAAC;gBAC5C,eAAe,GAAG,KAAK,CAAC,CAAC,eAAe;aAC3C;YACD,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE;gBAC9D,OAAO,EAAE,UAAU,IAAU;oBAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;gBACpF,CAAC;aACF,CAAC,CAAC;SAEJ;IAEP,CAAC;IAGD,YAAmB,UAAiB,EAAS,cAAqB;QAE9D,IAAI,sBAAsB,GAAqC,EAAE,CAAA;QAEjE,yIAAyI;QACzI,sBAAsB,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAA;QACpK,sBAAsB,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA,CAAC,kFAAkF;QAEvL,KAAK,CAAC,UAAU,EAAC,cAAc,EAAC,sBAAsB,CAAC,CAAC;QARzC,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IASlE,CAAC;IAED,aAAa;QAET;;;;UAIE;QAEF,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;CAIJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,qBAAqB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACtE,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
✄
import { OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js";
import { socket_library } from "./ios_agent.js";
@@ -696,7 +745,7 @@ export function boring_execute(moduleName) {
boring_ssl.execute_hooks();
}
✄
-{"version":3,"file":"gnutls_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/linux/gnutls_linux.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,YAAa,SAAQ,MAAM;IAEpC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;IAED,8BAA8B;QAC1B,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EACpD;YACI,OAAO,EAAE,UAAU,IAAS;gBACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAC1B,CAAC;YACD,OAAO,EAAE,UAAU,MAAW;gBAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACzB,MAAM,CAAC,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;YAEjG,CAAC;SACJ,CAAC,CAAA;IAEF,CAAC;CAEJ;AAKD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,YAAY,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC7D,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
+{"version":3,"file":"gnutls_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/linux/gnutls_linux.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,YAAa,SAAQ,MAAM;IAEpC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;IAED,8BAA8B;QAC1B,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EACpD;YACI,OAAO,EAAE,UAAU,IAAS;gBACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAC1B,CAAC;YACD,OAAO,EAAE,UAAU,MAAW;gBAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACzB,MAAM,CAAC,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;YAEjG,CAAC;SACJ,CAAC,CAAA;IAEF,CAAC;CAEJ;AAKD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,YAAY,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC7D,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
✄
import { GnuTLS } from "../ssl_lib/gnutls.js";
import { socket_library } from "./linux_agent.js";
@@ -728,7 +777,7 @@ export function gnutls_execute(moduleName) {
gnutls_ssl.execute_hooks();
}
✄
-{"version":3,"file":"linux_agent.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/linux/linux_agent.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"linux_agent.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/linux/linux_agent.ts"],"names":[],"mappings":"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"}
✄
import { module_library_mapping } from "../shared/shared_structures.js";
import { log, devlog } from "../util/log.js";
@@ -783,7 +832,7 @@ export function load_linux_hooking_agent() {
hook_Linux_Dynamic_Loader(module_library_mapping);
}
✄
-{"version":3,"file":"matrixssl_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/linux/matrixssl_linux.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAE5C,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAED;;;;;;MAME;IACF,8BAA8B;QAC1B,8BAA8B;IAClC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;CAEJ;AAGD,MAAM,UAAU,iBAAiB,CAAC,UAAiB;IAC/C,IAAI,UAAU,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACjE,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
+{"version":3,"file":"matrixssl_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/linux/matrixssl_linux.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,gBAAiB,SAAQ,UAAU;IAE5C,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAED;;;;;;MAME;IACF,8BAA8B;QAC1B,8BAA8B;IAClC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;CAEJ;AAGD,MAAM,UAAU,iBAAiB,CAAC,UAAiB;IAC/C,IAAI,UAAU,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACjE,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
✄
import { matrix_SSL } from "../ssl_lib/matrixssl.js";
import { socket_library } from "./linux_agent.js";
@@ -813,7 +862,7 @@ export function matrixSSL_execute(moduleName) {
matrix_ssl.execute_hooks();
}
✄
-{"version":3,"file":"mbedTLS_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/linux/mbedTLS_linux.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAExC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAED;;;;;;MAME;IACF,8BAA8B;QAC1B,8BAA8B;IAClC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;CAEJ;AAGD,MAAM,UAAU,eAAe,CAAC,UAAiB;IAC7C,IAAI,WAAW,GAAG,IAAI,cAAc,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAChE,WAAW,CAAC,aAAa,EAAE,CAAC;AAGhC,CAAC"}
+{"version":3,"file":"mbedTLS_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/linux/mbedTLS_linux.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAExC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAED;;;;;;MAME;IACF,8BAA8B;QAC1B,8BAA8B;IAClC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;CAEJ;AAGD,MAAM,UAAU,eAAe,CAAC,UAAiB;IAC7C,IAAI,WAAW,GAAG,IAAI,cAAc,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAChE,WAAW,CAAC,aAAa,EAAE,CAAC;AAGhC,CAAC"}
✄
import { mbed_TLS } from "../ssl_lib/mbedTLS.js";
import { socket_library } from "./linux_agent.js";
@@ -843,7 +892,7 @@ export function mbedTLS_execute(moduleName) {
mbedTLS_ssl.execute_hooks();
}
✄
-{"version":3,"file":"nss_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/linux/nss_linux.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"nss_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/linux/nss_linux.ts"],"names":[],"mappings":"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"}
✄
import { NSS } from "../ssl_lib/nss.js";
import { socket_library } from "./linux_agent.js";
@@ -932,7 +981,7 @@ export function nss_execute(moduleName) {
nss_ssl.execute_hooks();
}
✄
-{"version":3,"file":"openssl_boringssl_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/linux/openssl_boringssl_linux.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAE1D,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;IAED,8BAA8B;QAE1B,iBAAiB,CAAC,2BAA2B,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;QAEpQ,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAC5C;YACI,OAAO,EAAE,UAAU,IAAS;gBACxB,iBAAiB,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAA;YAC7F,CAAC;SAEJ,CAAC,CAAA;IACN,CAAC;CAEJ;AAOD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,uBAAuB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACxE,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
+{"version":3,"file":"openssl_boringssl_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/linux/openssl_boringssl_linux.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAE1D,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;IAED,8BAA8B;QAE1B,iBAAiB,CAAC,2BAA2B,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;QAEpQ,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAC5C;YACI,OAAO,EAAE,UAAU,IAAS;gBACxB,iBAAiB,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAA;YAC7F,CAAC;SAEJ,CAAC,CAAA;IACN,CAAC;CAEJ;AAOD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,uBAAuB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACxE,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
✄
import { OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js";
import { socket_library } from "./linux_agent.js";
@@ -961,7 +1010,7 @@ export function boring_execute(moduleName) {
boring_ssl.execute_hooks();
}
✄
-{"version":3,"file":"wolfssl_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/linux/wolfssl_linux.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"wolfssl_linux.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/linux/wolfssl_linux.ts"],"names":[],"mappings":"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"}
✄
import { WolfSSL } from "../ssl_lib/wolfssl.js";
import { socket_library } from "./linux_agent.js";
@@ -1020,7 +1069,7 @@ export function wolfssl_execute(moduleName) {
wolf_ssl.execute_hooks();
}
✄
-{"version":3,"file":"macos_agent.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/macos/macos_agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAG7D,IAAI,cAAc,GAAG,QAAQ,CAAC;AAC9B,IAAI,WAAW,GAAkB,cAAc,EAAE,CAAA;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAA;AAGjD,SAAS,yBAAyB,CAAC,sBAAmF;IAClH,IAAI;QACA,MAAM,WAAW,GAAG,mBAAmB,CAAA;QACvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;QACrE,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,MAAM,kCAAkC,CAAA;SAC3C;QAED,IAAI,MAAM,GAAG,QAAQ,CAAA;QAErB,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAAE;YACpE,OAAO,EAAE,UAAU,IAAI;gBACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;YAC3C,CAAC;YACD,OAAO,EAAE,UAAU,MAAW;gBAC1B,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;oBAC9B,KAAK,IAAI,GAAG,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAE;wBACpD,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;wBAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;wBACjB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;4BAC7B,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,wCAAwC,CAAC,CAAA;4BAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;yBACxB;qBAEJ;iBACJ;YACL,CAAC;SAGJ,CAAC,CAAA;QAEF,GAAG,CAAC,8BAA8B,CAAC,CAAA;KACtC;IAAC,OAAO,KAAK,EAAE;QACZ,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAA;QAChC,GAAG,CAAC,iDAAiD,CAAC,CAAA;KACzD;AACL,CAAC;AAGD,SAAS,mBAAmB,CAAC,sBAAmF;IAC5G,kBAAkB,CAAC,cAAc,EAAE,sBAAsB,EAAC,WAAW,EAAC,OAAO,CAAC,CAAA;AAClF,CAAC;AAID,MAAM,UAAU,wBAAwB;IACpC,sBAAsB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC,CAAA;IACpF,mBAAmB,CAAC,sBAAsB,CAAC,CAAC,CAAC,yGAAyG;IACtJ,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;AACtD,CAAC"}
+{"version":3,"file":"macos_agent.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/macos/macos_agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,IAAI,cAAc,GAAG,QAAQ,CAAC;AAC9B,IAAI,WAAW,GAAkB,cAAc,EAAE,CAAA;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,mBAAmB,CAAA;AAGjD,SAAS,yBAAyB,CAAC,sBAAmF;IAClH,IAAI;QACA,MAAM,WAAW,GAAG,mBAAmB,CAAA;QACvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;QACrE,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,MAAM,kCAAkC,CAAA;SAC3C;QAED,IAAI,MAAM,GAAG,QAAQ,CAAA;QAErB,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,EAAE,MAAM,CAAC,EAAE;YACpE,OAAO,EAAE,UAAU,IAAI;gBACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;YAC3C,CAAC;YACD,OAAO,EAAE,UAAU,MAAW;gBAC1B,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;oBAC9B,KAAK,IAAI,GAAG,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAE;wBACpD,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;wBAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;wBACjB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;4BAC7B,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,wCAAwC,CAAC,CAAA;4BAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;yBACxB;qBAEJ;iBACJ;YACL,CAAC;SAGJ,CAAC,CAAA;QAEF,GAAG,CAAC,8BAA8B,CAAC,CAAA;KACtC;IAAC,OAAO,KAAK,EAAE;QACZ,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAA;QAChC,GAAG,CAAC,iDAAiD,CAAC,CAAA;KACzD;AACL,CAAC;AAGD,SAAS,mBAAmB,CAAC,sBAAmF;IAC5G,kBAAkB,CAAC,cAAc,EAAE,sBAAsB,EAAC,WAAW,EAAC,OAAO,CAAC,CAAA;AAClF,CAAC;AAID,MAAM,UAAU,wBAAwB;IACpC,sBAAsB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC,CAAA;IACpF,mBAAmB,CAAC,sBAAsB,CAAC,CAAC,CAAC,yGAAyG;IACtJ,yBAAyB,CAAC,sBAAsB,CAAC,CAAC;AACtD,CAAC"}
✄
import { module_library_mapping } from "../shared/shared_structures.js";
import { log, devlog } from "../util/log.js";
@@ -1070,7 +1119,7 @@ export function load_macos_hooking_agent() {
hook_macOS_Dynamic_Loader(module_library_mapping);
}
✄
-{"version":3,"file":"openssl_boringssl_macos.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/macos/openssl_boringssl_macos.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAE1D,8BAA8B;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA,CAAC,2EAA2E;QACvG,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,0EAA0E;YAC5F,IAAI,eAAe,GAAG,KAAK,CAAC;YAE5B,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,EAAE,UAAU,EAAE,CAAC;YACjH,IAAG,gBAAgB,IAAI,SAAS,EAAC;gBAC7B,eAAe,GAAG,KAAK,CAAC;aAC3B;iBAAK,IAAI,gBAAgB,IAAI,QAAQ,EAAE;gBACpC,eAAe,GAAG,KAAK,CAAC,CAAC,eAAe;aAC3C;YACD,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE;gBAC9D,OAAO,EAAE,UAAU,IAAU;oBAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACvE,CAAC;aACF,CAAC,CAAC;SAEJ;IAEP,CAAC;IAED,YAAmB,UAAiB,EAAS,cAAqB;QAE9D,IAAI,sBAAsB,GAAqC,EAAE,CAAA;QAEjE,yIAAyI;QACzI,sBAAsB,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAA;QACpK,sBAAsB,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA,CAAC,kFAAkF;QAEvL,KAAK,CAAC,UAAU,EAAC,cAAc,EAAC,sBAAsB,CAAC,CAAC;QARzC,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IASlE,CAAC;IAED,aAAa;QAET;;;;UAIE;QAEF,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;CAIJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,uBAAuB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACxE,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
+{"version":3,"file":"openssl_boringssl_macos.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/macos/openssl_boringssl_macos.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAE1D,8BAA8B;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA,CAAC,2EAA2E;QACvG,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,0EAA0E;YAC5F,IAAI,eAAe,GAAG,KAAK,CAAC;YAE5B,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gCAAgC,CAAC,EAAE,UAAU,EAAE,CAAC;YACjH,IAAG,gBAAgB,IAAI,SAAS,EAAC;gBAC7B,eAAe,GAAG,KAAK,CAAC;aAC3B;iBAAK,IAAI,gBAAgB,IAAI,QAAQ,EAAE;gBACpC,eAAe,GAAG,KAAK,CAAC,CAAC,eAAe;aAC3C;YACD,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,EAAE;gBAC9D,OAAO,EAAE,UAAU,IAAU;oBAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACvE,CAAC;aACF,CAAC,CAAC;SAEJ;IAEP,CAAC;IAED,YAAmB,UAAiB,EAAS,cAAqB;QAE9D,IAAI,sBAAsB,GAAqC,EAAE,CAAA;QAEjE,yIAAyI;QACzI,sBAAsB,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAA;QACpK,sBAAsB,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA,CAAC,kFAAkF;QAEvL,KAAK,CAAC,UAAU,EAAC,cAAc,EAAC,sBAAsB,CAAC,CAAC;QARzC,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IASlE,CAAC;IAED,aAAa;QAET;;;;UAIE;QAEF,IAAI,CAAC,8BAA8B,EAAE,CAAC;IAC1C,CAAC;CAIJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,uBAAuB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACxE,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
✄
import { OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js";
import { socket_library } from "./macos_agent.js";
@@ -1116,7 +1165,7 @@ export function boring_execute(moduleName) {
boring_ssl.execute_hooks();
}
✄
-{"version":3,"file":"shared_functions.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/shared/shared_functions.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"shared_functions.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/shared/shared_functions.ts"],"names":[],"mappings":"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"}
✄
import { log, devlog } from "../util/log.js";
import { AF_INET, AF_INET6 } from "./shared_structures.js";
@@ -1243,12 +1292,20 @@ export function getBaseAddress(moduleName) {
* @return {{ [key: string]: string | number }} Dictionary of sockfd's "src_addr", "src_port", "dst_addr",
* and "dst_port".
*/
-export function getPortsAndAddresses(sockfd, isRead, methodAddresses) {
+export function getPortsAndAddresses(sockfd, isRead, methodAddresses, enable_default_fd) {
+ var message = {};
+ if (enable_default_fd && (sockfd < 0)) {
+ message["src" + "_port"] = 1234;
+ message["src" + "_addr"] = "127.0.0.1";
+ message["dst" + "_port"] = 2345;
+ message["dst" + "_addr"] = "127.0.0.1";
+ message["ss_family"] = "AF_INET";
+ return message;
+ }
var getpeername = new NativeFunction(methodAddresses["getpeername"], "int", ["int", "pointer", "pointer"]);
var getsockname = new NativeFunction(methodAddresses["getsockname"], "int", ["int", "pointer", "pointer"]);
var ntohs = new NativeFunction(methodAddresses["ntohs"], "uint16", ["uint16"]);
var ntohl = new NativeFunction(methodAddresses["ntohl"], "uint32", ["uint32"]);
- var message = {};
var addrlen = Memory.alloc(4);
var addr = Memory.alloc(128);
var src_dst = ["src", "dst"];
@@ -1345,7 +1402,7 @@ export function getAttribute(Instance, fieldName) {
return field.get(Instance);
}
✄
-{"version":3,"file":"shared_structures.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/shared/shared_structures.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAG3D,MAAM,CAAC,IAAI,sBAAsB,GAAgE,EAAE,CAAA;AAGnG,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAA;AACxB,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAA;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC"}
+{"version":3,"file":"shared_structures.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/shared/shared_structures.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAG3D,MAAM,CAAC,IAAI,sBAAsB,GAAgE,EAAE,CAAA;AAGnG,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAA;AACxB,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAA;AAC1B,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC"}
✄
/* In this file we store global variables and structures */
export var module_library_mapping = {};
@@ -1353,11 +1410,11 @@ export const AF_INET = 2;
export const AF_INET6 = 10;
export const pointerSize = Process.pointerSize;
✄
-{"version":3,"file":"gnutls.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/ssl_lib/gnutls.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"gnutls.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ssl_lib/gnutls.ts"],"names":[],"mappings":"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"}
✄
import { readAddresses, getPortsAndAddresses, getBaseAddress } from "../shared/shared_functions.js";
import { log } from "../util/log.js";
-import { offsets } from "../ssl_log.js";
+import { offsets, enable_default_fd } from "../ssl_log.js";
export class GnuTLS {
constructor(moduleName, socket_library, passed_library_method_mapping) {
this.moduleName = moduleName;
@@ -1407,12 +1464,20 @@ export class GnuTLS {
var len_pointer = Memory.alloc(4);
var err = GnuTLS.gnutls_session_get_id(session, NULL, len_pointer);
if (err != 0) {
+ if (enable_default_fd) {
+ log("using dummy SessionID: 59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76337");
+ return "59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76337";
+ }
return "";
}
var len = len_pointer.readU32();
var p = Memory.alloc(len);
err = GnuTLS.gnutls_session_get_id(session, p, len_pointer);
if (err != 0) {
+ if (enable_default_fd) {
+ log("using dummy SessionID: 59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76337");
+ return "59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76337";
+ }
return "";
}
var session_id = "";
@@ -1428,7 +1493,7 @@ export class GnuTLS {
var lib_addesses = this.addresses;
Interceptor.attach(this.addresses["gnutls_record_recv"], {
onEnter: function (args) {
- var message = getPortsAndAddresses(GnuTLS.gnutls_transport_get_int(args[0]), true, lib_addesses);
+ var message = getPortsAndAddresses(GnuTLS.gnutls_transport_get_int(args[0]), true, lib_addesses, enable_default_fd);
message["ssl_session_id"] = GnuTLS.getSslSessionId(args[0]);
message["function"] = "SSL_read";
this.message = message;
@@ -1448,7 +1513,7 @@ export class GnuTLS {
var lib_addesses = this.addresses;
Interceptor.attach(this.addresses["gnutls_record_send"], {
onEnter: function (args) {
- var message = getPortsAndAddresses(GnuTLS.gnutls_transport_get_int(args[0]), false, lib_addesses);
+ var message = getPortsAndAddresses(GnuTLS.gnutls_transport_get_int(args[0]), false, lib_addesses, enable_default_fd);
message["ssl_session_id"] = GnuTLS.getSslSessionId(args[0]);
message["function"] = "SSL_write";
message["contentType"] = "datalog";
@@ -1496,9 +1561,9 @@ GnuTLS.keylog_callback = new NativeCallback(function (session, label, secret) {
return 0;
}, "int", ["pointer", "pointer", "pointer"]);
✄
-{"version":3,"file":"java_ssl_libs.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/ssl_lib/java_ssl_libs.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"java_ssl_libs.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ssl_lib/java_ssl_libs.ts"],"names":[],"mappings":"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"}
✄
-import { log } from "../util/log.js";
+import { log, devlog } from "../util/log.js";
import { execute as conscrypt_execute } from "../android/conscrypt.js";
import { isAndroid } from "../util/process_infos.js";
export class SSL_Java {
@@ -1528,11 +1593,18 @@ export class SSL_Java {
Security.removeProvider("Conscrypt");
log("Removed Conscrypt");
}
- //Uncomment this line to show all remaining providers
- log("Remaining: " + Security.getProviders().toString());
+ //Same thing for WolfSSLProvider provider which has been manually inserted (not by providerinstaller)
+ if (Security.getProviders().toString().includes("WolfSSLProvider")) {
+ log("WolfSSLProvider detected");
+ Security.removeProvider("WolfSSLProvider");
+ log("Removed WolfSSLProvider");
+ }
+ // run with -do in order to see which other securiy providers we should remove
+ devlog("Remaining: " + Security.getProviders().toString());
+ // TBD: AndroidOpenSSL version 1.0 or BC version 1.61?
//Hook insertProviderAt/addprovider for dynamic provider blocking
Security.insertProviderAt.implementation = function (provider, position) {
- if (provider.getName().includes("Conscrypt") || provider.getName().includes("Ssl_Guard") || provider.getName().includes("GmsCore_OpenSSL")) {
+ if (provider.getName().includes("Conscrypt") || provider.getName().includes("Ssl_Guard") || provider.getName().includes("GmsCore_OpenSSL") || provider.getName().includes("WolfSSLProvider")) {
log("Blocking provider registration (insertProviderAt) of " + provider.getName());
return position;
}
@@ -1542,7 +1614,7 @@ export class SSL_Java {
};
//Same for addProvider
Security.insertProviderAt.implementation = function (provider) {
- if (provider.getName().includes("Conscrypt") || provider.getName().includes("Ssl_Guard") || provider.getName().includes("GmsCore_OpenSSL")) {
+ if (provider.getName().includes("Conscrypt") || provider.getName().includes("Ssl_Guard") || provider.getName().includes("GmsCore_OpenSSL") || provider.getName().includes("WolfSSLProvider")) {
log("Blocking provider registration (addProvider) of " + provider.getName());
return 1;
}
@@ -1569,10 +1641,10 @@ export class SSL_Java {
}
}
✄
-{"version":3,"file":"matrixssl.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/ssl_lib/matrixssl.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"matrixssl.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ssl_lib/matrixssl.ts"],"names":[],"mappings":"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"}
✄
import { readAddresses, getPortsAndAddresses, getBaseAddress } from "../shared/shared_functions.js";
-import { offsets } from "../ssl_log.js";
+import { enable_default_fd, offsets } from "../ssl_log.js";
import { log } from "../util/log.js";
export class matrix_SSL {
constructor(moduleName, socket_library, passed_library_method_mapping) {
@@ -1618,7 +1690,7 @@ export class matrix_SSL {
onEnter: function (args) {
this.buffer = args[2];
this.len = args[3];
- var message = getPortsAndAddresses(this.fd, true, lib_addesses);
+ var message = getPortsAndAddresses(this.fd, true, lib_addesses, enable_default_fd);
message["ssl_session_id"] = this.addresses["matrixSslGetSid"] === undefined ? matrix_SSL.sessionId : this.getSessionId(args[0]);
message["function"] = "matrixSslReceivedData";
this.message = message;
@@ -1654,7 +1726,7 @@ export class matrix_SSL {
Interceptor.attach(this.addresses["matrixSslEncodeWritebuf"], {
onEnter: function (args) {
var data = this.outBuffer.readByteArray(this.outBufferLength);
- var message = getPortsAndAddresses(this.fd, false, lib_addesses);
+ var message = getPortsAndAddresses(this.fd, false, lib_addesses, enable_default_fd);
message["ssl_session_id"] = this.addresses["matrixSslGetSid"] === undefined ? matrix_SSL.sessionId : this.getSessionId(args[0]);
message["function"] = "matrixSslEncodeWritebuf";
message["contentType"] = "datalog";
@@ -1699,10 +1771,10 @@ export class matrix_SSL {
}
}
✄
-{"version":3,"file":"mbedTLS.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/ssl_lib/mbedTLS.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"mbedTLS.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ssl_lib/mbedTLS.ts"],"names":[],"mappings":"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"}
✄
import { readAddresses, getPortsAndAddresses, getBaseAddress } from "../shared/shared_functions.js";
-import { offsets } from "../ssl_log.js";
+import { offsets, enable_default_fd } from "../ssl_log.js";
import { log } from "../util/log.js";
export class mbed_TLS {
constructor(moduleName, socket_library, passed_library_method_mapping) {
@@ -1782,7 +1854,7 @@ export class mbed_TLS {
this.buffer = args[1];
this.len = args[2];
this.sslContext = args[0];
- var message = getPortsAndAddresses(mbed_TLS.getSocketDescriptor(args[0]), true, lib_addesses);
+ var message = getPortsAndAddresses(mbed_TLS.getSocketDescriptor(args[0]), true, lib_addesses, enable_default_fd);
message["ssl_session_id"] = mbed_TLS.getSessionId(args[0]);
message["function"] = "mbedtls_ssl_read";
this.message = message;
@@ -1810,7 +1882,7 @@ export class mbed_TLS {
return;
}
var data = buffer.readByteArray(len);
- var message = getPortsAndAddresses(mbed_TLS.getSocketDescriptor(args[0]), false, lib_addesses);
+ var message = getPortsAndAddresses(mbed_TLS.getSocketDescriptor(args[0]), false, lib_addesses, enable_default_fd);
message["ssl_session_id"] = mbed_TLS.getSessionId(args[0]);
message["function"] = "mbedtls_ssl_write";
message["contentType"] = "datalog";
@@ -1823,12 +1895,12 @@ export class mbed_TLS {
}
}
✄
-{"version":3,"file":"nss.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/ssl_lib/nss.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"nss.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ssl_lib/nss.ts"],"names":[],"mappings":"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"}
✄
import { readAddresses, getBaseAddress } from "../shared/shared_functions.js";
import { pointerSize, AF_INET, AF_INET6 } from "../shared/shared_structures.js";
import { log, devlog } from "../util/log.js";
-import { offsets } from "../ssl_log.js";
+import { offsets, enable_default_fd } from "../ssl_log.js";
const { readU32, readU64, readPointer, writeU32, writeU64, writePointer } = NativePointer.prototype;
// https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/SSL_functions/ssltyp#1026722
export var SECStatus;
@@ -2229,12 +2301,20 @@ struct {
typedef union PRNetAddr PRNetAddr;
*/
- static getPortsAndAddressesFromNSS(sockfd, isRead, methodAddresses) {
+ static getPortsAndAddressesFromNSS(sockfd, isRead, methodAddresses, enable_default_fd) {
+ var message = {};
+ if (enable_default_fd && sockfd === null) {
+ message["src" + "_port"] = 1234;
+ message["src" + "_addr"] = "127.0.0.1";
+ message["dst" + "_port"] = 2345;
+ message["dst" + "_addr"] = "127.0.0.1";
+ message["ss_family"] = "AF_INET";
+ return message;
+ }
var getpeername = new NativeFunction(methodAddresses["PR_GetPeerName"], "int", ["pointer", "pointer"]);
var getsockname = new NativeFunction(methodAddresses["PR_GetSockName"], "int", ["pointer", "pointer"]);
var ntohs = new NativeFunction(methodAddresses["ntohs"], "uint16", ["uint16"]);
var ntohl = new NativeFunction(methodAddresses["ntohl"], "uint32", ["uint32"]);
- var message = {};
var addrType = Memory.alloc(2); // PRUint16 is a 2 byte (16 bit) value on all plattforms
//var prNetAddr = Memory.alloc(Process.pointerSize)
var addrlen = Memory.alloc(4);
@@ -2731,21 +2811,29 @@ typedef union PRNetAddr PRNetAddr;
if (retval.toInt32() <= 0 || NSS.getDescType(this.fd) == PRDescType.PR_DESC_FILE) {
return;
}
+ log("The results of NSS and its PR_Read is likely not the information transmitted over the wire. Better do a full capture and just log the TLS keys");
var addr = Memory.alloc(8);
var res = NSS.getpeername(this.fd, addr);
// peername return -1 this is due to the fact that a PIPE descriptor is used to read from the SSL socket
if (addr.readU16() == 2 || addr.readU16() == 10 || addr.readU16() == 100) {
- var message = NSS.getPortsAndAddressesFromNSS(this.fd, true, lib_addesses);
+ var message = NSS.getPortsAndAddressesFromNSS(this.fd, true, lib_addesses, enable_default_fd);
devlog("Session ID: " + NSS.getSslSessionIdFromFD(this.fd));
message["ssl_session_id"] = NSS.getSslSessionIdFromFD(this.fd);
message["function"] = "NSS_read";
this.message = message;
this.message["contentType"] = "datalog";
var data = this.buf.readByteArray((new Uint32Array([retval]))[0]);
+ send(message, data);
}
else {
+ var message = NSS.getPortsAndAddressesFromNSS(null, true, lib_addesses, enable_default_fd);
+ message["ssl_session_id"] = NSS.getSslSessionIdFromFD(this.fd);
+ message["function"] = "NSS_read";
+ this.message = message;
+ this.message["contentType"] = "datalog";
var temp = this.buf.readByteArray((new Uint32Array([retval]))[0]);
devlog(JSON.stringify(temp));
+ send(message, temp);
}
}
});
@@ -2765,12 +2853,23 @@ typedef union PRNetAddr PRNetAddr;
var addr = Memory.alloc(8);
NSS.getsockname(this.fd, addr);
if (addr.readU16() == 2 || addr.readU16() == 10 || addr.readU16() == 100) {
- var message = NSS.getPortsAndAddressesFromNSS(this.fd, false, lib_addesses);
+ var message = NSS.getPortsAndAddressesFromNSS(this.fd, false, lib_addesses, enable_default_fd);
message["ssl_session_id"] = NSS.getSslSessionIdFromFD(this.fd);
message["function"] = "NSS_write";
message["contentType"] = "datalog";
send(message, this.buf.readByteArray((parseInt(this.len))));
}
+ else {
+ log("The results of NSS and its PR_Write is likely not the information transmitted over the wire. Better do a full capture and just log the TLS keys");
+ var message = NSS.getPortsAndAddressesFromNSS(null, true, lib_addesses, enable_default_fd);
+ message["ssl_session_id"] = NSS.getSslSessionIdFromFD(this.fd);
+ message["function"] = "NSS_write";
+ this.message = message;
+ this.message["contentType"] = "datalog";
+ var temp = this.buf.readByteArray((new Uint32Array([retval]))[0]);
+ devlog(JSON.stringify(temp));
+ send(message, temp);
+ }
}
});
}
@@ -2931,10 +3030,10 @@ NSS.secret_callback = new NativeCallback(function (sslSocketFD, epoch, dir, secr
return;
}, "void", ["pointer", "uint16", "uint16", "pointer", "pointer"]);
✄
-{"version":3,"file":"openssl_boringssl.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/ssl_lib/openssl_boringssl.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"openssl_boringssl.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ssl_lib/openssl_boringssl.ts"],"names":[],"mappings":"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"}
✄
import { readAddresses, getPortsAndAddresses, getBaseAddress } from "../shared/shared_functions.js";
-import { offsets } from "../ssl_log.js";
+import { offsets, enable_default_fd } from "../ssl_log.js";
import { devlog, log } from "../util/log.js";
class ModifyReceiver {
constructor() {
@@ -3038,10 +3137,10 @@ export class OpenSSL_BoringSSL {
onEnter: function (args) {
this.bufLen = args[2].toInt32();
this.fd = OpenSSL_BoringSSL.SSL_get_fd(args[0]);
- if (this.fd < 0) {
+ if (this.fd < 0 && enable_default_fd == false) {
return;
}
- var message = getPortsAndAddresses(this.fd, true, lib_addesses);
+ var message = getPortsAndAddresses(this.fd, true, lib_addesses, enable_default_fd);
message["ssl_session_id"] = OpenSSL_BoringSSL.getSslSessionId(args[0]);
message["function"] = "SSL_read";
this.message = message;
@@ -3080,10 +3179,10 @@ export class OpenSSL_BoringSSL {
onEnter: function (args) {
if (!ObjC.available) {
this.fd = OpenSSL_BoringSSL.SSL_get_fd(args[0]);
- if (this.fd < 0) {
+ if (this.fd < 0 && enable_default_fd == false) {
return;
}
- var message = getPortsAndAddresses(this.fd, false, lib_addesses);
+ var message = getPortsAndAddresses(this.fd, false, lib_addesses, enable_default_fd);
message["ssl_session_id"] = OpenSSL_BoringSSL.getSslSessionId(args[0]);
message["function"] = "SSL_write";
message["contentType"] = "datalog";
@@ -3114,6 +3213,10 @@ export class OpenSSL_BoringSSL {
static getSslSessionId(ssl) {
var session = OpenSSL_BoringSSL.SSL_get_session(ssl);
if (session.isNull()) {
+ if (enable_default_fd) {
+ log("using dummy SessionID: 59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76336");
+ return "59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76336";
+ }
log("Session is null");
return 0;
}
@@ -3138,11 +3241,11 @@ OpenSSL_BoringSSL.keylog_callback = new NativeCallback(function (ctxPtr, linePtr
send(message);
}, "void", ["pointer", "pointer"]);
✄
-{"version":3,"file":"wolfssl.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/ssl_lib/wolfssl.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"wolfssl.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/ssl_lib/wolfssl.ts"],"names":[],"mappings":"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"}
✄
import { readAddresses, getPortsAndAddresses, getBaseAddress } from "../shared/shared_functions.js";
import { log } from "../util/log.js";
-import { offsets } from "../ssl_log.js";
+import { offsets, enable_default_fd } from "../ssl_log.js";
export class WolfSSL {
constructor(moduleName, socket_library, passed_library_method_mapping) {
this.moduleName = moduleName;
@@ -3192,6 +3295,10 @@ export class WolfSSL {
static getSslSessionId(ssl) {
var session = WolfSSL.wolfSSL_get_session(ssl);
if (session.isNull()) {
+ if (enable_default_fd) {
+ log("using dummy SessionID: 59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76338");
+ return "59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76338";
+ }
log("Session is null");
return 0;
}
@@ -3210,7 +3317,7 @@ export class WolfSSL {
var lib_addesses = this.addresses;
Interceptor.attach(this.addresses["wolfSSL_read"], {
onEnter: function (args) {
- var message = getPortsAndAddresses(WolfSSL.wolfSSL_get_fd(args[0]), true, lib_addesses);
+ var message = getPortsAndAddresses(WolfSSL.wolfSSL_get_fd(args[0]), true, lib_addesses, enable_default_fd);
message["function"] = "wolfSSL_read";
message["ssl_session_id"] = WolfSSL.getSslSessionId(args[0]);
this.message = message;
@@ -3230,7 +3337,7 @@ export class WolfSSL {
var lib_addesses = this.addresses;
Interceptor.attach(this.addresses["wolfSSL_write"], {
onEnter: function (args) {
- var message = getPortsAndAddresses(WolfSSL.wolfSSL_get_fd(args[0]), false, lib_addesses);
+ var message = getPortsAndAddresses(WolfSSL.wolfSSL_get_fd(args[0]), false, lib_addesses, enable_default_fd);
message["ssl_session_id"] = WolfSSL.getSslSessionId(args[0]);
message["function"] = "wolfSSL_write";
message["contentType"] = "datalog";
@@ -3242,7 +3349,7 @@ export class WolfSSL {
}
}
✄
-{"version":3,"file":"anti_root.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/util/anti_root.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"anti_root.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/util/anti_root.ts"],"names":[],"mappings":"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"}
✄
import { log, devlog } from "./log.js";
import { readAddresses } from "../shared/shared_functions.js";
@@ -3609,7 +3716,7 @@ export function anti_root_execute() {
anti_root.execute_hooks();
}
✄
-{"version":3,"file":"log.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/util/log.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,CAAC,GAAW;IAC3B,IAAI,OAAO,GAA8B,EAAE,CAAA;IAC3C,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,CAAA;IAClC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAA;IACxB,IAAI,CAAC,OAAO,CAAC,CAAA;AACjB,CAAC;AAGD,MAAM,UAAU,MAAM,CAAC,GAAW;IAC9B,IAAI,OAAO,GAA8B,EAAE,CAAA;IAC3C,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA;IACtC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,CAAA;IAC5B,IAAI,CAAC,OAAO,CAAC,CAAA;AACjB,CAAC"}
+{"version":3,"file":"log.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/util/log.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,CAAC,GAAW;IAC3B,IAAI,OAAO,GAA8B,EAAE,CAAA;IAC3C,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,CAAA;IAClC,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,CAAA;IACxB,IAAI,CAAC,OAAO,CAAC,CAAA;AACjB,CAAC;AAGD,MAAM,UAAU,MAAM,CAAC,GAAW;IAC9B,IAAI,OAAO,GAA8B,EAAE,CAAA;IAC3C,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAA;IACtC,OAAO,CAAC,aAAa,CAAC,GAAG,GAAG,CAAA;IAC5B,IAAI,CAAC,OAAO,CAAC,CAAA;AACjB,CAAC"}
✄
export function log(str) {
var message = {};
@@ -3624,7 +3731,7 @@ export function devlog(str) {
send(message);
}
✄
-{"version":3,"file":"process_infos.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/util/process_infos.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,wBAAwB;IAChC,OAAO,OAAO,CAAC,IAAI,CAAC;AAC5B,CAAC;AAGD,MAAM,UAAU,SAAS;IACrB,IAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAC;QAC7C,IAAG;YACC,IAAI,CAAC,cAAc,CAAA,CAAC,yDAAyD;YAC7E,OAAO,IAAI,CAAA;SACd;QAAA,OAAM,KAAK,EAAC;YACT,OAAO,KAAK,CAAA;SACf;KACJ;SAAI;QACD,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAGD,MAAM,UAAU,KAAK;IACjB,IAAG,wBAAwB,EAAE,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAC;QACtE,IAAG;YACE,wFAAwF;YACzF,OAAO,IAAI,CAAA;SACd;QAAA,OAAM,KAAK,EAAC;YACT,OAAO,KAAK,CAAA;SACf;KACJ;SAAI;QACD,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAGD,MAAM,UAAU,OAAO;IACnB,IAAG,wBAAwB,EAAE,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAC;QACpE,OAAO,IAAI,CAAA;KACd;SAAI;QACD,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAGD,MAAM,UAAU,OAAO;IACnB,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;QAE7B,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;YACxD,OAAO,IAAI,CAAA;SACd;aAAM;YACH,IAAI;gBACA,IAAI,CAAC,cAAc,CAAA,CAAC,yDAAyD;gBAC7E,OAAO,KAAK,CAAA;aACf;YAAC,OAAO,KAAK,EAAE;gBACZ,OAAO,IAAI,CAAA;aACd;SAEJ;KACJ;SAAI;QACD,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAED,MAAM,UAAU,SAAS;IACrB,IAAI,OAAO,CAAC,QAAQ,IAAI,SAAS,EAAC;QAC9B,OAAO,IAAI,CAAA;KACd;SAAI;QACD,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAGD,MAAM,UAAU,iBAAiB;IAC7B,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,IAAI,CAAC,OAAO,CAAC;QACT,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,0DAA0D;IACzF,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,GAAY,CAAC,OAAO,CAAC;IACvC,OAAO,cAAc,CAAC;AAG9B,CAAC"}
+{"version":3,"file":"process_infos.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/util/process_infos.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,wBAAwB;IAChC,OAAO,OAAO,CAAC,IAAI,CAAC;AAC5B,CAAC;AAGD,MAAM,UAAU,SAAS;IACrB,IAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAC;QAC7C,IAAG;YACC,IAAI,CAAC,cAAc,CAAA,CAAC,yDAAyD;YAC7E,OAAO,IAAI,CAAA;SACd;QAAA,OAAM,KAAK,EAAC;YACT,OAAO,KAAK,CAAA;SACf;KACJ;SAAI;QACD,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAGD,MAAM,UAAU,KAAK;IACjB,IAAG,wBAAwB,EAAE,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAC;QACtE,IAAG;YACE,wFAAwF;YACzF,OAAO,IAAI,CAAA;SACd;QAAA,OAAM,KAAK,EAAC;YACT,OAAO,KAAK,CAAA;SACf;KACJ;SAAI;QACD,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAGD,MAAM,UAAU,OAAO;IACnB,IAAG,wBAAwB,EAAE,KAAK,KAAK,IAAI,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAC;QACpE,OAAO,IAAI,CAAA;KACd;SAAI;QACD,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAGD,MAAM,UAAU,OAAO;IACnB,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;QAE7B,IAAI,IAAI,CAAC,SAAS,IAAI,KAAK,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE;YACxD,OAAO,IAAI,CAAA;SACd;aAAM;YACH,IAAI;gBACA,IAAI,CAAC,cAAc,CAAA,CAAC,yDAAyD;gBAC7E,OAAO,KAAK,CAAA;aACf;YAAC,OAAO,KAAK,EAAE;gBACZ,OAAO,IAAI,CAAA;aACd;SAEJ;KACJ;SAAI;QACD,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAED,MAAM,UAAU,SAAS;IACrB,IAAI,OAAO,CAAC,QAAQ,IAAI,SAAS,EAAC;QAC9B,OAAO,IAAI,CAAA;KACd;SAAI;QACD,OAAO,KAAK,CAAA;KACf;AACL,CAAC;AAGD,MAAM,UAAU,iBAAiB;IAC7B,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,IAAI,CAAC,OAAO,CAAC;QACT,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,0DAA0D;IACzF,CAAC,CAAC,CAAC;IAEH,IAAI,cAAc,GAAY,CAAC,OAAO,CAAC;IACvC,OAAO,cAAc,CAAC;AAG9B,CAAC"}
✄
export function get_process_architecture() {
return Process.arch;
@@ -3701,7 +3808,7 @@ export function getAndroidVersion() {
return casted_version;
}
✄
-{"version":3,"file":"gnutls_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/windows/gnutls_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,cAAe,SAAQ,MAAM;IAEtC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,wCAAwC;IAC5C,CAAC;IAED,8BAA8B;QAC1B,qBAAqB;IACzB,CAAC;CAEJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,OAAO,GAAG,IAAI,cAAc,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC5D,OAAO,CAAC,aAAa,EAAE,CAAC;AAG5B,CAAC"}
+{"version":3,"file":"gnutls_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/windows/gnutls_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,cAAe,SAAQ,MAAM;IAEtC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEpC,wCAAwC;IAC5C,CAAC;IAED,8BAA8B;QAC1B,qBAAqB;IACzB,CAAC;CAEJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,OAAO,GAAG,IAAI,cAAc,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC5D,OAAO,CAAC,aAAa,EAAE,CAAC;AAG5B,CAAC"}
✄
import { GnuTLS } from "../ssl_lib/gnutls.js";
import { socket_library } from "./windows_agent.js";
@@ -3725,7 +3832,7 @@ export function gnutls_execute(moduleName) {
gnu_ssl.execute_hooks();
}
✄
-{"version":3,"file":"matrixssl_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/windows/matrixssl_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAE9C,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,wCAAwC;IAC5C,CAAC;IAED,8BAA8B;QAC1B,qBAAqB;IACzB,CAAC;CAEJ;AAGD,MAAM,UAAU,iBAAiB,CAAC,UAAiB;IAC/C,IAAI,UAAU,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACnE,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
+{"version":3,"file":"matrixssl_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/windows/matrixssl_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAE9C,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,wCAAwC;IAC5C,CAAC;IAED,8BAA8B;QAC1B,qBAAqB;IACzB,CAAC;CAEJ;AAGD,MAAM,UAAU,iBAAiB,CAAC,UAAiB;IAC/C,IAAI,UAAU,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACnE,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
✄
import { matrix_SSL } from "../ssl_lib/matrixssl.js";
import { socket_library } from "./windows_agent.js";
@@ -3750,7 +3857,7 @@ export function matrixSSL_execute(moduleName) {
matrix_ssl.execute_hooks();
}
✄
-{"version":3,"file":"mbedTLS_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/windows/mbedTLS_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAE1C,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAED;;;;;;MAME;IACF,8BAA8B;QAC1B,8BAA8B;IAClC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;CAEJ;AAGD,MAAM,UAAU,eAAe,CAAC,UAAiB;IAC7C,IAAI,WAAW,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAClE,WAAW,CAAC,aAAa,EAAE,CAAC;AAGhC,CAAC"}
+{"version":3,"file":"mbedTLS_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/windows/mbedTLS_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAE1C,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,KAAK,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;QADlB,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAElE,CAAC;IAED;;;;;;MAME;IACF,8BAA8B;QAC1B,8BAA8B;IAClC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;CAEJ;AAGD,MAAM,UAAU,eAAe,CAAC,UAAiB;IAC7C,IAAI,WAAW,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAClE,WAAW,CAAC,aAAa,EAAE,CAAC;AAGhC,CAAC"}
✄
import { mbed_TLS } from "../ssl_lib/mbedTLS.js";
import { socket_library } from "./windows_agent.js";
@@ -3780,7 +3887,7 @@ export function mbedTLS_execute(moduleName) {
mbedTLS_ssl.execute_hooks();
}
✄
-{"version":3,"file":"nss_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/windows/nss_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,WAAY,SAAQ,GAAG;IAEhC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,IAAI,sBAAsB,GAAqC,EAAE,CAAC;QAClE,sBAAsB,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAA;QAC5J,mFAAmF;QACnF,sBAAsB,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,CAAA;QAEnG,KAAK,CAAC,UAAU,EAAC,cAAc,EAAC,sBAAsB,CAAC,CAAC;QANzC,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAOlE,CAAC;IAED,8BAA8B;QAC1B,MAAM;IACV,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,iEAAiE;IACrE,CAAC;CAEJ;AAGD,MAAM,UAAU,WAAW,CAAC,UAAiB;IACzC,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACzD,OAAO,CAAC,aAAa,EAAE,CAAC;AAG5B,CAAC"}
+{"version":3,"file":"nss_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/windows/nss_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,WAAY,SAAQ,GAAG;IAEhC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,IAAI,sBAAsB,GAAqC,EAAE,CAAC;QAClE,sBAAsB,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAA;QAC5J,mFAAmF;QACnF,sBAAsB,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,CAAC,CAAA;QAEnG,KAAK,CAAC,UAAU,EAAC,cAAc,EAAC,sBAAsB,CAAC,CAAC;QANzC,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAOlE,CAAC;IAED,8BAA8B;QAC1B,MAAM;IACV,CAAC;IAGD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,iEAAiE;IACrE,CAAC;CAEJ;AAGD,MAAM,UAAU,WAAW,CAAC,UAAiB;IACzC,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IACzD,OAAO,CAAC,aAAa,EAAE,CAAC;AAG5B,CAAC"}
✄
import { NSS } from "../ssl_lib/nss.js";
import { socket_library } from "./windows_agent.js";
@@ -3808,7 +3915,7 @@ export function nss_execute(moduleName) {
nss_ssl.execute_hooks();
}
✄
-{"version":3,"file":"openssl_boringssl_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/windows/openssl_boringssl_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IAE5D,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,IAAI,OAAO,GAAoC,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAA;QACtH,OAAO,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACjF,KAAK,CAAC,UAAU,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAJ3B,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAKlE,CAAC;IAED;;;;;;MAME;IACF,8BAA8B;QAC1B,8BAA8B;IAClC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;CAEJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,yBAAyB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC1E,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
+{"version":3,"file":"openssl_boringssl_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/windows/openssl_boringssl_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IAE5D,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,IAAI,OAAO,GAAoC,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAA;QACtH,OAAO,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACjF,KAAK,CAAC,UAAU,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAJ3B,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAKlE,CAAC;IAED;;;;;;MAME;IACF,8BAA8B;QAC1B,8BAA8B;IAClC,CAAC;IAED,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACxC,CAAC;CAEJ;AAGD,MAAM,UAAU,cAAc,CAAC,UAAiB;IAC5C,IAAI,UAAU,GAAG,IAAI,yBAAyB,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC1E,UAAU,CAAC,aAAa,EAAE,CAAC;AAG/B,CAAC"}
✄
import { OpenSSL_BoringSSL } from "../ssl_lib/openssl_boringssl.js";
import { socket_library } from "./windows_agent.js";
@@ -3841,7 +3948,7 @@ export function boring_execute(moduleName) {
boring_ssl.execute_hooks();
}
✄
-{"version":3,"file":"sspi.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/windows/sspi.ts"],"names":[],"mappings":"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"}
+{"version":3,"file":"sspi.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/windows/sspi.ts"],"names":[],"mappings":"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"}
✄
import { readAddresses, getBaseAddress } from "../shared/shared_functions.js";
import { socket_library } from "./windows_agent.js";
@@ -4132,7 +4239,7 @@ export function sspi_execute(moduleName) {
sspi_ssl.execute_hooks();
}
✄
-{"version":3,"file":"windows_agent.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/windows/windows_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D,IAAI,cAAc,GAAG,SAAS,CAAC;AAC/B,IAAI,WAAW,GAAkB,cAAc,EAAE,CAAA;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAE3C,SAAS,2BAA2B,CAAC,sBAAmF;IACpH,IAAI;QAEA,MAAM,QAAQ,GAAgB,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAA;QACvD,IAAI,cAAc,GAAG,QAAQ,CAAC,gBAAgB,CAAC,wCAAwC,CAAC,CAAA;QAExF,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;QAGzF,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;YAC1C,OAAO,CAAC,MAAqB;gBAEzB,IAAI,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBACrC,IAAI,UAAU,KAAK,IAAI;oBAAE,OAAM;gBAE/B,KAAK,IAAI,GAAG,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAE;oBACpD,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC9B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;oBAEjB,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;wBACxB,GAAG,CAAC,GAAG,UAAU,0CAA0C,CAAC,CAAA;wBAC5D,IAAI,CAAC,UAAU,CAAC,CAAA;qBACnB;iBAEJ;YACL,CAAC;SACJ,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;KACpD;IAAC,OAAO,KAAK,EAAE;QACZ,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAA;QAChC,GAAG,CAAC,wCAAwC,CAAC,CAAA;KAChD;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,sBAAmF;IAC9G,kBAAkB,CAAC,cAAc,EAAE,sBAAsB,EAAC,WAAW,EAAC,SAAS,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,0BAA0B;IACtC,sBAAsB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,cAAc,CAAC,EAAE,CAAC,8BAA8B,EAAE,eAAe,CAAC,EAAE,CAAC,uCAAuC,EAAE,cAAc,CAAC,EAAE,CAAC,yBAAyB,EAAE,WAAW,CAAC,EAAE,CAAC,iCAAiC,EAAE,YAAY,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAC5X,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;IAC9C,2BAA2B,CAAC,sBAAsB,CAAC,CAAC;AACxD,CAAC"}
+{"version":3,"file":"windows_agent.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/windows/windows_agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,IAAI,cAAc,GAAG,SAAS,CAAC;AAC/B,IAAI,WAAW,GAAkB,cAAc,EAAE,CAAA;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAE3C,SAAS,2BAA2B,CAAC,sBAAmF;IACpH,IAAI;QAEA,MAAM,QAAQ,GAAgB,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAA;QACvD,IAAI,cAAc,GAAG,QAAQ,CAAC,gBAAgB,CAAC,wCAAwC,CAAC,CAAA;QAExF,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;QAGzF,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;YAC1C,OAAO,CAAC,MAAqB;gBAEzB,IAAI,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBACrC,IAAI,UAAU,KAAK,IAAI;oBAAE,OAAM;gBAE/B,KAAK,IAAI,GAAG,IAAI,sBAAsB,CAAC,cAAc,CAAC,EAAE;oBACpD,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC9B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;oBAEjB,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;wBACxB,GAAG,CAAC,GAAG,UAAU,0CAA0C,CAAC,CAAA;wBAC5D,IAAI,CAAC,UAAU,CAAC,CAAA;qBACnB;iBAEJ;YACL,CAAC;SACJ,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;KACpD;IAAC,OAAO,KAAK,EAAE;QACZ,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC,CAAA;QAChC,GAAG,CAAC,wCAAwC,CAAC,CAAA;KAChD;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,sBAAmF;IAC9G,kBAAkB,CAAC,cAAc,EAAE,sBAAsB,EAAC,WAAW,EAAC,SAAS,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,0BAA0B;IACtC,sBAAsB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,cAAc,CAAC,EAAE,CAAC,8BAA8B,EAAE,eAAe,CAAC,EAAE,CAAC,uCAAuC,EAAE,cAAc,CAAC,EAAE,CAAC,yBAAyB,EAAE,WAAW,CAAC,EAAE,CAAC,iCAAiC,EAAE,YAAY,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAA;IAC5X,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;IAC9C,2BAA2B,CAAC,sBAAsB,CAAC,CAAC;AACxD,CAAC"}
✄
import { module_library_mapping } from "../shared/shared_structures.js";
import { log, devlog } from "../util/log.js";
@@ -4185,7 +4292,7 @@ export function load_windows_hooking_agent() {
hook_Windows_Dynamic_Loader(module_library_mapping);
}
✄
-{"version":3,"file":"wolfssl_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024/friTap/","sources":["agent/windows/wolfssl_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,MAAM,OAAO,eAAgB,SAAQ,OAAO;IAExC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,IAAI,OAAO,GAAoC,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAA;QAC9I,OAAO,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACjF,KAAK,CAAC,UAAU,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAJ3B,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAKlE,CAAC;IAGD,8BAA8B;QAC1B,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACjE,CAAC;IAKD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,kEAAkE;IACtE,CAAC;CAEJ;AAGD,MAAM,UAAU,eAAe,CAAC,UAAiB;IAC7C,IAAI,QAAQ,GAAG,IAAI,eAAe,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC9D,QAAQ,CAAC,aAAa,EAAE,CAAC;AAG7B,CAAC"}
+{"version":3,"file":"wolfssl_windows.js","sourceRoot":"/Users/danielbaier/research/projects/github/issues/2024 fritap issues/friTap/","sources":["agent/windows/wolfssl_windows.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,MAAM,OAAO,eAAgB,SAAQ,OAAO;IAExC,YAAmB,UAAiB,EAAS,cAAqB;QAC9D,IAAI,OAAO,GAAoC,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,CAAA;QAC9I,OAAO,CAAC,IAAI,cAAc,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACjF,KAAK,CAAC,UAAU,EAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAJ3B,eAAU,GAAV,UAAU,CAAO;QAAS,mBAAc,GAAd,cAAc,CAAO;IAKlE,CAAC;IAGD,8BAA8B;QAC1B,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACjE,CAAC;IAKD,aAAa;QACT,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,kEAAkE;IACtE,CAAC;CAEJ;AAGD,MAAM,UAAU,eAAe,CAAC,UAAiB;IAC7C,IAAI,QAAQ,GAAG,IAAI,eAAe,CAAC,UAAU,EAAC,cAAc,CAAC,CAAC;IAC9D,QAAQ,CAAC,aAAa,EAAE,CAAC;AAG7B,CAAC"}
✄
import { WolfSSL } from "../ssl_lib/wolfssl.js";
import { socket_library } from "./windows_agent.js";
diff --git a/friTap/_ssl_log_legacy.js b/friTap/_ssl_log_legacy.js
index d0e0ad3..8cc11a8 100644
--- a/friTap/_ssl_log_legacy.js
+++ b/friTap/_ssl_log_legacy.js
@@ -77,18 +77,20 @@ const java_ssl_libs_1 = require("../ssl_lib/java_ssl_libs");
class SSL_Java_Android extends java_ssl_libs_1.SSL_Java {
install_java_android_hooks() {
if (Java.available) {
- Java.perform(function () {
- // Bouncycastle/Spongycastle
- try {
- //If we can load a class of spongycastle, we know its present and we have to hook it
- var testLoad = Java.use("org.spongycastle.jsse.provider.ProvSSLSocketDirect");
- (0, log_1.log)("Bouncycastle/Spongycastle detected.");
- (0, bouncycastle_1.execute)();
- }
- catch (error) {
- //On error, just do nothing
- }
- });
+ setTimeout(function () {
+ Java.perform(function () {
+ // Bouncycastle/Spongycastle
+ try {
+ //If we can load a class of spongycastle, we know its present and we have to hook it
+ var testLoad = Java.use("org.spongycastle.jsse.provider.ProvSSLSocketDirect");
+ (0, log_1.log)("Bouncycastle/Spongycastle detected.");
+ (0, bouncycastle_1.execute)();
+ }
+ catch (error) {
+ //On error, just do nothing
+ }
+ });
+ }, 0);
}
}
execute_hooks() {
@@ -110,86 +112,88 @@ exports.execute = void 0;
const log_1 = require("../util/log");
const shared_functions_1 = require("../shared/shared_functions");
function execute() {
- Java.perform(function () {
- //Hook the inner class "AppDataOutput/input" of ProvSSLSocketDirect, so we can access the
- //socket information in its outer class by accessing this.this$0
- var appDataOutput = Java.use("org.spongycastle.jsse.provider.ProvSSLSocketDirect$AppDataOutput");
- appDataOutput.write.overload('[B', 'int', 'int').implementation = function (buf, offset, len) {
- var result = [];
- for (var i = 0; i < len; ++i) {
- result.push(buf[i] & 0xff);
- }
- var message = {};
- message["contentType"] = "datalog";
- message["src_port"] = this.this$0.value.getLocalPort();
- message["dst_port"] = this.this$0.value.getPort();
- var localAddress = this.this$0.value.getLocalAddress().getAddress();
- var inetAddress = this.this$0.value.getInetAddress().getAddress();
- if (localAddress.length == 4) {
- message["src_addr"] = (0, shared_functions_1.byteArrayToNumber)(localAddress);
- message["dst_addr"] = (0, shared_functions_1.byteArrayToNumber)(inetAddress);
- message["ss_family"] = "AF_INET";
- }
- else {
- message["src_addr"] = (0, shared_functions_1.byteArrayToString)(localAddress);
- message["dst_addr"] = (0, shared_functions_1.byteArrayToString)(inetAddress);
- message["ss_family"] = "AF_INET6";
- }
- message["ssl_session_id"] = (0, shared_functions_1.byteArrayToString)(this.this$0.value.getConnection().getSession().getId());
- //log(message["ssl_session_id"])
- message["function"] = "writeApplicationData";
- send(message, result);
- return this.write(buf, offset, len);
- };
- var appDataInput = Java.use("org.spongycastle.jsse.provider.ProvSSLSocketDirect$AppDataInput");
- appDataInput.read.overload('[B', 'int', 'int').implementation = function (buf, offset, len) {
- var bytesRead = this.read(buf, offset, len);
- var result = [];
- for (var i = 0; i < bytesRead; ++i) {
- result.push(buf[i] & 0xff);
- }
- var message = {};
- message["contentType"] = "datalog";
- message["ss_family"] = "AF_INET";
- message["src_port"] = this.this$0.value.getPort();
- message["dst_port"] = this.this$0.value.getLocalPort();
- var localAddress = this.this$0.value.getLocalAddress().getAddress();
- var inetAddress = this.this$0.value.getInetAddress().getAddress();
- if (localAddress.length == 4) {
- message["src_addr"] = (0, shared_functions_1.byteArrayToNumber)(inetAddress);
- message["dst_addr"] = (0, shared_functions_1.byteArrayToNumber)(localAddress);
+ setTimeout(function () {
+ Java.perform(function () {
+ //Hook the inner class "AppDataOutput/input" of ProvSSLSocketDirect, so we can access the
+ //socket information in its outer class by accessing this.this$0
+ var appDataOutput = Java.use("org.spongycastle.jsse.provider.ProvSSLSocketDirect$AppDataOutput");
+ appDataOutput.write.overload('[B', 'int', 'int').implementation = function (buf, offset, len) {
+ var result = [];
+ for (var i = 0; i < len; ++i) {
+ result.push(buf[i] & 0xff);
+ }
+ var message = {};
+ message["contentType"] = "datalog";
+ message["src_port"] = this.this$0.value.getLocalPort();
+ message["dst_port"] = this.this$0.value.getPort();
+ var localAddress = this.this$0.value.getLocalAddress().getAddress();
+ var inetAddress = this.this$0.value.getInetAddress().getAddress();
+ if (localAddress.length == 4) {
+ message["src_addr"] = (0, shared_functions_1.byteArrayToNumber)(localAddress);
+ message["dst_addr"] = (0, shared_functions_1.byteArrayToNumber)(inetAddress);
+ message["ss_family"] = "AF_INET";
+ }
+ else {
+ message["src_addr"] = (0, shared_functions_1.byteArrayToString)(localAddress);
+ message["dst_addr"] = (0, shared_functions_1.byteArrayToString)(inetAddress);
+ message["ss_family"] = "AF_INET6";
+ }
+ message["ssl_session_id"] = (0, shared_functions_1.byteArrayToString)(this.this$0.value.getConnection().getSession().getId());
+ //log(message["ssl_session_id"])
+ message["function"] = "writeApplicationData";
+ send(message, result);
+ return this.write(buf, offset, len);
+ };
+ var appDataInput = Java.use("org.spongycastle.jsse.provider.ProvSSLSocketDirect$AppDataInput");
+ appDataInput.read.overload('[B', 'int', 'int').implementation = function (buf, offset, len) {
+ var bytesRead = this.read(buf, offset, len);
+ var result = [];
+ for (var i = 0; i < bytesRead; ++i) {
+ result.push(buf[i] & 0xff);
+ }
+ var message = {};
+ message["contentType"] = "datalog";
message["ss_family"] = "AF_INET";
- }
- else {
- message["src_addr"] = (0, shared_functions_1.byteArrayToString)(inetAddress);
- message["dst_addr"] = (0, shared_functions_1.byteArrayToString)(localAddress);
- message["ss_family"] = "AF_INET6";
- }
- message["ssl_session_id"] = (0, shared_functions_1.byteArrayToString)(this.this$0.value.getConnection().getSession().getId());
- (0, log_1.log)(message["ssl_session_id"]);
- message["function"] = "readApplicationData";
- send(message, result);
- return bytesRead;
- };
- //Hook the handshake to read the client random and the master key
- var ProvSSLSocketDirect = Java.use("org.spongycastle.jsse.provider.ProvSSLSocketDirect");
- ProvSSLSocketDirect.notifyHandshakeComplete.implementation = function (x) {
- var protocol = this.protocol.value;
- var securityParameters = protocol.securityParameters.value;
- var clientRandom = securityParameters.clientRandom.value;
- var masterSecretObj = (0, shared_functions_1.getAttribute)(securityParameters, "masterSecret");
- //The key is in the AbstractTlsSecret, so we need to access the superclass to get the field
- var clazz = Java.use("java.lang.Class");
- var masterSecretRawField = Java.cast(masterSecretObj.getClass(), clazz).getSuperclass().getDeclaredField("data");
- masterSecretRawField.setAccessible(true);
- var masterSecretReflectArray = masterSecretRawField.get(masterSecretObj);
- var message = {};
- message["contentType"] = "keylog";
- message["keylog"] = "CLIENT_RANDOM " + (0, shared_functions_1.byteArrayToString)(clientRandom) + " " + (0, shared_functions_1.reflectionByteArrayToString)(masterSecretReflectArray);
- send(message);
- return this.notifyHandshakeComplete(x);
- };
- });
+ message["src_port"] = this.this$0.value.getPort();
+ message["dst_port"] = this.this$0.value.getLocalPort();
+ var localAddress = this.this$0.value.getLocalAddress().getAddress();
+ var inetAddress = this.this$0.value.getInetAddress().getAddress();
+ if (localAddress.length == 4) {
+ message["src_addr"] = (0, shared_functions_1.byteArrayToNumber)(inetAddress);
+ message["dst_addr"] = (0, shared_functions_1.byteArrayToNumber)(localAddress);
+ message["ss_family"] = "AF_INET";
+ }
+ else {
+ message["src_addr"] = (0, shared_functions_1.byteArrayToString)(inetAddress);
+ message["dst_addr"] = (0, shared_functions_1.byteArrayToString)(localAddress);
+ message["ss_family"] = "AF_INET6";
+ }
+ message["ssl_session_id"] = (0, shared_functions_1.byteArrayToString)(this.this$0.value.getConnection().getSession().getId());
+ (0, log_1.log)(message["ssl_session_id"]);
+ message["function"] = "readApplicationData";
+ send(message, result);
+ return bytesRead;
+ };
+ //Hook the handshake to read the client random and the master key
+ var ProvSSLSocketDirect = Java.use("org.spongycastle.jsse.provider.ProvSSLSocketDirect");
+ ProvSSLSocketDirect.notifyHandshakeComplete.implementation = function (x) {
+ var protocol = this.protocol.value;
+ var securityParameters = protocol.securityParameters.value;
+ var clientRandom = securityParameters.clientRandom.value;
+ var masterSecretObj = (0, shared_functions_1.getAttribute)(securityParameters, "masterSecret");
+ //The key is in the AbstractTlsSecret, so we need to access the superclass to get the field
+ var clazz = Java.use("java.lang.Class");
+ var masterSecretRawField = Java.cast(masterSecretObj.getClass(), clazz).getSuperclass().getDeclaredField("data");
+ masterSecretRawField.setAccessible(true);
+ var masterSecretReflectArray = masterSecretRawField.get(masterSecretObj);
+ var message = {};
+ message["contentType"] = "keylog";
+ message["keylog"] = "CLIENT_RANDOM " + (0, shared_functions_1.byteArrayToString)(clientRandom) + " " + (0, shared_functions_1.reflectionByteArrayToString)(masterSecretReflectArray);
+ send(message);
+ return this.notifyHandshakeComplete(x);
+ };
+ });
+ }, 0);
}
exports.execute = execute;
@@ -199,7 +203,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.execute = void 0;
const log_1 = require("../util/log");
const process_infos_1 = require("../util/process_infos");
-function findProviderInstallerFromClassloaders(currentClassLoader, backupImplementation) {
+function findProviderInstallerImplFromClassloaders(currentClassLoader, backupImplementation) {
var providerInstallerImpl = null;
var classLoaders = Java.enumerateClassLoadersSync();
for (var cl of classLoaders) {
@@ -209,16 +213,44 @@ function findProviderInstallerFromClassloaders(currentClassLoader, backupImpleme
break;
}
catch (error) {
+ (0, log_1.log)("Error in hooking ProviderInstallerImpl");
+ console.log(error);
// On error we return null
}
}
var version = (0, process_infos_1.getAndroidVersion)();
+ //log("is here the error")
+ //log(typeof version)
if (version <= 12) {
//Revert the implementation to avoid an infinitloop of "Loadclass"
currentClassLoader.loadClass.overload("java.lang.String").implementation = backupImplementation;
}
return providerInstallerImpl;
}
+function findProviderInstallerFromClassloaders(currentClassLoader, backupImplementation) {
+ var providerInstaller = null;
+ var classLoaders = Java.enumerateClassLoadersSync();
+ for (var cl of classLoaders) {
+ try {
+ var classFactory = Java.ClassFactory.get(cl);
+ providerInstaller = classFactory.use("com.google.android.gms.security.ProviderInstaller");
+ break;
+ }
+ catch (error) {
+ (0, log_1.log)("Error in hooking ProviderInstallerImpl");
+ console.log(error);
+ // On error we return null
+ }
+ }
+ var version = (0, process_infos_1.getAndroidVersion)();
+ //log("is here the error")
+ //log(typeof version)
+ if (version <= 12) {
+ //Revert the implementation to avoid an infinitloop of "Loadclass"
+ currentClassLoader.loadClass.overload("java.lang.String").implementation = backupImplementation;
+ }
+ return providerInstaller;
+}
function execute() {
//We have to hook multiple entrypoints: ProviderInstallerImpl and ProviderInstaller
Java.perform(function () {
@@ -230,7 +262,7 @@ function execute() {
let retval = this.loadClass(className);
if (className.endsWith("ProviderInstallerImpl")) {
(0, log_1.log)("Process is loading ProviderInstallerImpl");
- var providerInstallerImpl = findProviderInstallerFromClassloaders(javaClassLoader, backupImplementation);
+ var providerInstallerImpl = findProviderInstallerImplFromClassloaders(javaClassLoader, backupImplementation);
if (providerInstallerImpl === null) {
(0, log_1.log)("ProviderInstallerImpl could not be found, although it has been loaded");
}
@@ -254,7 +286,27 @@ function execute() {
};
}
catch (error) {
- // As it is not available, do nothing
+ try {
+ // probably class wasn't loaded by the app's main class loader therefore we load it
+ var providerInstallerFromClassloder = findProviderInstallerFromClassloaders(javaClassLoader, backupImplementation);
+ if (providerInstallerFromClassloder === null) {
+ (0, log_1.log)("ProviderInstaller could not be found, although it has been loaded");
+ }
+ else {
+ providerInstallerFromClassloder.installIfNeeded.implementation = function (context) {
+ (0, log_1.log)("Providerinstaller redirection/blocking");
+ };
+ providerInstallerFromClassloder.installIfNeededAsync.implementation = function (context, callback) {
+ (0, log_1.log)("Providerinstaller redirection/blocking");
+ callback.onProviderInstalled();
+ };
+ }
+ }
+ catch (error) {
+ (0, log_1.log)("Some error in hooking the Providerinstaller");
+ console.log(error);
+ // As it is not available, do nothing
+ }
}
});
}
@@ -538,10 +590,18 @@ class OpenSSL_BoringSSL_iOS extends openssl_boringssl_1.OpenSSL_BoringSSL {
(0, log_1.devlog)("Installing callback for iOS < 14");
CALLBACK_OFFSET = 0x2A8;
}
- else if (foundationNumber >= 1751.108) {
+ else if (foundationNumber >= 1751.108 && foundationNumber < 1946.102) {
(0, log_1.devlog)("Installing callback for iOS >= 14");
CALLBACK_OFFSET = 0x2B8; // >= iOS 14.x
}
+ else if (foundationNumber >= 1946.102 && foundationNumber <= 1979.1) {
+ (0, log_1.devlog)("Installing callback for iOS >= 16");
+ CALLBACK_OFFSET = 0x300; // >= iOS 16.x
+ }
+ else if (foundationNumber > 1979.1) {
+ (0, log_1.devlog)("Installing callback for iOS >= 17");
+ CALLBACK_OFFSET = 0x308; // >= iOS 17.x
+ }
Interceptor.attach(this.addresses["SSL_CTX_set_info_callback"], {
onEnter: function (args) {
ptr(args[0]).add(CALLBACK_OFFSET).writePointer(openssl_boringssl_1.OpenSSL_BoringSSL.keylog_callback);
@@ -1176,12 +1236,20 @@ exports.getBaseAddress = getBaseAddress;
* @return {{ [key: string]: string | number }} Dictionary of sockfd's "src_addr", "src_port", "dst_addr",
* and "dst_port".
*/
-function getPortsAndAddresses(sockfd, isRead, methodAddresses) {
+function getPortsAndAddresses(sockfd, isRead, methodAddresses, enable_default_fd) {
+ var message = {};
+ if (enable_default_fd && (sockfd < 0)) {
+ message["src" + "_port"] = 1234;
+ message["src" + "_addr"] = "127.0.0.1";
+ message["dst" + "_port"] = 2345;
+ message["dst" + "_addr"] = "127.0.0.1";
+ message["ss_family"] = "AF_INET";
+ return message;
+ }
var getpeername = new NativeFunction(methodAddresses["getpeername"], "int", ["int", "pointer", "pointer"]);
var getsockname = new NativeFunction(methodAddresses["getsockname"], "int", ["int", "pointer", "pointer"]);
var ntohs = new NativeFunction(methodAddresses["ntohs"], "uint16", ["uint16"]);
var ntohl = new NativeFunction(methodAddresses["ntohl"], "uint32", ["uint32"]);
- var message = {};
var addrlen = Memory.alloc(4);
var addr = Memory.alloc(128);
var src_dst = ["src", "dst"];
@@ -1392,12 +1460,20 @@ class GnuTLS {
var len_pointer = Memory.alloc(4);
var err = GnuTLS.gnutls_session_get_id(session, NULL, len_pointer);
if (err != 0) {
+ if (ssl_log_1.enable_default_fd) {
+ (0, log_1.log)("using dummy SessionID: 59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76337");
+ return "59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76337";
+ }
return "";
}
var len = len_pointer.readU32();
var p = Memory.alloc(len);
err = GnuTLS.gnutls_session_get_id(session, p, len_pointer);
if (err != 0) {
+ if (ssl_log_1.enable_default_fd) {
+ (0, log_1.log)("using dummy SessionID: 59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76337");
+ return "59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76337";
+ }
return "";
}
var session_id = "";
@@ -1413,7 +1489,7 @@ class GnuTLS {
var lib_addesses = this.addresses;
Interceptor.attach(this.addresses["gnutls_record_recv"], {
onEnter: function (args) {
- var message = (0, shared_functions_1.getPortsAndAddresses)(GnuTLS.gnutls_transport_get_int(args[0]), true, lib_addesses);
+ var message = (0, shared_functions_1.getPortsAndAddresses)(GnuTLS.gnutls_transport_get_int(args[0]), true, lib_addesses, ssl_log_1.enable_default_fd);
message["ssl_session_id"] = GnuTLS.getSslSessionId(args[0]);
message["function"] = "SSL_read";
this.message = message;
@@ -1433,7 +1509,7 @@ class GnuTLS {
var lib_addesses = this.addresses;
Interceptor.attach(this.addresses["gnutls_record_send"], {
onEnter: function (args) {
- var message = (0, shared_functions_1.getPortsAndAddresses)(GnuTLS.gnutls_transport_get_int(args[0]), false, lib_addesses);
+ var message = (0, shared_functions_1.getPortsAndAddresses)(GnuTLS.gnutls_transport_get_int(args[0]), false, lib_addesses, ssl_log_1.enable_default_fd);
message["ssl_session_id"] = GnuTLS.getSslSessionId(args[0]);
message["function"] = "SSL_write";
message["contentType"] = "datalog";
@@ -1458,65 +1534,74 @@ const process_infos_1 = require("../util/process_infos");
class SSL_Java {
install_java_hooks() {
if (Java.available) {
- Java.perform(function () {
- //Conscrypt needs early instrumentation as we block the provider installation
- var Security = Java.use("java.security.Security");
- if (Security.getProviders().toString().includes("GmsCore_OpenSSL")) {
- (0, log_1.log)("WARNING: PID " + Process.id + " Detected GmsCore_OpenSSL Provider. This can be a bit unstable. If you having issues, rerun with -spawn for early instrumentation. Trying to remove it to fall back on default Provider");
- Security.removeProvider("GmsCore_OpenSSL");
- (0, log_1.log)("Removed GmsCore_OpenSSL");
- }
- //As the classloader responsible for loading ProviderInstaller sometimes is not present from the beginning on,
- //we always have to watch the classloader activity
- (0, conscrypt_1.execute)();
- //Now do the same for Ssl_guard
- if (Security.getProviders().toString().includes("Ssl_Guard")) {
- (0, log_1.log)("Ssl_Guard deteced, removing it to fall back on default Provider");
- Security.removeProvider("Ssl_Guard");
- (0, log_1.log)("Removed Ssl_Guard");
- }
- //Same thing for Conscrypt provider which has been manually inserted (not by providerinstaller)
- if (Security.getProviders().toString().includes("Conscrypt version")) {
- (0, log_1.log)("Conscrypt detected");
- Security.removeProvider("Conscrypt");
- (0, log_1.log)("Removed Conscrypt");
- }
- //Uncomment this line to show all remaining providers
- //log("Remaining: " + Security.getProviders().toString())
- //Hook insertProviderAt/addprovider for dynamic provider blocking
- Security.insertProviderAt.implementation = function (provider, position) {
- if (provider.getName().includes("Conscrypt") || provider.getName().includes("Ssl_Guard") || provider.getName().includes("GmsCore_OpenSSL")) {
- (0, log_1.log)("Blocking provider registration of " + provider.getName());
- return position;
+ setTimeout(function () {
+ Java.perform(function () {
+ //Conscrypt needs early instrumentation as we block the provider installation
+ var Security = Java.use("java.security.Security");
+ if (Security.getProviders().toString().includes("GmsCore_OpenSSL")) {
+ (0, log_1.log)("WARNING: PID " + Process.id + " Detected GmsCore_OpenSSL Provider. This can be a bit unstable. If you having issues, rerun with -spawn for early instrumentation. Trying to remove it to fall back on default Provider");
+ Security.removeProvider("GmsCore_OpenSSL");
+ (0, log_1.log)("Removed GmsCore_OpenSSL");
}
- else {
- return this.insertProviderAt(provider, position);
+ //As the classloader responsible for loading ProviderInstaller sometimes is not present from the beginning on,
+ //we always have to watch the classloader activity
+ (0, conscrypt_1.execute)();
+ //Now do the same for Ssl_guard
+ if (Security.getProviders().toString().includes("Ssl_Guard")) {
+ (0, log_1.log)("Ssl_Guard deteced, removing it to fall back on default Provider");
+ Security.removeProvider("Ssl_Guard");
+ (0, log_1.log)("Removed Ssl_Guard");
}
- };
- //Same for addProvider
- Security.insertProviderAt.implementation = function (provider) {
- if (provider.getName().includes("Conscrypt") || provider.getName().includes("Ssl_Guard") || provider.getName().includes("GmsCore_OpenSSL")) {
- (0, log_1.log)("Blocking provider registration of " + provider.getName());
- return 1;
+ //Same thing for Conscrypt provider which has been manually inserted (not by providerinstaller)
+ if (Security.getProviders().toString().includes("Conscrypt version")) {
+ (0, log_1.log)("Conscrypt detected");
+ Security.removeProvider("Conscrypt");
+ (0, log_1.log)("Removed Conscrypt");
}
- else {
- if ((0, process_infos_1.isAndroid)()) {
- /*
- When a NetworkProvider will be installed it is only allow at position 1
- s. https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/security/net/config/NetworkSecurityConfigProvider.java
- */
- if (provider.getName() === "AndroidNSSP") {
- return this.insertProviderAt(provider, 1);
+ //Same thing for WolfSSLProvider provider which has been manually inserted (not by providerinstaller)
+ if (Security.getProviders().toString().includes("WolfSSLProvider")) {
+ (0, log_1.log)("WolfSSLProvider detected");
+ Security.removeProvider("WolfSSLProvider");
+ (0, log_1.log)("Removed WolfSSLProvider");
+ }
+ // run with -do in order to see which other securiy providers we should remove
+ (0, log_1.devlog)("Remaining: " + Security.getProviders().toString());
+ // TBD: AndroidOpenSSL version 1.0 or BC version 1.61?
+ //Hook insertProviderAt/addprovider for dynamic provider blocking
+ Security.insertProviderAt.implementation = function (provider, position) {
+ if (provider.getName().includes("Conscrypt") || provider.getName().includes("Ssl_Guard") || provider.getName().includes("GmsCore_OpenSSL") || provider.getName().includes("WolfSSLProvider")) {
+ (0, log_1.log)("Blocking provider registration (insertProviderAt) of " + provider.getName());
+ return position;
+ }
+ else {
+ return this.insertProviderAt(provider, position);
+ }
+ };
+ //Same for addProvider
+ Security.insertProviderAt.implementation = function (provider) {
+ if (provider.getName().includes("Conscrypt") || provider.getName().includes("Ssl_Guard") || provider.getName().includes("GmsCore_OpenSSL") || provider.getName().includes("WolfSSLProvider")) {
+ (0, log_1.log)("Blocking provider registration (addProvider) of " + provider.getName());
+ return 1;
+ }
+ else {
+ if ((0, process_infos_1.isAndroid)()) {
+ /*
+ When a NetworkProvider will be installed it is only allow at position 1
+ s. https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/security/net/config/NetworkSecurityConfigProvider.java
+ */
+ if (provider.getName() === "AndroidNSSP") {
+ return this.insertProviderAt(provider, 1);
+ }
+ // when the "Failed to install provider as highest priority provider. Provider was installed at position"-error is prompted on logcat please uncomment the following line, recompile the typescript and reopen the following
+ // https://github.com/fkie-cad/friTap/issues/1
+ // var android_Version = Java.androidVersion
+ // devlog("highest priority provider error with: "+provider.getName())
}
- // when the "Failed to install provider as highest priority provider. Provider was installed at position"-error is prompted on logcat please uncomment the following line, recompile the typescript and reopen the following
- // https://github.com/fkie-cad/friTap/issues/1
- // var android_Version = Java.androidVersion
- // devlog("highest priority provider error with: "+provider.getName())
+ return this.addProvider(provider);
}
- return this.addProvider(provider);
- }
- };
- });
+ };
+ });
+ }, 0);
}
}
}
@@ -1580,7 +1665,7 @@ class matrix_SSL {
onEnter: function (args) {
this.buffer = args[2];
this.len = args[3];
- var message = (0, shared_functions_1.getPortsAndAddresses)(this.fd, true, lib_addesses);
+ var message = (0, shared_functions_1.getPortsAndAddresses)(this.fd, true, lib_addesses, ssl_log_1.enable_default_fd);
message["ssl_session_id"] = this.addresses["matrixSslGetSid"] === undefined ? matrix_SSL.sessionId : this.getSessionId(args[0]);
message["function"] = "matrixSslReceivedData";
this.message = message;
@@ -1616,7 +1701,7 @@ class matrix_SSL {
Interceptor.attach(this.addresses["matrixSslEncodeWritebuf"], {
onEnter: function (args) {
var data = this.outBuffer.readByteArray(this.outBufferLength);
- var message = (0, shared_functions_1.getPortsAndAddresses)(this.fd, false, lib_addesses);
+ var message = (0, shared_functions_1.getPortsAndAddresses)(this.fd, false, lib_addesses, ssl_log_1.enable_default_fd);
message["ssl_session_id"] = this.addresses["matrixSslGetSid"] === undefined ? matrix_SSL.sessionId : this.getSessionId(args[0]);
message["function"] = "matrixSslEncodeWritebuf";
message["contentType"] = "datalog";
@@ -1751,7 +1836,7 @@ class mbed_TLS {
this.buffer = args[1];
this.len = args[2];
this.sslContext = args[0];
- var message = (0, shared_functions_1.getPortsAndAddresses)(mbed_TLS.getSocketDescriptor(args[0]), true, lib_addesses);
+ var message = (0, shared_functions_1.getPortsAndAddresses)(mbed_TLS.getSocketDescriptor(args[0]), true, lib_addesses, ssl_log_1.enable_default_fd);
message["ssl_session_id"] = mbed_TLS.getSessionId(args[0]);
message["function"] = "mbedtls_ssl_read";
this.message = message;
@@ -1779,7 +1864,7 @@ class mbed_TLS {
return;
}
var data = buffer.readByteArray(len);
- var message = (0, shared_functions_1.getPortsAndAddresses)(mbed_TLS.getSocketDescriptor(args[0]), false, lib_addesses);
+ var message = (0, shared_functions_1.getPortsAndAddresses)(mbed_TLS.getSocketDescriptor(args[0]), false, lib_addesses, ssl_log_1.enable_default_fd);
message["ssl_session_id"] = mbed_TLS.getSessionId(args[0]);
message["function"] = "mbedtls_ssl_write";
message["contentType"] = "datalog";
@@ -2268,12 +2353,20 @@ struct {
typedef union PRNetAddr PRNetAddr;
*/
- static getPortsAndAddressesFromNSS(sockfd, isRead, methodAddresses) {
+ static getPortsAndAddressesFromNSS(sockfd, isRead, methodAddresses, enable_default_fd) {
+ var message = {};
+ if (enable_default_fd && sockfd === null) {
+ message["src" + "_port"] = 1234;
+ message["src" + "_addr"] = "127.0.0.1";
+ message["dst" + "_port"] = 2345;
+ message["dst" + "_addr"] = "127.0.0.1";
+ message["ss_family"] = "AF_INET";
+ return message;
+ }
var getpeername = new NativeFunction(methodAddresses["PR_GetPeerName"], "int", ["pointer", "pointer"]);
var getsockname = new NativeFunction(methodAddresses["PR_GetSockName"], "int", ["pointer", "pointer"]);
var ntohs = new NativeFunction(methodAddresses["ntohs"], "uint16", ["uint16"]);
var ntohl = new NativeFunction(methodAddresses["ntohl"], "uint32", ["uint32"]);
- var message = {};
var addrType = Memory.alloc(2); // PRUint16 is a 2 byte (16 bit) value on all plattforms
//var prNetAddr = Memory.alloc(Process.pointerSize)
var addrlen = Memory.alloc(4);
@@ -2770,21 +2863,29 @@ typedef union PRNetAddr PRNetAddr;
if (retval.toInt32() <= 0 || NSS.getDescType(this.fd) == PRDescType.PR_DESC_FILE) {
return;
}
+ (0, log_1.log)("The results of NSS and its PR_Read is likely not the information transmitted over the wire. Better do a full capture and just log the TLS keys");
var addr = Memory.alloc(8);
var res = NSS.getpeername(this.fd, addr);
// peername return -1 this is due to the fact that a PIPE descriptor is used to read from the SSL socket
if (addr.readU16() == 2 || addr.readU16() == 10 || addr.readU16() == 100) {
- var message = NSS.getPortsAndAddressesFromNSS(this.fd, true, lib_addesses);
+ var message = NSS.getPortsAndAddressesFromNSS(this.fd, true, lib_addesses, ssl_log_1.enable_default_fd);
(0, log_1.devlog)("Session ID: " + NSS.getSslSessionIdFromFD(this.fd));
message["ssl_session_id"] = NSS.getSslSessionIdFromFD(this.fd);
message["function"] = "NSS_read";
this.message = message;
this.message["contentType"] = "datalog";
var data = this.buf.readByteArray((new Uint32Array([retval]))[0]);
+ send(message, data);
}
else {
+ var message = NSS.getPortsAndAddressesFromNSS(null, true, lib_addesses, ssl_log_1.enable_default_fd);
+ message["ssl_session_id"] = NSS.getSslSessionIdFromFD(this.fd);
+ message["function"] = "NSS_read";
+ this.message = message;
+ this.message["contentType"] = "datalog";
var temp = this.buf.readByteArray((new Uint32Array([retval]))[0]);
(0, log_1.devlog)(JSON.stringify(temp));
+ send(message, temp);
}
}
});
@@ -2804,12 +2905,23 @@ typedef union PRNetAddr PRNetAddr;
var addr = Memory.alloc(8);
NSS.getsockname(this.fd, addr);
if (addr.readU16() == 2 || addr.readU16() == 10 || addr.readU16() == 100) {
- var message = NSS.getPortsAndAddressesFromNSS(this.fd, false, lib_addesses);
+ var message = NSS.getPortsAndAddressesFromNSS(this.fd, false, lib_addesses, ssl_log_1.enable_default_fd);
message["ssl_session_id"] = NSS.getSslSessionIdFromFD(this.fd);
message["function"] = "NSS_write";
message["contentType"] = "datalog";
send(message, this.buf.readByteArray((parseInt(this.len))));
}
+ else {
+ (0, log_1.log)("The results of NSS and its PR_Write is likely not the information transmitted over the wire. Better do a full capture and just log the TLS keys");
+ var message = NSS.getPortsAndAddressesFromNSS(null, true, lib_addesses, ssl_log_1.enable_default_fd);
+ message["ssl_session_id"] = NSS.getSslSessionIdFromFD(this.fd);
+ message["function"] = "NSS_write";
+ this.message = message;
+ this.message["contentType"] = "datalog";
+ var temp = this.buf.readByteArray((new Uint32Array([retval]))[0]);
+ (0, log_1.devlog)(JSON.stringify(temp));
+ send(message, temp);
+ }
}
});
}
@@ -3041,10 +3153,10 @@ class OpenSSL_BoringSSL {
onEnter: function (args) {
this.bufLen = args[2].toInt32();
this.fd = OpenSSL_BoringSSL.SSL_get_fd(args[0]);
- if (this.fd < 0) {
+ if (this.fd < 0 && ssl_log_1.enable_default_fd == false) {
return;
}
- var message = (0, shared_functions_1.getPortsAndAddresses)(this.fd, true, lib_addesses);
+ var message = (0, shared_functions_1.getPortsAndAddresses)(this.fd, true, lib_addesses, ssl_log_1.enable_default_fd);
message["ssl_session_id"] = OpenSSL_BoringSSL.getSslSessionId(args[0]);
message["function"] = "SSL_read";
this.message = message;
@@ -3083,10 +3195,10 @@ class OpenSSL_BoringSSL {
onEnter: function (args) {
if (!ObjC.available) {
this.fd = OpenSSL_BoringSSL.SSL_get_fd(args[0]);
- if (this.fd < 0) {
+ if (this.fd < 0 && ssl_log_1.enable_default_fd == false) {
return;
}
- var message = (0, shared_functions_1.getPortsAndAddresses)(this.fd, false, lib_addesses);
+ var message = (0, shared_functions_1.getPortsAndAddresses)(this.fd, false, lib_addesses, ssl_log_1.enable_default_fd);
message["ssl_session_id"] = OpenSSL_BoringSSL.getSslSessionId(args[0]);
message["function"] = "SSL_write";
message["contentType"] = "datalog";
@@ -3117,6 +3229,10 @@ class OpenSSL_BoringSSL {
static getSslSessionId(ssl) {
var session = OpenSSL_BoringSSL.SSL_get_session(ssl);
if (session.isNull()) {
+ if (ssl_log_1.enable_default_fd) {
+ (0, log_1.log)("using dummy SessionID: 59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76336");
+ return "59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76336";
+ }
(0, log_1.log)("Session is null");
return 0;
}
@@ -3200,6 +3316,10 @@ class WolfSSL {
static getSslSessionId(ssl) {
var session = WolfSSL.wolfSSL_get_session(ssl);
if (session.isNull()) {
+ if (ssl_log_1.enable_default_fd) {
+ (0, log_1.log)("using dummy SessionID: 59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76338");
+ return "59FD71B7B90202F359D89E66AE4E61247954E28431F6C6AC46625D472FF76338";
+ }
(0, log_1.log)("Session is null");
return 0;
}
@@ -3218,7 +3338,7 @@ class WolfSSL {
var lib_addesses = this.addresses;
Interceptor.attach(this.addresses["wolfSSL_read"], {
onEnter: function (args) {
- var message = (0, shared_functions_1.getPortsAndAddresses)(WolfSSL.wolfSSL_get_fd(args[0]), true, lib_addesses);
+ var message = (0, shared_functions_1.getPortsAndAddresses)(WolfSSL.wolfSSL_get_fd(args[0]), true, lib_addesses, ssl_log_1.enable_default_fd);
message["function"] = "wolfSSL_read";
message["ssl_session_id"] = WolfSSL.getSslSessionId(args[0]);
this.message = message;
@@ -3238,7 +3358,7 @@ class WolfSSL {
var lib_addesses = this.addresses;
Interceptor.attach(this.addresses["wolfSSL_write"], {
onEnter: function (args) {
- var message = (0, shared_functions_1.getPortsAndAddresses)(WolfSSL.wolfSSL_get_fd(args[0]), false, lib_addesses);
+ var message = (0, shared_functions_1.getPortsAndAddresses)(WolfSSL.wolfSSL_get_fd(args[0]), false, lib_addesses, ssl_log_1.enable_default_fd);
message["ssl_session_id"] = WolfSSL.getSslSessionId(args[0]);
message["function"] = "wolfSSL_write";
message["contentType"] = "datalog";
@@ -3254,7 +3374,7 @@ exports.WolfSSL = WolfSSL;
},{"../shared/shared_functions":21,"../ssl_log":30,"../util/log":32}],30:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.getOffsets = exports.anti_root = exports.experimental = exports.offsets = void 0;
+exports.getOffsets = exports.enable_default_fd = exports.anti_root = exports.experimental = exports.offsets = void 0;
const android_agent_1 = require("./android/android_agent");
const ios_agent_1 = require("./ios/ios_agent");
const macos_agent_1 = require("./macos/macos_agent");
@@ -3266,9 +3386,29 @@ const log_1 = require("./util/log");
//@ts-ignore
exports.offsets = "{OFFSETS}";
//@ts-ignore
-exports.experimental = "{EXPERIMENTAL}";
+exports.experimental = false;
+//@ts-ignore
+exports.anti_root = false;
//@ts-ignore
-exports.anti_root = "{ANTIROOT}";
+exports.enable_default_fd = false;
+/*
+This way we are providing boolean values from the commandline directly to our frida script
+*/
+send("defaultFD");
+const enable_default_fd_state = recv('defaultFD', value => {
+ exports.enable_default_fd = value.payload;
+});
+enable_default_fd_state.wait();
+send("experimental");
+const exp_recv_state = recv('experimental', value => {
+ exports.experimental = value.payload;
+});
+exp_recv_state.wait();
+send("anti");
+const antiroot_recv_state = recv('antiroot', value => {
+ exports.anti_root = value.payload;
+});
+antiroot_recv_state.wait(); /* */
/*
create the TLS library for your first prototpye as a lib in ./ssl_lib and than extend this class for the OS where this new lib was tested.
@@ -3288,7 +3428,6 @@ function load_os_specific_agent() {
}
else if ((0, process_infos_1.isAndroid)()) {
(0, log_1.log)('Running Script on Android');
- console.log(exports.anti_root);
if (exports.anti_root) {
(0, log_1.log)('Applying anti root checks');
(0, anti_root_1.anti_root_execute)();
@@ -3318,6 +3457,7 @@ load_os_specific_agent();
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.anti_root_execute = exports.AntiRoot = void 0;
+const log_1 = require("./log");
const shared_functions_1 = require("../shared/shared_functions");
/*
* mostly taken from here: https://codeshare.frida.re/@dzonerzy/fridantiroot/
@@ -3357,25 +3497,25 @@ class AntiRoot {
var BufferedReader = Java.use('java.io.BufferedReader');
var ProcessBuilder = Java.use('java.lang.ProcessBuilder');
var StringBuffer = Java.use('java.lang.StringBuffer');
- var loaded_classes = Java.enumerateLoadedClassesSync();
- send("Loaded " + loaded_classes.length + " classes!");
var useKeyInfo = false;
var useProcessManager = false;
//@ts-ignore
var ProcessManager = NULL;
- send("loaded: " + loaded_classes.indexOf('java.lang.ProcessManager'));
+ var loaded_classes = Java.enumerateLoadedClassesSync();
+ (0, log_1.devlog)("Loaded " + loaded_classes.length + " classes!");
+ (0, log_1.devlog)("loaded: " + loaded_classes.indexOf('java.lang.ProcessManager'));
if (loaded_classes.indexOf('java.lang.ProcessManager') != -1) {
try {
useProcessManager = true;
ProcessManager = Java.use('java.lang.ProcessManager');
}
catch (err) {
- send("ProcessManager Hook failed: " + err);
+ (0, log_1.devlog)("ProcessManager Hook failed: " + err);
}
}
else {
//ProcessManager = null;
- send("ProcessManager hook not loaded");
+ (0, log_1.devlog)("ProcessManager hook not loaded");
}
var KeyInfo = NULL;
if (loaded_classes.indexOf('android.security.keystore.KeyInfo') != -1) {
@@ -3384,31 +3524,36 @@ class AntiRoot {
KeyInfo = Java.use('android.security.keystore.KeyInfo');
}
catch (err) {
- send("KeyInfo Hook failed: " + err);
+ (0, log_1.log)("KeyInfo Hook failed: " + err);
}
}
else {
- send("KeyInfo hook not loaded");
+ (0, log_1.log)("KeyInfo hook not loaded");
}
PackageManager.getPackageInfo.overload('java.lang.String', 'int').implementation = function (pname, flags) {
var shouldFakePackage = (this.RootPackages.indexOf(pname) > -1);
if (shouldFakePackage) {
- send("Bypass root check for package: " + pname);
+ (0, log_1.log)("Bypass root check for package: " + pname);
pname = "set.package.name.to.a.fake.one.so.we.can.bypass.it";
}
return this.getPackageInfo.overload('java.lang.String', 'int').call(this, pname, flags);
};
- NativeFile.exists.implementation = function () {
+ /*
+ This check results into the following error:
+ {'description': 'Error: expected an unsigned integer', 'type': 'error'}
+
+
+ NativeFile.exists.implementation = function() {
var name = NativeFile.getName.call(this);
var shouldFakeReturn = (this.RootBinaries.indexOf(name) > -1);
+ console.log(shouldFakeReturn);
if (shouldFakeReturn) {
- send("Bypass return value for binary: " + name);
+ log("Bypass return value for binary: " + name);
return false;
- }
- else {
+ } else {
return this.exists.call(this);
}
- };
+ }; */
var exec = Runtime.exec.overload('[Ljava.lang.String;');
var exec1 = Runtime.exec.overload('java.lang.String');
var exec2 = Runtime.exec.overload('java.lang.String', '[Ljava.lang.String;');
@@ -3418,12 +3563,12 @@ class AntiRoot {
exec5.implementation = function (cmd, env, dir) {
if (cmd.indexOf("getprop") != -1 || cmd == "mount" || cmd.indexOf("build.prop") != -1 || cmd == "id" || cmd == "sh") {
var fakeCmd = "grep";
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
return exec1.call(this, fakeCmd);
}
if (cmd == "su") {
var fakeCmd = "awesome_tool";
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
return exec1.call(this, fakeCmd);
}
return exec5.call(this, cmd, env, dir);
@@ -3433,12 +3578,12 @@ class AntiRoot {
var tmp_cmd = cmdarr[i];
if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd == "mount" || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd == "id" || tmp_cmd == "sh") {
var fakeCmd = "grep";
- send("Bypass " + cmdarr + " command");
+ (0, log_1.log)("Bypass " + cmdarr + " command");
return exec1.call(this, fakeCmd);
}
if (tmp_cmd == "su") {
var fakeCmd = "awesome_tool";
- send("Bypass " + cmdarr + " command");
+ (0, log_1.log)("Bypass " + cmdarr + " command");
return exec1.call(this, fakeCmd);
}
}
@@ -3449,12 +3594,12 @@ class AntiRoot {
var tmp_cmd = cmdarr[i];
if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd == "mount" || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd == "id" || tmp_cmd == "sh") {
var fakeCmd = "grep";
- send("Bypass " + cmdarr + " command");
+ (0, log_1.log)("Bypass " + cmdarr + " command");
return exec1.call(this, fakeCmd);
}
if (tmp_cmd == "su") {
var fakeCmd = "awesome_tool";
- send("Bypass " + cmdarr + " command");
+ (0, log_1.log)("Bypass " + cmdarr + " command");
return exec1.call(this, fakeCmd);
}
}
@@ -3463,12 +3608,12 @@ class AntiRoot {
exec2.implementation = function (cmd, env) {
if (cmd.indexOf("getprop") != -1 || cmd == "mount" || cmd.indexOf("build.prop") != -1 || cmd == "id" || cmd == "sh") {
var fakeCmd = "grep";
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
return exec1.call(this, fakeCmd);
}
if (cmd == "su") {
var fakeCmd = "awesome_tool";
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
return exec1.call(this, fakeCmd);
}
return exec2.call(this, cmd, env);
@@ -3478,12 +3623,12 @@ class AntiRoot {
var tmp_cmd = cmd[i];
if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd == "mount" || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd == "id" || tmp_cmd == "sh") {
var fakeCmd = "grep";
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
return exec1.call(this, fakeCmd);
}
if (tmp_cmd == "su") {
var fakeCmd = "awesome_tool";
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
return exec1.call(this, fakeCmd);
}
}
@@ -3492,19 +3637,19 @@ class AntiRoot {
exec1.implementation = function (cmd) {
if (cmd.indexOf("getprop") != -1 || cmd == "mount" || cmd.indexOf("build.prop") != -1 || cmd == "id" || cmd == "sh") {
var fakeCmd = "grep";
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
return exec1.call(this, fakeCmd);
}
if (cmd == "su") {
var fakeCmd = "awesome_tool";
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
return exec1.call(this, fakeCmd);
}
return exec1.call(this, cmd);
};
String.contains.implementation = function (name) {
if (name == "test-keys") {
- send("Bypass test-keys check");
+ (0, log_1.log)("Bypass test-keys check");
return false;
}
return this.contains.call(this, name);
@@ -3512,7 +3657,7 @@ class AntiRoot {
var get = SystemProperties.get.overload('java.lang.String');
get.implementation = function (name) {
if (this.RootPropertiesKeys.indexOf(name) != -1) {
- send("Bypass " + name);
+ (0, log_1.log)("Bypass " + name);
return this.RootProperties[name];
}
return this.get.call(this, name);
@@ -3525,7 +3670,7 @@ class AntiRoot {
else {
var shouldFakeRead = (text.indexOf("ro.build.tags=test-keys") > -1);
if (shouldFakeRead) {
- send("Bypass build.prop file read");
+ (0, log_1.log)("Bypass build.prop file read");
text = text.replace("ro.build.tags=test-keys", "ro.build.tags=release-keys");
}
}
@@ -3542,12 +3687,12 @@ class AntiRoot {
}
}
if (shouldModifyCommand) {
- send("Bypass ProcessBuilder " + cmd);
+ (0, log_1.log)("Bypass ProcessBuilder " + cmd);
this.command.call(this, ["grep"]);
return this.start.call(this);
}
if (cmd.indexOf("su") != -1) {
- send("Bypass ProcessBuilder " + cmd);
+ (0, log_1.log)("Bypass ProcessBuilder " + cmd);
this.command.call(this, ["awesome_tool"]);
return this.start.call(this);
}
@@ -3564,11 +3709,11 @@ class AntiRoot {
var tmp_cmd = cmd[i];
if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd == "mount" || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd == "id") {
var fake_cmd = ["grep"];
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
}
if (tmp_cmd == "su") {
var fake_cmd = ["awesome_tool"];
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
}
}
return ProcManExec.call(this, fake_cmd, env, workdir, redirectstderr);
@@ -3579,11 +3724,11 @@ class AntiRoot {
var tmp_cmd = cmd[i];
if (tmp_cmd.indexOf("getprop") != -1 || tmp_cmd == "mount" || tmp_cmd.indexOf("build.prop") != -1 || tmp_cmd == "id") {
var fake_cmd = ["grep"];
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
}
if (tmp_cmd == "su") {
var fake_cmd = ["awesome_tool"];
- send("Bypass " + cmd + " command");
+ (0, log_1.log)("Bypass " + cmd + " command");
}
}
return ProcManExecVariant.call(this, fake_cmd, env, directory, stdin, stdout, stderr, redirect);
@@ -3592,7 +3737,7 @@ class AntiRoot {
if (useKeyInfo) {
//@ts-ignore
KeyInfo.isInsideSecureHardware.implementation = function () {
- send("Bypass isInsideSecureHardware");
+ (0, log_1.log)("Bypass isInsideSecureHardware");
return true;
};
}
@@ -3628,7 +3773,7 @@ class AntiRoot {
var shouldFakeReturn = (this.RootBinaries.indexOf(executable) > -1);
if (shouldFakeReturn) {
args[0].writeUtf8String("/notexists");
- send("Bypass native fopen");
+ (0, log_1.log)("Bypass native fopen");
}
},
onLeave: function (retval) {
@@ -3637,14 +3782,14 @@ class AntiRoot {
Interceptor.attach(this.addresses["system"], {
onEnter: function (args) {
var cmd = args[0].readCString();
- send("SYSTEM CMD: " + cmd);
+ (0, log_1.log)("SYSTEM CMD: " + cmd);
//@ts-ignore
if (cmd.indexOf("getprop") != -1 || cmd == "mount" || cmd.indexOf("build.prop") != -1 || cmd == "id") {
- send("Bypass native system: " + cmd);
+ (0, log_1.log)("Bypass native system: " + cmd);
args[0].writeUtf8String("grep");
}
if (cmd == "su") {
- send("Bypass native system: " + cmd);
+ (0, log_1.log)("Bypass native system: " + cmd);
args[0].writeUtf8String("awesome_tool");
}
},
@@ -3680,7 +3825,7 @@ function anti_root_execute() {
}
exports.anti_root_execute = anti_root_execute;
-},{"../shared/shared_functions":21}],32:[function(require,module,exports){
+},{"../shared/shared_functions":21,"./log":32}],32:[function(require,module,exports){
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.devlog = exports.log = void 0;
@@ -4344,4 +4489,4 @@ function wolfssl_execute(moduleName) {
exports.wolfssl_execute = wolfssl_execute;
},{"../ssl_lib/wolfssl":29,"../util/log":32,"./windows_agent":40}]},{},[30])
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIuLi9hZ2VudC9hbmRyb2lkL2FuZHJvaWRfYWdlbnQudHMiLCIuLi9hZ2VudC9hbmRyb2lkL2FuZHJvaWRfamF2YV90bHNfbGlicy50cyIsIi4uL2FnZW50L2FuZHJvaWQvYm91bmN5Y2FzdGxlLnRzIiwiLi4vYWdlbnQvYW5kcm9pZC9jb25zY3J5cHQudHMiLCIuLi9hZ2VudC9hbmRyb2lkL2dudXRsc19hbmRyb2lkLnRzIiwiLi4vYWdlbnQvYW5kcm9pZC9tYmVkVExTX2FuZHJvaWQudHMiLCIuLi9hZ2VudC9hbmRyb2lkL25zc19hbmRyb2lkLnRzIiwiLi4vYWdlbnQvYW5kcm9pZC9vcGVuc3NsX2JvcmluZ3NzbF9hbmRyb2lkLnRzIiwiLi4vYWdlbnQvYW5kcm9pZC93b2xmc3NsX2FuZHJvaWQudHMiLCIuLi9hZ2VudC9pb3MvaW9zX2FnZW50LnRzIiwiLi4vYWdlbnQvaW9zL29wZW5zc2xfYm9yaW5nc3NsX2lvcy50cyIsIi4uL2FnZW50L2xpbnV4L2dudXRsc19saW51eC50cyIsIi4uL2FnZW50L2xpbnV4L2xpbnV4X2FnZW50LnRzIiwiLi4vYWdlbnQvbGludXgvbWF0cml4c3NsX2xpbnV4LnRzIiwiLi4vYWdlbnQvbGludXgvbWJlZFRMU19saW51eC50cyIsIi4uL2FnZW50L2xpbnV4L25zc19saW51eC50cyIsIi4uL2FnZW50L2xpbnV4L29wZW5zc2xfYm9yaW5nc3NsX2xpbnV4LnRzIiwiLi4vYWdlbnQvbGludXgvd29sZnNzbF9saW51eC50cyIsIi4uL2FnZW50L21hY29zL21hY29zX2FnZW50LnRzIiwiLi4vYWdlbnQvbWFjb3Mvb3BlbnNzbF9ib3Jpbmdzc2xfbWFjb3MudHMiLCIuLi9hZ2VudC9zaGFyZWQvc2hhcmVkX2Z1bmN0aW9ucy50cyIsIi4uL2FnZW50L3NoYXJlZC9zaGFyZWRfc3RydWN0dXJlcy50cyIsIi4uL2FnZW50L3NzbF9saWIvZ251dGxzLnRzIiwiLi4vYWdlbnQvc3NsX2xpYi9qYXZhX3NzbF9saWJzLnRzIiwiLi4vYWdlbnQvc3NsX2xpYi9tYXRyaXhzc2wudHMiLCIuLi9hZ2VudC9zc2xfbGliL21iZWRUTFMudHMiLCIuLi9hZ2VudC9zc2xfbGliL25zcy50cyIsIi4uL2FnZW50L3NzbF9saWIvb3BlbnNzbF9ib3Jpbmdzc2wudHMiLCIuLi9hZ2VudC9zc2xfbGliL3dvbGZzc2wudHMiLCIuLi9hZ2VudC9zc2xfbG9nLnRzIiwiLi4vYWdlbnQvdXRpbC9hbnRpX3Jvb3QudHMiLCIuLi9hZ2VudC91dGlsL2xvZy50cyIsIi4uL2FnZW50L3V0aWwvcHJvY2Vzc19pbmZvcy50cyIsIi4uL2FnZW50L3dpbmRvd3MvZ251dGxzX3dpbmRvd3MudHMiLCIuLi9hZ2VudC93aW5kb3dzL21hdHJpeHNzbF93aW5kb3dzLnRzIiwiLi4vYWdlbnQvd2luZG93cy9tYmVkVExTX3dpbmRvd3MudHMiLCIuLi9hZ2VudC93aW5kb3dzL25zc193aW5kb3dzLnRzIiwiLi4vYWdlbnQvd2luZG93cy9vcGVuc3NsX2JvcmluZ3NzbF93aW5kb3dzLnRzIiwiLi4vYWdlbnQvd2luZG93cy9zc3BpLnRzIiwiLi4vYWdlbnQvd2luZG93cy93aW5kb3dzX2FnZW50LnRzIiwiLi4vYWdlbnQvd2luZG93cy93b2xmc3NsX3dpbmRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUNBQSxtRUFBcUU7QUFDckUsaUVBQWdGO0FBQ2hGLHFDQUEwQztBQUMxQyxxREFBa0Q7QUFDbEQsdURBQW9EO0FBQ3BELCtDQUE0QztBQUM1Qyx1REFBb0Q7QUFDcEQsMkVBQTZEO0FBQzdELG1FQUFzRDtBQUd0RCxJQUFJLGNBQWMsR0FBRyxPQUFPLENBQUM7QUFDN0IsSUFBSSxXQUFXLEdBQWtCLElBQUEsaUNBQWMsR0FBRSxDQUFDO0FBRXJDLFFBQUEsY0FBYyxHQUFHLE1BQU0sQ0FBQTtBQUVwQyxTQUFTLGtCQUFrQjtJQUN2QixJQUFBLG9DQUFZLEdBQUUsQ0FBQztBQUNu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
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIuLi9hZ2VudC9hbmRyb2lkL2FuZHJvaWRfYWdlbnQudHMiLCIuLi9hZ2VudC9hbmRyb2lkL2FuZHJvaWRfamF2YV90bHNfbGlicy50cyIsIi4uL2FnZW50L2FuZHJvaWQvYm91bmN5Y2FzdGxlLnRzIiwiLi4vYWdlbnQvYW5kcm9pZC9jb25zY3J5cHQudHMiLCIuLi9hZ2VudC9hbmRyb2lkL2dudXRsc19hbmRyb2lkLnRzIiwiLi4vYWdlbnQvYW5kcm9pZC9tYmVkVExTX2FuZHJvaWQudHMiLCIuLi9hZ2VudC9hbmRyb2lkL25zc19hbmRyb2lkLnRzIiwiLi4vYWdlbnQvYW5kcm9pZC9vcGVuc3NsX2JvcmluZ3NzbF9hbmRyb2lkLnRzIiwiLi4vYWdlbnQvYW5kcm9pZC93b2xmc3NsX2FuZHJvaWQudHMiLCIuLi9hZ2VudC9pb3MvaW9zX2FnZW50LnRzIiwiLi4vYWdlbnQvaW9zL29wZW5zc2xfYm9yaW5nc3NsX2lvcy50cyIsIi4uL2FnZW50L2xpbnV4L2dudXRsc19saW51eC50cyIsIi4uL2FnZW50L2xpbnV4L2xpbnV4X2FnZW50LnRzIiwiLi4vYWdlbnQvbGludXgvbWF0cml4c3NsX2xpbnV4LnRzIiwiLi4vYWdlbnQvbGludXgvbWJlZFRMU19saW51eC50cyIsIi4uL2FnZW50L2xpbnV4L25zc19saW51eC50cyIsIi4uL2FnZW50L2xpbnV4L29wZW5zc2xfYm9yaW5nc3NsX2xpbnV4LnRzIiwiLi4vYWdlbnQvbGludXgvd29sZnNzbF9saW51eC50cyIsIi4uL2FnZW50L21hY29zL21hY29zX2FnZW50LnRzIiwiLi4vYWdlbnQvbWFjb3Mvb3BlbnNzbF9ib3Jpbmdzc2xfbWFjb3MudHMiLCIuLi9hZ2VudC9zaGFyZWQvc2hhcmVkX2Z1bmN0aW9ucy50cyIsIi4uL2FnZW50L3NoYXJlZC9zaGFyZWRfc3RydWN0dXJlcy50cyIsIi4uL2FnZW50L3NzbF9saWIvZ251dGxzLnRzIiwiLi4vYWdlbnQvc3NsX2xpYi9qYXZhX3NzbF9saWJzLnRzIiwiLi4vYWdlbnQvc3NsX2xpYi9tYXRyaXhzc2wudHMiLCIuLi9hZ2VudC9zc2xfbGliL21iZWRUTFMudHMiLCIuLi9hZ2VudC9zc2xfbGliL25zcy50cyIsIi4uL2FnZW50L3NzbF9saWIvb3BlbnNzbF9ib3Jpbmdzc2wudHMiLCIuLi9hZ2VudC9zc2xfbGliL3dvbGZzc2wudHMiLCIuLi9hZ2VudC9zc2xfbG9nLnRzIiwiLi4vYWdlbnQvdXRpbC9hbnRpX3Jvb3QudHMiLCIuLi9hZ2VudC91dGlsL2xvZy50cyIsIi4uL2FnZW50L3V0aWwvcHJvY2Vzc19pbmZvcy50cyIsIi4uL2FnZW50L3dpbmRvd3MvZ251dGxzX3dpbmRvd3MudHMiLCIuLi9hZ2VudC93aW5kb3dzL21hdHJpeHNzbF93aW5kb3dzLnRzIiwiLi4vYWdlbnQvd2luZG93cy9tYmVkVExTX3dpbmRvd3MudHMiLCIuLi9hZ2VudC93aW5kb3dzL25zc193aW5kb3dzLnRzIiwiLi4vYWdlbnQvd2luZG93cy9vcGVuc3NsX2JvcmluZ3NzbF93aW5kb3dzLnRzIiwiLi4vYWdlbnQvd2luZG93cy9zc3BpLnRzIiwiLi4vYWdlbnQvd2luZG93cy93aW5kb3dzX2FnZW50LnRzIiwiLi4vYWdlbnQvd2luZG93cy93b2xmc3NsX3dpbmRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7QUNBQSxtRUFBcUU7QUFDckUsaUVBQWdGO0FBQ2hGLHFDQUEwQztBQUMxQyxxREFBa0Q7QUFDbEQsdURBQW9EO0FBQ3BELCtDQUE0QztBQUM1Qyx1REFBb0Q7QUFDcEQsMkVBQTZEO0FBQzdELG1FQUFzRDtBQUd0RCxJQUFJLGNBQWMsR0FBRyxPQUFPLENBQUM7QUFDN0IsSUFBSSxXQUFXLEdBQWtCLElBQUEsaUNBQWMsR0FBRSxDQUFDO0FBRXJDLFFBQUEsY0FBYyxHQUFHLE1BQU0sQ0FBQTtBQUVwQyxTQUFTLGtCQUFrQjtJQUN2QixJQUFBLG9DQUFZLEdBQUUsQ0FBQztBQUNu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RUFBQyxjQUFjLEVBQUUsc0JBQXNCLEVBQUMsV0FBVyxFQUFDLFNBQVMsQ0FBQyxDQUFBO0FBQ3BGLENBQUM7QUFFRCxTQUFnQiwwQkFBMEI7SUFDdEMsMENBQXNCLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLHlDQUF5QyxFQUFFLDBDQUFjLENBQUMsRUFBRSxDQUFDLDhCQUE4QixFQUFFLGlDQUFlLENBQUMsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLCtCQUFjLENBQUMsRUFBRSxDQUFDLHlCQUF5QixFQUFFLHlCQUFXLENBQUMsRUFBRSxDQUFDLGlDQUFpQyxFQUFFLG1CQUFZLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxpQ0FBZSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxxQ0FBaUIsQ0FBQyxDQUFDLENBQUE7SUFDNVgscUJBQXFCLENBQUMsMENBQXNCLENBQUMsQ0FBQztJQUM5QywyQkFBMkIsQ0FBQywwQ0FBc0IsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFKRCxnRUFJQzs7Ozs7O0FDM0RELGdEQUE0QztBQUM1QyxtREFBaUQ7QUFDakQscUNBQWtDO0FBRWxDLE1BQWEsZUFBZ0IsU0FBUSxpQkFBTztJQUVyQjtJQUEwQjtJQUE3QyxZQUFtQixVQUFpQixFQUFTLGNBQXFCO1FBQzlELElBQUksT0FBTyxHQUFvQyxFQUFFLENBQUM7UUFDbEQsT0FBTyxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtRQUM5SSxPQUFPLENBQUMsSUFBSSxjQUFjLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDakYsS0FBSyxDQUFDLFVBQVUsRUFBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFKM0IsZUFBVSxHQUFWLFVBQVUsQ0FBTztRQUFTLG1CQUFjLEdBQWQsY0FBYyxDQUFPO0lBS2xFLENBQUM7SUFHRCw4QkFBOEI7UUFDMUIsSUFBQSxTQUFHLEVBQUMsdURBQXVELENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBS0QsYUFBYTtRQUNULElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO1FBQ3BDLGtFQUFrRTtJQUN0RSxDQUFDO0NBRUo7QUF2QkQsMENBdUJDO0FBR0QsU0FBZ0IsZUFBZSxDQUFDLFVBQWlCO0lBQzdDLElBQUksUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLFVBQVUsRUFBQyw4QkFBYyxDQUFDLENBQUM7SUFDOUQsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBRzdCLENBQUM7QUFMRCwwQ0FLQyIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIn0=
diff --git a/friTap/android.py b/friTap/android.py
index 41e756c..dbe266e 100755
--- a/friTap/android.py
+++ b/friTap/android.py
@@ -23,6 +23,7 @@ def __init__(self,debug_infos=False, arch=""):
self.device = None
self.pcap_name = ""
self.print_debug_infos = debug_infos
+ self.is_magisk_mode = False
self.do_we_have_an_android_device = False
if self._is_Android():
self.tcpdump_version = self._get_appropriate_android_tcpdump_version(arch)
@@ -32,13 +33,22 @@ def __init__(self,debug_infos=False, arch=""):
def adb_check_root(self):
- return bool(subprocess.run(['adb', 'shell','su -v'], capture_output=True, text=True).stdout)
+ if bool(subprocess.run(['adb', 'shell','su -v'], capture_output=True, text=True).stdout):
+ self.is_magisk_mode = True
+ return True
+
+ return bool(subprocess.run(['adb', 'shell','su 0 id -u'], capture_output=True, text=True).stdout)
def run_adb_command_as_root(self,command):
if self.adb_check_root() == False:
- print("[-] none rooted device. Please root it before using friTap and ensure that you are able to run commands with the su-binary....")
+ print("[-] none rooted device. Please root it before using FridaAndroidManager and ensure that you are able to run commands with the su-binary....")
exit(2)
- output = subprocess.run(['adb', 'shell','su -c '+command], capture_output=True, text=True)
+
+ if self.is_magisk_mode:
+ output = subprocess.run(['adb', 'shell','su -c '+command], capture_output=True, text=True)
+ else:
+ output = subprocess.run(['adb', 'shell','su 0 '+command], capture_output=True, text=True)
+
return output
def _adb_push_file(self,file,dst):
diff --git a/friTap/friTap.py b/friTap/friTap.py
index 1650287..e971ffc 100755
--- a/friTap/friTap.py
+++ b/friTap/friTap.py
@@ -131,7 +131,7 @@ def temp_fifo():
print(f'Failed to create FIFO: {e}')
-def ssl_log(app, pcap_name=None, verbose=False, spawn=False, keylog=False, enable_spawn_gating=False, mobile=False, live=False, environment_file=None, debug_mode=False,full_capture=False, socket_trace=False, host=False, offsets=None, debug_output=False, experimental=False, anti_root=False, payload_modification=False):
+def ssl_log(app, pcap_name=None, verbose=False, spawn=False, keylog=False, enable_spawn_gating=False, mobile=False, live=False, environment_file=None, debug_mode=False,full_capture=False, socket_trace=False, host=False, offsets=None, debug_output=False, experimental=False, anti_root=False, payload_modification=False,enable_default_fd=False):
global debug
debug = debug_mode
@@ -160,6 +160,9 @@ def on_message(message, data):
if startup and message['payload'] == 'experimental':
script.post({'type':'experimental', 'payload': experimental})
+
+ if startup and message['payload'] == 'defaultFD':
+ script.post({'type':'defaultFD', 'payload': enable_default_fd})
if startup and message['payload'] == 'anti':
script.post({'type':'antiroot', 'payload': anti_root})
@@ -268,7 +271,7 @@ def instrument(process):
if offsets_data is not None:
print(f"[*] applying hooks at offset {offsets_data}")
script_string = script_string.replace('"{OFFSETS}"', offsets_data)
- # might lead to a malformed packge in recent frida versions
+ # might lead to a malformed package in recent frida versions
script = process.create_script(script_string, runtime=runtime)
@@ -439,6 +442,7 @@ def main():
%(prog)s -H --pcap log.pcap 192.168.0.1:1234 com.example.app
%(prog)s -m -p log.pcap --enable_spawn_gating -v -do --full_capture -k keys.log com.example.app
%(prog)s -m -p log.pcap --enable_spawn_gating -v -do --anti_root --full_capture -k keys.log com.example.app
+ %(prog)s -m -p log.pcap --enable_default_fd com.example.app
""")
args = parser.add_argument_group("Arguments")
@@ -452,6 +456,8 @@ def main():
help="Activate the debug output only.")
args.add_argument("-ar", "--anti_root", required=False, action="store_const",
const=True, help="Activate anti root hooks for Android")
+ args.add_argument("-ed", "--enable_default_fd", required=False, action="store_const",
+ const=True, help="Activate the fallback socket information (127.0.0.1:1234-127.0.0.1:2345) whenever the file descriptor (FD) of the socket cannot be determined")
args.add_argument("-f", "--full_capture", required=False, action="store_const", const=True, default=False,
help="Do a full packet capture instead of logging only the decrypted TLS payload. Set pcap name with -p ")
args.add_argument("-k", "--keylog", metavar="", required=False,
@@ -498,7 +504,7 @@ def main():
print("Start logging")
print("Press Ctrl+C to stop logging")
ssl_log(parsed.exec, parsed.pcap, parsed.verbose,
- parsed.spawn, parsed.keylog, parsed.enable_spawn_gating, parsed.mobile, parsed.live, parsed.environment, parsed.debug, parsed.full_capture, parsed.socket_tracing, parsed.host, parsed.offsets, parsed.debugoutput,parsed.experimental, parsed.anti_root, parsed.payload_modification)
+ parsed.spawn, parsed.keylog, parsed.enable_spawn_gating, parsed.mobile, parsed.live, parsed.environment, parsed.debug, parsed.full_capture, parsed.socket_tracing, parsed.host, parsed.offsets, parsed.debugoutput,parsed.experimental, parsed.anti_root, parsed.payload_modification, parsed.enable_default_fd)
except Exception as ar:
diff --git a/package-lock.json b/package-lock.json
index aa9ed05..0d7d850 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,14 +1,14 @@
{
"name": "friTap",
- "version": "1.1.0.1",
+ "version": "1.1.0.5",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "friTap",
- "version": "1.1.0.1",
+ "version": "1.1.0.5",
"dependencies": {
- "frida-compile": "^16.2.2",
+ "frida-compile": "^16.4.1",
"frida-fs": "^5.2.1",
"util": "^0.12.4"
},
diff --git a/package.json b/package.json
index 6ec6b56..a2c86a8 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "friTap",
- "version": "1.1.0.1",
+ "version": "1.1.0.5",
"description": "Frida agent for logging SSL traffic as plaintext and extracting SSL keys",
"private": true,
"main": "agent/ssl_log.ts",
@@ -23,7 +23,7 @@
"source-map": "^0.7.4"
},
"dependencies": {
- "frida-compile": "^16.2.2",
+ "frida-compile": "^16.4.1",
"frida-fs": "^5.2.1",
"util": "^0.12.4"
}