诸如此类的新闻报道表明,上述数字可能是作为编程错误出现的。
美国一名男子突然到他当地的加油站买一包香烟 - 却发现他的卡被收取了 23,148,855,308,184,500 美元。
那是 23 万亿美元(14 万亿英镑)——是美国国债的许多倍。*
在十六进制中,它是 $523DC2E199EBB4,乍一看似乎并不十分有趣。
任何人对什么编程错误会导致这种情况有任何想法?
诸如此类的新闻报道表明,上述数字可能是作为编程错误出现的。
美国一名男子突然到他当地的加油站买一包香烟 - 却发现他的卡被收取了 23,148,855,308,184,500 美元。
那是 23 万亿美元(14 万亿英镑)——是美国国债的许多倍。*
在十六进制中,它是 $523DC2E199EBB4,乍一看似乎并不十分有趣。
任何人对什么编程错误会导致这种情况有任何想法?
将美分加到数字上,得到 2314885530818450000,十六进制为 2020 2020 2020 1250。
你看到图案了吗?前六个字节已被空格覆盖(十六进制 20,十进制 32)。
稍等一下; 发生了一些可疑的事情。
虽然空格填充的解释看起来确实不错,但它可能(至少部分)似是而非。
VISA 表示,有“不到 13,000 名”客户受到 Visa Buxx 预付卡的混乱影响。到目前为止,我已经找到了几个新闻。新罕布什尔州的乔什·穆辛斯基,田纳西州的杰森·布莱恩,德克萨斯州的罗恩·西尔,贝塞尔的凯伦·泰勒十几岁的儿子,以及奥瓦通纳的十几岁的女孩伊丽莎白·刘易斯。
问题是所有这些费用都完全相同:23,148,855,308,184,500.00 美元。如果问题出在空间填充上,那么为什么所有这些都具有完全相同的 0x1250 美元(46.88 美元)费用?其中两人在加油站买了烟,另外两人在餐馆付了钱,刘易斯买了鸡蛋和牛奶,最后一个是在药店买的。所有这些不同的项目的成本是否相同?46.88 美元的餐馆账单似乎还可以,但一包香烟呢?牛奶和鸡蛋‽</p>
空格填充错误是有意义的,除了它不考虑 0x1250 常量。为什么最后一个 WORD 中的所有数字都以0x2020 2020 2020 1250
而不是0x2020 2020 2020 2020
或不同的数字结尾?
嗯,如果只有 13,000 名客户受到影响,那么确切的具体费用可能会以某种方式触发错误。在这种情况下,它不仅仅是一个字段错误。如果只是文本字段被解释为 64 位整数,那么为什么其他数量没有引起它,从而影响到每个人,而不仅仅是 <13,000。不过,为什么13,000人恰好在同一周内收取完全相同的费用?
他们说这是一个“临时编程错误”,很可能是这样,但它会是黑客行为吗?在那种情况下,它可能是一个幻数。事实上,它可能是两者的结合:一些黑客放置了 0x1250 自动收费,与空格填充错误相结合,导致检测到一个或两个错误。
The Register认为答案确实是填充字段错误,但没有详细说明为什么它们都相同,尽管其中一条评论提到这个数字可能四舍五入到最接近的 100 美元(这不太可能,因为银行和银行软件明确地去长度以确保精度)。
(还有一个类似的早期错误的报告。)
杰森布莱恩特的账单:
伊丽莎白刘易斯的法案:
罗恩·西尔的账单:
Josh Muszynski 的账单:
当您通过卡购物时,软件会立即上线以确保您有足够的资金进行购买,但只会保留用于交易的资金。在工作日结束时,软件会收集过去 24 小时内的所有交易,并将其提交给收单银行进行处理。
提交给银行的过程称为结算,它通过以非常严格的格式发送纯文本文件来完成。(这都是几十年前开发的,现在使用它的系统数量使其难以现代化)
每个交易在文件中显示为一行文本,其中一部分是交易价值。此字段应为 11 个数字字符(在左侧填充零),并且将始终保存最小公分母中的值(在本例中为美分)。11 个数字字符可以很好地满足任何货币的值。
看起来这种情况下的支付处理器对其提交软件进行了一些更改,并错误地将零填充替换为空格填充。a) 服务提供商、b) 收单银行和 c) Visa 是如何在没有被取走的情况下获得的,这让我无法理解。该结算文件的净值(13,000 笔高额交易)将是天文数字,也许这在某个地方也是一个促成因素。
如果您删除尾随零,这将验证为 VISA 卡号。我的猜测是他们刷卡然后手动输入号码,认为刷卡失败了。
最终的谜团仍然是 12 50 的来源。它们是 Ctrl+R、P 的 ASCII 代码。这恰好是您必须输入的密码才能输入 QuickBooks 的验证代码。
链接:在哪里输入验证码
真是巧合。我想知道当您在错误的位置键入这些键时会发生什么...
如果将 64 位表示左移 8 位(乘以 256),您将得到一个格式正确的信用卡号和 3 个空位,这 3 个安全的额外数字(由于某种原因全为零)。随机数给出格式良好的 CC 编号的几率只有十分之一。
5926 1069 5889 5232 000
如果你使用数字 23148855308184500 的二进制等值 (1110101110110100) 解码,你会得到 K 矿,这是采矿和矿石的普通话字符。Kmine 可能意味着“知识矿山”或类似 kmine Holdings Ltd. 的意思。也许 K(矿山或矿石)与美国银行或 Visa 之间存在相关性?