像这样的新闻报道表明,上述数字可能是由于编程错误而出现的。
一个美国人突然冒了出来 到他当地的加油站去买 一包烟,却发现是他的 信用卡收费23,148,855,308,184,500美元。 这是23万亿美元(14英镑) 千万亿)——是美国的很多倍 国家债务。*
在十六进制中,它是$523DC2E199EBB4,乍一看并不是很有趣。
有人知道是什么编程错误导致的吗?
像这样的新闻报道表明,上述数字可能是由于编程错误而出现的。
一个美国人突然冒了出来 到他当地的加油站去买 一包烟,却发现是他的 信用卡收费23,148,855,308,184,500美元。 这是23万亿美元(14英镑) 千万亿)——是美国的很多倍 国家债务。*
在十六进制中,它是$523DC2E199EBB4,乍一看并不是很有趣。
有人知道是什么编程错误导致的吗?
当前回答
如果左移64位表示,左移8位(乘以256) 您将得到一个格式良好的信用卡号码和这3个安全的额外号码的3个空位置(出于某种原因,全部为零)。只有1 / 10的机会,随机数给出一个良好的CC号码。
5926 1069 5889 5232 000
其他回答
当你刷卡购物时,软件会立即上线,以确保你有足够的资金购买,但只是暂停交易资金。在工作日结束时,软件收集过去24小时内放置的所有交易,并将它们提交给收单银行进行处理。
向银行提交的文件被称为结算,它通过发送一个非常严格格式的纯文本文件来完成。(这都是几十年前开发的,现在使用它的系统数量使其难以现代化)
每个交易在文件中显示为一行文本,其中一部分是交易值。该字段应该是11个数字字符(左侧填充0),并且始终保持最小公分母的值(在本例中为分)。11个数字字符适合任何货币的数值。
看起来在这种情况下,支付处理程序对他们的提交软件做了一些更改,并错误地将零填充替换为空格填充。我不知道这是如何通过a)服务提供商,b)收购银行和c) Visa而不被接收的。该结算文件的净值(1.3万笔高价值交易)将是一个天文数字,也许这也是某个地方的一个贡献因素。
将美分加到数字上,得到2314885530818450000,十六进制是2020 2020 2020 1250。
你明白其中的规律了吗?前六个字节已被空格覆盖(十六进制20,dec 32)。
最终的谜团仍然是1250是从哪里来的。它们是Ctrl+R, p的ASCII码,这恰好是你输入QuickBooks验证码时必须键入的秘密击键。
链接:在这里输入验证码
真是巧合。我想知道当你把这些键键入错误的位置时会发生什么……
等一下;有些可疑的事情正在发生。
虽然这个充满空格的解释看起来很好,但它可能(至少部分)似是而非。
VISA表示,“不到1.3万名”客户受到VISA Buxx预付卡故障的影响。到目前为止,我已经找到了几条新闻。新罕布什尔州的Josh Muszynski,田纳西州的Jason Bryan,德克萨斯州的Ron Seale,贝瑟尔的Karen Taylor十几岁的儿子,以及奥瓦托纳的一个十几岁的女孩Elizabeth Lewis。
问题是,他们都有完全相同的费用:$23,148,855,308,184,500.00。如果问题出在空格填充上,那么为什么它们都有相同的0x1250美元(46.88美元)费用呢?其中两个人在加油站买了烟,另外两个人在餐馆付钱,刘易斯买了鸡蛋和牛奶,最后一个是在药店。所有这些不同的物品的价格都一样吗?46.88美元的餐厅账单似乎还可以,但一包香烟呢?用于牛奶和鸡蛋
空格填充错误是有意义的,只是它没有解释0x1250常量。为什么它们最终都是0x2020 2020 2020 1250,而不是0x2020 2020 2020 2020或最后一个单词中的不同数字?
嗯,如果只有1.3万名客户受到影响,可能是具体的费用以某种方式引发了这个错误。在这种情况下,它不仅仅是一个字段错误。如果只是文本字段被解释为64位整数,那么为什么其他数量没有引起它,从而影响到每个人,而不仅仅是<13,000。不过,为什么1.3万人恰好在同一周内消费了同样的金额呢?
他们说这是“暂时的编程错误”,很可能是,但会是黑客入侵吗?在这种情况下,它可能是一个神奇的数字。事实上,这可能是两者的结合:一些黑客放置了0x1250自动冲锋,与空格填充错误结合在一起,导致一个或两个错误被检测到。
The Register认为答案确实是填充域错误,但没有详细说明为什么它们都是一样的,尽管其中一条评论提到这个数字可能被四舍五入到最接近的100美元(不太可能,因为银行和银行软件明确地保证了精度)。
(此前也有一份类似的错误报告。)
杰森·布莱恩特的账单:
伊丽莎白·刘易斯的账单:
Ron Seale的账单:
Josh Muszynski的账单:
如果左移64位表示,左移8位(乘以256) 您将得到一个格式良好的信用卡号码和这3个安全的额外号码的3个空位置(出于某种原因,全部为零)。只有1 / 10的机会,随机数给出一个良好的CC号码。
5926 1069 5889 5232 000