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 or TrustDecision to learn about our professional version.
-
In Xcode, select File → Swift Packages → Add Package Dependency...
-
Enter the repository URL, for example:
https://github.com/trustdecision/trustdevice-ios.git
-
Specify a version range (e.g.
from: "1.6.2"
).
- TrustDecision is available through CocoaPods. To install it, simply add the following line to your Podfile:
# Podfile
pod 'TrustDecision', '1.6.2'
DeviceInfo contains device id, risk information and device details.
#import <TrustDecision/TDMobRisk.h>
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);
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)
{
"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
}
}
- 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. |
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 | - | ✓ |
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:
Comprehensive coverage of Android, iOS, Web, H5, applets and other device types.
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.
TrustDevice's code virtualization & obfuscation technology make the malware fraudsters suffer from painful cost and imprecision when performing reverse-engineering.
Fully independent intellectual property rights, with a number of patented technology.
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.
SaaS(Software as a Service)deployment supported, reducing massively your integration cost and enabling rapid access to device fingerprint service.
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 and 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, registered account for a free trial; or via email trustdevice@trustdecision.com contact us directly and quickly open the service.
Items | Description |
---|---|
Supported System Versions | iOS9.0+ |
Supported Architecture | armv7, arm64, x86_64 |
Type | Scene | Result | TrusDevice Pro | Fingerprint | Seon | CredoLab | Sift | Shield | PerimeterX |
---|---|---|---|---|---|---|---|---|---|
Device Fingerprint Compatibility | iOS 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 uniqueness | Different apps (with different package names) on the same device | Device 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 Stability | Uninstall and reinstall | Device fingerprints/ID are consistent before and after reinstallation | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
Clear all app data | Device fingerprints/ID are consistent before and after clearing all app data | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | |
Disable all app permissions except network permissions and clear app data | Device 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 tool | Device fingerprint/ID still matches with before modification | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | |
Device system upgrade | Device 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 Identification | Secondary packaging | Ability to identify secondary packaged unofficial apps | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
Replay attack | Ability to identify replay attacks | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | |
Device location information has been tampered with | Ability to identify tampering of location information | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | - | |
No SIM card inserted | Can identify whether the device is inserted with a SIM card | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | |
The device uses an HTTP proxy | Can identify HTTP proxy risks | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | |
The device uses a VPN proxy | Can identify VPN proxy risks | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | |
Jailbreak | Ability to identify jailbreak risks | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | |
The device is an emulator | Ability to recognize emulators | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | |
The device uses the machine modification tool to modify the device parameter information | Ability 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 chip | Devices capable of recognizing M-chips | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | - | |
The device is not logged into the iCloud account | Able to identify login iCloud account | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | |
Security and Stability | Code Protection | The 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) | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Downgrade | Intercepting and sending collection requests in the iOS environment can still generate device fingerprints normally | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
Anti packet capture | iOS has the ability to prevent packet capture | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
This library is MIT licensed. Copyright trustdecision, Inc. 2022.