Apakah 23.148.855.308.184.500 angka ajaib, atau peluang belaka?

556

Laporan berita seperti ini menunjukkan bahwa angka di atas mungkin muncul sebagai bug pemrograman.

Seorang pria di Amerika Serikat muncul ke pom bensin lokalnya untuk membeli sebungkus rokok - hanya untuk menemukan kartunya dikenakan biaya $ 23.148.855.305.184.500.

Itu adalah $ 23 kuadriliun (£ 14 kuadriliun) - berkali-kali hutang nasional AS. *

Dalam hex itu $ 523DC2E199EBB4 yang tidak tampak sangat menarik pada pandangan pertama.

Adakah yang memiliki pemikiran tentang kesalahan pemrograman apa yang menyebabkan ini?

Roddy
sumber
31
petugas pompa bensin bosan?
txwikinger
217
Nah Obama melakukan katakanlah bahwa ia punya rencana stimulus baru dalam karya-karya untuk meringankan defisit ...
Christopher Klein
25
Tepatnya jenis kartu kredit apa yang dimiliki orang ini sehingga transaksi itu berjalan dan memicu biaya cerukan hanya $ 15 ... Pom bensin juga mungkin tidak senang dengan biaya pemrosesan kartu kredit 2% untuk itu.
Nick Bastin
42
Telur paskah dari seorang programmer yang akan segera dipecat;)
Matthew Whited
28
Mungkin ini semacam kampanye anti-merokok baru. ("Lihat berapa banyak rokok yang benar-benar dikenakan biaya!" :-)
Slapout

Jawaban:

1447

Tambahkan sen ke nomor dan Anda mendapatkan 2314885530818450000, yang dalam heksadesimal adalah 2020, 2020, 2020, 1250.

Apakah Anda melihat polanya? Enam byte pertama telah ditimpa oleh spasi (hex 20, dec 32).

Guffa
sumber
56
Sekali lagi membuktikan bahwa spasi putih tidak berbahaya.
Eric
547
jika ini benar, Anda baru saja memenangkan hadiah untuk "debug terbaik tahun ini" :)
Stefano Borini
82
VISA mungkin membutuhkannya lebih dari NASA.
Brandon
61
Sepertinya dia membeli karton, bukan paket - hex 1250 = dec 4688, atau £ 46,88
John Rasch
157
kutu buku: mencari tahu merek dan jumlah rokok seorang pria merokok dengan debugging laporan kartu kredit yang salah nya;)
Stefano Borini
239

Tunggu sebentar; ada sesuatu yang mencurigakan sedang terjadi.

Walaupun penjelasan yang diberi ruang jelas terlihat bagus, mungkin (setidaknya sebagian) penjelasan.

VISA mengatakan bahwa ada "kurang dari 13.000" pelanggan yang terpengaruh oleh snafu dengan kartu pra-bayar Visa Buxx. Saya telah menemukan berita di beberapa sejauh ini. Josh Muszynski di New Hampshire, Jason Bryan di Tennessee, Ron Seale di Texas, putra remaja Karen Taylor di Bethel, dan seorang gadis remaja, Elizabeth Lewis di Owatonna.

Masalahnya adalah bahwa mereka semua memiliki biaya yang sama persis : $ 23.148.855.308.184.500,00. Jika masalahnya adalah space-padding, lalu bagaimana mungkin semuanya memiliki biaya $ 0x1250 ($ 46,88) yang sama persis? Dua dari mereka membeli rokok di pompa bensin, dua lainnya membayar di restoran, Lewis membeli telur dan susu, yang terakhir di toko obat. Apakah semua barang yang bervariasi ini harganya sama? $ 46,88 untuk tagihan restoran sepertinya baik-baik saja, tetapi untuk sebungkus rokok? untuk susu dan telur‽

Kesalahan space-padding masuk akal, kecuali itu tidak memperhitungkan konstanta 0x1250. Mengapa mereka semua berakhir dengan 0x2020 2020 2020 1250alih - alih 0x2020 2020 2020 2020atau nomor yang berbeda di KATA terakhir?

Hmmm, jika hanya 13.000 pelanggan yang terpengaruh, mungkin karena biaya tertentu yang memicu kesalahan. Dalam hal ini, ini lebih dari sekadar kesalahan bidang. Jika itu hanya bidang teks yang ditafsirkan sebagai integer 64-bit, lalu mengapa jumlah lain tidak menyebabkannya, sehingga mempengaruhi semua orang, bukan hanya <13.000. Namun, bagaimana 13.000 orang bisa saja menagih jumlah yang sama persis di minggu yang sama?

Mereka mengatakan itu adalah "kesalahan pemrograman sementara", dan itu mungkin saja terjadi, tetapi mungkinkah itu hal peretasan? Kalau begitu, mungkin itu adalah angka ajaib. Bahkan, itu mungkin kombinasi dari keduanya: beberapa peretas menempatkan biaya otomatis 0x1250, yang digabungkan dengan kesalahan space-padding, menyebabkan satu atau kedua kesalahan terdeteksi.

The Register berpikir bahwa jawabannya memang kesalahan empuk-lapangan, tetapi tidak memperluas mengapa mereka semua sama, meskipun salah satu komentar menyebutkan nomor kemungkinan yang dibulatkan ke terdekat $ 100 (mungkin karena bank dan software perbankan secara eksplisit pergi panjang untuk memastikan presisi).

(Ada juga laporan yang serupa, kesalahan sebelumnya.)


Tagihan Jason Bryant:

Tagihan Jason Bryant

RUU Elizabeth Lewis:

RUU Elizabeth Lewis

Tagihan Ron Seale:

Tagihan Ron Seale

Tagihan Josh Muszynski:

Tagihan Josh Muszynski

Synetech
sumber
8
Mungkin angka hex 1250 = dec 4688 adalah minimum untuk menyebabkan semacam metode tambahan pengecekan penipuan. Jika persis sama dengan ini bug dalam kode diperkenalkan?
PeteT
6
+1 dapatkah Anda bayangkan apa yang akan terjadi jika 13.000 pelanggan melakukan tolak bayar pada saat yang sama? : P
pageman
11
@ petebob796 sebenarnya setiap byte diperlakukan secara terpisah, jadi 1250 (12 50) adalah 18 dan 80. 18 adalah char kontrol dan 80 adalah kapital P (setidaknya dalam ASCII). Hmmm ... Ctrl + P?
WildJoe
1
$ 12,50 adalah angka relatif kecil dan bulat. Sama sekali tidak mengherankan bahwa dari jutaan transaksi 13.000 memiliki jumlah yang tepat. Tapi itu perlu dikombinasikan dengan beberapa cacat logika lain yang memicu overwrite.
Tom A
4
12,50 kecil dan bulat, tetapi angka yang sama sekali berbeda dari 0x12,50. Dan jika ada orang di luar sana yang membayar $ 12,50 untuk satu bungkus rokok, saya senang saya berhenti.
62

Apa yang terjadi ketika Anda melakukan pembelian dengan kartu adalah bahwa perangkat lunak segera online untuk memastikan Anda memiliki dana yang cukup untuk pembelian, tetapi hanya menahan dana untuk transaksi tersebut. Pada akhir hari kerja, perangkat lunak kemudian mengumpulkan semua transaksi yang dilakukan dalam 24 jam terakhir dan menyerahkannya ke bank pengakuisisi untuk diproses.

Pengajuan ke bank dikenal sebagai penyelesaian, dan dilakukan dengan mengirimkan file teks biasa dalam format yang sangat kaku. (Ini semua dikembangkan beberapa dekade yang lalu dan jumlah sistem yang sekarang menggunakannya membuatnya sulit untuk dimodernisasi)

Setiap transaksi muncul dalam file sebagai baris teks, dan bagian dari itu adalah nilai transaksi. Bidang ini harus terdiri dari 11 karakter numerik (angka nol di sebelah kiri) dan akan selalu berisi nilai dalam common denominator terendah (dalam hal ini sen). 11 karakter numerik cocok untuk nilai dalam mata uang apa pun.

Sepertinya prosesor pembayaran dalam kasus ini telah membuat beberapa perubahan pada perangkat lunak pengiriman mereka dan secara keliru mengganti bantalan nol dengan bantalan ruang. Cukup bagaimana ini didapat oleh a) penyedia layanan, b) mengakuisisi bank dan c) Visa tanpa diambil keluar dari saya. Nilai bersih dari file penyelesaian (13.000 transaksi bernilai tinggi) akan menjadi astronomi, dan mungkin itu juga merupakan faktor penyumbang di suatu tempat.

PaulG
sumber
15
"11 karakter numerik cocok untuk nilai dalam mata uang apa pun." - bagaimana dengan dolar Zimbabwe?
quant_dev
6
Siapa yang membayar dengan VISA di Zimbabwe? (^_^)
ЯegDwight
Itu komentar yang bagus. Tetapi jika itu adalah kesalahan perangkat lunak, maka tidak ada bukti bahwa a) penyedia layanan, b) mengakuisisi bank dan c) Visa semua melihatnya sama sekali. Itu bisa saja muncul kapan saja.
Isaac Lubow
20

Jika Anda menghapus nol trailing, ini divalidasi sebagai nomor kartu VISA. Dugaan saya adalah mereka menggesekkan kartu kemudian memasukkan nomornya secara manual, mengira bahwa gesekannya gagal.


sumber
9
lol - Apakah kita baru saja menerbitkan nomor Kartu Visa-nya? .. Siapa namanya lagi?
ian_scho
4
id INI adalah jawaban yang paling mungkin, 200+ upvotes untuk jawaban pertama adalah dari Geeks :) Ada sekitar 50+ Billion Visa Transactions per tahun.
ian_scho
14
Tidak, itu bug, bukan kesalahan penggunaan. Sekitar 13.000 pelanggan terpengaruh oleh bug ini.
Guffa
8
Apa kemungkinan bahwa enam byte pertama akan menjadi ruang secara kebetulan?
Robert Harvey
1
Tidak mungkin .. ada beberapa transaksi dengan pelanggan yang berbeda, semua melibatkan jumlah yang sama persis!
Roddy
10

Misteri pamungkas masih dari mana 1250 berasal. Mereka adalah kode ASCII untuk Ctrl + R, P. Yang kebetulan merupakan penekanan tombol rahasia yang harus Anda ketik untuk memasukkan kode validasi untuk QuickBooks.

Tautan: Tempat memasukkan kode Validasi

Kebetulan sekali. Saya ingin tahu apa yang terjadi ketika Anda mengetikkan kunci ini di tempat yang salah ...

Hans Passant
sumber
7

Jika Anda menggeser ke kiri 64-bit representasi 8 bit tersisa (kalikan dengan 256) Anda akan mendapatkan nomor kartu kredit yang terbentuk dengan baik dan 3 posisi kosong untuk ini adalah 3 angka tambahan yang aman (semua nol karena beberapa alasan). Hanya ada 1 dari 10 peluang bahwa angka acak memberikan nomor CC yang terbentuk dengan baik.

5926 1069 5889 5232 000


sumber
6

Jika Anda menggunakan decode biner equivelant (1110101110110100) dari angka 23148855308184500, Anda mendapatkan K 鑛, yang merupakan karakter Mandarin untuk penambangan dan bijih. Kmine dapat berarti "tambang pengetahuan," atau sesuatu seperti kmine Holdings Ltd. Mungkin ada korelasi antara K (tambang atau bijih) dan Bank of America atau Visa?


sumber
56
Saya pikir semuanya jauh lebih dalam dari ini. Jika Anda mengalikan angka ini dengan ketinggian Piramida Khufu dan kemudian mengalikan setiap angka ketiga pada 2012, Anda akan mendapatkan panjang persis 1/666 ke Alpha Centauri.
serg