Là 23.148.855.308.184.500 là một con số ma thuật, hay cơ hội tuyệt đối?


556

Tin tức báo cáo như này cho thấy con số trên có thể phát sinh là một lỗi lập trình.

Một người đàn ông ở Hoa Kỳ đã ghé qua trạm xăng dầu địa phương của anh ta để mua một gói thuốc lá - chỉ để thấy thẻ của anh ta bị tính phí $ 23,148,855.308.184.500.500.

Đó là 23 triệu đô la (14 triệu bảng Anh) - gấp nhiều lần nợ quốc gia của Mỹ. *

Trong hex, $ 523DC2E199EBB4 không xuất hiện cực kỳ thú vị ngay từ cái nhìn đầu tiên.

Bất cứ ai có bất kỳ suy nghĩ về những gì lập trình lỗi sẽ gây ra điều này?


31
Chán trạm xăng?
txwikinger

217
Vâng Obama đã nói rằng ông đã có một kế hoạch kích thích mới trong các công trình để giảm bớt thâm hụt ...
Christopher Klein

25
Chính xác thì anh chàng này có loại thẻ tín dụng nào mà giao dịch đó đã trải qua và gây ra khoản phí thấu chi 15 đô la ... Trạm xăng cũng có thể không hài lòng về phí xử lý thẻ tín dụng 2% về điều đó.
Nick Bastin

42
Trứng phục sinh từ một lập trình viên sắp bị sa thải;)
Matthew Whited

28
Có lẽ đây là một loại chiến dịch chống hút thuốc mới. ("Xem bạn hút thuốc thực sự tốn bao nhiêu tiền!" :-)
Slapout

Câu trả lời:


1447

Thêm xu vào số và bạn nhận được 2314885530818450000, trong thập lục phân là 2020 2020 2020 1250.

Bạn có thấy mô hình? Sáu byte đầu tiên đã được ghi đè bằng khoảng trắng (hex 20, dec 32).


56
Một lần nữa chứng minh rằng khoảng trắng không phải là vô hại.
Eric

547
nếu điều này là sự thật, bạn vừa giành được giải thưởng "gỡ lỗi tốt nhất trong năm" :)
Stefano Borini

82
VISA có thể cần anh ta nhiều hơn NASA.
Brandon

61
Hình như anh ta đã mua một thùng carton, không phải một gói - hex 1250 = dec 4688, hoặc £ 46,88
John Rasch

157
mọt sách: tìm ra nhãn hiệu và số lượng thuốc lá mà một người đàn ông hút thuốc bằng cách gỡ lỗi báo cáo thẻ tín dụng sai của mình;)
Stefano Borini

239

Xin chờ một chút; Có điều gì đó đáng nghi đang xảy ra.

Trong khi lời giải thích về không gian chắc chắn có vẻ tốt, nó có thể (ít nhất là một phần).

VISA cho biết, có ít hơn 13.000 khách hàng đã bị ảnh hưởng bởi snafu với thẻ trả trước Visa Buxx. Tôi đã tìm thấy tin tức trên một số cho đến nay. Josh Muszynski ở New Hampshire, Jason Bryan ở Tennessee, Ron Seale ở Texas, con trai tuổi teen của Karen Taylor ở Bethel, và một cô gái tuổi teen, Elizabeth Lewis ở Owatonna.

Vấn đề là tất cả chúng đều có cùng một khoản phí : $ 23,148,855.308,184.500,00. Nếu vấn đề là phần đệm không gian, thì làm thế nào mà tất cả chúng có cùng mức phí $ 0x1250 ($ 46,88)? Hai trong số họ đã mua thuốc lá tại trạm xăng, hai người khác đã trả tiền tại các nhà hàng, Lewis đã mua trứng và sữa, người cuối cùng tại một cửa hàng thuốc. Có phải tất cả các mặt hàng khác nhau xảy ra để có giá như nhau? 46,88 đô la cho hóa đơn nhà hàng có vẻ ổn, nhưng đối với một gói thuốc lá? cho sữa và trứng‽

Lỗi đệm không gian có ý nghĩa, ngoại trừ nó không chiếm hằng số 0x1250. Tại sao tất cả trong số họ đã kết thúc với 0x2020 2020 2020 1250thay vì 0x2020 2020 2020 2020hoặc các số khác nhau trong WORD cuối cùng?

Hmmm, nếu chỉ có 13.000 khách hàng bị ảnh hưởng, có thể bằng cách nào đó, khoản phí cụ thể, chính xác đó đã gây ra lỗi. Trong trường hợp đó, nó không chỉ là một lỗi trường. Nếu đó chỉ là trường văn bản được hiểu là số nguyên 64 bit, thì tại sao các số tiền khác không gây ra nó, do đó ảnh hưởng đến tất cả mọi người, không chỉ <13.000. Tuy nhiên, làm thế nào mà 13.000 người có thể đã tình cờ tính chính xác số tiền tương tự trong cùng một tuần?

Họ nói rằng đó là một lỗi lập trình tạm thời, và đó có thể là lỗi, nhưng nó có thể là một thứ hack không? Trong trường hợp đó, nó có lẽ sẽ là một con số ma thuật. Trên thực tế, nó có thể là sự kết hợp của cả hai: một số hacker đặt sạc tự động 0x1250, kết hợp với lỗi đệm không gian, khiến một hoặc cả hai lỗi được phát hiện.

Các nghĩ rằng câu trả lời thực sự là lỗi đệm-lĩnh vực, nhưng không mở rộng về lý do tại sao tất cả chúng đều giống nhau, mặc dù một trong những ý kiến đề cập đến số lượng có thể được làm tròn tới $ 100 (không kể từ khi ngân hàng và phần mềm ngân hàng một cách rõ ràng đi đến độ dài để đảm bảo độ chính xác).

(Ngoài ra còn có một báo cáo về lỗi tương tự, trước đó.)


Hóa đơn của Jason Bryant:

Hóa đơn của Jason Bryant

Hóa đơn của Elizabeth Lewis:

Hóa đơn của Elizabeth Lewis

Hóa đơn của Ron Seale:

Hóa đơn của Ron Seale

Hóa đơn của Josh Muszynski:

Hóa đơn của Josh Muszynski


8
Có thể số hex 1250 = dec 4688 là mức tối thiểu để gây ra một số loại phương pháp kiểm tra gian lận bổ sung. Nếu nó chính xác bằng điều này, một lỗi trong mã được giới thiệu?
PeteT

6
+1 bạn có thể tưởng tượng điều gì sẽ xảy ra nếu 13.000 khách hàng thực hiện khoản bồi hoàn cùng một lúc không? : P
pageman

11
@ petTHER796 thực tế mỗi byte được xử lý riêng, vì vậy 1250 (12 50) là 18 và 80. 18 là char điều khiển và 80 là viết hoa P (ít nhất là trong ASCII). Hmmm ... Ctrl + P?
WildJoe

1
$ 12,50 là một số tròn và nhỏ tương đối. Không có gì đáng ngạc nhiên khi trong số hàng triệu giao dịch, 13.000 giao dịch có số tiền chính xác. Nhưng nó cần phải được kết hợp với một số lỗ hổng logic khác đã kích hoạt ghi đè.
Tom A

4
12,50 nhỏ và tròn, nhưng đó là một số hoàn toàn khác với 0x12,50. Và nếu có ai đó trả 12,50 đô la cho một gói thuốc lá, tôi rất vui vì tôi đã bỏ thuốc lá.

62

Điều gì xảy ra khi bạn mua hàng bằng thẻ là phần mềm ngay lập tức lên mạng để đảm bảo bạn có đủ tiền cho giao dịch mua, nhưng chỉ giữ tiền trong giao dịch. Vào cuối ngày làm việc, phần mềm sẽ tập hợp tất cả các giao dịch được đặt trong 24 giờ qua và gửi chúng đến ngân hàng thâu tóm để xử lý.

Việc nộp cho ngân hàng được gọi là thanh toán, và nó được thực hiện bằng cách gửi một tệp văn bản đơn giản ở định dạng rất cứng nhắc. (Điều này đã được phát triển từ nhiều thập kỷ trước và số lượng các hệ thống hiện đang sử dụng nó khiến cho việc hiện đại hóa trở nên khó khăn)

Mỗi giao dịch xuất hiện trong tệp dưới dạng một dòng văn bản và một phần trong đó là giá trị giao dịch. Trường này phải là 11 ký tự số (không đệm ở phía bên trái) và sẽ luôn giữ giá trị ở mẫu số chung thấp nhất (trong trường hợp này là xu). 11 ký tự số phục vụ tốt cho các giá trị bằng bất kỳ loại tiền tệ nào.

Có vẻ như bộ xử lý thanh toán trong trường hợp này đã thực hiện một số thay đổi đối với phần mềm gửi của họ và thay thế sai phần đệm bằng không đệm. Hoàn toàn làm thế nào điều này có được bởi một) nhà cung cấp dịch vụ, b) mua lại ngân hàng và c) Visa mà không bị bắt để thoát khỏi tôi. Giá trị ròng của tệp thanh toán đó (13.000 giao dịch có giá trị cao) sẽ là thiên văn, và có lẽ đó cũng là một yếu tố góp phần ở đâu đó.


15
"11 ký tự số phục vụ tốt cho các giá trị bằng bất kỳ loại tiền tệ nào." - những gì về đô la Zimbabwe?
quant_dev

6
Ai trả tiền bằng VISA ở Zimbabwe? (
^ _ ^)

Đó là một nhận xét tốt. Nhưng nếu đó là một trục trặc phần mềm, thì không có gì chứng minh rằng a) nhà cung cấp dịch vụ, b) mua lại ngân hàng và c) Visa đều thấy điều đó. Nó có thể phát sinh tại bất kỳ điểm nào.
Isaac Lubow

20

Nếu bạn xóa số 0 ở cuối, số này sẽ xác nhận là số thẻ VISA. Tôi đoán là họ đã quẹt thẻ sau đó nhập số thủ công, nghĩ rằng việc quẹt đã thất bại.


9
lol - Chúng ta vừa công bố số Thẻ Visa của anh ấy chưa? .. Tên anh ấy là gì?
ian_scho

4
ps NÀY là câu trả lời có khả năng nhất, hơn 200 lượt upvote cho câu trả lời đầu tiên là bởi các chuyên viên máy tính :) Có khoảng hơn 50 tỷ Giao dịch Visa mỗi năm.
ian_scho

14
Không, đó là một lỗi, không phải lỗi sử dụng. Khoảng 13000 khách hàng đã bị ảnh hưởng bởi lỗi này.
Guffa

8
Khả năng sáu byte đầu tiên sẽ là không gian bởi cơ hội tuyệt đối?
Robert Harvey

1
Không thể .. có nhiều giao dịch với các khách hàng khác nhau, tất cả đều liên quan đến cùng một số tiền!
Roddy

10

Bí ẩn cuối cùng vẫn là nơi 12 50 đến từ. Chúng là các mã ASCII cho Ctrl + R, P. Đây là tổ hợp phím bí mật bạn phải nhập để nhập mã xác thực cho QuickBooks.

Liên kết: Nơi nhập mã xác thực

Khá là trùng hợp. Tôi tự hỏi điều gì xảy ra khi bạn gõ các phím này ở sai vị trí ...


7

Nếu bạn dịch chuyển sang trái 64 bit đại diện 8 bit còn lại (nhân với 256), bạn sẽ nhận được số thẻ tín dụng được hình thành tốt và 3 vị trí trống cho 3 số phụ an toàn này (tất cả đều là số 0). Chỉ có 1 trên 10 cơ hội số ngẫu nhiên cho số CC được hình thành tốt.

5926 1069 5889 5232 000


6

Nếu bạn sử dụng giải mã nhị phân (1110101110110100) của số 23148855308184500, bạn nhận được K, đó là ký tự tiếng Quan thoại để khai thác và quặng. Kmine có thể có nghĩa là "mỏ kiến ​​thức", hoặc một cái gì đó giống như kmine Holdings Ltd. Có lẽ có mối tương quan giữa K (mỏ hoặc quặng) và Bank of America hoặc Visa?


56
Tôi nghĩ rằng mọi thứ sâu sắc hơn nhiều mà điều này. Nếu bạn nhân số này với chiều cao của Kim tự tháp Khufu và sau đó nhân mỗi số thứ ba vào năm 2012, bạn sẽ nhận được chính xác 1/666 chiều dài cho Alpha Centauri.
serg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.