Comment casser un iPhone et exécuter un service pour 15 millions d'utilisateurs

À l'été 2014, mes amis et moi sommes allés nous promener et un événement historique s'est produit. Pendant le tournage de la vidéo, soudain, l'iPhone 5C est tombé des mains de ma femme et s'est écrasé sur le sol en béton.

À ce moment, cela m'a semblé une triste situation. Mais c'est précisément l'impulsion pour le lancement du service qui dessert aujourd'hui plus de 15 millions d'utilisateurs.

Qu'est-ce que l'iPhone a à voir avec ça? Quel genre de service? Comment tout cela est-il connecté? Réponses sous la coupe!



Préface


Dans cet article, je veux partager avec vous les événements qui ont commencé en 2014. Je vais tout vous raconter tel qu'il était pendant que ma mémoire est fraîche, et partager également des informations qui n'ont encore été publiées nulle part.

Réparer


Comme tous ceux qui ressentaient l'amertume du verre brisé sur leur gadget préféré, je voulais résoudre ce problème le plus rapidement possible. L'écran lui-même n'a pas été endommagé et la réparation remplace simplement la vitre de l'écran tactile. Un ami a recommandé SC à Kiev et j'y ai envoyé un téléphone. Ils l'ont recollé et me l'ont renvoyé. J'avais hâte de recevoir le téléphone par mail.

Dès que je l'ai reçu, une autre déception m'attendait. L'écran tactile a été remplacé, mais il y avait des taches jaunes sur les bords de l'écran. Dans le SC, ils m'ont promis de le réparer ou de le remplacer par l'original avec l'écran. Comme j'ai toujours trouvé des rayures sous la vitre, j'ai décidé de remplacer complètement l'écran.

Une semaine plus tard, j'ai récupéré le téléphone, il s'est avéré que l'écran n'était pas d'origine. Même à la surface elle-même, il était clair qu'elle était inclinée par rapport au corps. Et les couleurs étaient plus sombres, ce qui distinguait clairement l'affichage de l'original. Il s'est avéré que les écrans d'origine de l'iPhone sont difficiles à trouver. J'ai décidé de supporter cette situation et, dans le futur, de changer l'iPhone en un modèle plus récent.

Quelques jours se sont écoulés, je me suis lentement habitué à l'affichage chinois. J'étais assis sur un fauteuil et le téléphone a glissé de ma poche. Il tomba sur le plancher en bois, le verre se fissura à nouveau. Le téléphone avec la vitre d'origine est tombé plusieurs fois, mais ne s'est pas écrasé jusqu'au combat de béton. Mais le verre chinois, collé de travers, s'est cassé du premier coup.



La prise de conscience que je ne pouvais pas acheter le verre d'origine m'a fait penser à trouver un donneur. J'ai commencé à chercher un iPhone qui se vend sur olx pour les pièces. Il s'est avéré qu'il y en a beaucoup qui ont un problème avec la fonction iCloud Find My iPhone. Ces téléphones ne peuvent pas être activés et restent dans un état dormant jusqu'à ce que vous saisissiez l'identifiant Apple du propriétaire ou si le propriétaire supprime le téléphone de son compte.

J'ai trouvé un donneur, l'iPhone 5C est en excellent état, il est verrouillé sous l'opérateur et sous iCloud. L'écran s'est approché avec succès de mon téléphone, et finalement tout s'est mis en place. J'ai décidé de garder l'iPhone vert, au cas où, en tant que donateur. Enfin, j'ai pu me calmer et oublier ce problème.

Et ensuite?


Plusieurs semaines se sont écoulées, l'iPhone 5C vert était allongé sur mon bureau sous le moniteur. Mais de temps en temps je me souvenais de lui, parce que par habitude je n'aime pas que les choses traînent au ralenti. Le téléphone était donc lié à un opérateur inconnu, et même avec du verre brisé, l'iCloud n'avait aucun sens. Mais l'idée que le téléphone en théorie puisse être déverrouillé, toujours d'une manière inconnue, ne m'a pas quitté.

doulCi


En général, j'ai commencé à google, lire les forums. J'ai trouvé des informations sur doulCi (le nom n'est pas étrange, mais c'est presque à l'envers iCloud). C'est une équipe de passionnés qui a lancé un serveur pour contourner FMI pour le premier firmware iOS 7. Ils ont lancé MITM et échangé des packages d'un iPhone déverrouillé à un iPhone verrouillé. En général, à cette époque, Apple n'a pas vérifié la conformité des packages avec Serial / IMEI et doulCi a utilisé cela avec succès. Ils n'ont pas travaillé pour leur serveur pendant longtemps, mais ils ont réussi à débloquer quelque 70 000 appareils. Ceux qui ont réussi à se connecter à leur serveur ont reçu un appareil fonctionnel sur lequel la carte SIM ne fonctionnait pas. Ensuite, une de leur équipe a divulgué la source sur Internet et Apple a réussi à corriger un tel trou. À ce stade, leur équipe s'est séparée et tout le monde est allé de différentes manières. Leur serveur ne fonctionnait plus.

Bien sûr, je ne le savais pas alors. Je suis allé sur leur site officiel et j'ai vu des minuteries là-bas, en disant: "Attendez jusqu'à 16h00 vendredi, puis nous allons démarrer le serveur et le déverrouiller gratuitement." Et il y avait partout des champs pour entrer l'IMEI et s'inscrire. J'ai donc décidé d'attendre cette heure. Dès que le moment est venu, j'ai réglé une alarme pour ne pas rater, j'ai gardé le câble USB prêt. Le moment est venu, je suis allé sur leur site, et là tout fonctionne une nouvelle fois pour démarrer le serveur. J'ai essayé d'attendre encore, et tout s'est avéré être une tentation publicitaire. Cela me dérangeait beaucoup, mais je n'allais pas m'arrêter.

Serveur proxy


Plus tard, des nouvelles sur les serveurs proxy ont commencé à apparaître, disant qu'en se connectant à eux, vous pouvez accéder à la page Web.

Dans la page qu'Apple distribue



En cliquant sur «Aide à l'activation», l'utilisateur a été redirigé vers une page contenant du texte. Mais les développeurs d'Apple ont raté un petit détail, le lien n'a pas conduit à HTTPS, mais à une adresse HTTP.
http://static.ips.apple.com/deviceservices/buddy/barney_activation_help_en_us.buddyml
Cela a permis d'intercepter et de remplacer le trafic, car il n'était pas chiffré.

Les serveurs tombaient constamment, le meilleur que j'ai trouvé était le serveur niltpH. Mais il changeait constamment de ports, soit pour que les utilisateurs visitent souvent son site, soit pour que le serveur ne le supporte pas et il a donc supprimé la charge.

Je me demandais constamment pourquoi faire un proxy si vous pouviez transférer des requêtes DNS?
Il n'y aura pas de charge importante et le serveur sera toujours en ligne. Mais il n'y avait que des serveurs proxy.

Puis une vague d'escroqueurs a commencé, ils ont commencé à massivement mandater le serveur.
En affichant une page avec le paiement pour une analyse complète inexistante, de nombreuses personnes ont souffert de ces faux services. Les serveurs proxy vous ont permis d'avoir un contrôle total sur le trafic. Ainsi, les méchants ont volé des mots de passe et des cartes de crédit, et les utilisateurs pensaient que cela fonctionnerait car tout changement dans leur appareil était crédible.

Apple n'a rien fait pour faire la différence, mais je l'ai fait. À la suite de mes autres actions, personne d'autre n'a pu trouver les fraudeurs du serveur proxy dans le moteur de recherche.

Premier serveur de contournement DNS iCloud


Résolu, je vais démarrer mon serveur. Un soir d'hiver en décembre, j'ai commencé le développement. Pour implémenter mon idée, j'avais besoin d'un serveur HTTP et d'un serveur DNS. J'ai décidé d'écrire les deux services en C ++ à l'aide de Visual Studio 2010. Travailler avec des sockets directement octet par octet sans bibliothèques tierces.

Le protocole DNS n'est pas compliqué, pour une requête UDP, une réponse, avec la même structure à chaque fois. Pendant quelques heures, j'ai écrit un simple serveur DNS, il a répondu avec une adresse IP statique sur static.ips.apple.com et le reste que j'ai pris avec DNS de Google.

Puis j'ai commencé à écrire un serveur HTTP. La première étape consistait simplement à produire une page HTML. Il a été chargé en mémoire lorsque le programme a démarré, puis il a été envoyé à des paquets prêts à l'emploi à tous ceux qui ont envoyé une demande au port 80. Mon programme a donc renvoyé une page à tous ceux qui ont envoyé la demande, quel que soit l'hôte spécifié. Tout fonctionnait dans le navigateur, mais en enregistrant DNS dans les paramètres Wi-Fi iOS, en cliquant sur «Aide à l'activation», j'ai reçu une erreur dans le téléphone.

Après avoir analysé le trafic, il s'est avéré qu'Apple utilise des fichiers XML, générant une interface distante pour eux.

Un exemple de code peut être vu sur le lien d'aide à l'activation:
static.ips.apple.com/deviceservices/buddy/barney_activation_help_en_us.buddyml

Et voici la réponse du serveur demandant le mot de passe sur l'appareil verrouillé:

 <xmlui> <script><![CDATA[function enableNextButton(){ var fieldPassword = xmlui.getFieldValue('password'); if (fieldPassword && fieldPassword.length >= 3) return true; return false; } function validateForm() { var fieldLogin = xmlui.getFieldValue('login'); var fieldPassword = xmlui.getFieldValue('password'); if (fieldLogin == 'test') { xmlui.setFieldInvalid('login', false); xmlui.alert("Test!"); } else { xmlui.setFieldInvalid('login', true); xmlui.alert("Value entered is not 'test'."); } }]]></script> <page> <navigationBar title="Activation Lock" loadingTitle="Activating..." hidesBackButton="false"> <linkBarItem position="right" label="Next" httpMethod="POST" url="/deviceservices/deviceActivation" style="blue" enabledFunction="enableNextButton"/> </navigationBar> <tableView> <section footer="This iPhone is linked to an Apple ID. Enter the Apple ID and password that were used to set up this iPhone."/> <section footer="  : This iPhone has been lost. Please call me. (123) 456-1234"/> <section footer="  " footerLinkURL="http://static.ips.apple.com/deviceservices/buddy/barney_activation_help_ru_ru.buddyml"> <editableTextRow id="login" label="Apple ID" placeholder="example@icloud.com" disableAutocapitalization="true" disableAutocorrection="true" keyboardType="email"/> <editableTextRow secure="true" id="password" label="" placeholder=""/> </section> </tableView> </page> <serverInfo isAuthRequired="true" activation-info-base64="      "/> </xmlui> 

Après avoir étudié la source, vous pouvez comprendre que le code a JavaScript et qu'il fonctionne à l'intérieur des balises <! [CDATA [..]]>

Et à cette époque, les mandataires existants utilisaient une seule page avec du code HTML.

 <xmlui> <page> <navigationBar title="Games" loadingTitle="Loading..." hidesBackButton="false"> <linkBarItem position="right" label="Next" httpMethod="POST" url="/deviceservices/deviceActivation" style="blue" enabledFunction="enableNextButton"/> </navigationBar> <htmlLabelRow> <![CDATA[<html>   HTML  </html>]]></htmlLabelRow> </page> </xmlui> 

Sur le téléphone, vous pouvez voir un site simple au lieu du texte d'activation. Les cookies fonctionnaient. Mais en cliquant sur un lien externe, tous les styles se sont égarés et les transitions ultérieures étaient impossibles. C'est ainsi que les serveurs proxy fonctionnaient à l'époque.

Après quelques heures, j'avais un serveur DNS et HTTP fonctionnel, qui renvoyait 1 page pour toute demande. XMLUI s'est avéré être un balisage avec des paramètres inconnus qui ne pouvaient être trouvés nulle part. Et maintenant, il n'y a plus de documentation nulle part. Apple ne l'utilise qu'à l'intérieur de ses produits.

En fait, les éléments iOS standard sont générés par XMLUI, même ceux qui fonctionnent hors ligne. Listes, boutons, icônes, choix de la date et de l'heure, sous-menus, tout cela n'est que le résultat de la conversion à la volée du XML d'un script similaire en une interface.

La prise de conscience que de nombreuses interfaces dans iOS ont été réalisées de manière si maladroite m'a légèrement déçu. C'est à ce moment que vous vous attendez à ce que tout ait déjà été fait de la manière la plus optimale possible, et il s'avère qu'il y a un calque sur le calque.

Ensuite, j'ai réalisé qu'en théorie, si vous connaissez la disposition de l'interface, vous pouvez générer une interface iOS native très confortable avec une liste d'icônes et de liens. Tels que les paramètres dans iOS. Et remplacez-le complètement par la boîte de dialogue d'activation.

Tout ce que j'ai compris du code déjà enregistré, c'est qu'il existe une certaine table avec la possibilité d'ajouter beaucoup de pied de page <section, qui peut faire référence à d'autres fichiers XMLUI. Il est tout à fait possible de créer votre serveur XMLUI avec quelques informations. Mais je voulais obtenir exactement la liste des sites, et pour pouvoir aller sur Google, par exemple.

Comment faire une interface de balisage sans connaître les commandes?


La première chose qui m'est venue à l'esprit est que puisque iOS génère des commandes, il compare les chaînes de paramètres XML, donc elles doivent être stockées quelque part dans le firmware. Idéalement, vous trouveriez un fichier avec une liste de commandes que vous pouvez essayer d'ajouter au code XMLUI, mais non, cela ne s'est pas produit.

À cette époque, l'iPhone 4 était déjà complètement piraté. Là, sous le chargeur de démarrage, vous pouvez démarrer et obtenir un accès complet au système de fichiers, peu importe qu'il y ait ou non un mot de passe d'iOS.

J'ai trouvé le firmware iOS 7 téléchargé depuis l'iPhone 4 et j'ai commencé à le choisir. J'ai compilé une liste de mots célèbres à partir de ces fichiers XMLUI que j'ai collectés et j'ai commencé à rechercher mot par mot tous les fichiers du firmware. À première vue, un exercice inutile, c'est comparable à trouver une aiguille dans une botte de foin, mais pour une raison quelconque, j'étais sûr que je trouverais quelque chose. Plus d'une heure s'est écoulée, je n'ai rien trouvé, mais le fichier dyld_shared_cache_armv7 a retenu mon attention. Il pesait jusqu'à 300 Mo, tandis que le firmware entier pesait environ 1 Go.

Il s'est avéré être un «package» de bibliothèques dynamiques. Afin de ne pas surcharger le système de fichiers, Apple regroupe toutes les bibliothèques dynamiques de tous les programmes système dans un fichier. À l'aide des outils de développement d'Apple, j'ai décompressé ce fichier et reçu un grand nombre de fichiers. J'ai recommencé à chercher dans leurs données les mots de ma liste, j'ai essayé de les combiner et de les sélectionner. J'ai commencé à chercher une orthographe de style similaire - quelques mots, le premier avec une petite lettre, le reste avec une majuscule, sans espaces ni soulignement.

Après d'innombrables tentatives, j'ai pu trouver le mot htmlButtonRow. Si vous le collez dans le code, vous obtenez une erreur, il est donc en quelque sorte influencé et reconnu. L'étape suivante a été la sélection d'un endroit, où le coller?

Enfin, le code a fonctionné, et j'ai obtenu la barre de menu convoitée:

  <tableView> <section> <htmlButtonRow name="  "> </htmlButtonRow> </section> </tableView> 

Une seule ligne était affichée et le texte, une fois appuyé, rien ne se passait. Mais le nom de la section htmlButtonRow parlait de HTML, ce qui signifie que vous pouvez probablement y ajouter le code de la page.
L'insertion de code HTML dans un bouton à l'aide de <! [CDATA a fonctionné. Même gagné la transition du bouton vers le site.

J'ai obtenu ce que je voulais, un moyen d'afficher une liste de différents sites et d'y aller. Ensuite, j'ai commencé à développer un moteur de génération de code XMLUI. J'ai écrit une liste des paramètres nécessaires pour un bouton, y ai mis un lien vers l'image, du texte et un lien vers le site.

Le résultat a été un fichier de configuration de texte de ce type:

 [Section] Name=Facebook Url=menu://https://m.facebook.com/ Img=https://iclouddnsbypass.com/Icons/B5w8iLX.png 

Dans ce document, j'ai créé une liste de sites populaires.

Ensuite, j'ai créé des modèles de page dans lesquels des boutons ont été ajoutés, tout a été stocké en mémoire de manière statique et émis à la demande sans accéder au disque.

Après quelques jours, j'ai corrigé tous les bugs et le serveur était prêt pour un lancement constant. La première version d'iCloud DNS Bypass a été lancée le 25 décembre 2014. J'ai écrit l'adresse du serveur DNS sur w3bsit3-dns.com dans le fil de discussion sur le contournement iCloud, le même jour que les modérateurs du site m'ont écrit et suggéré de créer une branche distincte. Peu importe , voici un lien vers le fil de discussion w3bsit3-dns.com .

En conséquence, tout ressemblait à ceci:



Mais en raison des limites de l'interface elle-même, il était seulement possible de suivre le lien, et la transition ultérieure vers des sites tiers était impossible. En conséquence, tout le monde ne pouvait utiliser que la liste des sites que j'avais ajoutés au serveur.

Dépanner le contournement DNS iCloud


Quelques jours après le lancement, mon ami Dybik a lancé un site avec des informations sur le serveur. J'ai créé un groupe dans VK et parlé avec les utilisateurs du serveur. Il s'est avéré que sur le nouveau firmware iOS, les liens de redirection HTML ne fonctionnent plus.

À cette époque, environ 500 utilisateurs uniques s'étaient déjà connectés, et toutes les critiques m'ont aidé à croire que je faisais quelque chose d'utile. Et j'ai toujours rêvé de lancer un grand projet. Ces pensées m'ont donné la force de ne pas abandonner. J'ai recommencé à chercher des noms de valeurs XMLUI, j'étais sûr qu'il y avait beaucoup plus de commandes utiles.

Après avoir passé encore 3-4 heures de recherches et de rebonds diligents, j'ai finalement trouvé une balise utile
<linkRow et son paramètre accessoire = "divulgation", faisant du bouton un sous-dossier. C'était exactement ce dont vous aviez besoin, la liste fonctionnait sur tous les iOS et adoptait un aspect plus natif, car il n'y avait plus de HTML.

Le code du bouton final était comme ceci:

 <linkRow accessory="disclosure" label=" " image="https://" shouldScaleHTMLPageToFit="true" url="http://   .buddyml" httpMethod="GET"/> 

Ils ont commencé à m'envoyer des liens utiles, que j'ai ajoutés au menu, et ont formé une grande liste. Ils ont également envoyé des plantages, que j'ai ajoutés au menu, et tout le monde pouvait les essayer.

J'ai également réalisé un moteur de langue, avec le remplacement des textes, en fonction de la langue de l'utilisateur. Il a invité tout le monde à traduire, et au fil du temps, ils m'ont envoyé des traductions de différents pays. Maintenant, l'interface du serveur a déjà été traduite en 50 langues, grâce à des bénévoles. J'ai également fait des restrictions sur la liste des sites pour la langue, par exemple, le russe est affiché pour les sites russes, du chinois vers le chinois. Ajout d'un chat basé sur tlk.io, mais plus tard, a créé son propre moteur en raison de spammeurs.

imageimageimage

De plus, j'ai également trouvé le paramètre shouldScaleHTMLPageToFit = "true" qui a amené la vue du navigateur sur mobile là où elle était nécessaire. Et en cours de route, j'ai trouvé un autre paramètre le plus important isModalHTMLView = "true". Avec cela, j'ai pu étendre la page Web en plein écran, la rotation de l'écran et tous les clics sur les liens sans bugs et restrictions y ont fonctionné. Les cookies ont également fonctionné après le redémarrage, je les ai donc utilisés pour compter le nombre d'utilisateurs. Pour la première fois au monde, il est devenu possible d'utiliser un navigateur complet sans onglets sur un appareil iOS verrouillé.

De plus, grâce au bouton de téléchargement de photos HTML, tout le monde peut utiliser l'appareil photo et allumer la lampe de poche de la même manière. J'ai ajouté une liste de favoris, et vous pouvez l'ajouter dans l'interface. Il y avait des stations de radio dans le menu, il était possible d'ouvrir de la musique, puis d'ouvrir un autre onglet avec un bouton spécial, tandis que le précédent fonctionnait, et le multitâche s'est avéré.

Il s'est ensuite avéré que certains utilisateurs ne pouvaient pas se connecter au serveur. La raison en était soit des routeurs soit des fournisseurs qui ont remplacé toutes les requêtes DNS par les leurs. Et il n'a pas été possible de remplacer le domaine par mon serveur. J'ai ensuite développé un petit programme pour Windows qui lance le serveur DNS intégré, qui aide à se connecter au réseau local.

Voici une vidéo YouTube de la chaîne EverythingApplePro sur le contournement DNS iCloud, où vous pouvez regarder à quoi ressemblait l'interface à ce moment-là.


Deux mois plus tard, plus de 200 000 appareils étaient déjà connectés au serveur.



Voici une vidéo, en temps réel vous pouvez voir les requêtes sur le serveur qui étaient à ce moment-là


Mais pour qu'Apple remarque qu'ils ont un balisage dans le balisage, il était nécessaire de connecter 300 000 autres appareils.

Une autre vague d'arnaqueurs


Deux mois après le lancement sur Internet, il était impossible de trouver autre chose sur une solution de contournement autre que mon serveur. Cela a mis fin à la procuration frauduleuse extorquant de l'argent. Mais une vague de publicités sur eBay a commencé, ils ont commencé à vendre "iCloud bypass" pour 30-50 USD. Les propriétaires naïfs et désespérés des appareils verrouillés sont faciles à manipuler et les fraudeurs l'ont utilisé.

Après avoir payé le «service de déverrouillage», les escrocs ont donné aux acheteurs des instructions sur la façon de se connecter à mon serveur gratuit. Beaucoup ne soupçonnaient même pas qu'ils avaient été volés. J'étais en colère et je voulais faire quelque chose pour les arrêter.

J'ai écrit une page de message dans toutes les langues, de sorte que lorsque tout le monde se connecte, ils comprennent que le serveur est gratuit. Une telle inscription reste toujours dans l'interface du serveur. Il s'est également plaint de fraude sur eBay, mais cette guerre a été sans fin.

J'ai reçu beaucoup de lettres et jeté tout ce qu'ils trouvaient sur les hacks, j'ai publié sur le serveur et j'ai tout essayé. Parfois, il s'est avéré aller sur le bureau, et parfois tout s'est déverrouillé (cela ne fonctionnait qu'avec des appareils effacés sur le site, l'interface le bloque en état de fonctionnement jusqu'à ce qu'il redémarre).

En utilisant les informations qui m'ont été envoyées, il s'est avéré qu'il existe de nombreuses sources proposant de déverrouiller des appareils pour de l'argent qui ont vraiment fonctionné. J'ai essayé de comprendre comment partager avec toute la communauté afin de dissiper les idées fausses sur les services payants.

Les utilisateurs reçoivent un appareil verrouillé pour les raisons suivantes:

  • Vous avez oublié votre mot de passe Apple ID et perdu votre chèque
  • J'ai acheté un appareil sans savoir qu'il est verrouillé
  • Ils ont été victimes de ransomwares et ont perdu l'accès à leur identifiant Apple
  • Trouvé l'appareil en mode de perte

Maintenant, je peux dire avec confiance qu'il n'y a que deux façons de le délier complètement:

  • Phishing, vol de mots de passe du propriétaire et suppression d'un appareil de son compte
  • Après avoir reçu le chèque d'origine, un appel en faveur d'Apple délie un appareil qui n'est pas en mode perte
  • Souder un modem ou une méthode de résistance pour iPad à partir de Pasha4ur

L'année dernière, les services de phishing ont été massivement distribués et Apple a même supprimé le message du propriétaire sur l'écran de l'appareil verrouillé. Mais ce n'était pas la raison de la fréquence des attaques de phishing. Il existe des sources qui vendent des informations du compte Apple ID pour l'argent utilisé pour les attaques. Ils ont cessé de travailler uniquement les jours fériés du calendrier chinois. Il s'agit très probablement d'employés d'Apple en Chine qui copient des informations depuis la zone d'administration d'Apple Care. J'ai décidé de vérifier les informations reçues et tout s'est avéré être vrai. Il y avait des informations d'adresse, des numéros de téléphone, des questions de sécurité, aucun mot de passe et aucune réponse. Ensuite, j'ai essayé de contacter Apple pour savoir ce qui se passait, et mes lettres ont été ignorées avec succès. Alors, prenez soin de votre IMEI / UDID loin des regards indiscrets, et dans Apple ID, il est préférable de ne pas écrire de vraies informations.

Plan d'urgence


Je soupçonnais qu'Apple remarquerait un défaut dans la liaison HTTPS et que le serveur de contournement DNS iCloud en un seul coup cesserait de fonctionner pour tous les appareils. L'exploration d'alternatives m'a conduit à créer le portail captif. Ce mécanisme est utilisé dans de nombreux hôtels, aéroports, lorsque vous devez saisir votre numéro sur le site, avant de vous connecter à Internet.

Il était également difficile de trouver des informations sur le portail captif. Personne n'a jamais essayé de lancer un portail d'autorisation via un serveur DNS. Après plusieurs jours de recherche, j'ai réussi à lancer mon propre portail captif. Tout fonctionnait comme dans un navigateur normal, cliquer sur tous les liens fonctionnait sans restrictions. En général, j'étais prêt pour qu'Apple corrige le défaut, mais le fait que les cookies aient été effacés lorsque le portail a été fermé m'a dérouté.

A cette époque, la méthode XMLUI fonctionnait parfaitement, je répondais aux mails, j'étais intéressé à communiquer avec les gens. Sur YouTube, beaucoup ont tourné une vidéo sur mon serveur et tout le monde a partagé des informations sur les recherches pour une analyse complète.

Mode hors ligne, un gestionnaire de fichiers à part entière sans Internet


Près de six mois se sont écoulés depuis le démarrage du serveur et Apple n'a pas pensé à corriger la page de balisage. Je ne me souviens pas exactement quand, mais je m'ennuyais et j'ai commencé à essayer de lire le système de fichiers iOS via XMLUI. J'ai réussi et j'ai pu ouvrir des fichiers à partir du système de fichiers, connaissant leur chemin à l'avance.

J'ai eu une idée, si vous déposez tous les fichiers via le programme de l'ordinateur dans les dossiers accessibles en écriture sur l'appareil, vous pouvez créer un gestionnaire de fichiers. Ensuite, il était toujours possible d'accéder aux fichiers sans confirmation sur un appareil verrouillé, maintenant sur iOS 10, cela ne fonctionnera plus.

J'ai fait un champ de saisie de code pour déverrouiller les boutons de test où se trouvait le gestionnaire de fichiers et j'ai invité plusieurs volontaires à tester.



Il était possible de télécharger des fichiers de n'importe quel format et de les ouvrir sur l'appareil. J'ai également fusionné tous les menus et sous-menus dans un seul fichier, ce qui a permis de les télécharger 1 fois sur l'appareil, puis de les utiliser sans Internet. Je voulais partager les nouvelles fonctionnalités avec les utilisateurs du serveur le plus rapidement possible. Tout d'abord, il était nécessaire de créer un programme qui synchroniserait la structure du système de fichiers avec le serveur et d'identifier l'utilisateur en lui fournissant une liste de fichiers depuis son appareil.

J'étais très impliqué et j'ai commencé à me développer. De nombreuses heures se sont écoulées et un lecteur audio avec une liste de lecture et la possibilité de sélectionner une piste était prêt. Le lendemain matin, des e-mails m'ont plu avec des messages indiquant que le serveur était en panne. J'ai tout vérifié, le serveur fonctionnait, plusieurs centaines d'utilisateurs étaient en ligne. Mais seuls les chanceux n'ont pas quitté le serveur.
Le 13 mai 2015, les développeurs d'Apple ont remarqué une faille et corrigé le texte du lien de HTTP à HTTPS.

Du jour au lendemain, tous les appareils ont cessé de se connecter au serveur et sont redevenus des morceaux de fer inutiles avec le logo Apple. Et à un moment donné, tout le développement du gestionnaire de fichiers est devenu inutile. Personne n'a jamais découvert que j'allais démarrer ce mode. Maintenant, pour renvoyer cette méthode, vous devez installer un certificat auto-signé dans l'appareil pour le domaine albert.apple.com, jusqu'à présent, cela n'a pas été possible. Au moment de la correction du bogue, à cause duquel l'ancienne méthode ne fonctionne plus, un demi-million d'appareils uniques étaient connectés.



J'ai immédiatement commencé à lancer le portail captif et à déplacer l'ensemble du menu vers l'option Web. L'interface est basée sur Framework7, je l'ai adaptée à l'ancien fichier de configuration du menu. Le même jour, le serveur a été lancé dans un nouveau look, dans lequel il est toujours situé.


Sur Facebook, j'avais une page iCloud DNS Bypass où je ne publiais que des nouvelles et des mises à jour du serveur. Plus d'un an s'est écoulé. Pour une raison quelconque, Apple ne l'aimait pas et un jour (très bien), j'ai vu le message suivant sans aucun avertissement: plus



tard, CloudFlare a envoyé un e-mail avec le message que quelqu'un de l'unité Apple avait demandé la véritable adresse IP de mon site, car cela violait leurs droits d'auteur. à droite. Même si je ne comprenais pas ce qu'était la violation, j'étais heureux que tout cela soit limité. Depuis toujours, Apple n'a jamais essayé de contacter directement et demander de supprimer ce qu'il n'aime pas.

Une telle ironie du destin, si ma femme n'avait pas laissé tomber le téléphone, si je n'avais pas été distrait du projet principal afin de me détendre et de réaliser mon idée, alors le serveur iCloud DNS Bypass n'existerait pas aujourd'hui.

Maintenant, le nombre d'utilisateurs uniques a franchi la frontière de 15 millions. 50 à 60 000 appareils uniques sont connectés par jour.

La version actuelle du serveur fonctionne sur tous les iOS existants. Et il n'y a toujours pas d'alternative au contournement DNS iCloud basé sur le portail captif. Le serveur fonctionne 24 heures sur 24 depuis son lancement et les dons sont suffisants pour louer du matériel. Jusqu'à présent, toutes les connexions HTTP sont desservies par un seul programme écrit en C ++.

Voici les statistiques des pays avec les appareils Apple les plus bloqués qui se sont connectés à iCloud DNS Bypass. Total actuellement 15,3 millions.



Et oui, vous pouvez essayer le portail captif sur votre appareil non verrouillé en faisant tout selon les instructions sur la vidéo de cet article. Et vous pouvez également simplement passer par n'importe quel navigateur à la page ui.iclouddnsbypass.com

Postface


J'espère que je ne vous ai pas ennuyé avec mon histoire, et c'était intéressant pour vous. Il n'y a pas de règles dans notre univers, et un projet sur lequel vous travaillez depuis quelques années peut être recouvert d'un bassin en cuivre, et un passe-temps pour lequel vous passez deux semaines peut se transformer en un service au service de plusieurs millions de personnes. Je souhaite que vous ne vous ennuyiez pas dans votre travail et que vous soyez souvent distrait par ce que vous aimez vraiment.

Source: https://habr.com/ru/post/fr405437/


All Articles