USBサムドライブの実際のサイズを確認する


28

私は最近、偽物のMicroSDカードとUSBサムドライブについて多くの記事を読みました。最近、SanDisk USBドライブ(128 GBを請求)を購入し、そのサイズをテストしたいと思います。ebayなどを介して購入するものではありませんが、実際に使用する前に実際のサイズをテストしたいです。

その上にあるものをコピーして、コピーして、ファイルに問題がないかどうかを確認できます。ハッシュなどで自動化することもできます。しかし、より正確な解決策があることを望みました。私は、Windowsの場合、H2testwがそのトリックを行うと読みました。Ubuntu / Linuxでこれをテストする簡単な方法はありますか?特殊な、うまく機能するツールでしょうか?

更新:明確にするために、アイデアは、Linuxシステムがコントローラーによって通知されるサイズが正しいことを確認することです(したがって、データは失われません)。127.3 GBではなく128 GBを取得するかどうかを確認したいわけではありません。書き込んだすべてのデータが再び読み取り可能になるかどうかをテストしたい。残念ながら、英語の技術サイトでこれに関する情報をいくつかしか見つけることができません。しかし、良いドイツの情報源があります。私は実際にそのようなアプリケーションを探していますが、Ubuntu / Linuxの場合:https : //www.raymond.cc/blog/test-and-detect-fake-or-counterfeit-usb-flash-drives-bought-from -ebay-with-h2testw /

Update2:いくつかのソースを英語で集めようとしました。時間がないため、すべてを詳しく読んでいませんでした。

Update3:説明

以下の奇妙な批評家のために、いくつかの説明。

問題は何で、ddだけでは解決できないのはなぜですか?

これはへの反応です

「解決しようとしている問題と「偽ドライブ」の定義を明確に把握してください。」

一部の人々は問題を理解していないようです。それで、私はできるだけ短く詳細に説明しようとしますが、これは私の質問の範囲を超えていると思います。

オペレーティングシステムまたはUNIXツールが提供するusbデバイスの容量が間違っている可能性があります。OSは送信可能なデータ量を規制するため、これは致命的です。実際に保持できる以上のデータを送信すると、データが失われます。これは問題です。では、なぜこれが起こるのでしょうか?

問題を理解するためにUSBプロトコルをよく知る必要はありません。シリアルインターフェイスには、クライアントデバイス(USBドライブ)がこのシリアルインターフェイスを介して独自の容量を伝える必要があるという共通の特性があります。これは、クライアントデバイスが、デバイスの目的についてある程度の知識を備えた独自のコントローラーを必要としていることを意味します。また、何かを保存するコマンドを受け取ったときに何を行うかを決定します。コントローラがそのようにプログラムされている場合、コマンドを無視するか、データで何かを上書きできます。

これは何を意味するのでしょうか?あなたのUNIXツールがドライブの容量について教えてくれるものは何でも:それはツールがドライブに求めたものであり、それ以上のものではない。これがh2testwが発明したものです。これは、後で説明する方法で実際のサイズをテストし、ドライブが言うことと比較します。これが同じではない場合、データを保存するためのすべての一般的な操作は、オペレーティングシステムの情報に依存しているため、データが失われる可能性があります。なぜ尋ねるのですか?テストには時間がかかり、ドライブ上のすべてのデータが上書きされます。したがって、オペレーティングシステムがこの情報に依存する必要があるのは当然です。

h2testwのような実際の容量を確認するには、実際にddドライブにデータを書き込み、再度読み取り、書き込みと同じかどうかを確認します。完全に合法。ハードウェアとドライブの性質により、より複雑になります。たとえば、書き込みキャッシュを検討してください。キャッシュから読み取らないようにする必要があります。これは、見た目ほど簡単ではない理由のほんの一例です。また、ゼロを書き込むだけで情報のエントロピーが低くなり、読み取り時に再構築できると考えてください。簡単ではありません。もちろん、手動で行うこともできます。

しかし、なぜ、自動化できるのですか?なぜ仕事に?以下の私の回答で提案されているf3は、多くの貢献者の多くの考えを実装し(拡張h2testwの一種と考えてください)、さまざまなトレードオフを持ついくつかのメソッドも実装します。開発者は、手元にあるさまざまな偽造ドライブ(別名偽造ドライブ)のトリックを見つけました。だから、私は理論と問題を理解している間(問題はドイツのハイテクメディアではよく説明されているが、英語圏のメディアでは説明されていないようだ)、すべてを理解するふりはしないので、私はそれを上で述べた。それは私が理解している単なる理論であり、私はソフトウェアの男です。しかし、情報学の学生として、私は問題を見るのに十分それをよく理解しています。

「基本的なUnixユーティリティを理解してください」

実際、私はすでにこれに答えましたが、それを明確にするために:Unixツールは、情報を収集するためにUSBプロトコル(もちろんUSBデバイスのみ)を使用します。それ以上のことをしても意味がありません。

信託サプライヤーからのみ購入するのに役立ちますか?

tl; dr:ありません。

「商品の購入に関しては、あらゆる形態のセキュリティの場合と同様に、信頼できる売り手を見つけ、それらからのみドライブを購入することを検討してください。」

セキュリティ(および安全性)は信頼に関するものではありません!検証と検証についてです!申し訳ありませんが、これは非常に多くの点で間違っています。

信頼できる販売者から購入すると仮定します。いくつかの質問:

  1. サプライヤーは、データ損失がないことを確認するためにハードウェアをテストしましたか?彼が偽のドライブを購入して販売する時期を再認識していますか?必ずしも。

  2. 彼が偽物だと知らないものを買う可能性はありますか?完全、最近ryzenの偽物を見て:https://www.pcgamer.com/beware-of-fake-ryzen-processors-selling-on-amazon/https://www.heise.de/newsticker/meldung/ Direkt-von-Amazon-Faelschungen-von-AMDs-Ryzen-Prozessoren-im-Umlauf-3772757.html

  3. ドライブでプレゼンテーションを失い、プレゼンテーションを台無しにした場合、信頼できるサプライヤーは時間をさかのぼって助けてくれますか?最後の時間旅行デロリアンが1885年に破壊されたので、おそらくドライブを交換します。

他のもの

「この質問は、OPが気に入っている点で「プロモーション」に似ているようで、OPは実際にドライブをテストすることにあまり興味がないようです。」

ばかげてる。Linuxでも動作するh2testwと同様のツールを特に探していました。そして、はい、それは私が「好き」にしたいことであり、役に立つ答えです。私は英語を話すマスコミがそのような問題にそれほど気づいていないことを知りませんでしたし、そのようなものを後で見つけることができて幸運でした。これはプロモーションではありませんが、実際には使用できるようです。


2
それをテストする意味はほとんどありませんdf --block-size=M。4GBの制限は、ドライブの容量ではなく、単なるFAT32ファイルサイズの制限であることを示唆しています。記載されている全容量を取得することは決してありません。単に分類するための平均です。
Sir_Scofferoff

6
コンピューターが利用可能であると言っているのは、彼がUSBドライブのコントローラーから伝えられたものです。偽のドライブが横たわっています。4GBの容量を持っているが、512GBがあると主張する場合、コントローラーによっては、残りの書き込みが破棄されるか、古いスペースが上書きされます。そのため、実際にテストする点があります。
verpfeilt

これは面白い。SSDのサイズを偽造することについては考えもしませんでしたが、一貫性をチェックするためにデータをバイト単位で読み書きする方法のアイデアが好きです。これがどのように問題になり、このようなツールが役立つかを確認できます。

1
FakeFlashCheckにはクイックスキャンもあります。そのためのOSALTはありますか?
neverMind9

PS:すでにf3probeを見つけました。以下の私のコメントをご覧ください。
neverMind9

回答:


33

f3-フラ​​ッシュ詐欺と戦う

私が見つけた選択肢は1つだけですが、これはh2testwMS Windows用のオリジナルのツールよりも優れたものだと思います。幸いなことに、コマンドラインからでも簡単に使用できます。ただし、利用可能なGUIがあります。ツールのWebサイトには、実装と偽ドライブに関する問題に関する多くの情報もあります。

f3には2つの方法があります。

  • f3probeメソッド:はるかに高速
  • h2testwメソッド:遅い。また、R / Wパフォーマンスをテストします。おそらくより信頼性が高い。

f3probeメソッド(推奨)

f3probeドライブをテストする1つの方法であり、ドライブ全体に書き込むわけではないため、それほど正確ではありませんが高速です。詳細については、ツールのWebサイトをご覧ください。100%確実にしたい場合は、h2testwメソッドを使用することをお勧めします。開発者がウェブサイトで説明しているように:

f3probeは、偽のドライブとその実際のサイズを識別するための最速の方法です。

そして:

最後に、f3probeがフリーソフトウェアであり、f3probeが戦闘で証明されると、f3probeをスマートフォン、カメラ、MP3プレーヤー、およびその他のデバイスに組み込み、偽のフラッシュが急増するのを止めることができます。

Webサイトには使用例もあります。

警告:これにより、ディスクに以前に保存されたデータが破壊されます!

$ sudo f3probe --destructive --time-ops /dev/sdb
[sudo] password for michel: 
F3 probe 6.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing may **demolish data,** so it is more suitable for flash drives out of the box, without files being stored yet. The process normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient. 

Bad news: The device `/dev/sdb' is a counterfeit of type limbo

You can "fix" this device using the following command:
f3fix --last-sec=16477878 /dev/sdb

Device geometry:
             *Usable* size: 7.86 GB (16477879 blocks)
            Announced size: 15.33 GB (32155648 blocks)
                    Module: 16.00 GB (2^34 Bytes)
    Approximate cache size: 0.00 Byte (0 blocks), need-reset=yes
       Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 1'13"
 Operation: total time / count = avg time
      Read: 472.1ms / 4198 = 112us
     Write: 55.48s / 2158 = 25.7ms
     Reset: 17.88s / 14 = 1.27s

また、を使用してドライブを実際のサイズで使用できるようにするコマンドを返すことに注意してくださいf3fix

f3fixツール

f3fixは、偽ドライブの実際のサイズに合うパーティションを作成します。f3probeの出力を使用してi3fixのパラメーターを決定します

sudo f3fix --last-sec=16477878 /dev/sdb

h2testwメソッド/ f3read / f3writeを使用したパフォーマンスのテスト

F3は、偽のフラッシュドライブを扱うツールのコレクションです。それらの2つが一緒にh2testw-Method を実装します。

f3write [--start-at=NUM] [--end-at=NUM] <PATH>
f3read  [--start-at=NUM] [--end-at=NUM] <PATH>

f3writeデバイスが要求したサイズを要求し、サイズがそれぞれ1GBの生成されたファイルで埋めます。f3readそれらすべてのファイルを読み取り、それらが完全で壊れていないことを確認します。例として、私が〜128gbのサムドライブをテストするために使用したコマンド:

$ f3write /media/username/1EB8021AB801F0D7/
Free space: 117.94 GB
Creating file 1.h2w ... OK!                           
...
Creating file 118.h2w ... OK!                         
Free space: 0.00 Byte
Average writing speed: 11.67 MB/s

次に、ファイルが正しく保存されているかどうかをテストします。

$ f3read /media/username/1EB8021AB801F0D7/
                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/        0/      0/      0
...
Validating file 118.h2w ... 1979488/        0/      0/      0

  Data OK: 117.94 GB (247346272 sectors)
Data LOST: 0.00 Byte (0 sectors)
           Corrupted: 0.00 Byte (0 sectors)
    Slightly changed: 0.00 Byte (0 sectors)
         Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 32.38 MB/s

このサイズのドライブのテストでは、この方法で約3時間かかり、コンピューターに大きなディスク負荷がかかることもありましたが、最も正確だと言われています。

Ubuntuにインストールする

ターミナルで:

sudo apt install f3

これは、あなたをもたらすでしょう:f3brewf3fixf3probef3readf3write彼らのmanページで。

このツールはf3パッケージの一部であり、少なくともUbuntu 15.10で利用可能です。ウェブサイトによると、利用可能なツールがいくつかあります。それらを取得するには、ウェブサイトを見てください。
パッケージには短くても便利なマンページが付属していますが、たとえばf3read / writeとf3probeの違いに関するWebサイトからの情報を見逃しているため、この回答が少し長くなっています。


2
この素晴らしいツールをご紹介いただきありがとうございます。ただ、インストール、使用することを追加したいapt-getインストールしますf3readfwrite のみf3probeし、f3fix実験的なものと考えています。それらを使用したい場合はmake experimental、依存関係をインストールした後に使用してソースからビルドする必要がありますsudo apt-get install libudev1 libudev-dev libparted0-dev。参照してくださいgithub.com/AltraMayor/f3#the-extra-applications-for-linux
アーメドESSAM

「[f3probe]はもはや実験的ではなく、Linuxでのみ利用可能です。」github.com/AltraMayor/f3/issues/78#issuecomment-378599141
verpfeilt

4

そのためのシンプルなツールを作成しました。CapacityTester(スクリーンショット)と呼ばれ、GUIとCLIがあります。

ダウンロード可能なDebian 7用のプリコンパイル済みバイナリがあります。これは、最新のUbuntuシステムですぐに動作する可能性が非常に高いです。

私はこの目的のためのグラフィカルツールを見つけることができなかったので、私は個人的な使用のためにそれを書きました。最初に空のUSBフラッシュドライブをマウントし、それを選択してテストを開始するだけです。ドライブがファイルで満たされ、ドライブ上のデータが正しいことを確認するだけなので、非常に愚かなツールです。最初のエラー(書き込みまたは読み取り/検証)でテストを中止します。正常に書き込みまたは検証できなかったチャンクのオフセットを報告しますが、これは論理オフセットであるため、ドライブ上のファイルがあるファイルシステムに依存するため、この情報は役に立たない場合があります。ただし、ドライブがデータで一杯になり、すべてを読み取って検証できる場合は、ドライブの報告された容量が正しいと想定しても安全です。補足として、

繰り返しますが、既存のファイルシステムの上のファイルでのみ機能するため、非常に簡単です。そのため、テストできないKB(+ 1Mバッファー)があります。そして、それは本当にファイルシステム全体を満たすので非常に遅いです。F3は確かにはるかに高度で高速ですが、GUIはありません。CapacityTesterが存在する唯一の理由は、コマンドラインに慣れていないユーザーや単にGUIを好むユーザーが使用できるようにGUIを備えているためです。

フィードバックを歓迎します。


開発者のWebサイトに記載されているように、QT GUIとOSX用のGUIが利用可能です(私はそれらを試しませんでした)。ただし、QT4に基づいていると思います。F3をバックエンドとしても使用しませんか?F3に費やした知識を使用して、ツールをより複雑にすることはなく、おそらくより機能的/効果的になるでしょう。
verpfeilt

-6

OPの動作と「偽のドライブ」に対処する

OPは非常に辛抱強く(そして、私の意見では、自分自身を除くほとんどのコメントと回答に反対しているので、私は疑わしい)、いくつかのポイントに適切に対処するために回答を編集しています。特に、「偽のドライブ」が存在すると主張する人はたくさんいますが、実際に何を意味するのかについての明確な定義はありません。OPの説明:

その上にあるものをコピーして、コピーして、ファイルに問題がないかどうかを確認できます。ハッシュなどで自動化することもできます。しかし、より正確な解決策があることを望みました。

OP自体は、「ものをコピーするだけで」データの整合性を検証できることを認めましたが、他のすべてを提案する他のすべてのコメントと回答に非常に反対し、OPはF3を「本当の取引」として押し続けました。質問自体は最初はドライブのサイズについて始まりましたが、OPは何らかの理由でハッシュが「ファイルが正常かどうかを確認する」ようにハッシュしました。1つのサイズを主張してそのサイズを書き込める謎のドライブがあるかのようにデータが破損しています。したがって、私はそれが非常に疑わしいと判断し、OPがF3をスパムの質問と回答として宣伝することを検討します。

ドライブが実際に偽のドライブである場合

質問では、OPの明らかな定義は

「..多くのスペースを持っていると主張するドライブ(128 GBのように、あまりにも遠くまで持ち運ばれることが多い)が、物理的には0.5〜4 GBしか提供しない。」

言い換えれば、OPによれば、コントローラーは Xのデータ量を要求しますが、USBは要求されたデータの80-90%少ないものしか含むことができません。

コメントで提案されたユーザーsudodus(強調追加):「いくつかのUSBペンドライブは、公称サイズよりわずかに小さいことがわかりました。それらをアンダーサイズと呼びます。偽ドライブは「実質的にアンダーサイズ」です(通常、公称サイズの半分以下))。この定義は素晴らしいですが、それをとると、偽ドライブは50%で定義されます。64 GBを要求するが32 GBしか保持できないドライブは、所有者にとって技術的にその価値の半分を失い、所有者は意図したものの半分しかドライブに置くことができません。

より単純な定義を提案します。偽造ストレージデバイスは、所有していると主張しますClaimed Sizeが、許容範囲は15%未満です(および許容範囲はClaimed Size ± 15 %)。

これ ± 15 %は非常に合理的です。また、ユーザーは通常、Unix、IEEE、およびIEC組織の間で、データストレージサイズに10の累乗のプレフィックスではなくバイナリプレフィックスを使用していることを考慮してください。違いはヨッタプレフィックスレベルで20%になりますが、USBドライブはまだ存在しないため、今後20年間は15%が妥当です。(askubuntuの質問「「MiB」における「i」の意味」およびバイナリプレフィックスを参照)

ドライブをテストする

事実上、ユーザーは特別なツールを必要としませんが、UbuntuおよびほとんどのPOSIX準拠のUnixシステムにはすでに付属しています。定義を再度強調して言い換えましょう。

ドライブに大量のデータを書き込むことができず、書き込むデータが15%の許容範囲内であれば、ドライブは正常です

彼の簡単な方法はdd、デバイスをゼロで上書きするだけです(もちろん、ファイルを保存する前に忘れずに保存してください)。

sudo dd if=/dev/zero of=/dev/sdb1 iflag=nocache oflag=direct bs=1                        

bs=11バイトのブロックサイズに注意してください。このddコマンドは通常、書き込まれた量に関するレポートを提供します。

$ dd if=/dev/zero of=/dev/null bs=1 count=1024
1024+0 records in
1024+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 0.00261981 s, 391 kB/s

1024バイトを書き込むように要求し、1024バイトを書き込みました。

定義に準拠するステップのより正確なリストは次のとおりです。

  • ドライブが要求するデータ量を把握します(df「間違えた」と思われる場合)この例で/dev/sdb1は、USBドライブ用のデバイスファイルを想定します。

    $ df -P /dev/sdb1 | awk 'NR==2{print $2}'
    115247656
    

    注意-Pフラグがデータのブロックサイズは1024バイトになり、手段はそのドライブ上115247656の* 1024バイトがあります意味POSIXの移植のためのものです。

  • ドライブが主張するもの(115247656)を15%下回る許容範囲を把握し、おそらく次のような浮動小数点計算をサポートするユーティリティを使用しますawk

     $ awk 'BEGIN{printf "%d\n",115247656*(1-0.15)}'
     97960507
    
  • ベンチマークとして使用する前のステップのドライブと同じサイズのハードドライブにランダムデータを作成します。 dd if=/dev/urandom of=./mytestfile.random bs=1024 count=97960507

  • 次にデータを書き込みますdd if=./mytestfile.random of=/dev/sda1。ドライブがこれだけ保持できる場合、それは「本物」です。また、md5sumまたはsha1sumを取り./mytestfile.random/dev/sda1今と比較することもできます。さらに良い改善はmytestfile.random、ファイルのマウントポイントに書き込むことです。したがって、ファイルシステムをドライブに保持し、ドライブのパーティションを変更しません。

    dd if=./mytestfile.random of=/mountpoint/for/usb/drive/testfile.random
    
  • その後、整合性のために、あなただけのような、任意のhashsumチェックを行うことができmd5sumsha1sumsha256sum等。例えば

    md5sum ./mytestfile.random  /mountpoint/for/usb/drive/testfile.random
    

    ここで重要な点は、書き込まれたデータの量が許容範囲内であり、書き込みの前後に正しいチェックサムが生成される場合、ドライブはおそらく問題ないことです。

必要に応じて、これらすべてを便利なスクリプトに入れることができます。

結論

この質問は、OPが好むものにとっては「プロモーション」に似ているように思われ、OPは実際にドライブをテストすることにあまり関心がないようです。さらに、問題自体は「ドライブ」問題よりも人間的です。コメントの中で、OP自身はUSBの動作を実際には理解していないが、「コントローラー」を非難することを強く主張しています。この質問には3つのポイントを残します。

  • 解決しようとしている問題と「偽ドライブ」の定義を明確に理解してください。
  • 基本的なUnixユーティリティを理解してみてください
  • あらゆる種類のセキュリティと同様に、商品を購入する場合は、信頼できる販売者を見つけて、そこからのみドライブを購入することを検討してください。

1
ありがたいのですが、ddが実際のサイズを検出するかどうかはわかりません。コントローラーが同じサイズのスペースを持っていると偽装するからです。ファイル(または複数のファイル)に書き込み、それを完全に取り戻すことができるかどうかを確認する必要があると思います。テスト専用のツールがあるのには理由があると思いますが、残念なことにウィンドウのみです。VMを使用する必要があると思います。まあ、それは少し前にドイツのニュースでかなり大きかった。(トピックに関するドイツの情報源:heise.de/ct/ausgabe/…
-verpfeilt

1
@verpfeiltさて、私はドイツ語を話さないので、記事は誰かが要約するか翻訳する必要があります。同じ量のスペースがあることをコントローラーはどのように偽造しますか?ddデバイスに書き込まれた/与えられたデータ量を報告しますが、それがどのように偽装できるかわかりません。
セルギーコロディアズニー16年

2
さて、あなたはすべてを書くことができますが、それはUSBクライアントがそれを保存するとは言いません。私が正しく理解していれば、問題は直接USBアーキテクチャにあります。一部のフラッシュメモリをそこに貼り付けることはできませんが、プロトコルを満たすチップが必要です。スタブ(en.wikipedia.org/wiki/Method_stub)と同様に、これにより書き込み専用メモリを構築できます(ただし、ドライブには小さなファイルを保存するための少量のメモリがあります)。これが、h2testwのようなツールが存在する理由です。:ここでは英語で何かあるmyce.com/news/...
verpfeilt

1
@SergiyKolodyazhnyy、私はいくつかのUSBペンドライブが公称サイズよりわずかに小さいことを発見しました。私はそれらを小さめと呼びます。偽のドライブは「実質的に小さすぎる」(通常は公称サイズの半分以下)と思います。ドライブに何かを書き込んだdd後、md5sumをチェックすると、どれだけ正しく読み書きできるかをチェックするはずです。(私は@ verpfeiltの答えのルックスで、特別なツールは、より魅力的だと思うが、私はそれらをテストしていない私は、多くのUSB pendrivesとメモリカードを持って、私はまだ偽のいずれかを購入しているとは思いません。)
sudodus

1
@SergiyKolodyazhnyy、私はあなたの更新された定義に同意します、「偽造記憶装置はサイズを主張していると主張するものですが、許容範囲は15%未満です(そして許容範囲は主張サイズ±15%です)」。-あなたの答えの素晴らしい更新をありがとう:-)
sudodus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.