// import 'dart:io'; // import 'package:device_info_plus/device_info_plus.dart'; import 'dart:async'; import 'dart:io'; import 'package:device_info_plus/device_info_plus.dart'; class DeviceHelper { static Future getDeviceFingerprint() async { final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin(); var deviceData; try { if (Platform.isAndroid) { // Fetch Android-specific device information AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo; deviceData = androidInfo.toMap(); // Convert to a map for easier access // Log.print('deviceData: ${jsonEncode(deviceData)}'); } else if (Platform.isIOS) { // Fetch iOS-specific device information IosDeviceInfo iosInfo = await deviceInfoPlugin.iosInfo; deviceData = iosInfo.toMap(); // Convert to a map for easier access } else if (Platform.isMacOS) { // Fetch macOS-specific device information MacOsDeviceInfo macInfo = await deviceInfoPlugin.macOsInfo; deviceData = macInfo.toMap(); } else { throw UnsupportedError('Unsupported platform'); } String deviceId = 'unknown'; if (Platform.isAndroid) { deviceId = deviceData['fingerprint'] ?? 'unknown'; } else if (Platform.isIOS) { deviceId = deviceData['identifierForVendor'] ?? 'unknown'; } else if (Platform.isMacOS) { deviceId = deviceData['systemGUID'] ?? 'unknown'; } final String deviceModel = deviceData['model'] ?? 'unknown'; final String fingerprint = '${deviceId}_$deviceModel'; print(fingerprint); return (fingerprint); } catch (e) { throw Exception('Failed to generate device fingerprint'); } } } class SecurityHelper { /// Performs security checks and handles potential risks static Future performSecurityChecks() async { bool isNotTrust = false; bool isJailBroken = false; bool isRealDevice = true; bool isOnExternalStorage = false; bool checkForIssues = false; bool isDevMode = false; bool isTampered = false; String bundleId = ""; try { isNotTrust = await JailbreakRootDetection.instance.isNotTrust; isJailBroken = await JailbreakRootDetection.instance.isJailBroken; isRealDevice = await JailbreakRootDetection.instance.isRealDevice; isOnExternalStorage = await JailbreakRootDetection.instance.isOnExternalStorage; List issues = await JailbreakRootDetection.instance.checkForIssues; checkForIssues = issues.isNotEmpty; isDevMode = await JailbreakRootDetection.instance.isDevMode; PackageInfo packageInfo = await PackageInfo.fromPlatform(); bundleId = packageInfo.packageName; if (bundleId.isNotEmpty) { isTampered = await JailbreakRootDetection.instance.isTampered(bundleId); } } catch (e) { debugPrint("Error during security checks: $e"); } await box.write('isNotTrust', isNotTrust); await box.write('isTampered', isTampered); await box.write('isJailBroken', isJailBroken); if (isJailBroken || isRealDevice == false || isTampered) { _showSecurityWarning(); } } static Future clearAllData() async { await box.erase(); exit(0); } static void _showSecurityWarning() { RxInt secondsRemaining = 10.obs; Get.dialog( CupertinoAlertDialog( title: Text("Security Warning".tr), content: Column( mainAxisSize: MainAxisSize.min, children: [ Obx(() => Text( "Potential security risks detected. The application will close in @seconds seconds." .trParams({ 'seconds': secondsRemaining.value.toString(), }), )), SizedBox(height: 24), Obx(() => SizedBox( width: double.infinity, child: CupertinoActivityIndicator( radius: 15, animating: true, ))), SizedBox(height: 8), Obx(() => ClipRRect( borderRadius: BorderRadius.circular(8), child: LinearProgressIndicator( value: secondsRemaining.value / 10, backgroundColor: Colors.grey.shade300, valueColor: AlwaysStoppedAnimation( CupertinoColors.systemRed), minHeight: 8, ), )), ], ), ), barrierDismissible: false, ); Timer.periodic(Duration(seconds: 1), (timer) { secondsRemaining.value--; if (secondsRemaining.value <= 0) { timer.cancel(); _clearDataAndExit(); } }); } static Future _clearDataAndExit() async { await box.erase(); exit(0); } } // class DeviceInfoPlus { // static List> deviceDataList = []; // static Future>> getDeviceInfo() async { // final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin(); // try { // if (Platform.isAndroid) { // AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo; // Map deviceData = { // 'platform': 'Android', // 'brand': androidInfo.brand, // 'model': androidInfo.model, // 'androidId': androidInfo.device, // 'versionRelease': androidInfo.version.release, // 'sdkVersion': androidInfo.version.sdkInt, // 'manufacturer': androidInfo.manufacturer, // 'isPhysicalDevice': androidInfo.isPhysicalDevice, // 'serialNumber': androidInfo.serialNumber, // 'fingerprint': androidInfo.fingerprint, // 'type': androidInfo.type, // 'data': androidInfo.data, // 'version': androidInfo.version, // 'tags': androidInfo.tags, // 'display': androidInfo.display, // }; // deviceDataList.add(deviceData); // } else if (Platform.isIOS) { // IosDeviceInfo iosInfo = await deviceInfoPlugin.iosInfo; // Map deviceData = { // 'brand': 'Apple', // 'model': iosInfo.model, // 'systemName': iosInfo.systemName, // 'systemVersion': iosInfo.systemVersion, // 'utsname': iosInfo.utsname, // 'isPhysicalDevice': iosInfo.isPhysicalDevice, // 'identifierForVendor': iosInfo.identifierForVendor, // 'name': iosInfo.name, // 'localizedModel': iosInfo.localizedModel, // }; // deviceDataList.add(deviceData); // } else if (Platform.isMacOS) { // MacOsDeviceInfo macInfo = await deviceInfoPlugin.macOsInfo; // Map deviceData = { // 'platform': 'macOS', // 'model': macInfo.model, // 'version': macInfo.systemGUID, // }; // deviceDataList.add(deviceData); // } else if (Platform.isWindows) { // WindowsDeviceInfo windowsInfo = await deviceInfoPlugin.windowsInfo; // Map deviceData = { // 'platform': 'Windows', // 'manufacturer': windowsInfo.computerName, // 'version': windowsInfo.majorVersion, // 'deviceId': windowsInfo.deviceId, // 'userName': windowsInfo.userName, // 'productName': windowsInfo.productName, // 'installDate': windowsInfo.installDate, // 'productId': windowsInfo.productId, // 'numberOfCores': windowsInfo.numberOfCores, // 'systemMemoryInMegabytes': windowsInfo.systemMemoryInMegabytes, // }; // deviceDataList.add(deviceData); // } else if (Platform.isLinux) { // LinuxDeviceInfo linuxInfo = await deviceInfoPlugin.linuxInfo; // Map deviceData = { // 'platform': 'Linux', // 'manufacturer': linuxInfo.name, // 'version': linuxInfo.version, // }; // deviceDataList.add(deviceData); // } // } catch (e) { // } // return deviceDataList; // } // // Method to print all device data // static void printDeviceInfo() { // for (Map deviceData in deviceDataList) { // 'Version: ${deviceData['version'] ?? deviceData['versionRelease'] ?? 'N/A'}'); // } // } // }