ऐप का परीक्षण करते समय हमें भू-स्थानिक जांच को "बायपास" करना पड़ा।

जबकि Android में भू-स्थान धोखाधड़ी के कई आसान तरीके हैं—जिनमें सिर्फ एक ऐप (मॉक जियोलोकेशन) इंस्टॉल करना शामिल है—इसी तरह इस धोखाधड़ी का पता लगाने के भी उतने ही तरीके हैं। Android में, डेवलपर्स द्वारा भू-स्थान को एक बहुत विश्वसनीय सत्यापन कारक नहीं माना जाता।

हालाँकि iOS पर इसे अधिक विश्वसनीय माना जाता है; कम से कम औसत iOS उपयोगकर्ता डेवलपर खाता नहीं बनाएगा और 9 GB का Xcode इंस्टॉल नहीं करेगा। लेकिन क्या यह उतना भयावह नहीं है जितना लगता है—और वास्तव में Android की तुलना में और भी आसान है?

तुलना

आइए iOS बनाम Android पर उपयोग किए जा सकने वाले सुरक्षा विधियों के बीच के अंतरों को देखने से शुरू करें:

नामAndroidiOSविवरण
वर्तमान SSID/BSSID की जाँच+±Android पर, एक्सेस परमिशन और स्थान प्रतिबंधों पर निर्भर करता है। iOS पर, आप केवल तभी वर्तमान Wi-Fi नेटवर्क प्राप्त कर सकते हैं जब आप Apple की आवश्यकताओं को पूरा करते हैं via NEHotspotNetwork.fetchCurrent, लेकिन आस-पास के नेटवर्क की सूची नहीं।
आस-पास के Wi-Fi SSID को स्कैन करना+-Android ने ऐतिहासिक रूप से अनुमति, थ्रॉटलिंग और स्थान पर प्रतिबंधों के साथ Wi-Fi स्कैनिंग की अनुमति दी है। iOS पर, एक मानक ऐप आस-पास के SSID की सूची प्राप्त नहीं कर सकता; Apple स्पष्ट रूप से कहता है कि आस-पास के Wi-Fi सूची के लिए कोई सामान्य API नहीं है।
सेल टावर+-Android सेलुलर रेडियो जानकारी प्राप्त कर सकता है via TelephonyManager.getAllCellInfo(), जिसमें पंजीकृत/सेवा दे रहे और पड़ोसी सेल शामिल हैं, के साथ ACCESS_FINE_LOCATION और टेलीफोनी रेडियो समर्थन। परिणाम डिवाइस, कैरियर, OS संस्करण और अनुमतियों के आधार पर कैश किए जा सकते हैं, दर-सीमित, अनुपलब्ध, या आंशिक रूप से अनुपलब्ध हो सकते हैं। iOS सर्विंग/पड़ोसी सेल टावर आईडी, LAC/TAC, सिग्नल शक्ति, या आस-पास की सेल सूची प्राप्त करने के लिए कोई सार्वजनिक App Store-सुरक्षित API प्रदान नहीं करता है। CoreTelephony सीमित कैरियर/सेवा-प्रदाता जानकारी प्रदान करता है, टावर-स्तर के रेडियो स्कैन डेटा नहीं।

इसके आधार पर, लगभग हर एंड्रॉइड ऐप अतिरिक्त रूप से आस-पास के नेटवर्क का अनुरोध कर सकता है और उन्हें किसी तृतीय-पक्ष सेवा के माध्यम से आंतरिक भू-स्थानिक स्थिति के लिए उपयोग कर सकता है। इस डेटा को जाली बनाया जा सकता है और यह एक मजबूत संकेतक नहीं है।

iOS पर, स्थिति थोड़ी अलग है, और ऐप्स के लिए आवश्यकताएँ भी थोड़ी अलग हैं। यह स्पष्ट रूप से भू-स्थानिक (geolocation) के लिए इस डेटा के उपयोग पर प्रतिबंध भी लगाता है। किसी भी मामले में, नेटवर्क एक्सेस पॉइंट के रूप में काम करने वाले एक डिवाइस का उपयोग करके इस डेटा को स्पूफ (स्पूफिंग) किया जा सकता है।

किसी भी प्लेटफ़ॉर्म के पास डेवलपर मोड का पता लगाने का कोई सीधा तरीका नहीं है, लेकिन मॉक लोकेशन के लिए डिटेक्टर हैं।

Location.isMock() — एंड्रॉइड पर।

CLLocation.sourceInformation?.isSimulatedBySoftware — iOS पर।

एंड्रॉइड पर, मॉक लोकेशन के लिए आप जो भी ऐप चुनते हैं, उसके पास होगा location.isMock=true flag सेट हो जाता है यदि डिवाइस रूट नहीं है। हालाँकि, deviceIntegrity के साथ मिलकर, इसे सैद्धांतिक रूप से टाला जा सकता है या इसे बहुत अधिक कठिन बनाया जा सकता है।

हालाँकि, iOS पर चीजें अलग हैं। CLLocation ऐप स्वयं उत्पन्न कर सकता है; यानी, यदि आप Xcode के अलावा कोई तीसरा-पक्ष टूलकिट उपयोग कर रहे हैं, तो आप हटा सकते हैं isSimulatedBySoftware=true

हम इसी का फायदा उठाएंगे। हम किसी भी मालिकाना सॉफ़्टवेयर का भी उपयोग नहीं करेंगे—केवल ओपन-सोर्स टूल का। इसलिए कोई Xcode, iTools, या 3uTools नहीं।

समाधान: pymobiledevice3

स्थापना

आपके पास Python संस्करण 3.9 या उससे उच्च स्थापित होना चाहिए।

0. टर्मिनल में, चलाएँ: python3 -m pip install -U pymobiledevice3

1. डिवाइस को अनलॉक करें

2. इसे USB के माध्यम से अपने कंप्यूटर से कनेक्ट करें और एक्सेस की अनुमति दें

3. इस पीसी के लिए "Trust" पर टैप करें

4. डेवलपर मोड सक्षम करें: pymobiledevice3 amfi enable-developer-mode

यदि यह पहली बार में काम नहीं करता है, तो आपको डिवाइस को पुनः आरंभ करने और चरण 1–4 को दोहराने की आवश्यकता हो सकती है।

5. सेटिंग्स -> सुरक्षा और गोपनीयता -> सुरक्षा -> डेवलपर मोड देखें

6. आइए जांचें कि क्या हमारे डिवाइस को पहचाना गया है: pymobiledevice3 usbmux list

जहाँ प्रतिक्रिया इस प्रकार होनी चाहिए:

[
    {
        "BuildVersion": "23F84",
        "ConnectionType": "USB",
        "DeviceClass": "iPhone",
        "DeviceName": "******",
        "Identifier": "0000000-00000000000000",
        "ProductType": "iPhone17",
        "ProductVersion": "26.5.2",
        "UniqueDeviceID": "0000000-00000000000000"
    }
]

डिवाइस का पता चला।

7. आइए iPhone डेवलपर डिस्क इमेज चुनें और माउंट करें

pymobiledevice3 mounter auto-mount

सफल माउंटिंग के बाद, हम कमांड भेज सकते हैं:

pymobiledevice3 developer dvt simulate-location set --userspace -- <LAT> <LONG>

अब आप कोई भी ऐप खोल सकते हैं, और यह आपके भू-स्थान को चयनित बिंदु पर प्रदर्शित करेगा।

अंतिम

हमने सुरक्षा उपायों को बायपास किया और उन सुविधाओं तक पहुँच प्राप्त की जो इस डिवाइस पर उपलब्ध नहीं होनी चाहिए थीं। हमने सुरक्षा में सुधार करने और कुछ परिदृश्यों को रोकने के लिए सिफारिशें लिखी हैं।

पढ़ने के लिए धन्यवाद, और अंत में, मैं यह कहना चाहूँगा: उपयोगकर्ता के वातावरण पर भरोसा न करें—इसे हमेशा धोखा दिया जा सकता है।