Question Notation décimale étrange sans point de l'adresse IP ... Comment ça marche?


Plus tôt dans la journée, je pensais avoir un URL dans mon presse-papiers, mais j'avais en fait quatre nombres entiers à neuf chiffres copiés à partir d'une feuille de calcul, qui étaient des numéros d'identification d'un système propriétaire. Totalement sans rapport avec la tâche à accomplir. Je l'ai collé dans Firefox et j'ai été surpris de constater qu'il chargeait une page. J'ai vu des notations décimales sans IPv4 adresses avant, mais ce long numéro est quelque chose de beaucoup, beaucoup plus grand.

714687644714805209715128610715964400 (collez un HTTP: // devant)

Comment cela marche-t-il? Tous les convertisseurs décimaux -> IPv4 que je trouve sur Internet le considèrent tous comme une entrée non valide. Si je prends l'adresse IPv4 qu'il charge réellement et effectue les mêmes calculs pour le convertir en décimal sans points, je reçois un nombre beaucoup plus petit.

J'ai lu ça ping peut accepter dwords et faire de la conversion, mais il ne peut pas convertir ce nombre en une adresse IP. IPv6 est hors de question car cet hôte n’a pas de connectivité IPv6.

Quel genre de folie est-ce? C'est moi et mes collègues.

Edit: Il est de retour en ligne maintenant.


87
2018-04-02 01:38


origine


Voir pc-help.org/obscure.htm - Shamtam
Es-tu vraiment Assurez-vous que ce n’est pas une adresse IPv6? Parce que ce nombre est divisé en 8 chiffres en base 65536; Les adresses IPv6 ont 8 chiffres dans la base 65536. Représentée en hexadécimal comme d'habitude pour IPv6, elle est 89: a4d2: 471b: 45ef: 77ed: c70f: da35: 93f0. - Christian
@Christian Son explication de la source du numéro jive avec le nombre réel indiqué, qui comporte 36 chiffres (chaque identifiant est 9 chiffres soit 714xxxxxx ou 715xxxxxx). L'ordinateur n'a même pas IPv6 et le nombre pris comme adresse IPv4 renvoie effectivement une page Web. Les nombres de ~ 5E33 à ~ 3E38 ont 8 chiffres en base 65536, je pense que c'est juste une coïncidence que ses chutes se situent dans cette plage (de plus, un nombre plus petit serait aussi une adresse IPv6 valide) - Tim S.
@beeks Ok, ça ne marchait pas quand je l'ai essayé hier, mais étant donné que c'était un routeur non sécurisé, ce n'est peut-être pas si surprenant. Donc, vous dites que vous mettez essentiellement un nombre aléatoire dans votre barre d'adresse? Ou quel type de feuille de calcul y avait-il qui contient des adresses IP étrangement codées de routeurs non sécurisés? ;) - Christian
@Christian, LOL. Ils étaient des identificateurs de message uniques dans un système de conformité. Totalement freak chance que je les ai collés dans la barre d'adresse, et cela a fonctionné. Je parie que cela ne se reproduira plus jamais dans ma vie :) - beeks


Réponses:


C'est une question assez intéressante et il m'a fallu un peu de temps pour comprendre. La réponse courte est les derniers 32 bits du nombre sont 3660944368 (en décimal, qui peut être trouvé par 714687644714805209715128610715964400 mod 2^32)

C'est la valeur décimale de l'adresse IPv4 218.53.147.240, qui peut être trouvé en le convertissant en base-256 3660944368 = 218*(256^3)+53*(256^2)+147*(256)+240 analogue à l'écriture d'un nombre en décimal (base 10). Par exemple 234 = 2*10^2+ 3*10 + 4.

Comme @chritohnide le souligne, chaque section d’adresses IPv4 en pointillé est appelée un octet car elle représente 8 chiffres binaires. Il convient également de noter que les différents formats d'adresses IPv4 (tels que les décimales en pointillés ou les décimales pures) ne sont que différentes manières de représenter le nombre binaire de 32 bits pour en tirer des avantages.

Comme les adresses IPv4 sont des nombres de 32 bits, seuls les derniers 32 bits du numéro sont utilisés pour résoudre l'adresse. Pourquoi c'est vrai n'est pas aussi évident. Comme d’autres l’ont fait remarquer, le numéro complet ressemble étonnamment à une adresse IPv6 en décimal, mais n’est pas une adresse valide.

En regardant le Teredo spécification (voir 4. Adresses de Teredo), le client IPv4 occupe les derniers 32 bits de l’adresse IPv6, mais le préfixe du numéro ne correspond pas à la spécification Teredo (voir aussi Wikipédia).


92
2018-04-02 05:37



Bonne réponse. Il pourrait également être utile de mentionner que chaque section d’une adresse IPv4 en pointillé est appelée octuor car il s'agit de la représentation décimale d'un nombre binaire de 8 bits (4 octets = 4 x 8 bits = 32 bits d'adresse IPv4) et que la version décimale n'est vraiment utile que pour nous. - chritohnide
Vous êtes sûr que ce n'est pas la notation décimale IPv6? Il se convertit avec succès en 0089:a4d2:471b:45ef:77ed:c70f:da35:93f0 - Izkata
@Izkata: Peu probable car cette adresse se trouverait dans une partie non allouée et réservée de l'espace adresse IPv6. - Henning Makholm
Le numéro (en ASCII) sera probablement exécuté via l'une des chaînes C stdlib vers les fonctions int pour convertir l'adresse IPv4 32 bits. Dans la plupart des implémentations du Stdlib, ces conversions font automatiquement un modulo 2 ^ <taille d’entier souhaitée>. Le résultat dans ce cas est exactement le comportement observé. - Tonny
Il est intéressant de noter que ceci est probablement une bizarrerie de l’analyseur d’URL de Firefox. Il semble reconnaître qu’il s’agit d’un nombre plutôt que d’une URL et tente de l’analyser en tant qu’adresse IP 32 bits non annotée (l’entier analysé résultant se termine par un modulo 32 bits et ne vérifie pas vraiment l’entrée). ). Chrome, par exemple, n'affiche pas ce comportement. Il pourrait être utile de le signaler comme un bogue trivial dans Firefox. - Jason C