Born to be a Loser

負け犬の遠吠え

【H2TestW】MicroSDカードの模造品を見抜く【CrystalDiskMark】

SAMSUNGやキオクシアなど各社からMicroSDカードが販売されていますが、一方でこうした大手の製品を模造した粗悪品も流通しているのが現状です。

SAMSUNGSamsung Magicianというソフトウェアで真贋判定を行うことができますが、他社はこうしたツールを提供していないようです。

模造品は正規のパッケージや印刷を似せているものの、多くの場合「容量が少なく」「読み書き速度が遅い」粗悪品です。

したがって、購入したMicroSDカードの実際のスペックを計測して、メーカー公称値に近い値かを確認することで真贋判定を行います。

この記事ではH2TestWを用いた真の容量計測と、CrystalDiskMarkを用いた真の読み書き速度測定をご紹介します。

H2TestWで容量偽装を見抜く

H2TestWはドイツ製のWindowsフリーソフトです。

MicroSDカードにテスト用データを書き込み、そのデータを読み取った際に壊れていなければ、その領域は正常と見なします。

これをMicroSDの全領域に対して行うことで、認識している領域すべてが読み書き正常なら容量偽装なしと判断できます。

一方、容量が偽装されていれば偽装領域におけるテストデータの読み書きでエラーが発生するため、容量偽装ありと判断できます。

導入

正規のダウンロードリンク(図では広告は表示されていない)

H2TestWはインストール不要なポータブルソフトウェアです。

H2TestW- Downloadにアクセスし、図のボタンからZIPファイルをダウンロードすることができます。

なお、昨今はダウンロードボタンを偽装する悪質な広告も増えてきています。

悪質な広告はリンク先もフィッシングサイトやマルウェア配布サイトなどである可能性が高いため、図を参考に正規のダウンロードボタンかをしっかりと確認してください。

h2testw_1.4.zipの中身

無事にZIPファイル(h2testw_1.4.zipなど、数値はそのときのバージョンに依る)をダウンロードできたら、適当な場所に解凍します。

これでH2TestWの導入は完了です。

readme.txtが同梱されているので、英語ですが機械翻訳などを使って目を通しておきましょう。

参考までにGemini翻訳(クリックで展開)

H2testw -- by Harald Bögeholz / c't Magazin für Computertechnik
USBスティックおよびその他のメディア用データ整合性テスト
Version 1.4, Copyright (C) 2008 Heise Zeitschriften Verlag GmbH & Co. KG
H2testw は、USBスティックの様々な種類のエラーをテストするために開発されました。また、メモリーカード、内蔵および外蔵ハードドライブ、さらにはネットワークボリュームなど、他のあらゆるストレージメディアにも使用できます。

実行ファイル H2testw.exe はインストール不要で、直接実行できます。このソフトは Windows XP および Vista 向けに開発されました。Windows 2000 でも動作するはずですが、テストは XP と Vista でのみ行われています。Windows 9x/ME はサポートされていません。これらのオペレーティングシステムでは、古いコマンドラインプログラムである H2test を使用できます。

H2testw の機能は非常にシンプルです。選択したターゲットディレクトリをテストデータで満たし、それを読み戻して検証します。

H2testw は、既存のデータを上書きしたり消去したりすることはありません。ローレベル(低層)なトリックは行わないため、管理者権限は必要ありません。ハードウェアが正常に動作していれば、H2testw が既存のデータを傷つけることはありません。

しかし、もしハードウェアに欠陥がある場合、H2testw はその欠陥を見つけるように設計されているため、副作用として既存のファイルを損傷させる可能性があります。したがって、USBスティックやその他のストレージメディアに欠陥があると疑われる場合は、中身を空にしてから H2testw で完全にテストしてください。 空のメディアのみが、H2testw で完全にテスト可能です。結果を再現できるようにするために、メディアをフォーマット(クイックフォーマットで十分です)してからテストすることをお勧めします。

H2testw は、選択した保存先に最大 1 GByte のファイルを書き込み、1.h2w、2.h2w、3.h2w と順に名前を付けます。ターゲットディレクトリに既にこれらのファイルセットが含まれている場合、H2testw はそれらの検証を提案します。他に *.h2w という名前のファイルがある場合、動作を拒否します。その場合は、すべての *.h2w ファイルを消去して Refresh ボタンを押してください。

終了後、ソフトウェアはテストファイルをメディアに残します。必要に応じてそれらを消去することも、あるいは(例えば USBスティックであれば別の PC などで)再度検証することもできます。

「endless verify」チェックボックスは、その名の通りの動作をします。エラーが見つかった場合にのみ停止する無限ループの検証ルーチンを実行します。これは、散発的なデータ転送エラーを見つけるための長時間テストとしての使用を想定しています。

残り時間の見積もりに関する注意:正常なフラッシュメモリの場合、データ転送レートが一定であるため、見積もりはかなり正確になるはずです。欠陥のあるメディアでは、転送レートが大幅に低下し、見積もり時間が減る代わりに増えていく現象が見られました。ハードドライブは外周よりも内周のトラックの方が遅いため、ハードドライブをテストする場合、見積もりは決して正確にはなりません。

H2testw に関する質問や提案がある場合は、Harald Bögeholz hwb@heise.de までメールをお送りください(ドイツ語または英語)。

エラーが発生した場合の対処法
検証中に H2testw がエラーを検出した場合、メディアが書き込まれた通りのデータを正確に返さなかったことを意味します。メディアに欠陥がある可能性がありますが、データ破損には他の原因も考えられます。エラーが発生した場合は、テストを繰り返し、以下のことを試してください。

テストの直前にメディアをフォーマットする

USB 延長コードを使用しない

USB または FireWire デバイスをテストする場合、別のポートを試す(PC 背面の USB ポートの方が前面のものより優れている場合があります)

外付けドライブの場合は、可能であれば別のケーブルを試す

エラーメッセージ
検証プロセスでエラーが検出されると、いくつかの統計情報が出力され、以下の異なるエラータイプに分類されます。

アドレス指定エラーにより、他によって上書きされたセクター(上記参照)

わずかに変更されたセクター(1 セクターあたり 8 ビット未満の相違)

完全に破損したセクター

上書きされたセクターがある場合、H2testw は上書きされた領域にどれだけの本当のメモリが存在するかを突き止めようとし、その量を「aliased memory」として出力します(これには保証はありません)。

最後に、テストデータ全体に対する最初のエラーのオフセットと、そのオフセットにおける期待値および検出値を出力します。

ヒント:エラーメッセージはコピー&ペーストして、メールなどで送信することができます。

典型的なエラー
H2testw のテストデータは、特定の典型的なエラーを識別できるように構成されています。以下の 3 つのタイプがあります。

アドレス指定エラー:セクターを書き込む際、その内容が正しいアドレスに書き込まれず、別のセクターを上書きしてしまうもの。特定の細工された USB スティックでこのエラーが見られました。また、BIOS や OS が 48ビットアドレス指定に対応していないマシンで 128 GByte を超えるハードドライブを使用した場合にも発生します。この場合、すべてのアドレスは 128 GByte の剰余(modulo)として扱われます。128 GByte の境界を越えると、ドライブの冒頭にあるデータを上書きしてしまいます。

データが全く保存されない:欠陥のある USB スティックで遭遇しました。書き込まれたデータの代わりに、読み出し時に 1 または 0 のみを返すセクターがあります。これは、存在しないメモリにアクセスした際の典型的な動作です。

数ビットのデータのみが変化する:PC とストレージメディア間の接続に不備がある場合に発生する可能性があります。

テストデータに関する技術的詳細
H2testw は 1 メガバイト単位の塊でデータを書き込みます。そのため、メディアを完全に満たすように選択しても、最大で 1 メガバイトの空き容量が残ることになります。厳密には正しくありませんが、H2testw は 1 MByte = 1024 KByte = 1,048,576 Byte とする Windows の慣例を使用しています。FAT ファイルシステムの 4 GByte 制限の問題を避けるため、H2testw は 1 ギガバイト(1024 MByte)ごとに新しいデータファイルを開始します。

データファイル内では、各 512 バイトのセクターは、データセット全体に対するオフセットを含む 64 ビットワード(8 バイト)で始まります。これはリトルエンディアン形式(最下位バイトが先)で格納されます。

したがって、ファイル 1.h2w は以下の内容で始まります。

00 00 00 00 00 00 00 00

次のセクターは

00 02 00 00 00 00 00 00

その次は

00 04 00 00 00 00 00 00

と続きます。ファイル 2.h2w は以下の内容で始まります。

00 00 00 40 00 00 00 00

(オフセット 1 GByte = 0x40000000)。

各セクターの残りの部分は、オフセットワードをシード値とした擬似乱数列で満たされます。

下準備

チェック対象のMicroSDを空にしましょう。

前述のようにH2TestWは、認識する全領域への読み書きを行うことで真に利用可能な領域を計測します。

したがって、対象のMicroSDカードにはデータが入っていない空の状態から計測を開始することが望ましいです。

もし必要なデータを既に書き込んでいる場合はどこかに退避させておきましょう。

また、データは入っているものの不要なデータしかないのであれば、フォーマットしてしまうのが手っ取り早いでしょう。

真の容量を計測

言語表示を英語に

先ほど解凍したフォルダの中にあるh2testw.exeを実行しましょう。

ドイツ語だと分かりづらいため、左上のラジオボタンでEnglishを選択します。

計測対象のMicroSDカードを指定する
次に画面右側のSelect Targetボタンを押して計測対象のMicroSDカードを指定します。

無事に対象が指定できたら、画面下部の枠内ラジオボタンall available spaceを選択します。

最後に画面左下のWrite + Verifyボタンを押せば真の容量の計測が始まります。

計測の様子 図はテストデータの書き込み中

計測は、全領域へのデータ書き込みフェーズ(Write)と、書き込んだデータが正常に読み込めるかの検証フェーズ(Verify)から成ります。

容量の大きなMicroSDカードであればどちらもかなりの時間がかかるため、寝る前などに開始しておくと良いでしょう。

参考までに、キオクシア EXCERIA KLMEA512Gは容量512GB、公称最大読み出し速度100MB/sですが、一連の検証に約5時間かかりました。

PCとMicroSDカードを接続するインターフェースによる影響もありますが、時間はかかるものと考えた方が無難です。

計測が終了すると右下のボタンがOKに変わる

計測が完了すると、進捗を表示するウィンドウ右下のボタンがOKに変わります。

この状態になったら同ウィンドウに書かれたメッセージを確認してください。

Test finished without errors.の表記があれば、認識した全領域において読み書きが正常に行えたことを示しています。

すなわち、容量偽装されていないと判断できます。

一方、エラーに関する記述がある場合、特定の領域において読み書きが正常に行えなかったことを示しているため、容量偽装の疑いがあります。

偽装されていた場合にどうすべきなのかは私も詳しくないのですが、まずは物証を携えて購入したプラットフォームに問い合わせるのが妥当でしょうか。

後処理

無事に容量偽装の疑いが晴れたら、次は読み書きの速度計測を行います。

ただしその前に、MicroSDカードをフォーマットして中身を空にしておきましょう。

というのも、実際にMicroSDカードを見ていただければ分かりますが、H2TestWが検証用に書き込んだテストデータで全容量が埋め尽くされています。

このまま速度計測を行うこともできますが、このデータを残しておく理由もないのでこのタイミングで綺麗にしてしまいましょう。

なお、余談ですがMicroSDカードをAndroidで利用する予定があるならフォーマット形式はexFATにすることをおすすめします。

CrystalDiskMarkで読み書き速度を測る

容量偽装の疑いが晴れ中身も綺麗になったところで、次に読み書きの速度を測定しましょう。

読み書き計測には様々なツールがあるため、既にお手持ちのものがあればそちらをご利用ください。

この記事ではそうしたツールをお持ちでない、あるいはご存じでない方向けにCrystalDiskMarkというツールを紹介します。

導入

3つのEditionのダウンロード

ダウンロード - Crystal Dew World [ja]からお好みのEditionをダウンロードします。

なお、開発支援版インストーラーは広告が内蔵されたバージョンのようで、恐らく広告収入が開発者に入るものと思われます。

図では広告のない通常版のダウンロードリンクを示しています。

Editionの違い

CrystalDiskMarkには3つのEditionがあります。

機能的にはどのEditionも一緒ですが、Shizuku EditionとAoi Editionは画面にかわいいキャラが表示されるEditionです。

お好みのものをダウンロードしてください。

CrystalDiskMark9_0_1Shizuku.zipの中身

無事にZIPファイル(CrystalDiskMark9_0_1Shizuku.zipなど、ファイル名はEditionとバージョンに依る)をダウンロードできたら、適当な場所に解凍します。

これでCrystalDiskMarkの導入は完了です。

実速度の計測

先ほど解凍したフォルダの中にあるEXEファイルを実行しましょう。

ただし、実行環境により起動すべきEXEファイルが異なります。

  • 32: 32bit環境用(x86
  • 64: 64bit環境用(x64)
  • A64: 64bit環境用(ARM64)

恐らく殆どの方はx64環境だと思うので名前に64と入っているものを起動すれば良いですが、気になる方はご自身の環境がどれに該当するかを調べてみてください。

(詳細な手順は割愛しますが「OS 環境 ビット 調べ方」などと検索すればやり方はすぐ見つかります)

MicroSDカードを指定して計測開始

CrystalDiskMarkを起動したら、画面上部のプルダウンメニューから計測対象のMicroSDカードを指定してください。

そうして左上のAllボタンを押せば、真の読み書き速度の計測が始まります。

KLMEA512Gの結果 各種レビューなどと同等の数値であり正規品と判断
しばらく待つと計測が完了するため、これが公称値と大きく乖離していないかを確認します。

MicroSDカードの型番で検索すれば計測結果を掲載しているブログなどがヒットすることもありますし、Amazonや価格コムなどのレビューにも情報が載っていることもあります。

そうした情報も参考にしつつ、無事に妥当な速度が出ていることが確認できれば容量も速度も偽装されていない正規品と判断できます。

注意点

MicroSDカードが高速なものである場合、それをPCに接続するインターフェースも同等以上の速度で読み書きが可能かは確認しましょう。

古いカードリーダーや白色のUSB-A端子を利用している場合、インターフェースがボトルネックとなり遅く見えている可能性があります。

また、高速なMicroSDカードほど熱を持ちやすいです。

カードが計測中に過度に発熱している場合は、熱で壊れないようにする保護機構が働き、結果速度が落ちていることも考えられます。

まとめ

MicroSDカードの粗悪な模造品を見抜く方法をご紹介しました。

容量偽装に対して、H2TestWを用いた全領域への読み書きテストで検証を行いました。

速度偽装に対して、CrystalDiskMarkを用いた速度テストで検証を行いました。

データストレージはそれなりに長く使い続けることが多いかと思いますので、最初に正規品という安心感が得られるとうれしいですね。