Czy 23 148 855 308 184 500 to liczba magiczna, czy zwykła szansa?

556

Wiadomości takie jak ten wskazują, że powyższy numer mógł powstać jako błąd programowy.

Pewien mężczyzna w Stanach Zjednoczonych wyskoczył na lokalną stację benzynową, by kupić paczkę papierosów - ale okazało się, że za jego kartę zapłacono 23 148 855 308 184 500 $.

To 23 miliardy dolarów (14 miliardów funtów) - wiele razy dług publiczny USA. *

W heksie jest to 523DC2E199EBB4, co na pierwszy rzut oka nie wydaje się zbyt interesujące.

Czy ktoś ma jakieś przemyślenia na temat błędu programowego?

Roddy
źródło
31
znudzony uczestnik stacji benzynowej?
txwikinger
217
Cóż, Obama powiedział, że ma nowy plan stymulacyjny w pracach, aby zmniejszyć deficyt ...
Christopher Klein
25
Dokładnie, jaką kartę kredytową ma ten facet, że ta transakcja przeszła i spowodowała jedynie 15 USD w opłatach za przekroczenie salda debetowego ... Stacja benzynowa prawdopodobnie również niezadowolona z 2% opłaty za przetwarzanie karty kredytowej z tego tytułu.
Nick Bastin
42
Pisanka od programisty, który wkrótce zostanie zwolniony;)
Matthew Whited
28
Może to jakaś nowa kampania antynikotynowa. („Zobacz, ile naprawdę kosztuje cię palenie!” :-)
Slapout

Odpowiedzi:

1447

Dodaj centy do liczby, a otrzymasz 2314885530818450000, który w systemie szesnastkowym to 2020 2020 2020 1250.

Czy widzisz wzór? Pierwsze sześć bajtów zostało zastąpionych spacjami (hex 20, dec 32).

Guffa
źródło
56
Po raz kolejny udowadniając, że białe znaki nie są nieszkodliwe.
Eric
547
jeśli to prawda, właśnie wygrałeś nagrodę za „najlepszy debugowanie roku” :)
Stefano Borini
82
VISA może go potrzebować bardziej niż NASA.
Brandon,
61
Wygląda na to, że kupił karton, a nie paczkę - hex 1250 = dec 4688 lub 46,88 GBP
John Rasch
157
frajerzy: dowiedz się, jaką markę i ilość papierosów pali mężczyzna, debugując swój błędny raport karty kredytowej;)
Stefano Borini
239

Poczekaj sekunde; dzieje się coś podejrzanego.

Wyjaśnienie wypełnione spacjami z pewnością wydaje się dobre, ale może być (przynajmniej częściowo) podstępne.

VISA stwierdziło, że snafu dotknęło „mniej niż 13 000” klientów korzystających z kart przedpłaconych Visa Buxx. Do tej pory znalazłem informacje o kilku. Josh Muszyński w New Hampshire, Jason Bryan w Tennessee, Ron Seale w Teksasie, nastoletni syn Karen Taylor w Betel i nastoletnia dziewczyna, Elizabeth Lewis w Owatonna.

Chodzi o to, że wszystkie mają dokładnie taką samą opłatę : 23 148 855 308 184 500,00 USD. Jeśli problem polegał na wypełnieniu spacją, to w jaki sposób wszystkie z nich miały dokładnie taką samą opłatę 0x1250 USD (46,88 USD)? Dwa z nich kupiły papierosy na stacjach benzynowych, kolejne dwa w restauracjach, Lewis kupił jajka i mleko, ostatni w aptece. Czy wszystkie te różnorodne przedmioty kosztują tyle samo? 46,88 USD za rachunek w restauracji wydaje się w porządku, ale za paczkę papierosów? do mleka i jajek‽

Błąd uzupełniania spacji ma sens, ale nie uwzględnia stałej 0x1250. Dlaczego wszystkie z nich zawierały 0x2020 2020 2020 1250zamiast 0x2020 2020 2020 2020lub inne liczby w ostatnim SŁOWIE?

Hmmm, gdyby dotknęło to tylko 13 000 klientów, może być tak, że dokładnie ta konkretna opłata spowodowała błąd. W takim przypadku jest to coś więcej niż błąd pola. Jeśli tylko pole tekstowe jest interpretowane jako 64-bitowa liczba całkowita, to dlaczego inne kwoty go nie spowodowały, wpływając w ten sposób na wszystkich, a nie tylko <13 000. Dlaczego jednak 13 000 osób mogło właśnie pobierać dokładnie taką samą kwotę w tym samym tygodniu?

Mówią, że to „tymczasowy błąd programowania” i może tak być, ale czy może to być hackowanie? W takim przypadku prawdopodobnie byłaby to liczba magiczna. W rzeczywistości może to być kombinacja obu: jakiś haker nakładający automatyczne ładowanie 0x1250, który połączył się z błędem wypełniania spacją, powodując wykrycie jednego lub obu błędów.

Rejestracja uważa, że odpowiedź jest rzeczywiście błąd wyściełane pola, ale nie rozwinąć dlaczego wszystkie są takie same, chociaż jeden z komentarzy wspomina liczba może być zaokrąglone do $ 100 (mało prawdopodobne, ponieważ banki i oprogramowania bankowego wyraźnie pójść do długości, aby zapewnić precyzję).

(Istnieje również raport o podobnym wcześniejszym błędzie).


Rachunek Jasona Bryanta:

Rachunek Jasona Bryanta

Rachunek Elizabeth Lewis:

Rachunek Elizabeth Lewis

Rachunek Rona Seale'a:

Rachunek Rona Seale'a

Rachunek Josha Muszyńskiego:

Rachunek Josha Muszyńskiego

Synetech
źródło
8
Być może liczba szesnastkowa 1250 = dec 4688 jest minimum, aby spowodować dodatkowe metody sprawdzania oszustw. Jeśli jest dokładnie równy, wprowadzany jest błąd w kodzie?
PeteT,
6
+1. Czy możesz sobie wyobrazić, co by się stało, gdyby 13 000 klientów jednocześnie dokonało obciążenia zwrotnego? : P
pageman,
11
@ petebob796 faktycznie każdy bajt jest traktowany osobno, więc 1250 (12 50) to 18, a 80. 18 to znak kontrolny, a 80 to duże P (przynajmniej w ASCII). Hmmm ... Ctrl + P?
WildJoe,
1
12,50 USD to stosunkowo mała i okrągła liczba. Nic dziwnego, że z milionów transakcji 13 000 miało dokładnie tę kwotę. Ale trzeba to połączyć z inną wadą logiczną, która spowodowała nadpisanie.
Tom A
4
12,50 jest mały i okrągły, ale jest to zupełnie inna liczba niż 0x12,50. A jeśli ktoś tam płaci 12,50 USD za paczkę papierosów, cieszę się, że rzuciłem.
62

Po dokonaniu zakupu kartą oprogramowanie natychmiast przechodzi do trybu online, aby upewnić się, że masz wystarczające środki na zakup, ale blokuje tylko środki na transakcję. Pod koniec dnia roboczego oprogramowanie zbiera wszystkie transakcje złożone w ciągu ostatnich 24 godzin i przekazuje je do banku przejmującego w celu przetworzenia.

Przekazanie do banku jest znane jako rozliczenie i odbywa się poprzez wysłanie zwykłego pliku tekstowego w bardzo sztywnym formacie. (Wszystko to zostało opracowane kilkadziesiąt lat temu, a liczba używanych obecnie systemów utrudnia modernizację)

Każda transakcja pojawia się w pliku jako linia tekstu, a jej część stanowi wartość transakcji. To pole powinno składać się z 11 znaków numerycznych (po lewej stronie uzupełnione zerami) i zawsze będzie zawierać wartość w najniższym wspólnym mianowniku (w tym przypadku centach). 11 znaków numerycznych dobrze uwzględnia wartości w dowolnej walucie.

Wygląda na to, że procesor płatności w tym przypadku wprowadził pewne zmiany w oprogramowaniu do przesyłania i błędnie zastąpił wypełnienie zerowe wypełnieniem spacji. Ucieka mi całkiem to, jak to uzyskał a) usługodawca, b) bank przejmujący i c) Visa bez odbioru. Wartość netto tego pliku rozliczeniowego (13 000 transakcji o wysokiej wartości) byłaby astronomiczna, a może to też gdzieś się przyczyniło.

PaulG
źródło
15
„11 znaków numerycznych dobrze uwzględnia wartości w dowolnej walucie”. - co z dolarami Zimbabwe?
quant_dev,
6
Kto płaci VISA w Zimbabwe? (^_^)
ЯegDwight
To dobry komentarz. Ale jeśli była to usterka oprogramowania, nie ma dowodów na to, że a) usługodawca, b) bank przejmujący ic) Visa w ogóle to widziały. Mógł powstać w dowolnym momencie.
Izaak Lubow
20

Jeśli usuniesz końcowe zero, zostanie to zatwierdzone jako numer karty VISA. Domyślam się, że przesunęli kartę, a następnie ręcznie wprowadzili numer, sądząc, że przesunięcie nie powiodło się.


źródło
9
lol - Czy właśnie opublikowaliśmy jego numer karty Visa? .. Jak miał na imię?
ian_scho
4
ps TO jest najbardziej prawdopodobna odpowiedź, ponad 200 głosów pozytywnych na pierwszą odpowiedź pochodzi od maniaków :) Jest około 50+ miliardowych transakcji wizowych rocznie.
ian_scho
14
Nie, to był błąd, a nie błąd użytkowania. Błąd dotyczy około 13 000 klientów.
Guffa,
8
Jakie jest prawdopodobieństwo, że pierwsze sześć bajtów będzie przypadkowo spacjami?
Robert Harvey
1
Mało prawdopodobne… było wiele transakcji z różnymi klientami, wszystkie z tą samą kwotą!
Roddy
10

Ostateczna tajemnica jest nadal, skąd pochodzi 12 50. Są to kody ASCII dla Ctrl + R, P. Które akurat są tajnymi naciśnięciami klawiszy, które musisz wpisać, aby wprowadzić kod weryfikacyjny dla QuickBooks.

Link: gdzie wpisać kod weryfikacyjny

Całkiem zbieg okoliczności. Zastanawiam się, co się stanie, gdy wpiszesz te klucze w niewłaściwym miejscu ...

Hans Passant
źródło
7

Jeśli przesuniesz w lewo na reprezentację 64-bitową, pozostało 8 bitów (pomnóż przez 256). Otrzymasz dobrze uformowany numer karty kredytowej i 3 puste pozycje dla tych 3 bezpiecznych dodatkowych liczb (wszystkie zera z jakiegoś powodu). Jest tylko 1 na 10 szans, że losowa liczba daje dobrze uformowany numer CC.

5926 1069 5889 5232 000


źródło
6

Jeśli użyjesz dekodowania binarnego ekwiwalentu (1110101110110100) o numerze 23148855308184500, otrzymasz K 鑛, który jest mandaryńskim znakiem dla wydobycia i rudy. Kmine może oznaczać „kopalnię wiedzy” lub coś w rodzaju kmine Holdings Ltd. Być może istnieje korelacja między K (kopalnią lub rudą) a Bank of America lub Visa?


źródło
56
Myślę, że wszystko jest o wiele głębsze niż to. Jeśli pomnożysz tę liczbę przez wysokość Pyramid of Khufu, a następnie pomnożysz co trzecią liczbę do 2012 roku, otrzymasz dokładnie 1/666 długości do Alpha Centauri.
serg