23.148.855.308.184.500 est-il un nombre magique ou une simple chance?


556

Des reportages comme celui-ci indiquent que le numéro ci-dessus est peut-être apparu comme un bug de programmation.

Aux États-Unis, un homme est sorti dans sa station-service locale pour acheter un paquet de cigarettes - mais il a découvert que sa carte avait débité 23 148 855 308 184 500 dollars.

Cela représente 23 milliards de dollars (14 milliards de livres sterling), soit plusieurs fois la dette nationale américaine. *

En hexadécimal, c'est 523DC2E199EBB4, ce qui ne semble pas terriblement intéressant à première vue.

Quelqu'un a-t-il une idée de quelle erreur de programmation aurait provoqué cela?


31
ennuyé station d'essence attend?
txwikinger

217
Eh bien, Obama a dit qu'il avait un nouveau plan de relance en cours pour réduire le déficit ...
Christopher Klein

25
Exactement quel type de carte de crédit ce type a-t-il eu pour cette transaction et a déclenché à peine 15 $ en frais de découvert ...
Nick Bastin

42
Oeuf de Pâques d'un programmeur qui va bientôt être renvoyé;)
Matthew Whited

28
C'est peut-être une sorte de nouvelle campagne anti-tabac. ("Voyez combien fumer vous coûte vraiment!" :-)
Slapout

Réponses:


1447

Ajoutez les cents au nombre et vous obtenez 2314885530818450000, qui en hexadécimal est 2020 2020 2020 1250.

Voyez-vous le motif? Les six premiers octets ont été remplacés par des espaces (hex 20, déc 32).


56
Une fois de plus prouvant que les espaces blancs ne sont pas anodins.
Eric

547
si c'est vrai, vous venez de remporter le prix du "meilleur débogage de l'année" :)
Stefano Borini

82
VISA pourrait avoir besoin de lui plus que de la NASA.
Brandon

61
On dirait qu'il a acheté un carton, pas un paquet - hex 1250 = déc 4688, ou 46,88 £
John Rasch

157
nerds: découvrez la marque et la quantité de cigarettes qu'un homme fume en déboguant son mauvais rapport de carte de crédit;)
Stefano Borini

239

Attends une seconde; il se passe quelque chose de louche.

Bien que l'explication remplie d'espace semble certainement bonne, elle peut être (au moins en partie) spécieuse.

VISA a déclaré qu'il y avait «moins de 13 000» clients touchés par le snafu avec les cartes prépayées Visa Buxx. J'ai trouvé des nouvelles sur plusieurs jusqu'à présent. Josh Muszynski dans le New Hampshire, Jason Bryan dans le Tennessee, Ron Seale au Texas, le fils adolescent de Karen Taylor à Bethel et une adolescente, Elizabeth Lewis à Owatonna.

Le fait est que tous ont exactement le même prix : 23.148.855.308.184.500,00 $. Si le problème était le remplissage d'espace, alors comment se fait-il qu'ils aient tous exactement la même charge de $ 0x1250 ($ 46.88)? Deux d'entre eux avaient acheté des cigarettes dans des stations-service, deux autres avaient payé dans des restaurants, Lewis avait acheté des œufs et du lait, le dernier dans une pharmacie. Est-ce que tous ces articles variés ont le même prix? 46,88 $ pour une facture de restaurant semble correct, mais pour un paquet de cigarettes? pour le lait et les œufs‽

L'erreur de remplissage d'espace est logique, sauf qu'elle ne tient pas compte de la constante 0x1250. Pourquoi est-ce que tous se sont retrouvés avec 0x2020 2020 2020 1250au lieu de 0x2020 2020 2020 2020ou des numéros différents dans le dernier MOT?

Hmmm, si seulement 13 000 clients étaient touchés, il se peut que cette charge précise et spécifique ait déclenché l'erreur. Dans ce cas, c'est plus qu'une simple erreur de champ. Si c'était juste le champ de texte qui était interprété comme un entier 64 bits, alors pourquoi d'autres montants ne l'ont-ils pas causé, affectant ainsi tout le monde, pas seulement <13 000. Pourtant, comment se fait-il que 13 000 personnes auraient pu arriver à facturer exactement le même montant au cours de la même semaine?

Ils disent que c'est une "erreur de programmation temporaire", et c'est peut-être le cas, mais pourrait-il s'agir d'un piratage? Dans ce cas, ce serait probablement un nombre magique. En fait, il peut s'agir d'une combinaison des deux: un pirate mettant une charge automatique 0x1250, qui a été combiné avec l'erreur de remplissage d'espace, provoquant la détection d'une ou des deux erreurs.

Le Registre pense que la réponse est en effet l'erreur de remplissage, mais ne précise pas pourquoi elles sont toutes les mêmes, bien qu'un des commentaires mentionne que le nombre peut être arrondi au 100 $ le plus proche (peu probable car les banques et les logiciels bancaires vont explicitement aux longueurs pour assurer la précision).

(Il existe également un rapport d'une erreur similaire antérieure.)


Le projet de loi de Jason Bryant:

Le projet de loi de Jason Bryant

Le projet de loi d'Elizabeth Lewis:

Le projet de loi d'Elizabeth Lewis

Le projet de loi de Ron Seale:

La facture de Ron Seale

Le projet de loi de Josh Muszynski:

Le projet de loi de Josh Muszynski


8
Le nombre hexadécimal 1250 = déc 4688 est peut-être le minimum pour provoquer une sorte de méthodes supplémentaires de vérification de la fraude. S'il est exactement égal à cela, un bug dans le code est introduit?
PeteT

6
+1 pouvez-vous imaginer ce qui se passerait si les 13 000 clients effectuaient un rejet de débit en même temps? : P
pageman

11
@ petebob796 en fait, chaque octet est traité séparément, donc 1250 (12 50) est 18 et 80. 18 est un caractère de contrôle et 80 est un P majuscule (au moins en ASCII). Hmmm ... Ctrl + P?
WildJoe

1
12,50 $ est un chiffre relativement petit et rond. Il n'est pas du tout surprenant que sur des millions de transactions, 13 000 aient eu ce montant exact. Mais il doit être combiné avec une autre faille logique qui a déclenché l'écrasement.
Tom A

4
12.50 est petit et rond, mais c'est un nombre complètement différent de 0x12.50. Et si quelqu'un paie 12,50 $ pour un paquet de cigarettes, je suis content d'avoir arrêté.

62

Ce qui se passe lorsque vous effectuez un achat par carte, c'est que le logiciel se met immédiatement en ligne pour vous assurer que vous disposez de fonds suffisants pour l'achat, mais ne met en attente que les fonds pour la transaction. À la fin de la journée de travail, le logiciel rassemble ensuite toutes les transactions passées dans les dernières 24 heures et les soumet à la banque acquéreuse pour traitement.

La soumission à la banque est connue sous le nom de règlement, et elle se fait en envoyant un fichier texte brut dans un format très rigide. (Tout cela a été développé il y a des décennies et le nombre de systèmes qui l'utilisent maintenant le rend difficile à moderniser)

Chaque transaction apparaît dans le fichier sous la forme d'une ligne de texte, dont une partie est la valeur de la transaction. Ce champ doit être composé de 11 caractères numériques (zéro complété à gauche) et contiendra toujours la valeur dans le plus petit dénominateur commun (dans ce cas, les cents). 11 caractères numériques s'adaptent bien aux valeurs dans n'importe quelle devise.

Il semble que le processeur de paiement dans ce cas ait apporté quelques modifications à son logiciel de soumission et remplacé par erreur le remplissage zéro par un remplissage espace. Tout à fait comment cela a été obtenu par a) un fournisseur de services, b) l'acquisition d'une banque et c) un visa sans être récupéré m'échappe. La valeur nette de ce dossier de règlement (13 000 transactions de grande valeur) aurait été astronomique, et peut-être que cela a également été un facteur contributif quelque part.


15
"11 caractères numériques s'adaptent bien aux valeurs dans n'importe quelle devise." - qu'en est-il des dollars zimbabwéens?
quant_dev

6
Qui paie par VISA au Zimbabwe? (^_^)
ЯegDwight

Voilà un bon commentaire. Mais s'il s'agissait d'un problème logiciel, rien ne prouve que a) le fournisseur de services, b) la banque acquéreuse et c) Visa l'aient tous vu. Cela aurait pu survenir à tout moment.
Isaac Lubow

20

Si vous supprimez le zéro de fin, cela est validé comme numéro de carte VISA. Je suppose qu'ils ont glissé la carte puis entré manuellement le numéro, pensant que le balayage avait échoué.


9
lol - Nous venons de publier son numéro de carte Visa? .. Quel était son nom encore?
ian_scho

4
ps CECI est la réponse la plus probable, les 200+ votes positifs pour la première réponse sont des geeks :) Il y a environ 50+ milliards de transactions de visa par an.
ian_scho

14
Non, c'était un bug, pas une erreur d'utilisation. Environ 13 000 clients ont été affectés par ce bogue.
Guffa

8
Quelle est la probabilité que les six premiers octets soient des espaces par pur hasard?
Robert Harvey

1
Peu probable .. il y a eu plusieurs transactions avec différents clients, toutes impliquant exactement le même montant!
Roddy

10

Le mystère ultime est toujours d'où vient 12 50. Ce sont les codes ASCII pour Ctrl + R, P. Ce qui se trouve être les frappes secrètes que vous devez taper pour entrer le code de validation pour QuickBooks.

Lien: où saisir le code de validation

Une coïncidence. Je me demande ce qui se passe lorsque vous tapez ces touches au mauvais endroit ...


7

Si vous déplacez la représentation 64 bits vers la gauche 8 bits vers la gauche (multipliez par 256) Vous obtiendrez un numéro de carte de crédit bien formé et 3 positions vides pour cela 3 numéros supplémentaires sécurisés (tous des zéros pour une raison quelconque). Il n'y a qu'une chance sur 10 qu'un nombre aléatoire donne un nombre CC bien formé.

5926 1069 5889 5232 000


6

Si vous utilisez le décodeur d'équivalent binaire (1110101110110100) du nombre 23148855308184500, vous obtenez K 鑛, qui est le caractère mandarin pour l'extraction minière et le minerai. Kmine pourrait signifier «mine de connaissances», ou quelque chose comme kmine Holdings Ltd. Peut-être y a-t-il une corrélation entre K (mine ou minerai) et Bank of America ou Visa?


56
Je pense que tout est beaucoup plus profond que cela. Si vous multipliez ce nombre par la hauteur de la pyramide de Khéops et que vous multipliez ensuite tous les trois chiffres d'ici 2012, vous obtiendrez exactement 1/666 de longueur pour l'Alpha Centauri.
serg
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.