Niedawno czytałem dużo o fałszywej karcie MicroSD i napędach USB, które twierdzą, że mają dużo miejsca (nawet jeśli poprosisz komputer), a fizycznie oferują znacznie mniej. Niedawno kupiłem dysk SanDisk USB (twierdzono 128 GB) i chcę przetestować jego rozmiar. Nie jest kupowany przez eBay ani coś takiego, ale naprawdę chcę przetestować rzeczywisty rozmiar przed użyciem go produktywnie.
Mógłbym po prostu skopiować na nim rzeczy, skopiować z powrotem i sprawdzić, czy pliki są w porządku. Mógłbym również zautomatyzować to za pomocą Hashes i innych rzeczy. Mam jednak nadzieję, że istnieje bardziej dokładne rozwiązanie. Przeczytałem, że w Windowsie H2testw robi to samo. Czy jest łatwy sposób przetestować to na Ubuntu / Linux? Może specjalistyczne, dobrze działające narzędzie?
Aktualizacja: Żeby było jasne, chodzi o sprawdzenie, czy rozmiar, o którym system Linux mówi kontrolerowi, jest prawidłowy ( aby żadne dane nie zostały utracone ). To nie tak, że chcę sprawdzić, czy otrzymam 128 GB zamiast 127,3 GB. Chcę przetestować, czy wszystkie dane, które piszę, będą ponownie czytelne. Niestety mogę znaleźć tylko kilka informacji na ten temat na angielskich stronach technicznych. Istnieją jednak dobre źródła niemieckie. Właściwie szukam takiej aplikacji, ale dla Ubuntu / Linux: https://www.raymond.cc/blog/test-and-detect-fake-or-counterfeit-usb-flash-drives-bought-from -ebay-with-h2testw /
Aktualizacja 2: Próbowałem zebrać niektóre źródła w języku angielskim. Nie przeczytałem ich wszystkich ze względu na brak czasu.
- https://www.ebay.com/gds/All-About-Fake-Flash-Drives-2013-/10000000177553258/g.html
- https://en.wikipedia.org/wiki/USB_flash_drive#Counterfeit_products
- https://www.heise.de/newsticker/meldung/Verdaechtige-USB-Sticks-mit-2-Terabyte-bei-Amazon-Faelschungen-entlarven-Datenverluste-vermeiden-3915202.html
- http://www.pcgameshardware.de/USB-Stick-Hardware-255579/News/falsche-Speicherkapazitaet-bei-Amazon-1245682/
Aktualizacja 3: Objaśnienia
Z powodu dziwnych krytyków poniżej, niektóre wyjaśnienia.
Na czym polega problem i dlaczego sam dd go nie rozwiązuje?
To jest reakcja na
„Wyraźnie zrozum, na czym polega problem, który próbujesz rozwiązać, i jaka jest definicja„ fałszywego dysku ”.”
Wydaje się, że niektórzy ludzie nie rozumieją problemu. Staram się więc wyjaśnić to tak krótko, jak tylko mogę szczegółowo, choć myślę, że to w dużej mierze do mojego pytania.
Pojemność urządzeń USB udostępnianych przez system operacyjny lub narzędzia unix może być błędna. Jest to fatalne, ponieważ twój system operacyjny określa, do ilu danych możesz je wysłać. Wyślij więcej danych, niż jest w stanie pomieścić, spowoduje to utratę danych. To jest problem. Dlaczego tak się dzieje?
Nie musisz dobrze znać protokołu USB, aby zrozumieć problem. Interfejsy szeregowe mają wspólną właściwość, że urządzenie klienckie (dysk USB) będzie musiało określić swoją pojemność za pośrednictwem tego interfejsu szeregowego. Oznacza to, że urządzenie klienckie potrzebuje własnego kontrolera z pewną wiedzą na temat celu urządzenia, aw tym przypadku jego pojemności. Decyduje również, co należy zrobić, gdy otrzyma polecenie zapisania czegoś. Jeśli kontroler jest zaprogramowany w ten sposób, może po prostu zignorować polecenie lub zastąpić coś danymi.
Co to znaczy? Cokolwiek mówią narzędzia unix na temat pojemności dysku: to, o co pytają dyski, nic więcej. Do tego właśnie została opracowana metoda h2testw: Testuje rzeczywisty rozmiar metodą opisaną później i porównuje go z tym, co mówi dysk. Jeśli to nie to samo, możesz utracić dane, ponieważ wszystkie typowe operacje przechowywania danych polegają na informacjach systemu operacyjnego, o które prosi kontroler. Dlaczego po prostu pytasz? Testowanie wymaga czasu i zastępuje wszystkie dane na dysku. To naturalne, że system operacyjny musi polegać na tych informacjach.
Aby sprawdzić rzeczywistą pojemność, taką jak h2testw, rzeczywiście możesz użyć dd
do zapisywania danych na dysku, przeczytaj je ponownie i sprawdź, czy to to samo, co napisałeś. Całkowicie legalne. Charakter sprzętu i napędu czyni go bardziej skomplikowanym. Weźmy na przykład pamięć podręczną zapisu. Musisz upewnić się, że nie czytasz z pamięci podręcznej. To tylko jeden przykład, dlaczego nie jest to tak proste, jak się wydaje. Pomyśl też, że samo pisanie zer oznacza niską entropię informacji, którą można odtworzyć podczas czytania. Po prostu nie jest to takie łatwe w szczegółach. Oczywiście nadal możesz to zrobić ręcznie.
Ale dlaczego, kiedy można zautomatyzować? Dlaczego do pracy f3, jak zaproponowano w mojej odpowiedzi poniżej, implementuje mnóstwo myśli wielu autorów (weź pod uwagę, że jest to rodzaj rozszerzonego testu h2testw), a także implementuje kilka metod z różnymi kompromisami. Deweloper wymyślił sztuczki różnych fałszywych dysków (zwanych również podrobionymi dyskami), które mieli pod ręką . Tak więc, chociaż rozumiem teorię i problem (pozornie, ponieważ problemy są dobrze wyjaśnione w niemieckich mediach technicznych, ale nie w mediach anglojęzycznych), nie udaję, że rozumiem wszystko, dlatego wspomniałem o tym powyżej. To tylko teoria, którą rozumiem i jestem raczej facetem od oprogramowania. Ale jako student informatyki rozumiem to wystarczająco dobrze, aby dostrzec problem.
„Spróbuj zrozumieć podstawowe narzędzia uniksowe”
Właściwie już na to odpowiedziałem, ale dla jasności: narzędzia uniksowe po prostu używają protokołu USB (oczywiście tylko dla urządzeń USB) do zbierania informacji. Nie ma sensu robić więcej niż to.
Czy pomaga kupować tylko od zaufanych dostawców?
tl; dr: Nie.
„Jeśli chodzi o kupowanie towarów, tak jak w przypadku wszelkich form bezpieczeństwa, rozważ znalezienie zaufanego sprzedawcy i kupuj dyski tylko od nich”.
Bezpieczeństwo (i bezpieczeństwo) NIE polega na zaufaniu! Chodzi o weryfikację i walidację! Przepraszam, ale jest to tak źle na wiele sposobów.
Załóżmy, że kupujesz za pośrednictwem zaufanego sprzedawcy. Kilka pytań:
Czy dostawca przetestował sprzęt pod kątem braku utraty danych? Czy rozpoznaje, kiedy kupuje fałszywe dyski i je sprzedaje? Niekoniecznie.
Czy to możliwe, że kupuje rzeczy, które nie są fałszywe? Całkowicie spójrz na najnowsze podróbki 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
Jeśli stracę prezentację na dysku i spieprzę prezentację, czy mój zaufany dostawca cofnie się w czasie i uratuje mnie? Prawdopodobnie zastąpi napęd, ponieważ ostatni podróżujący DeLorean został zniszczony w 1885 roku.
Inne rzeczy
„To pytanie wydaje się bardziej przypominać„ promocję ”dotyczącą tego, co lubi OP, i wydaje się, że OP jest znacznie mniej zainteresowany testowaniem dysków”.
To jest niedorzeczne. Szukałem specjalnie narzędzia podobnego do h2testw, które również działa na systemie Linux. I tak, to właśnie „lubię”, pomocna odpowiedź, przepraszam. Nie miałem pojęcia, że anglojęzyczna prasa nie zdaje sobie sprawy z takich problemów i miałem szczęście znaleźć coś takiego później. To nie jest promocja, ale tak naprawdę wydaje się, że możesz ją wykorzystać.
df --block-size=M
. Limit 4 GB sugerowałby, że to tylko limit rozmiaru pliku FAT32, a nie pojemność dysku. Nigdy nie uzyskasz pełnej deklarowanej pojemności, jest to tylko średnia klasyfikacja.Odpowiedzi:
f3 - Zwalczanie oszustw typu Flash
Znalazłem tylko jedną alternatywę, ale myślę, że jest to nawet lepsze niż oryginalne
h2testw
narzędzie dla MS Windows. Na szczęście jest naprawdę łatwy w użyciu, nawet z wiersza poleceń. Dostępne są jednak GUI. Na stronie narzędzi znajduje się również wiele informacji na temat implementacji i problemu z fałszywymi dyskami.f3 oferują dwie metody:
Metoda f3probe (zalecana)
f3probe
to jeden ze sposobów testowania dysków, nie tak dokładny, ale szybszy, ponieważ nie zapisuje na całym dysku. Możesz przeczytać więcej na ten temat na stronie narzędzi. Jeśli chcesz mieć 100% pewności, lepiej skorzystaj z metody h2testw. Jak opisuje programista na stronie:I:
Na stronie znajduje się również przykład użycia:
Zwróć uwagę, że zwraca także polecenie, które umożliwia użycie dysku o jego rzeczywistym rozmiarze, za pomocą
f3fix
.Narzędzie f3fix
Metoda h2testw / Testowanie wydajności za pomocą f3read / f3write
F3 to zbiór narzędzi zajmujących się fałszywymi dyskami flash. Dwa z nich wspólnie wdrażają
h2testw
-Method:f3write
poprosi o podanie rozmiaru urządzenia i wypełni go wygenerowanymi plikami o rozmiarze 1 GB każdy.f3read
odczyta wszystkie te pliki i zobaczy, że są kompletne i nieuszkodzone. Na przykład polecenia, których użyłem do przetestowania mojego napędu dyskowego o pojemności ~ 128 GB:Teraz, aby sprawdzić, czy pliki są poprawnie przechowywane:
Test tej wielkości trwał około trzech godzin i czasami powodował duże obciążenie dysku na moim komputerze, ale według mnie jest najbardziej dokładny.
Zainstaluj w Ubuntu
Na terminalu:
Spowoduje to:
f3brew
,f3fix
,f3probe
,f3read
,f3write
z ich stron podręcznika.Te narzędzia są częścią
f3
pakietu, który jest przynajmniej dostępny w Ubuntu 15.10. Według strony internetowej dostępnych jest kilka innych narzędzi. Aby je zdobyć, odwiedź stronę internetową.Pakiet zawiera krótkie, ale przydatne strony podręcznika, chociaż myślę, że brakuje w nich niektórych informacji na stronie internetowej na temat różnicy na przykład f3read / write i f3probe, dlatego ta odpowiedź jest nieco dłuższa.
źródło
apt-get
zainstaluje sięf3read
ifwrite
tylko jakof3probe
if3fix
są uważane za eksperymentalne. Jeśli chcesz ich użyć, będziesz musiał zbudować je ze źródłamake experimental
po zainstalowaniu ich zależnościsudo apt-get install libudev1 libudev-dev libparted0-dev
. Zobacz github.com/AltraMayor/f3#the-extra-applications-for-linuxNapisałem do tego proste narzędzie o nazwie CapacityTester (zrzut ekranu) i ma GUI oraz CLI.
Tam jest skompilowany kod binarny dla Debiana 7 dostępnej do pobrania , co jest bardzo prawdopodobne do pracy po wyjęciu z pudełka na nowoczesnym systemie Ubuntu.
Napisałem go na własny użytek, ponieważ nie mogłem znaleźć narzędzia graficznego do tego celu. Musisz najpierw zamontować pusty dysk flash USB, wybrać go i rozpocząć test. To bardzo głupie narzędzie, ponieważ wystarczy wypełnić dysk plikami, a następnie sprawdzić, czy dane na dysku są prawidłowe. Przerywa test przy pierwszym błędzie (zapis lub odczyt / weryfikacja). Zgłasza przesunięcie fragmentu, którego nie można zapisać lub zweryfikować, ale jest to logiczne przesunięcie, więc informacje te mogą być bezużyteczne, ponieważ zależy to od systemu plików, w którym pliki znajdują się na dysku. Jednak gdy dysk zostanie wypełniony danymi i wszystko będzie można odczytać i zweryfikować, należy bezpiecznie założyć, że zgłoszona pojemność dysku jest poprawna. Na marginesie
Ponownie, jest to bardzo proste, ponieważ działa tylko z plikami na istniejącym systemie plików. Jest więc trochę KB (+ 1M bufor), których nie można przetestować. I jest bardzo powolny, ponieważ naprawdę wypełnia cały system plików. F3 jest z pewnością znacznie bardziej wyrafinowany i szybszy, ale nie ma GUI. Jedyny powód, dla którego istnieje CapacityTester, to fakt, że ma GUI, dzięki czemu mogą z niego korzystać użytkownicy, którzy nie znają wiersza poleceń lub po prostu wolą GUI.
Informacje zwrotne są mile widziane.
źródło
Reakcja na zachowanie OP i „fałszywy dysk”
Edytuję odpowiedź, aby poprawnie odnieść się do kilku punktów, ponieważ OP jest bardzo gwałtowne (i moim zdaniem sprzeciwia się większości komentarzy i odpowiedzi z wyjątkiem ich własnych, które uważam za podejrzane). W szczególności wiele osób twierdzi, że istnieje „fałszywy dysk”, ale nie ma jasnej definicji tego, co na ziemi to właściwie oznacza. OP stwierdził:
OP sam przyznał, że „może po prostu skopiować rzeczy” i zweryfikować integralność danych, ale był bardzo przeciwny wszystkim innym komentarzom i odpowiedziom, które proponują cokolwiek innego, a OP wciąż naciskał na F3 jako „prawdziwą ofertę”. Początkowo samo pytanie zaczęło się od rozmiaru dysku, ale potem OP z dowolnego wymienionego powodu hashuje, aby „sprawdzić, czy pliki są w porządku”, tak jakby były tajemnicze dyski, które twierdzą, że mają jeden rozmiar i pozwalają na zapisanie tego rozmiaru, ale dane są uszkodzone. Dlatego uważam to za bardzo podejrzane i uważam OP promujące F3 za spam i pytanie.
Gdy dysk jest faktycznie fałszywym dyskiem
W pytaniu widoczna definicja OP to
Innymi słowy, zgodnie z OP, kontroler twierdzi X ilość danych, ale USB może zawierać tylko około 80-90% mniej tego, co jest deklarowane.
Użytkownik sudodus zaproponował w komentarzach (podkreślenie dodane): „ Przekonałem się, że kilka pendrivów USB jest nieco mniejszych niż rozmiar nominalny. Nazywam je niewymiarowymi . Myślę, że fałszywe dyski są „ zasadniczo niewymiarowe ” (zwykle połowa rozmiaru nominalnego lub mniej ) ”. Ta definicja jest świetna, jednak jeśli weźmiemy to pod uwagę, fałszywy dysk jest definiowany na 50%. Dysk, który zajmuje 64 GB, ale może pomieścić tylko 32 GB, technicznie traci połowę swojej wartości na rzecz właściciela, a właściciel może umieścić tylko połowę tego, co zamierzał na dysku.
Proponuję prostszą definicję: podrobione urządzenie pamięci masowej to takie, które twierdzi, że ma,
Claimed Size
ale ma tolerancję poniżej 15% (a tolerancja wynosiClaimed Size ± 15 %
).To
± 15 %
jest bardzo rozsądne. Należy również wziąć pod uwagę, że użytkownicy zwykle są myleni między organizacjami Unix, IEEE i IEC, które używają prefiksu binarnego zamiast mocy 10 prefiksów do przechowywania danych. Różnica sięga 20% na poziomie prefiksu yotta, jednak dyski USB jeszcze tam nie są, więc przez następne 20 lat 15 procent jest rozsądne. (Patrz pytanie askubuntu „Znaczenie„ i ”w„ MiB ”” i prefiks binarny )Testowanie napędu
W rzeczywistości użytkownik nie potrzebuje żadnych specjalnych narzędzi, poza tym, co już jest dostarczane z Ubuntu i większością systemów uniksowych zgodnych z POSIX. Podkreślmy i ponownie sformułujmy definicję:
Najprostszym sposobem na to jest
dd
, wystarczy zastąpić urządzenie zerami (i oczywiście pamiętaj, aby zapisać swoje pliki, zanim to zrobisz).Zwróć uwagę
bs=1
na wielkość bloku 1 bajt.dd
Komenda zazwyczaj daje sprawozdanie co do ile jest napisane.Poprosiliśmy go o zapisanie 1024 bajtów, napisało 1024 bajty.
Dokładniejsza lista kroków zgodnych z definicją to:
Sprawdź, ile danych zajmuje dysk (zakładając, że podejrzewasz, że
df
się pomyliłeś). W tym przykładzie załóżmy, że/dev/sdb1
to plik mojego urządzenia na dysk USB:Uwaga:
-P
flaga dotyczy przenośności POSIX, co oznacza, że rozmiar bloku danych wyniesie 1024 bajty, a to oznacza, że na tym dysku znajduje się 115247656 * 1024 bajty.Dowiedz się, jaka jest 15% tolerancja poniżej tego, co twierdzi dysk (115247656), być może użyj narzędzia obsługującego obliczenia zmiennoprzecinkowe, takie jak
awk
:Utwórz losowe dane na dysku twardym tego samego rozmiaru co dysk w poprzednim kroku, aby użyć go jako testu porównawczego:
dd if=/dev/urandom of=./mytestfile.random bs=1024 count=97960507
Teraz napisz dane
dd if=./mytestfile.random of=/dev/sda1
. Jeśli dysk może pomieścić tyle, to jest „prawdziwy”. Można także wziąćmd5sum
albosha1sum
z./mytestfile.random
i porównać z/dev/sda1
obecnie. Jeszcze lepszym ulepszeniem byłoby zapisanie punktumytestfile.random
montowania pliku, utrzymując w ten sposób system plików na dysku i niezmienną partycjonowanie dysku, innymi słowyIntegralności Następnie można po prostu zrobić każdą kontrolę hashsum, takie jak
md5sum
,sha1sum
,sha256sum
lub innych osób. Na przykładKluczową kwestią jest to, że jeśli ilość zapisanych danych mieści się w tolerancji i daje poprawną sumę kontrolną przed i po zapisie - dysk prawdopodobnie jest w porządku.
Wszystko to można umieścić w wygodnym skrypcie dla wygody, jeśli ktoś sobie tego życzy.
Wniosek
To pytanie wydaje się bardziej przypominać „promocję” tego, co lubi OP, i wydaje się, że OP jest znacznie mniej zainteresowany testowaniem napędów. Ponadto sam problem jest bardziej ludzki niż problem z „napędem”. W komentarzach sami OP stwierdzili, że tak naprawdę nie rozumieją zachowania USB, ale są bardzo skłonni obwiniać „kontroler”. Pozostawię to pytanie z 3 punktami:
źródło
dd
zgłasza ilość danych zapisanych / przekazanych do urządzenia, nie widzę, jak można to sfałszować.dd
a następnie sprawdzenie sumy md5 powinno sprawdzić, ile można poprawnie napisać i odczytać. (Myślę, że specjalne narzędzia w odpowiedzi @ verpfeilt wyglądają bardziej atrakcyjnie, ale ich nie testowałem. Mam wiele pendrivów USB i kart pamięci, nie sądzę, żebym jeszcze kupił fałszywy.)