AltraMayor / f3

F3 - Fight Flash Fraud
https://fight-flash-fraud.readthedocs.io/en/stable/
GNU General Public License v3.0
2.5k stars 141 forks source link

Explaining the problem and the details. #78

Open Pfeil opened 6 years ago

Pfeil commented 6 years ago

It seems like the issue of fake flash and why applications like this are needed is not clear to quiet a lot of people.

When I discovered your application (I searched a replacement for h2testw for linux and asked on askubuntu), there was a lot of information on the website of f3, but now it's gone. I only have sources in German, so I wonder how to explain the problem to people who can't read it. And even those sources are not explaining technical details. The given sources on your website and the page of h2testw do not really look like a good overview that can be trusted on (they look like those automatically generated pages at first sight and I can't see who wrote it). The people here for example seem to be very sceptical and also raised the desire in me to read into why again a tool like this is necessary, and dd is not always enough (there was some stuff about flags and caches on your website, I think).

So, I suggest to bring back (or if it is there, highlight) some information about the problem itself and some technical details to help people understand it. Like this:

AltraMayor commented 6 years ago

Hi @Pfeil,

The documentation is not gone. We have moved it to Read the Docs to enable anyone to contribute to it by issuing pull requests here on GitHub. While I'm the original and still the main developer of F3, the effort is community driven. For example, the fact that F3 uses the format of h2testw is because users wanted it so much that they persuaded the author of h2testw to provide me with the missing details. Another example is the idea and effort to migrate the documentation to Read the Docs.

  1. The h2testw method consists of filling up a volume with pseudo-random content and reading it back. The format is such that it allows one to identify what happened to the data when if it was modified or lost. The idea is simple, but, as one will find out by perusing the history of the code on GitHub, there are "invisible" features that deal with rare failure cases and being fast.

  2. The best documentation about how fake flash behaves that I'm aware is the code of f3probe. f3probe has accumulated all my knowledge about fake flash. It is no longer experimental, but only available on Linux. Even if someone translated f3probe's code into plain English, I don't think it would be helpful for users just looking for checking their memory cards. A common behavior of fake flash, when it has to return a lost block, is to return the block full of zero, or full of ones, or, yet, with the content of another block.

  3. If a testing tool is not prepared to the fact that fake flash will try to fool them, they may identify fake flash as legit flash. For example, imagine that a tool only writes blocks filled with zeros, or ones, or a single pattern. Common fake flash would fool this tool.

Pfeil commented 6 years ago

Thank you for the response, your answers helped a lot. I guess I had a distorted impression about how much detail was on the website in the past. Your summary, though, has strengthen my impression of how f3 works. While I am not a big fan of code as a replacement for documentation of implementation details, I have to admit that, since the code is relatively short and well organized, it is indeed a good source of information (although it still takes more effort to follow, at least for me). Thanks for pointing that out.

I just saw that in the contributing section in the docs, you also mention the lack of press coverage. I thought I am too stupid to google when I first tried to gather some english sources. The problem and some special cases were covered in several articles on popular german (tech) media btw, though that was a few years ago. That's how I came across this topic.

AltraMayor commented 6 years ago

If you translate your effort of reading the code of F3 into improving the documentation, I'll be happy to merge your pull request.

If the efforts of everyone that has helped to spread the word about fake flash are successful, the English media may never pick up on the subject as the German media did. I don't speak or read German, but I have good memories of a few days that I spent in Frankfurt a number of years ago.

Pfeil commented 6 years ago

I'd love to help. ReadTheDocs is new to me, but I'll read into it (and the code) when I find some spare time. I can't make any promises, though.

Since the Ryzen-fakes on Amazon did get some attention, I still have hope that fake flash will get some attention too. Although it's way easier to recognize a CPU with a wrong socket as fake than a "probably just broken" fake flash usb drive...