Является ли 23,148,855,308,184,500 магическим числом или явным шансом?


556

Новостные сообщения, такие как этот, указывают на то, что указанное число могло возникнуть как программная ошибка.

Мужчина в Соединенных Штатах выскочил на свою местную автозаправочную станцию, чтобы купить пачку сигарет - только для того, чтобы узнать, что с его карты взимается 23 148 855 308 184 500 долларов.

Это 23 миллиарда долларов (14 миллиардов фунтов) - во много раз больше государственного долга США. *

В гексе это $ 523DC2E199EBB4, что на первый взгляд кажется не очень интересным.

Кто-нибудь есть какие-либо мысли о том, что ошибка программирования может вызвать это?


31
скучающий заправщик?
— txwikinger

217
Что ж, Обама действительно сказал, что у него есть новый план стимулирования в работах, чтобы ослабить дефицит ...
— Кристофер Кляйн

25
Что за кредитная карта у этого парня, та транзакция прошла и вызвала всего лишь 15 долларов в качестве платы за овердрафт ... АЗС также, вероятно, недовольна 2% комиссией за обработку кредитной карты.
— Ник Бастин

42
Пасхальное яйцо от программиста, которого скоро уволят;)
— Мэтью Уайтед

28
Может быть, это какая-то новая кампания против курения. («Посмотрите, сколько действительно стоит курение!» :-)
— Slapout

Ответы:


1447

Добавьте центы к числу, и вы получите 2314885530818450000, что в шестнадцатеричном формате 2020 2020 2020 1250.

Вы видите образец? Первые шесть байтов были перезаписаны пробелами (гекс 20, декабрь 32).


56
Еще раз доказывая, что пробелы не безобидны.
— Эрик

547
если это правда, вы только что выиграли приз за «лучший отладчик года» :)
— Стефано Борини

82
Виза может понадобиться ему больше, чем НАСА.
— Брэндон

61
Похоже, он купил коробку, а не пачку - гекс 1250 = 4688 декабря или £ 46,88
— Джон Раш

157
ботаники: узнайте марку и количество сигарет, которые курит человек, отладив неправильный отчет по кредитной карте;)
— Стефано Борини

239

Держать на секунду; происходит что-то подозрительное

Хотя объяснение с пробелами, конечно, кажется хорошим, оно может быть (хотя бы частично) показным.

VISA сообщила, что snafu «предоплаченные карты Visa Buxx» затронули «менее 13 000» клиентов. Я нашел новости о нескольких до сих пор. Джош Мушински в Нью-Гемпшире, Джейсон Брайан в Теннесси, Рон Сил в Техасе, сын-подросток Карен Тейлор в Вефиле и девочка-подросток Элизабет Льюис в Оватонне.

Дело в том, что все они имеют одинаковую плату : 23 148 855 308 184 500,00 долларов. Если проблема заключалась в пробелах, то как получилось, что все они имели одинаковый заряд в размере 0x1250 (46,88 долларов)? Двое из них купили сигареты на заправках, еще двое заплатили в ресторанах, Льюис купил яйца и молоко, последний в аптеке. Все эти разные вещи стоят одинаково? 46,88 долларов за счет в ресторане кажется нормальным, но за пачку сигарет? для молока и яиц‽

Ошибка заполнения пробела имеет смысл, за исключением того, что она не учитывает константу 0x1250. Почему в последнем СЛОВЕ все они оказались 0x2020 2020 2020 1250вместо 0x2020 2020 2020 2020или с разными номерами?

Хм, если только 13 000 клиентов были затронуты, возможно, именно эта точная, специфическая плата вызвала ошибку. В этом случае это больше, чем просто ошибка поля. Если это было просто текстовое поле, интерпретируемое как 64-разрядное целое число, то почему другие суммы не вызвали его, что повлияло на всех, а не на <13 000 И все же, как получилось, что 13 000 человек могли взять такую ​​же сумму за ту же неделю?

Они говорят, что это «временная ошибка программирования», и вполне может быть, но может ли это быть взломом? В этом случае, вероятно, это будет магическое число. Фактически, это может быть комбинация обоих: некоторые хакеры помещают автоматический заряд 0x1250, который был объединен с ошибкой пробела, вызывая обнаружение одной или обеих ошибок.

Регистр думает , что ответ действительно ошибка проложенного поля, но не расширяется, почему они все-таки, хотя один из комментариев упоминает число , возможно , округляется до ближайшего $ 100 (маловероятно , так как банки и банковского программное обеспечение явно идет длины, чтобы обеспечить точность).

(Есть также сообщение о подобной, более ранней ошибке.)


Счет Джейсона Брайанта:

Счет Джейсона Брайанта

Счет Элизабет Льюис:

Счет Элизабет Льюис

Счет Рона Сила:

Счет Рона Сила

Законопроект Джоша Мушинского:

Законопроект Джоша Мушинского


8
Возможно, число hex 1250 = dec 4688 является минимумом, чтобы вызвать какие-то дополнительные методы проверки на мошенничество. Если оно точно равно этому, в коде есть ошибка?
— Пит

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 числовых символов хорошо подходят для значений в любой валюте.

Похоже, что обработчик платежей в этом случае внес некоторые изменения в свое программное обеспечение для представления и ошибочно заменил заполнение нулями пробелом. Как это получается у а) провайдера услуг, б) банка-эквайера и в) без визы меня ускользает. Чистая стоимость этого расчетного файла (13 000 транзакций с высокой стоимостью) была бы астрономической, и, возможно, это также способствовало чему-то.


15
«11 числовых символов хорошо подходят для значений в любой валюте.» - как насчет зимбабвийских долларов?
— quant_dev

6
Кто оплачивает VISA в Зимбабве? (^_^)
— ЯegDwight

Это хороший комментарий. Но если это был программный сбой, то нет никаких доказательств того, что а) поставщик услуг, б) банк-эквайер и в) Visa все это видели. Это могло возникнуть в любой момент.
— Исаак Любов

20

Если вы удалите конечный ноль, это будет считаться номером карты VISA. Я предполагаю, что они сильно ударили карту, а затем вручную ввели номер, думая, что смахивание не удалось.


9
lol - Мы только что опубликовали его номер карты Visa? .. Как его снова звали?
— ian_scho

4
ps ЭТО - наиболее вероятный ответ, более 200 голосов за первый ответ - гики :). В год совершается около 50 миллиардов транзакций.
— ian_scho

14
Нет, это была ошибка, а не ошибка использования. Около 13000 клиентов были затронуты этой ошибкой.
— Guffa

8
Какова вероятность того, что первые шесть байтов будут пробелами по чистой случайности?
— Роберт Харви

1
Маловероятно .. было несколько транзакций с разными клиентами, все с одинаковой суммой!
— Родди

10

Окончательная загадка - все еще, откуда 12 50 прибывает. Это коды ASCII для Ctrl + R, P. Это секретные нажатия клавиш, которые нужно вводить, чтобы ввести код подтверждения для QuickBooks.

Ссылка: где ввести код проверки

Совпадение Интересно, что происходит, когда вы вводите эти ключи не в том месте ...


7

Если вы сдвинете влево 64-битное представление на 8 бит влево (умножьте на 256), вы получите правильно сформированный номер кредитной карты и 3 пустые позиции для этого 3 безопасных дополнительных номера (все нули по какой-то причине). Есть только 1 из 10 шансов, что случайное число дает правильно сформированный номер CC.

5926 1069 5889 5232 000


6

Если вы используете бинарный декодер (1110101110110100) с номером 23148855308184500, вы получите K 鑛, который является символом мандарина для добычи полезных ископаемых и руды. Kmine может означать «знание мое», или что-то вроде kmine Holdings Ltd. Возможно, существует связь между K (шахта или руда) и Банком Америки или Visa?


56
Я думаю, что все гораздо глубже, чем это. Если вы умножите это число на высоту Пирамиды Хуфу, а затем умножите каждое третье число к 2012 году, то вы получите ровно 1/666 длины до Альфы Центавра.
— Serg
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.