An open API service indexing awesome lists of open source software.

https://github.com/trustdecision/trustdevice-ios

Leading open source version of iOS device fingerprint, accurate deviceID and risk identification.
https://github.com/trustdecision/trustdevice-ios

deviceid fingerprint fraud-detection idfa idfv ios ios-security objective-c swift trustdecision uuid

Last synced: about 2 months ago
JSON representation

Leading open source version of iOS device fingerprint, accurate deviceID and risk identification.

Awesome Lists containing this project

README

          






trustdevice logo









# TrustDevice-iOS
A lightweight library for determining device uniqueness and risk identification.

Create a device identifier based on basic device information.

Will remain the same after uninstalling and reinstalling or clearing app data.

🪧Attention🪧:The functions of the basic version of github are relatively limited.

You can visit [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-5fkjqqnkoajcs?sr=0-1&ref_=beagle&applicationId=AWSMPContessa) or [TrustDecision](https://trustdecision.com/solutions/device-fingerprint) to learn about our professional version.

## Installation
### Swift Package Manager

1. In Xcode, select **File → Swift Packages → Add Package Dependency...**
2. Enter the repository URL, for example:

```text
https://github.com/trustdecision/trustdevice-ios.git
```
3. Specify a version range (e.g. `from: "1.6.2"`).

### Cocoapods
1. TrustDecision is available through [CocoaPods](https://cocoapods.org). To install it, simply add the following line to your Podfile:

```ruby
# Podfile
pod 'TrustDecision', '1.6.2'
```

## Quick Start

### 1. Get DeviceInfo
DeviceInfo contains device id, risk information and device details.

#### Objective-C

```objective-c
#import

TDMobRiskManager_t *manager = [TDMobRiskManager sharedManager];
NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
[options setObject:^(NSDictionary *response) {
// Response in sub-thread, do something with the response
// Get DeviceId
NSString *deviceId = response[@"device_id"];
// Get DeviceRiskLabel
NSDictionary *deviceRisk = response[@"device_risk_label"];
// Get DeviceDetail
NSDictionary *deviceDetail = response[@"device_detail"];
} forKey:@"callback"];
manager->initWithOptions(options);
```

#### Swift

```swift
import TrustDecision

var options = [String : NSObject]()
let responseCallback: ([String : Any])-> Void = { response in
// Response in sub-thread, do something with the response
// Get DeviceId
let deviceId = response["device_id"]
// Get DeviceRiskLabel
let deviceRisk = response["device_risk_label"]
// Get DeviceDetail
let deviceDetail = response["device_detail"]
}
options["callback"] = unsafeBitCast(responseCallback as @convention(block) ([String : Any]) -> Void, to: AnyObject.self) as? NSObject
let manager = TDMobRiskManager.sharedManager()
manager?.pointee.initWithOptions(options)
```

## Data Sample
```json
{
"device_id":"4b3491c6bb6a27c6c58a038939a10d4cad97555e517574e7bd0291db96243859",
"device_risk_label":{
"jailbreak":false,
"simulator":false,
"debug":true
},
"device_detail":{
"displayResolution":"828.0x1792.0",
"deviceModel":"N104AP",
"kernelVersion":"Darwin Kernel Version 22.6.0: Wed Jun 28 20:51:23 PDT 2023; root:xnu-8796.142.1~1\/RELEASE_ARM64_T8030",
"debug":true,
"sandboxPath":"/var/mobile/Containers/Data/Application/150E79ED-AAAD-4970-AD89-B9A05EBB05EB",
"mcc":"460",
"batteryState":2,
"teamName":"XXX XXX Technology Co., Ltd.",
"cloudid":"316A8157-B4E5-4F40-BE37-8115588CA734",
"bundleId":"com.trustdevice.fingerprint",
"appVersion":"1.0",
"timeZone":"Asia\/Shanghai",
"applicationId":"R3F7G5M76J.com.trustdevice.fingerprint",
"freeDiskSpace":4820676608,
"localCountryIso":"CN",
"physicalMemory":"8333852672",
"currentTime":1693451898456090,
"totalDiskSpace":127933894656,
"mnc":"02",
"appInstallTime":1679884827203788.8,
"osVersion":"20G75",
"hostName":"ssd",
"osType":"Darwin",
"deviceType":"iPhone",
"displayScale":2,
"idfv":"E5082421-F447-4B45-B453-22C656B56314",
"osRelease":"22.6.0",
"memorySize":"4038885376",
"deviceName":"iOS",
"cpuCount":"6",
"isiOSAppOnMac":0,
"simulator":false,
"jailbreak":false,
"bootTime":1692954854089697,
"secureKernelStatus":true
}
}
```
## Open Source Features

+ Basic device ID, consistent when uninstalling applications and reinstalling
+ Basic equipment information, which can be used for simple data analysis
+ Basic risk identification ability

| RiskLabel | Risk Description |
| --------- | ------------------------------------------------------------ |
| jailbreak | Attackers will have higher privileges and can install many cheating software to affect the normal development of application business. |
| simulator | The simulator provides many simulation functions, which will affect the normal operation of applications, such as virtual positioning. |
| debug | Applications can be modified by attackers at will, and the program will return unexpected values. |

## Open Source VS Pro
| Ability | Open Source | Pro |
| :---------------------------: | :---------: | :----------------------------------------------------------: |
| 100% open source | Yes | No |
| Device ID | Basic | Extremely stable, even if the device is restored to factory settings, it can still be recognized as the same |
| Device Risk Label | Basic | Extremely rich |
| Device Details | Basic | Extremely rich |
| IP Location | - | ✓ |
| Device Risk Score | - | ✓ |
| Environment Risk Evaluation | - | ✓ |
| Fraud Tools Detection | - | ✓ |
| Behavioral Activity Capturing | - | ✓ |

## Pro Introduction

TrustDecision TrustDevice has the leading device fingerprint technology, which has been integrated by more than 10000 global leading brands, protecting the entire customer journey.

**There are 6 leading core features about TrustDevice Pro:**

### 1. Wide Coverage
Comprehensive coverage of Android, iOS, Web, H5, applets and other device types.

### 2. Stable and Reliable
TrustDevice served more than 10,000 clients, 200 million+ daily active users , and 6 billion+ devices , with excellent product functions and stability.
The fingerprint accuracy of different terminal devices exceeded 99.9%, and the output of risk labels exceeded 70 items.

### 3. Unparalleled Safety
TrustDevice's code virtualization & obfuscation technology make the malware fraudsters suffer from painful cost and imprecision when performing reverse-engineering.

### 4. Core Intellectual Property
Fully independent intellectual property rights, with a number of patented technology.

### 5. Security Compliance
TrustDevice is committed to the highest standards in security and compliance to keep your data safe.
GDPR/CCA/PCI DSS/ISO 27701/ISO 9001 Compliant.

### 6. Easy to Deploy
SaaS(Software as a Service)deployment supported, reducing massively your integration cost and enabling rapid access to device fingerprint service.

## Where to Get Support
We are happy to provide technical support for our open-source trustdevice-ios library. We recommend using GitHub Issues to submit bugs or Discussions to ask questions. Using [Issues](https://github.com/trustdecision/trustdevice-ios/issues) and [Discussions](https://github.com/trustdecision/trustdevice-ios/discussions) publicly will help the open-source community and other users with similar issues.

In addition, any idea or interest in using TrustDevice Pro can be found on the [www.trustdecision.com](https://www.trustdecision.com/trustDevice), registered account for a free trial; or via email trustdevice@trustdecision.com contact us directly and quickly open the service.

## Compatibility
| Items | Description |
| :-----------------------: | :------------------: |
| Supported System Versions | iOS9.0+ |
| Supported Architecture | armv7, arm64, x86_64 |

## TrustDevice Pro VS Others


TypeSceneResultTrusDevice ProFingerprintSeonCredoLabSiftShieldPerimeterX


Device Fingerprint CompatibilityiOS 9.0 and above, including iOS 16, etc.Able to collect device info and generate device ID✅✅(ios12 and above)✅(ios9 and above)✅(ios11 and above)✅(ios9.2 and above)✅(ios9 and above)✅(ios11 and above)


Device fingerprint uniquenessDifferent apps (with different package names) on the same deviceDevice fingerprints/ID matches ✅❌❌❌❌❌❌


The same app on two unique devices (including the case of the same device model and the same system version)Device fingerprint/ID should not match. Each device to have its own unique device fingeprint/ID✅✅✅✅✅✅✅


Device Fingerprint StabilityUninstall and reinstallDevice fingerprints/ID are consistent before and after reinstallation✅✅❌✅❌✅❌


Clear all app dataDevice fingerprints/ID are consistent before and after clearing all app data✅✅❌✅❌✅❌



Disable all app permissions except network permissions and clear app dataDevice fingerprints/ID are consistent before and after disabling all permissions✅✅❌✅✅✅✅


Modify the common information of the device system (brand, model, IDFA, IDFV, etc.) through the machine modification toolDevice fingerprint/ID still matches with before modification✅✅❌✅❌✅❌


Device system upgradeDevice fingerprints/ID are consistent before and after system upgrade✅✅✅✅✅✅✅


Factory reset (including iOS 14 and above, etc.)The device fingerprints/ID are the same before and after the device is restored to factory settings✅❌❌❌❌❌❌


Device Fingerprint Risk IdentificationSecondary packagingAbility to identify secondary packaged unofficial apps✅❌❌❌❌✅❌


Replay attackAbility to identify replay attacks✅❌❌❌❌❌❌


Device location information has been tampered withAbility to identify tampering of location information✅✅❌✅✅✅-


No SIM card insertedCan identify whether the device is inserted with a SIM card✅❌❌✅✅✅✅


The device uses an HTTP proxyCan identify HTTP proxy risks✅❌❌❌❌❌✅


The device uses a VPN proxyCan identify VPN proxy risks✅❌❌❌❌✅❌


JailbreakAbility to identify jailbreak risks✅❌✅❌✅✅✅


The device is an emulatorAbility to recognize emulators✅❌✅❌✅✅❌


The device uses the machine modification tool to modify the device parameter informationAbility to identify mainstream modification tools✅❌❌❌✅✅❌


The device has scripts and group control tools installed (tools that are used to control multiple devices from single terminal - device farm/device group)Can identify mainstream scripting/group control tools✅❌❌❌❌✅❌


The device is equipped with an M chipDevices capable of recognizing M-chips✅❌❌❌✅✅-


The device is not logged into the iCloud accountAble to identify login iCloud account✅❌✅❌❌❌❌


Security and StabilityCode ProtectionThe device fingerprint SDK and JS have code protection mechanisms (such as VMP), which effectively resist black hat cracking attempts to manipulate code logic and falsify data✅ (OLLVM, VMP)❌❌❌❌❌❌


DowngradeIntercepting and sending collection requests in the iOS environment can still generate device fingerprints normally✅✅✅✅✅✅✅


Anti packet captureiOS has the ability to prevent packet capture✅❌❌❌❌❌✅

## License

This library is MIT licensed. Copyright trustdecision, Inc. 2022.