Ist 23.148.855.308.184.500 eine magische Zahl oder eine reine Chance?

556

Nachrichten wie dieser weisen darauf hin, dass die oben genannte Nummer möglicherweise als Programmierfehler aufgetreten ist.

Ein Mann in den USA ging zu seiner örtlichen Tankstelle, um eine Packung Zigaretten zu kaufen - nur um festzustellen, dass seine Karte mit 23.148.855.308.184.500 USD belastet war.

Das sind 23 Billiarden US-Dollar (14 Billiarden Pfund) - ein Vielfaches der US-Staatsverschuldung. *

In hex ist es $ 523DC2E199EBB4, was auf den ersten Blick nicht besonders interessant erscheint.

Hat jemand irgendwelche Gedanken darüber, welcher Programmierfehler dies verursacht hätte?

Roddy
quelle
31
gelangweilte Tankstelle anwesend?
txwikinger
217
Nun, Obama hat gesagt, dass er einen neuen Konjunkturplan in Arbeit hat, um das Defizit
Christopher Klein
25
Genau welche Art von Kreditkarte hat dieser Typ, dass diese Transaktion durchgegangen ist und lediglich Überziehungsgebühren in Höhe von 15 USD ausgelöst hat ... Die Tankstelle ist wahrscheinlich auch unglücklich über die Bearbeitungsgebühr von 2% für Kreditkarten.
Nick Bastin
42
Osterei von einem Programmierer, der bald abgefeuert wird;)
Matthew Whited
28
Vielleicht ist dies eine Art neue Anti-Raucher-Kampagne. ("Sehen Sie, wie viel Rauchen Sie wirklich kostet!" :-)
Slapout

Antworten:

1447

Addieren Sie die Cent zur Zahl und Sie erhalten 2314885530818450000, was hexadezimal 2020 2020 2020 1250 ist.

Sehen Sie das Muster? Die ersten sechs Bytes wurden durch Leerzeichen überschrieben (hex 20, dec 32).

Guffa
quelle
56
Wieder einmal beweisen, dass Leerzeichen nicht harmlos sind.
Eric
547
Wenn dies zutrifft, haben Sie gerade einen Preis für das "beste Debug des Jahres" gewonnen :)
Stefano Borini
82
VISA braucht ihn möglicherweise mehr als die NASA.
Brandon
61
Sieht so aus, als hätte er einen Karton gekauft, keine Packung - Hex 1250 = Dez 4688 oder £ 46.88
John Rasch
157
Nerds: Finden Sie die Marke und Menge der Zigaretten heraus, die ein Mann raucht, indem Sie seinen falschen Kreditkartenbericht debuggen;)
Stefano Borini
239

Warte eine Sekunde; da ist etwas faul los.

Während die raumgefüllte Erklärung sicherlich gut erscheint, kann sie (zumindest teilweise) fadenscheinig sein.

Laut VISA waren „weniger als 13.000“ Kunden von den Snafu mit den Visa Buxx-Prepaid-Karten betroffen. Ich habe bisher Neuigkeiten zu mehreren gefunden. Josh Muszynski in New Hampshire, Jason Bryan in Tennessee, Ron Seale in Texas, Karen Taylors jugendlicher Sohn in Bethel und ein junges Mädchen, Elizabeth Lewis in Owatonna.

Die Sache ist, dass alle von ihnen genau die gleiche Gebühr haben : 23.148.855.308.184.500,00 USD. Wenn das Problem die Platzauffüllung war, wie kommt es dann, dass alle genau die gleiche Gebühr von 0x1250 USD (46,88 USD) hatten? Zwei von ihnen hatten an Tankstellen Zigaretten gekauft, zwei in Restaurants, Lewis Eier und Milch, der letzte in einer Drogerie. Kosten all diese verschiedenen Gegenstände gleich viel? 46,88 Dollar für eine Restaurantrechnung scheinen in Ordnung zu sein, aber für eine Packung Zigaretten? für Milch und Eier

Der Leerzeichenauffüllungsfehler ist sinnvoll, außer dass die 0x1250-Konstante nicht berücksichtigt wird. Warum haben alle im letzten WORT 0x2020 2020 2020 1250statt 0x2020 2020 2020 2020oder mit unterschiedlichen Zahlen gelandet?

Hmmm, wenn nur 13.000 Kunden betroffen wären, könnte es sein, dass diese genaue, spezifische Gebühr den Fehler ausgelöst hat. In diesem Fall ist es mehr als nur ein Feldfehler. Wenn es nur das Textfeld war, das als 64-Bit-Ganzzahl interpretiert wurde, warum haben es dann nicht andere Beträge verursacht, was alle betrifft, nicht nur <13.000. Wie kommt es jedoch, dass 13.000 Menschen in derselben Woche genau den gleichen Betrag in Rechnung gestellt haben könnten?

Sie sagen, es sei ein "vorübergehender Programmierfehler", und es mag sein, aber könnte es eine Hacking-Sache sein? In diesem Fall wäre es wahrscheinlich eine magische Zahl. Tatsächlich kann es sich um eine Kombination aus beiden handeln: Einige Hacker setzen eine automatische Aufladung von 0x1250 ein, die mit dem Fehler beim Auffüllen des Leerzeichens kombiniert wurde und dazu führte, dass einer oder beide Fehler erkannt wurden.

Das Register ist der Ansicht, dass die Antwort in der Tat der Fehler mit dem aufgefüllten Feld ist, geht jedoch nicht darauf ein, warum sie alle gleich sind, obwohl in einem der Kommentare erwähnt wird, dass die Zahl möglicherweise auf die nächsten 100 US-Dollar gerundet wird (unwahrscheinlich, da Banken und Bankensoftware explizit gehen auf Längen, um Präzision zu gewährleisten).

(Es gibt auch einen Bericht über einen ähnlichen, früheren Fehler.)


Jason Bryants Rechnung:

Jason Bryants Rechnung

Elizabeth Lewis Rechnung:

Elizabeth Lewis Rechnung

Ron Seales Rechnung:

Ron Seales Rechnung

Josh Muszynskis Rechnung:

Josh Muszynskis Rechnung

Synetech
quelle
8
Möglicherweise ist die Zahl hex 1250 = dec 4688 das Minimum, um zusätzliche Methoden zur Betrugsprüfung zu verursachen. Wenn es genau gleich ist, wird ein Fehler im Code eingeführt?
PeteT
6
+1 Können Sie sich vorstellen, was passieren würde, wenn die 13.000 Kunden gleichzeitig eine Rückbuchung vornehmen würden? : P
Pageman
11
@ petebob796 Tatsächlich wird jedes Byte separat behandelt, also ist 1250 (12 50) 18 und 80. 18 ist ein Steuerzeichen und 80 ist das Großbuchstaben P (zumindest in ASCII). Hmmm ... Strg + P?
WildJoe
1
12,50 $ ist eine relativ kleine und runde Zahl. Es ist keineswegs überraschend, dass von Millionen von Transaktionen 13.000 genau diesen Betrag hatten. Es muss jedoch mit einem anderen logischen Fehler kombiniert werden, der das Überschreiben ausgelöst hat.
Tom A
4
12.50 ist klein und rund, aber es ist eine völlig andere Zahl als 0x12.50. Und wenn da draußen jemand 12,50 Dollar für eine Packung Zigaretten bezahlt, bin ich froh, dass ich aufgehört habe.
62

Wenn Sie einen Kauf per Karte tätigen, geht die Software sofort online, um sicherzustellen, dass Sie über ausreichende Mittel für den Kauf verfügen, hält jedoch nur die Mittel für die Transaktion zurück. Am Ende des Arbeitstages sammelt die Software dann alle Transaktionen, die in den letzten 24 Stunden getätigt wurden, und sendet sie zur Verarbeitung an die erwerbende Bank.

Die Übermittlung an die Bank wird als Abrechnung bezeichnet und erfolgt durch Senden einer Nur-Text-Datei in einem sehr starren Format. (Dies alles wurde vor Jahrzehnten entwickelt und die Anzahl der Systeme, die es jetzt verwenden, erschwert die Modernisierung.)

Jede Transaktion wird in der Datei als Textzeile angezeigt, und ein Teil davon ist der Transaktionswert. Dieses Feld sollte aus 11 numerischen Zeichen bestehen (Null auf der linken Seite aufgefüllt) und enthält immer den Wert im kleinsten gemeinsamen Nenner (in diesem Fall Cent). 11 numerische Zeichen eignen sich gut für Werte in jeder Währung.

Es sieht so aus, als hätte der Zahlungsprozessor in diesem Fall einige Änderungen an seiner Übermittlungssoftware vorgenommen und die Null-Auffüllung fälschlicherweise durch eine Leerzeichen-Auffüllung ersetzt. Wie dies durch a) Dienstleister, b) Bankkauf und c) Visum ohne Abholung zustande gekommen ist, entgeht mir. Der Nettowert dieser Abrechnungsdatei (13.000 Transaktionen mit hohem Wert) wäre astronomisch gewesen, und vielleicht hat das auch irgendwo dazu beigetragen.

PaulG
quelle
15
"11 numerische Zeichen eignen sich gut für Werte in jeder Währung." - Was ist mit simbabwischen Dollar?
quant_dev
6
Wer zahlt in Simbabwe mit VISA? (^_^)
ЯegDwight
Das ist ein guter Kommentar. Aber wenn es sich um eine Softwarepanne handelte, gibt es keinen Beweis dafür, dass a) Dienstleister, b) Bankkauf und c) Visa es überhaupt gesehen haben. Es hätte jederzeit entstehen können.
Isaac Lubow
20

Wenn Sie die nachfolgende Null entfernen, wird dies als VISA-Kartennummer validiert. Ich vermute, sie haben die Karte geklaut und dann die Nummer manuell eingegeben, weil sie dachten, der Wisch sei fehlgeschlagen.


quelle
9
lol - Haben wir gerade seine Visa Card Nummer veröffentlicht? .. Wie war sein Name nochmal?
ian_scho
4
ps DIESES ist die wahrscheinlichste Antwort. Die über 200 Upvotes für die erste Antwort stammen von Geeks :) Es gibt mehr als 50 Milliarden Visa-Transaktionen pro Jahr.
ian_scho
14
Nein, es war ein Fehler, kein Verwendungsfehler. Ungefähr 13000 Kunden waren von diesem Fehler betroffen.
Guffa
8
Wie hoch ist die Wahrscheinlichkeit, dass die ersten sechs Bytes zufällig Leerzeichen sind?
Robert Harvey
1
Unwahrscheinlich ... es gab mehrere Transaktionen mit verschiedenen Kunden, die alle genau den gleichen Betrag betrafen!
Roddy
10

Das ultimative Rätsel ist immer noch, woher 12 50 kommen. Dies sind die ASCII-Codes für Strg + R, P. Dies sind die geheimen Tastenanschläge, die Sie eingeben müssen, um den Validierungscode für QuickBooks einzugeben.

Link: Hier muss der Validierungscode eingegeben werden

Ein ziemlicher Zufall. Ich frage mich, was passiert, wenn Sie diese Schlüssel an der falschen Stelle eingeben ...

Hans Passant
quelle
7

Wenn Sie die 64-Bit-Darstellung nach links um 8 Bit nach links verschieben (mit 256 multiplizieren), erhalten Sie eine wohlgeformte Kreditkartennummer und 3 leere Stellen für diese 3 sicheren zusätzlichen Nummern (alle Nullen aus irgendeinem Grund). Es gibt nur 1 von 10 Chancen, dass eine Zufallszahl eine wohlgeformte CC-Zahl ergibt.

5926 1069 5889 5232 000


quelle
6

Wenn Sie die binäre Äquivalenzdekodierung (1110101110110100) der Nummer 23148855308184500 verwenden, erhalten Sie K 鑛, das Mandarin-Zeichen für Bergbau und Erz. Kmine könnte "Wissensmine" oder so etwas wie kmine Holdings Ltd. bedeuten. Vielleicht besteht eine Korrelation zwischen K (Mine oder Erz) und Bank of America oder Visa?


quelle
56
Ich denke, alles ist viel tiefer als dies. Wenn Sie diese Zahl mit der Höhe der Pyramide von Khufu multiplizieren und dann jede dritte Zahl bis 2012 multiplizieren, erhalten Sie genau 1/666 Länge für die Alpha Centauri.
Serg