commit 7eb61dcf9c284bd093a134c8d79717073f139e39 Author: Do Nguyen Date: Wed Jun 4 22:46:55 2025 +0700 completed diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..599d622 --- /dev/null +++ b/.htaccess @@ -0,0 +1,4 @@ + + AddType text/xml .plist + AddType application/x-apple-aspen-config .mobileconfig + \ No newline at end of file diff --git a/device.mobileconfig b/device.mobileconfig new file mode 100644 index 0000000..2534a5b --- /dev/null +++ b/device.mobileconfig @@ -0,0 +1,32 @@ + + + + + PayloadContent + + URL + https:///processes_data.php + DeviceAttributes + + UDID + DEVICE_NAME + VERSION + PRODUCT + + + PayloadOrganization + Get UDID + PayloadDisplayName + UDID Profile + PayloadVersion + 1 + PayloadUUID + 44D4B36F-01F5-4C6E-B474-F6B8BF6F8FF8 + PayloadIdentifier + com.getudid.profile + PayloadDescription + Install this profile to get your device UDID. + PayloadType + Profile Service + + diff --git a/get_mobileconfig.php b/get_mobileconfig.php new file mode 100644 index 0000000..2bc0f1b --- /dev/null +++ b/get_mobileconfig.php @@ -0,0 +1,27 @@ +' . "\n" . $config_content; +} + +// Set strict headers +header('Content-Type: application/x-apple-aspen-config'); +header('Content-Disposition: attachment; filename="udid.mobileconfig"'); +header('Content-Length: ' . strlen($config_content)); +header('Cache-Control: no-cache, must-revalidate'); +header('Pragma: no-cache'); + +// Output the configuration +echo $config_content; +exit; diff --git a/index.html b/index.html new file mode 100644 index 0000000..43f7607 --- /dev/null +++ b/index.html @@ -0,0 +1,260 @@ + + + + + Get UDID - Download Profile + + + + +
+

Get Your Device UDID

+

Quick and secure way to get your iOS device identifier for app testing

+
+ +
+
+ + + + + +
+ +
+
+
1
+

Get Profile

+ + +
+
+
2
+

Install Profile

+

Open Settings and install the downloaded profile

+
+
+
3
+

View UDID

+

Your device UDID will be displayed after installation

+
+
+
+ + + + + + diff --git a/instruction.php b/instruction.php new file mode 100644 index 0000000..f1964a0 --- /dev/null +++ b/instruction.php @@ -0,0 +1,214 @@ + + + + + Get UDID - Install Profile + + + + +
+

Install Profile

+
+ +
+
+
+
+ Open your iPhone Settings +
+
+ Look for "Profile Downloaded" at the top +
+
+ Tap Install in the top right corner +
+
+ After installation, return here for your UDID +
+
+ + +
+
+ + + + + + diff --git a/processes_data.php b/processes_data.php new file mode 100644 index 0000000..895f842 --- /dev/null +++ b/processes_data.php @@ -0,0 +1,53 @@ +'; + +$pos1 = strpos($data, $plistBegin); +$pos2 = strpos($data, $plistEnd); +$data2 = substr ($data,$pos1,$pos2-$pos1); + + +$xml = xml_parser_create(); +xml_parse_into_struct($xml, $data2, $vs); +xml_parser_free($xml); + +$UDID = ""; +$DEVICE_PRODUCT = ""; +$DEVICE_VERSION = ""; +$DEVICE_NAME = ""; +$iterator = 0; + +$arrayCleaned = array(); +foreach($vs as $v){ + + if($v['level'] == 3 && $v['type'] == 'complete'){ + $arrayCleaned[]= $v; + } + $iterator++; +} + +$iterator = 0; +foreach($arrayCleaned as $elem){ + switch ($elem['value']) { + case "UDID": + $UDID = $arrayCleaned[$iterator+1]['value']; + break; + case "PRODUCT": + $DEVICE_PRODUCT = $arrayCleaned[$iterator+1]['value']; + break; + case "VERSION": + $DEVICE_VERSION = $arrayCleaned[$iterator+1]['value']; + break; + case "DEVICE_NAME": + $DEVICE_NAME = $arrayCleaned[$iterator+1]['value']; + break; + } + $iterator++; +} + +$params = "UDID=".$UDID."&DEVICE_PRODUCT=".$DEVICE_PRODUCT."&DEVICE_VERSION=".$DEVICE_VERSION."&DEVICE_NAME=".$DEVICE_NAME; +header("Location: show_detail.php?".$params,TRUE,301); \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..a031a79 --- /dev/null +++ b/readme.md @@ -0,0 +1,64 @@ +# How to get iOS UDID without a Mac or PC? +This project shows how to do it using a mobileconfig file and hosting it on a Apache server. + +# Create the .mobileconfig file + + +``` + + + + PayloadContent + + URL + + DeviceAttributes + + UDID + IMEI + ICCID + VERSION + PRODUCT + + + PayloadOrganization + + PayloadDisplayName + + PayloadVersion + 1 + PayloadUUID + + PayloadIdentifier + + PayloadDescription + + PayloadType + Profile Service + + +``` + + + + +# sign the .mobileconfig file +``` +openssl smime -sign -signer -inkey -certfile -nodetach -outform der -in -out +``` + +# deliver the .mobileconfig file +### SET Content-Type Header +``` +application/x-apple-aspen-config +``` + +# Verify Keys (optional) +``` +openssl x509 -noout -modulus -in server.crt | openssl md5 +openssl rsa -noout -modulus -in server.key | openssl md5 +``` + + +## Source +https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/OTASecurity/OTASecurity.html#//apple_ref/doc/uid/TP40009505-CH3-SW1 \ No newline at end of file diff --git a/show_detail.php b/show_detail.php new file mode 100644 index 0000000..336f425 --- /dev/null +++ b/show_detail.php @@ -0,0 +1,297 @@ + + + + + Get UDID - Your Device Information + + + + +
UDID copied to clipboard!
+ +
+

Your Device UDID

+
+ +
+
+
+

Device UDID

+
+ +
+
+ +
+
+
Device Model
+
+
+ +
+
iOS Version
+
+
+ +
+
Device Name
+
+
+
+ + + +
+ You can now remove the profile from Settings → General → Profiles +
+
+
+ +
+

© ctdogetudid. All rights reserved.

+
+ + + +