Является ли 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).

Guffa
источник
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 (маловероятно , так как банки и банковского программное обеспечение явно идет длины, чтобы обеспечить точность).

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


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

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

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

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

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

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

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

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

Synetech
источник
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 транзакций с высокой стоимостью) была бы астрономической, и, возможно, это также способствовало чему-то.

PaulG
источник
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