23,148,855,308,184,500 หมายเลขเวทมนต์หรือมีโอกาสเลี่ยงจริงไหม?


556

รายงานข่าวเช่นนี้ระบุว่าหมายเลขข้างต้นอาจเกิดขึ้นเป็นข้อผิดพลาดในการเขียนโปรแกรม

ชายคนหนึ่งในสหรัฐอเมริกาโผล่ออกมาที่สถานีบริการน้ำมันในท้องถิ่นเพื่อซื้อบุหรี่หนึ่งซอง - เพียงเพื่อจะพบว่าบัตรของเขามีค่าใช้จ่าย $ 23,148,855,308,184,500 เหรียญ

นั่นคือ $ 23 ล้านล้าน (14 พันล้านล้านบาท) - หลายเท่าของหนี้ของประเทศสหรัฐอเมริกา *

ในรูปหกเหลี่ยมมันคือ $ 523DC2E199EBB4 ซึ่งไม่น่าสนใจอย่างมากตั้งแต่แรกเห็น

ใครมีความคิดเห็นใด ๆ เกี่ยวกับข้อผิดพลาดในการเขียนโปรแกรมที่จะทำให้เกิดสิ่งนี้


31
เบื่องานสถานีบริการน้ำมัน?
txwikinger

217
ดีโอบามาบอกว่าเขามีแผนกระตุ้นใหม่ในการทำงานเพื่อความสะดวกในการขาดดุล ...
คริสไคลน์

25
ผู้ชายคนนี้มีบัตรเครดิตประเภทใดที่ธุรกรรมดังกล่าวผ่านและเรียกเก็บเงินเบิกเกินบัญชีเพียง $ 15 ... ปั้มน้ำมันอาจไม่พอใจเกี่ยวกับค่าธรรมเนียมการดำเนินการบัตรเครดิต 2%
Nick Bastin

42
ไข่อีสเตอร์จากโปรแกรมเมอร์ที่กำลังถูกไล่ออกในไม่ช้า;)
Matthew Whited

28
บางทีนี่อาจเป็นแคมเปญต่อต้านการสูบบุหรี่ชนิดใหม่ ("ดูว่าคุณสูบบุหรี่จริงราคาเท่าไหร่!" :-)
Slapout

คำตอบ:


1447

เพิ่มเซนต์ไปที่หมายเลขและคุณจะได้รับ 2314885530818450000 ซึ่งในเลขฐานสิบหกคือ 2020 2020 2020 1250

คุณเห็นรูปแบบหรือไม่ หกไบต์แรกถูกเขียนทับด้วยช่องว่าง (hex 20, Dec 32)


56
การพิสูจน์อีกครั้งว่าช่องว่างนั้นไม่เป็นอันตราย
307 Eric

547
ถ้าเรื่องนี้เป็นความจริงที่คุณเพิ่งได้รับรางวัลสำหรับ "การแก้ปัญหาที่ดีที่สุดของปี" :)
สเตฟาโนโอบอรินี่

82
วีซ่าอาจต้องการเขามากกว่านาซ่า
Brandon

61
ดูเหมือนว่าเขาจะซื้อกล่องไม่ใช่แพ็ค - hex 1250 = ธันวาคม 4688 หรือ£ 46.88
John Rasch

157
nerds: ค้นหายี่ห้อและจำนวนบุหรี่ที่ผู้ชายสูบบุหรี่โดยตรวจแก้จุดบกพร่องรายงานบัตรเครดิตของเขาผิด)
Stefano Borini

239

รอสักครู่; มีบางสิ่งบางอย่างที่เกิดขึ้น

ในขณะที่คำอธิบายเบาะอวกาศดูเหมือนจะดีอย่างแน่นอนมันอาจจะ (อย่างน้อยบางส่วน) ที่กว้างขวาง

VISA กล่าวว่ามีลูกค้า“ น้อยกว่า 13,000 คน” ที่ได้รับผลกระทบจาก snafu ด้วยบัตรเติมเงิน Visa Buxx ฉันพบข่าวมาหลายครั้งแล้ว Josh Muszynski ในมลรัฐนิวแฮมป์เชียร์, Jason Bryan ในรัฐเทนเนสซี, Ron Seale ในเท็กซัส, บุตรชายวัยรุ่นชาวกะเหรี่ยงเทเลในเบเธล, และเด็กวัยรุ่นเอลิซาเบ ธ เลวิสในโอวาตันนา

สิ่งที่พวกเขาทุกคนมีประจุเดียวกันแน่นอน : $ 23,148,855,308,184,500.00 หากปัญหาคือช่องว่างภายในช่องว่างแล้วพวกเขาทั้งหมดมีค่าใช้จ่าย $ 0x1250 ($ 46.88) เท่ากันหรือไม่ สองคนซื้อบุหรี่ที่ปั๊มน้ำมันอีกสองแห่งจ่ายที่ร้านอาหาร Lewis ซื้อไข่และนมคนสุดท้ายที่ร้านขายยา รายการที่หลากหลายเหล่านี้มีค่าใช้จ่ายเท่ากันหรือไม่ $ 46.88 สำหรับใบเรียกเก็บเงินร้านอาหารดูเหมือนจะโอเค แต่สำหรับบุหรี่หนึ่งซอง สำหรับนมและไข่‽

ข้อผิดพลาดของการเว้นช่องว่างนั้นสมเหตุสมผลแล้วยกเว้นว่าจะไม่มีค่าคงที่ 0x1250 ทำไมทุกคนจึงลงเอยด้วย0x2020 2020 2020 1250แทนที่จะเป็น0x2020 2020 2020 2020หรือแตกต่างจากตัวเลขในคำสุดท้าย?

อืมถ้ามีลูกค้าเพียง 13,000 คนที่ได้รับผลกระทบอาจเป็นไปได้ว่าค่าใช้จ่ายที่แน่นอนนั้นเป็นสาเหตุให้เกิดข้อผิดพลาด ในกรณีนี้มันเป็นมากกว่าแค่ข้อผิดพลาดของฟิลด์ หากมันเป็นเพียงแค่ช่องข้อความที่ถูกตีความว่าเป็นจำนวนเต็ม 64 บิตแล้วทำไมจำนวนอื่นไม่ได้ทำให้มันเกิดขึ้นจึงส่งผลกระทบต่อทุกคนไม่เพียง <13,000 แต่ถึงกระนั้นที่มีผู้คน13,000คนที่อาจคิดค่าใช้จ่ายเท่ากันในสัปดาห์เดียวกัน

พวกเขาบอกว่ามันเป็น“ ข้อผิดพลาดในการเขียนโปรแกรมชั่วคราว” และอาจเป็นไปได้ ในกรณีนั้นมันอาจจะเป็นหมายเลขเวทย์มนตร์ อันที่จริงแล้วอาจเป็นทั้งสองอย่างรวมกัน: แฮกเกอร์บางคนวางการชาร์จอัตโนมัติ 0x1250 ซึ่งรวมกับข้อผิดพลาดการเว้นวรรคทำให้เกิดข้อผิดพลาดหนึ่งหรือทั้งสองอย่างที่จะตรวจพบ

การลงทะเบียนคิดว่าคำตอบนั้นเป็นข้อผิดพลาดที่เกิดขึ้นจริง แต่ไม่ได้ขยายว่าทำไมพวกเขาถึงเหมือนกันถึงแม้ว่าความคิดเห็นอย่างใดอย่างหนึ่งจะกล่าวถึงจำนวนที่อาจถูกปัดเศษเป็น $ 100 ที่ใกล้ที่สุด ความยาวเพื่อความแม่นยำ)

(นอกจากนี้ยังมีรายงานข้อผิดพลาดที่คล้ายกันและก่อนหน้านี้)


ใบเรียกเก็บเงินของ Jason Bryant:

ใบเรียกเก็บเงินของ Jason Bryant

รายการของ Elizabeth Lewis:

ใบเรียกเก็บเงินของ Elizabeth Lewis

ร่างกฎหมายของ Ron Seale:

ใบเรียกเก็บเงินของ Ron Seale

ร่างกฎหมายของ Josh Muszynski:

ร่างกฎหมายของ Josh Muszynski


8
อาจเป็นไปได้ว่าเลขฐานสิบหก 1250 = ธันวาคม 4688 นั้นเป็นขั้นต่ำที่จะทำให้เกิดวิธีการตรวจสอบการทุจริตเพิ่มเติม ถ้ามันเท่ากับข้อผิดพลาดนี้ในรหัสถูกนำมาใช้?
PeteT

6
+1 คุณสามารถจินตนาการว่าจะเกิดอะไรขึ้นหากลูกค้า 13,000 คนทำการปฏิเสธการชำระเงินในเวลาเดียวกัน : P
pageman

11
@ petebob796 ที่จริงแล้วแต่ละไบต์จะแยกกันดังนั้น 1250 (12 50) คือ 18 และ 80 18 เป็นถ่านควบคุมและ 80 คือทุน P (อย่างน้อยใน ASCII) อืม ... Ctrl + P?
WildJoe

1
$ 12.50 เป็นตัวเลขขนาดเล็กและกลมอย่างสัมพันธ์ ไม่ใช่ว่าการทำธุรกรรมกว่าล้านรายการจากทั้งหมด 13,000 รายการมีจำนวนที่แน่นอน แต่มันจะต้องรวมกับข้อบกพร่องตรรกะอื่น ๆ ที่ก่อให้เกิดการเขียนทับ
ทอม

4
12.50 มีขนาดเล็กและกลม แต่ก็มีจำนวนที่แตกต่างกันอย่างสิ้นเชิงจาก 0x12.50 และถ้ามีใครออกไปจ่าย $ 12.50 สำหรับบุหรี่หนึ่งซองฉันดีใจที่ฉันเลิก

62

จะเกิดอะไรขึ้นเมื่อคุณทำการซื้อด้วยบัตรคือซอฟต์แวร์จะออนไลน์ทันทีเพื่อให้แน่ใจว่าคุณมีเงินทุนเพียงพอสำหรับการซื้อ แต่จะเก็บเงินไว้สำหรับการทำธุรกรรมเท่านั้น ในตอนท้ายของวันทำการซอฟต์แวร์จะรวบรวมธุรกรรมทั้งหมดที่วางไว้ใน 24 ชั่วโมงที่ผ่านมาและส่งไปยังธนาคารที่ได้รับเพื่อดำเนินการ

การส่งไปยังธนาคารเป็นที่รู้จักกันในนามการชำระหนี้และดำเนินการโดยการส่งไฟล์ข้อความธรรมดาในรูปแบบที่เข้มงวดมาก (นี่คือการพัฒนามานานหลายทศวรรษที่ผ่านมาและจำนวนของระบบที่ใช้ในปัจจุบันทำให้ยากต่อการทำให้ทันสมัย)

แต่ละธุรกรรมจะปรากฏในไฟล์เป็นบรรทัดข้อความและส่วนหนึ่งของนั้นคือมูลค่าธุรกรรม ฟิลด์นี้ควรเป็นอักขระตัวเลข 11 ตัว (ศูนย์มีเบาะด้านซ้ายมือ) และจะเก็บค่าในตัวหารร่วมที่ต่ำที่สุด (ในกรณีนี้คือเซนต์) อักขระตัวเลข 11 ตัวเหมาะสำหรับค่าในสกุลเงินใด ๆ

ดูเหมือนว่าตัวประมวลผลการชำระเงินในกรณีนี้ได้ทำการเปลี่ยนแปลงบางอย่างกับซอฟต์แวร์การส่งข้อมูลของพวกเขาและแทนที่การเติมเต็มศูนย์ด้วยการเว้นวรรคอย่างผิดพลาด ค่อนข้างจะเป็นไปได้อย่างไรโดย a) ผู้ให้บริการข) การรับธนาคารและ c) วีซ่าโดยไม่ต้องมารับฉัน มูลค่าสุทธิของไฟล์การชำระบัญชีนั้น (ธุรกรรมที่มีมูลค่าสูง 13,000 รายการ) น่าจะเป็นเรื่องทางดาราศาสตร์และบางทีนั่นอาจเป็นปัจจัยสนับสนุนที่อื่น


15
"ตัวเลข 11 ตัวเหมาะสำหรับค่าในทุกสกุลเงิน" - แล้วดอลลาร์ซิมบับเวล่ะ
quant_dev

6
ใครเป็นผู้ชำระเงินด้วยวีซ่าในซิมบับเว (^_^)
ЯegDwight

นั่นเป็นความคิดเห็นที่ดี แต่ถ้าเป็นซอฟต์แวร์ที่ผิดพลาดก็ไม่มีการพิสูจน์ว่า a) ผู้ให้บริการ b) การรับธนาคารและ c) Visa ทุกคนเห็นมันเลย มันอาจเกิดขึ้น ณ จุดใดก็ได้
Isaac Lubow

20

หากคุณลบศูนย์ต่อท้ายสิ่งนี้จะตรวจสอบว่าเป็นหมายเลขบัตรวีซ่า ฉันเดาว่าพวกเขารูดการ์ดแล้วป้อนหมายเลขด้วยตนเองคิดว่าการรูดล้มเหลว


9
lol - เราเพิ่งประกาศหมายเลขบัตรวีซ่าของเขาหรือไม่ .. เขาชื่ออะไรอีกครั้ง
ian_scho

4
ป.ล. นี่เป็นคำตอบที่น่าจะเป็นไปได้มากที่สุด 200 upvote สำหรับคำตอบแรกนั้นคือโดย geeks :) มีธุรกรรมวีซ่ามากกว่า 50 พันล้านครั้งต่อปี
ian_scho

14
ไม่มันเป็นข้อผิดพลาดไม่ใช่ข้อผิดพลาดในการใช้งาน ลูกค้าประมาณ 13,000 คนได้รับผลกระทบจากข้อผิดพลาดนี้
Guffa

8
โอกาสที่หกไบต์แรกจะเป็นช่องว่างโดยโอกาสที่แท้จริงคืออะไร
Robert Harvey

1
ไม่แน่ .. มีหลายธุรกรรมกับลูกค้าที่แตกต่างกันทั้งหมดเกี่ยวข้องกับจำนวนเงินที่แน่นอน!
Roddy

10

ความลึกลับขั้นสูงสุดยังคงเป็นที่มาของ 12 12 พวกเขาเป็นรหัส ASCII สำหรับ Ctrl + R, P ซึ่งเกิดขึ้นเป็นแป้นพิมพ์ลับที่คุณต้องพิมพ์เพื่อป้อนรหัสตรวจสอบสำหรับ QuickBooks

ลิงค์: จะใส่รหัสตรวจสอบที่ไหน

ค่อนข้างเป็นเรื่องบังเอิญ ฉันสงสัยว่าจะเกิดอะไรขึ้นเมื่อคุณพิมพ์คีย์เหล่านี้ในที่ที่ผิด ...


7

หากคุณเลื่อนซ้ายเป็นตัวแทน 64 บิต 8 บิตไปทางซ้าย (คูณด้วย 256) คุณจะได้รับหมายเลขบัตรเครดิตที่มีรูปแบบที่ดีและตำแหน่งว่าง 3 ตำแหน่งสำหรับหมายเลขพิเศษที่ปลอดภัย 3 อันนี้ (เลขศูนย์ทั้งหมดด้วยเหตุผลบางประการ) มีโอกาสเพียง 1 ใน 10 เท่านั้นที่การสุ่มตัวเลขให้หมายเลข CC ที่มีรูปแบบถูกต้อง

5926 1069 5889 5232 000


6

หากคุณใช้การถอดรหัสเลขฐานสอง (1110101110110100) ของหมายเลข 23148855308184500 คุณจะได้รับ K 鑛ซึ่งเป็นอักขระภาษาจีนสำหรับการขุดและแร่ Kmine อาจหมายถึง "knowledge mine" หรือบางอย่างเช่น kmine Holdings Ltd. บางทีอาจมีความสัมพันธ์ระหว่าง K (เหมืองหรือแร่) กับ Bank of America หรือ Visa?


56
ฉันคิดว่าทุกสิ่งนั้นลึกกว่านี้มาก ถ้าคุณคูณจำนวนนี้ด้วยความสูงของพีระมิดแห่งคูฟูแล้วคูณทุก ๆ สามในปี 2555 คุณจะได้ความยาว 1/666 เท่ากับอัลฟาเซ็นทอรี
serg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.