web-dev-qa-db-ja.com

23,148,855,308,184,500は魔法の数字ですか?

this one などのニュースレポートは、上記の数字がプログラミングのバグとして発生した可能性があることを示しています。

米国の男性が地元のガソリンスタンドに飛び出してタバコのパックを購入しましたが、彼のカードは23,148,855,308,184,500ドルでした。

これは23兆ドル(14兆ポンド)です。これは、米国の国債の数倍です。*

16進数では523DC2E199EBB4で、一見したところそれほどひどくはありません。

どんなプログラミングエラーがこれを引き起こしたのかについて、誰もが考えていますか?

556
Roddy

数値にセントを追加すると、2314885530818450000が得られます。これは16進数で2020 2020 2020 1250です。

パターンが見えますか?最初の6バイトはスペース(16進数20、12進数32)で上書きされています。

1448
Guffa

ちょっと待って;怪しい何かが起こっています。

スペースで埋められた説明は確かに良いように見えますが、(少なくとも部分的には)スペシフィックかもしれません。

VISAは、Visa Buxxプリペイドカードを使用したスナフの影響を受ける「13,000人未満」の顧客がいると述べました。これまでにいくつかのニュースを見つけました。ニューハンプシャー州のジョシュ・ムシンスキー、テネシー州のジェイソン・ブライアン、テキサス州のロン・シール、ベテルのカレン・テイラーの10代の息子、オワトナの10代の少女、エリザベス・ルイス。

問題は、それらすべてが正確に同じ料金を持っていることです:$ 23,148,855,308,184,500.00。問題がスペースパディングである場合、それらのすべてがまったく同じ$ 0x1250($ 46.88)チャージを持っていることはどうですか? 2人はガソリンスタンドでタバコを購入し、2人はレストランで支払い、ルイスは卵と牛乳を購入し、最後の1人はドラッグストアで購入しました。これらのさまざまなアイテムはすべて同じ費用がかかりますか?レストランの請求書に46.88ドルは大丈夫のようですが、タバコのパックには?牛乳と卵‽用

0x1250定数を考慮しないことを除いて、スペースパディングエラーは理にかなっています。なぜそれらすべてが0x2020 2020 2020 1250の代わりに0x2020 2020 2020 2020または最後のWORDの異なる数字で終わったのですか?

うーん、もし13,000の顧客だけが影響を受けたなら、それはどういうわけかその正確な特定の請求がエラーを引き起こしたかもしれない。その場合、それは単なるフィールドエラーではありません。テキストフィールドが64ビット整数として解釈される場合は、他の量が原因ではないため、13,000未満だけでなく、すべての人に影響します。それでも、同じ週に13,000人がたまたま同じ金額を請求したのはどうしてですか?

彼らはそれが「一時的なプログラミングエラー」であると言います、そして、それは多分かもしれません、しかし、それはハッキングのものかもしれませんか?その場合、それはおそらくマジックナンバーでしょう。実際、両方の組み合わせである可能性があります。ハッカーの中には、0x1250の自動課金を行うものがあり、スペースパディングエラーと組み合わされて、一方または両方のエラーが検出されます。

Register は、回答が実際にはパディングフィールドエラーであると考えますが、コメントの1つが最も近い$ 100に丸められる可能性があると述べているにもかかわらず銀行と銀行ソフトウェアは明確に精度を確保するために長さを明確にしています).

(同様の以前のエラーの report もあります。)


ジェイソンブライアントの法案:

Jason Bryant’s bill

エリザベスルイスの法案:

Elizabeth Lewis’s bill

ロンシールの法案:

Ron Seale’s bill

ジョシュ・ムシンスキーの法案:

Josh Muszynski’s bill

239
Synetech

カードで購入すると、購入に十分な資金があることを確認するためにソフトウェアがすぐにオンラインになりますが、トランザクションの資金のみを保留します。営業日の終わりに、ソフトウェアは最後の24時間に行われたすべてのトランザクションを収集し、処理のために取得銀行に送信します。

銀行への提出は決済と呼ばれ、非常に厳格な形式のプレーンテキストファイルを送信することによって行われます。 (これはすべて数十年前に開発されたものであり、現在それを使用しているシステムの数により近代化が難しくなっています)

各トランザクションはテキスト行としてファイルに表示され、その一部はトランザクション値です。このフィールドは11桁の数字(左側にゼロが埋め込まれる)でなければならず、常に最小公分母(この場合はセント)の値を保持します。 11桁の数字は、どの通貨の値にも対応します。

この場合の支払いプロセッサは、送信ソフトウェアにいくつかの変更を加え、誤ってゼロパディングをスペースパディングに置き換えたようです。これは、a)サービスプロバイダー、b)銀行の取得、c)引き取られずにビザがどのように取得したかが私を逃れます。その決済ファイル(13,000件の高額取引)の正味価値は天文学的なものでしたが、おそらくそれもどこかで貢献した要因でした。

62
PaulG

末尾のゼロを削除すると、VISAカード番号として検証されます。私は、スワイプが失敗したと考えて、カードをスワイプしてから手動で番号を入力したと思います。

20
Daniel

究極の謎は、まだ12 50がどこから来ているのかです。これらは、Ctrl + R、PのASCIIコードです。QuickBooksの検証コードを入力するために入力する必要がある秘密のキーストロークです。

リンク: 検証コードを入力する場所

まったくの偶然。これらのキーを間違った場所に入力するとどうなりますか...

11
Hans Passant

左に64ビット表現を8ビット左にシフトする場合(256を掛ける)正しい形式のクレジットカード番号と、この3つの安全な追加番号(何らかの理由ですべてゼロ)の3つの空の位置を取得します。乱数が正しいCC番号を与える可能性は10分の1しかありません。

5926 1069 5889 5232 000

7
user215054

数値23148855308184500のバイナリ等量(1110101110110100)デコードを使用すると、マイニングと鉱石のマンダリン文字であるK andが得られます。 Kmineは「知識鉱山」、またはkmine Holdings Ltdのようなものを意味します。おそらく、K(鉱山または鉱石)とBank of AmericaまたはVisaの間に相関関係があるのでしょうか。

6
bepark2000