Hi, die Frage steht schon im Betreff! Wenn ich einen USB-Stick formatiere (vollständig, nicht Quick-format), dann wird jede Speicherzelle als leer beschrieben. Wieso ist es dann möglich die Daten wieder zu holen? Bei einer formatierten Festeplatte kann ich das ja noch verstehen, aber bei Flash-Technik mit MOS-Transistoren? Wenn ich die Daten nur lösche werden sie eben als nicht mehr erforderlich markiert, ergo kann ich sie auch wiederherstellen, verständlich! Jetzt lese ich aber bei div. recoverytools dass diese eben auch formatierte Sticks auslesen können, wie soll das gehen!?
Also ich würde erstmal die Werbungs verifizieren mit einer Demoversion. Ansich sollte es physikalische "Rückstände" geben, die ein forensisches Labor wiederherstellen kann, aber softwaretechnisch einen Datenträger, der nur 0 zurück liefert, wieder auszulesen grenzt für mich auch an Hokuspokus. Ich glaube die Werbung war einfach mal wieder fachlich unter aller Sau. Die gehen von einer Quick-formatierung aus, d.h. Partitionstabelle neu schreiben und den Speicherbereich, wo gesichert ist, wo welche Datei liegt leeren. Dann sind die Daten noch alle da, nur halt namenlos, und mit Headerinformationen etc, kann man doch schon einiges wiederherstellen dann.
meines Wissen macht die Format funktion im Windows nicht was jeder erwartet - überlall 0 reinschreiben - sonder sie liest jeden Sektor und prüft nur ob er fehlerfrei gelesen werden kann, zuzätzlich wird noch das Filesystem neu geschrieben. die Daten sind danach immer noch drauf.
zweifler schrieb: > Wenn ich einen USB-Stick formatiere (vollständig, nicht Quick-format), > dann wird jede Speicherzelle als leer beschrieben. Negativ. Beim normalen Formatieren unter Windows werden nur die Systembereiche neu geschrieben. Die restlichen Sektoren, also wo die eigentlichen Daten liegen, werden nur auf Lesbarkeit geprüft. Die Ausnahme sind Disketten, dort wird beim vollständigen Formatieren auch geschrieben. Wenn du sicher löschen willst, dann benutze solche Tools wie z.B. Diskwipe, die den Datenträger komplett nullen oder mit Zufallsdaten überchreiben können.
Danke für die Erklärung! ich bin in der Tat davon ausgegangen dass bei einer Formatierung wirklich jede Speicherzelle eines Flash-drive mit "0" beschrieben wird! ...wieder was gelernt
Windows 7 löscht Flash-Speicher mittlerweile aber auch vollständig, wenn man den Haken "Schnellformatierung" rausnimmt. Dauert dann halt entsprechend lange. Habs eben mal probiert, nach der FAT ist das Ding komplett mit 0x00 gefüllt. (Mit Tiny Hexer das Laufwerk geöffnet) Da kann man auch beim besten Willen und mit CSI Equipment nix mehr lesen. Auch wenn urbane Legenden gerne was anderes behaupten.
ist das nicht eigentlich dumm? mit 0xff zu füllen wäre wesentlich performanter.
... schrieb: > ist das nicht eigentlich dumm? > mit 0xff zu füllen wäre wesentlich performanter. eventuell inverter der stick ja alle bits? Aber selbst wenn 0xFF drint steht muss er dann ja erstmal lesen um das rauszufinden also tauscht man ein lesen gegen das löschen.
Vielleicht wäre es langsam an der Zeit, diesen missverständlichen Begriff "Formatieren" aus der Welt zu schaffen. Ursprünglich verstand man darunter das sektorweise Schreiben von Synchronisations- und Adressinformationen auf rotierende Datenträger wie Festplatten und Disketten. Heute werden Disketten praktisch nicht mehr verwendet, Festplatten werden bereits vom Hersteller formatiert, und Flash-Disks rotieren nicht. Somit ist eine Formatierung durch den Endbenutzer nicht mehr erforderlich und meist auch gar nicht möglich. Da aber der gemeine PC-User sich nur dann als Herr über seinen Rechner fühlt, wenn er das Recht hat zu formatieren, werden ihm heute — vor allem im Windows-Bereich — viele unterschiedliche andere Tätigkeiten als "Formatieren" verkauft, die aber mit der ursprünglichen Bedeutung nichts zu tun haben: - Partitionierung des Datenträgers - Überprüfung des Datenträgers - vollständiges Beschreiben des Datenträgers mit Nullen - (Neu-)Anlegen eines Dateisystems auf dem Datenträger Eine Zeit lang existierte das "echte" Formatieren unter der Bezeichnung "Low-Level-Formatierung" weiter. Aber auch Low-Level-Formatierung ist heute meist nur nuch ein Beschreiben des Datenträgers mit Nullen. Die User, die ihre Festplatte regelmäßig "low-level-formatieren", fühlen sich dann als die wahren Cracks :) Würde man die Dinge mit richtigen (und vor allem aussagekräftigen) Namen nennen, würden viele Missverständnisse gar nicht erst auftreten. Genauso ein dummes Beispiel ist die Unterscheidung zwischen "LCD-Fern- sehern" und "LED-Fernsehern", wobei mit letzterem üblicherweise ein LCD-Fernseher mit LED-Hintergrundbeleuchtung gemeint ist :-/
... schrieb: > mit 0xff zu füllen wäre wesentlich performanter. Aus welchem Grund? Peter II schrieb: > eventuell inverter der stick ja alle bits? Was verstehst Du in diesem Zusammenhang unter invertieren? In den üblichen USB-Sticks dürfte MLC-Flash zum Einsatz kommen. MLC-Flash kann pro Zelle nicht nur zwei (0 oder 1) sondern mehrere Zustände einnehmen, d.h. mehr als 1 Bit je Zelle speichern. Der Controller im USB-Stick wird die zu speichernden Daten mit etwas Redundanz anreichern (zwecks Fehlerekennung/-korrektur), kodieren und dann die Flashzellen entsprechend beschreiben. Ob der Stick komplett mit Einsen oder Nullen beschrieben wird, dürfte vom Aufwand egal sein. In keinem der beiden Fälle werden nach dem beschreiben alle Speicherzellen des Sticks im gleichen Zustand sein.
J.-u. G. schrieb: > Was verstehst Du in diesem Zusammenhang unter invertieren? Vielleicht was er schrieb? 0xff bitweise invertiert ergibt 0x00 ;)
Michael Köhler schrieb: > Vielleicht was er schrieb? 0xff bitweise invertiert ergibt 0x00 ;) Ja, die logische Operation "invertieren" ist mir durchaus bekannt:) Aber was bedeutet das physikalisch im Falle von MLC-Flash? Angenommen eine Flash-Zelle kann die vier Widerstandswerte 1kOhm, 10kOhm, 100kOhm, und 1MOhm annehmen, d.h. zwei Bits pro Zelle speichern. Wie könnte jetzt ein logisches Byte, z.B. 0xa9 invertiert bzw. nicht invertiert gespeichert werden. Und was würde das vom Aufwand/Geschwindigkeit her für einen Unterschied machen?
J.-u. G. schrieb: > Ja, die logische Operation "invertieren" ist mir durchaus bekannt:) > Aber was bedeutet das physikalisch im Falle von MLC-Flash? Angenommen > eine Flash-Zelle kann die vier Widerstandswerte 1kOhm, 10kOhm, 100kOhm, > und 1MOhm annehmen, d.h. zwei Bits pro Zelle speichern. Wie könnte jetzt > ein logisches Byte, z.B. 0xa9 invertiert bzw. nicht invertiert > gespeichert werden. Und was würde das vom Aufwand/Geschwindigkeit her > für einen Unterschied machen? es ist doch egal wie es gespeichert ist, der controller könnte einfacher jedes byte was er liest oder schreibt invertieren. Das kostet auch keine Zeit. Wenn man also 0 schreibt dann wird in in den Flash 0xFF geschrieben, beim lesen das ganze wieder rückwärts. Damit bekommt man die gleichen Daten aber intern sie sie invertiert gespeichert. (ob das sinn macht kann icht sagen aber es würde gehen)
Mal ne blöde Frage: Kommt bei Flash kein RLL mehr zum Einsatz? Ich frage mich bei Festplatten immer, wie man eigentlich nur 0en oder 1en erhalten möchte, wenn der Controller in jedem Falle durch die RLL-Codierung IMMER Flusswechsel schreibt...
Yalu X. schrieb: > Aber auch Low-Level-Formatierung ist > heute meist nur nuch ein Beschreiben des Datenträgers mit Nullen. Einige SCSI-Platten könnten sich tatsächlich noch Formatieren lassen. Bei denen kann man (in Grenzen) dann auch die Sektorgröße ändern. Ich glaube, IBMs AIX war mal glücklich über Platten mit 528 Byte pro Sektor, weil sie dann ihr eigenes ECC drüber gelegt haben.
Peter II schrieb: > es ist doch egal wie es gespeichert ist, der controller könnte einfacher > jedes byte was er liest oder schreibt invertieren. Angenommen der Controller soll ein Byte speichern. Zu den angelieferten 8 Bit wird er denn noch das ein oder andere Bit an Redundanz hinzufügen, das Ganze kodieren (z.B. BCH-Code) und anhand des sich ergebenden Musters bestimmte Ladungen auf bestimmte Flashzellen verteilen. Eine eventuelle Invertierung wäre damit Bestandteil des Codes. Peter II schrieb: > Wenn man also 0 schreibt dann wird in in den Flash 0xFF geschrieben, 0xFF ist doch nur ein abstraktes logisches Konstrukt. Eine Flashzelle kann damit nicht beschrieben werden, die möchte definierte Ladungsmengen sehen um einen definierten Zustand (Widerstandswert) einzunehmen. Der Controller kodiert logische Zustände in Ladungsmengen pro Flashzelle. Verschiedene Kodierungen des gleichen logischen Bytes (eine Invertierung wäre ja im Vergleich zur Nichtinvertierung nichts weiter als eine andere Kodierung) würden demnach nur zu einer anderen Verteilung der Widerstandswerten der beteiligten Flashzellen führen. Peter II schrieb: > Damit bekommt man die gleichen > Daten aber intern sie sie invertiert gespeichert. Wie gesagt, Invertierung ist in diesem Zusammenhang ein rein logisches Konzept. Was die physische Speicherung in den Zellen betrifft ist das völlig unerheblich. Peter II schrieb: > (ob das sinn macht > kann icht sagen aber es würde gehen) Meiner Meinung nach ist das Eine so gut wie das Andere.
J.-u. G. schrieb: > Meiner Meinung nach ist das Eine so gut wie das Andere. es ging ja nur um das ziel wenn das BS alles 0 in den Flash schreibe, das er intern aber nur löscht also 0xFF, damit können dann die Zellen ohne zu löschen beschrieben werden.
Peter II schrieb: > es ging ja nur um das ziel wenn das BS alles 0 in den Flash schreibe, > das er intern aber nur löscht also 0xFF, damit können dann die Zellen > ohne zu löschen beschrieben werden. Dann erkläre mir bitte anhand eines Flashspeichers, der 100 Byte speichern kann, den Unterschied zwischen Löschen, 100 mal 0x00 schreiben und 100 mal 0xFF schreiben.
J.-u. G. schrieb: > Dann erkläre mir bitte anhand eines Flashspeichers, der 100 Byte > speichern kann, den Unterschied zwischen Löschen, 100 mal 0x00 schreiben > und 100 mal 0xFF schreiben. ist es nicht so das nach dem Löschen alles auf 0xFF steht, dann kann man nur noch bits (bei SLC) auf 0 setzen. wenn also überhall 0 drin steht, dann kan man ohne löschen keine weiteren Daten reinbekommen, wenn jetzt aber schon 0xFF drin stehen, könnte man einfach ohne löschen die Daten reinschreiben.
Peter II schrieb: > ist es nicht so das nach dem Löschen alles auf 0xFF steht, dann kann > man nur noch bits (bei SLC) auf 0 setzen. Ich glaube wir reden aneinander vorbei. 0xFF ist ein rein logisches Konstrukt. Physiche Speicherzellen (weder SLC noch MLC) können damit nichts anfangen. Angenommen (rein hypothetisch) der Flashcontroller soll 1 Byte (8 Bit) speichern. Zum Zwecke der Fehlererkennung/-korrektur werden 4 Bit als Redundanz hinzugefügt, also insgesamt 12 Bit. Nehmen wir weiterhin an, eine MLC-Speicherzelle kann anhand ihres Widerstandes 4 Zustände einnehmen z.B. 1kOhm, 10kOhm, 100kOhm, 1MOhm. Zum Speichern der 8+4 Bits benötigen wir also 3 Zellen. Soll jetzt 0x00 gespeichert werden, würden die 3 Zellen die Zustände [10k 1M 100k] (willkürliches Beispiel) einnehmen. Während sie im Falle 0xFF [1k 1k 10k] einnehmen würden. Peter II schrieb: > wenn also überhall 0 drin steht, dann kan man ohne löschen keine > weiteren Daten reinbekommen, Was verstehst Du unter "löschen"? Peter II schrieb: > wenn jetzt aber schon 0xFF drin stehen, > könnte man einfach ohne löschen die Daten reinschreiben. Völlig egal was vorher drinnen stand, der Controller muß anhand seiner Kodierung die elektrischen Ladungen so auf die Zellen verteilen, dass er später beim Lesen wieder eindeutig das ursprüngliche Bitmuster rekonstruieren kann.
J.-u. G. schrieb: > Völlig egal was vorher drinnen stand, der Controller muß anhand seiner > Kodierung die elektrischen Ladungen so auf die Zellen verteilen, dass er > später beim Lesen wieder eindeutig das ursprüngliche Bitmuster > rekonstruieren kann. warum gibt es dann bei Festplatten die Trim Funktionaltität, diese teilt dem Kontroller mit welche Bereicht leer sind, damit er die Daten "löschen" kann. Das ganze wird ja gemacht damit das schreiben schneller geht. Du schreibst jetzt aber das es egal ist was geschrieben wird, das passt aber irgendwie nicht zusammen. Meines Wissen gibt es eine Unterschied zwischen Löschen und Schreiben. Es muss vor den Schreiben immer gelöscht werden.
Peter II schrieb: > warum gibt es dann bei Festplatten die Trim Funktionaltität, diese teilt > dem Kontroller mit welche Bereicht leer sind, Genau, der Controller weiß dann, welche Bereiche ungültige Daten enthalten. Der Schreibzugriff auf den Flash erolgt bei SSDs in recht großen Einheiten (lt. Wikipedia 4096Byte). Angenommen, der Controller möcht etwas in einer solchen Einheit speichern, die aber bereits halb voll mit gültigen Daten ist. Dann muß zunächst der Inhalt der Speichereinheit in den internen Pufferspeicher des Controllers eingelesen werden. Dann werden die neuen Daten hinzugefügt und abschließend alte und neue Daten wieder ins Flash geschrieben. Wenn der Controller jedoch weiß, das die Speichereinheit keine gültigen Daten enthält (und das wird ihm mittels TRIM mitgeteilt), kann er sich das lesen und sichern des alten Inhalts sparen. Die TRIM Funktion hilft dem Controller also auf logischer Ebene, seine Arbeit schneller und speicherzellenschonender zu erledigen, weil "alte" Daten nicht mehr ständig mitgeschleppt werden müssen. > Meines Wissen gibt es eine Unterschied zwischen Löschen und Schreiben. > Es muss vor den Schreiben immer gelöscht werden. Nein, eigentlich nicht. Es ist lediglich eine sprachliche Konvention das mit "Löschen" gemeint ist, dass die Speicherzelle in einen physikalischen Zustand gebracht wird, der eine logische "0" repräsentiert und "Schreiben" oder "Programmiern" bedeutet dann entsprechend, die Zelle wird in einen physikalischen Zustand gebracht, der die logische "1" repräsentiert. Wie diese physikalischen Zustände tatsächlich aussahen ist von der Art der Flashzelle und der Implementierung abhängig. http://de.wikipedia.org/wiki/Flash-Speicher#Speichern_und_Lesen
Martin Schwaikert schrieb: > Mal ne blöde Frage: Kommt bei Flash kein RLL mehr zum Einsatz? Ich frage > mich bei Festplatten immer, wie man eigentlich nur 0en oder 1en erhalten > möchte, wenn der Controller in jedem Falle durch die RLL-Codierung IMMER > Flusswechsel schreibt... Flusswechsel bei Flash?
J.-u. G. schrieb: > Nein, eigentlich nicht. Jein würde ich sagen... beim EEProm ist es z.B. so, dass 0xFF der "gelöschte" Zustand ist, und man dann jede 1 zu einer 0 machen kann auch ohne löschen. Von 0 auf 1 geht aber nicht, man muss die Zelle einmal komplett "löschen", irgendwo gab es dazu mal eine diskussion wie man auf diese weise einen Löschzyklen schonenden Zähler realisieren kann ;)
J.-u. G. schrieb: >> Meines Wissen gibt es eine Unterschied zwischen Löschen und Schreiben. >> Es muss vor den Schreiben immer gelöscht werden. > > Nein, eigentlich nicht. Es ist lediglich eine sprachliche Konvention das > mit "Löschen" gemeint ist Der Unterschied zwischen Löschen und Schreiben ist bei NAND-Flash wie in Sticks und SSDs sehr signifikant. Gelöscht wird in recht grossen Blöcken, beispielsweise 512KB. Da hinein kann dann inkrementell in kleinen Blöcken wie beispielsweise 4KB geschrieben werden. Löschen und Schreiben sind also völlig getrennte Vorgänge. NOR-Flashs sind eine etwas andere Baustelle, sind aber nicht in Flash-Massenspeichern wie Sticks zu finden, sondern beispielsweise als Programmspeicher von Mikrocontrollern, oder als externes serielles DataFlash (wie Atmel AT45).
J.-u. G. schrieb: > Nein, eigentlich nicht. Es ist lediglich eine sprachliche Konvention das > mit "Löschen" gemeint ist, es steht doch sogar in dem wiki artikel drin: [...] Das bedeutet, dass zum Wiederbeschreiben immer erst eine Löschoperation (auf einem Byte bei manchen EEPROM-Architekturen, auf einem Sektor bei Flash) nötig ist und dann das gewünschte Bit-Pattern, also der gewünschte Speicherinhalt durch Programmieroperationen hergestellt wird. [...]
Also ist es bei NAND-Flash und EEProm so, dass eine Zelle leicht von Zustand A in Zustand B gebracht werden kann, aber nur mit hohem Aufwand wieder zurück von B nach A? OK, dass war mir bisher so nicht bewusst. Wie sieht das denn bei MLC aus? Die können ja 4 (neuerdings wohl auch schon 8) Zustände einnehmen. Welche Übergänge sind denn hier aufwändig und welche nicht?
J.-u. G. schrieb: > Wie sieht das denn bei MLC aus? Die können ja 4 (neuerdings wohl auch > schon 8) Zustände einnehmen. Welche Übergänge sind denn hier aufwändig > und welche nicht? ich vermute mal dort ist es genaus so, es ist ja auch nur eine spannung/Widerstand der sich ändert. Damit wird es auch eine schreibrichtug (z.b. hoher Widerstand -> kleiner widerstand ) geben. das Löschen setzt dann den Wert auf den hohen widerstand zurück ). Welcher Wert jetzt welche Bit-Kombination enstpricht ist dabei ziemlich egal.
J.-u. G. schrieb: > Also ist es bei NAND-Flash und EEProm so, Obacht: Ich hatte nur darauf hingewiesen, dass man zwischen NAND- und NOR-Flash unterscheiden sollte, nicht aber behauptet dass sie sich in der Frage Erase/Write völlig anders verhalten würden. PS: Nach der technischen Erklärung, weshalb Erase-Blöcke so gross sind, suche ich auch noch.
A. K. schrieb: > Obacht: Ich hatte nur darauf hingewiesen, dass man zwischen NAND- und > NOR-Flash unterscheiden sollte, nicht aber behauptet dass sie sich in > der Frage Erase/Write völlig anders verhalten würden. Keine Bange, hatte ich so auch nicht verstanden.
> Nach der technischen Erklärung, weshalb Erase-Blöcke so gross sind, > suche ich auch noch. Moderne Flash Technologien nutzen unterschiedlich physicalische Prinzipien für das Schreiben und Löschen von Speicherzellen. So wird zum Beispiel mit Hot-Electrons geschrieben und mit Fowler-Nordheim Tunneling gelöscht. Wieviel man gleichzeitig Schreiben bzw. Löschen kann, hängt vom Schaltungsaufwand ab, den man zusätzlich zum Speicher-Array spendieren will. So erfordert i.A. das Löschen eine negative Spannung. In monolithisch integrierten Bauteilen kann man negative Spannungen nur sinnvoll an große Blöcke verteilen. Der Aufwand zur Separation ist enorm. Man teilt daher große Flash-Speicher in Sektoren um wenigsten nicht immer das ganze Array Löschen zu müssen. Der Platz für die Trennung der Hochspannung zwischen den Sektoren ist verlorenene Chip-Fläche. Speicherhersteller möchten daher immer große Sektoren bauen, Kunden wünschen sich das Gegenteil. Man kann auch nichtflüchtige Speicher bauen, die nicht zwischen Schreiben und Löschen unterscheiden, d.h., 0 und 1 kann frei programmiert werden. Dafür braucht man dann wenigstens 3 Transistoren pro Speicherzelle. Die Kosten rechnen sich dann wohl nur für Spezialanwendungen. Speicher müssen heute vor allem groß sein. Dann muß man eben mit ein paar Nachteilen leben.
@ zweifler was Du suchst ist ein Low-Level-Format ... alte MOTs hatten das noch im Bios, gibt es aber auch als Tool unter DOS (Maxtor's Low Level Format (MAXLLF.EXE) Utility) , ist aber nur für HDDs. Für USB Sticks gibt es da ein nettes Tool "USB Flash Disk Formatter v2.09.01.01" macht alles platt, gerade bei diesen teilen mit eingebauter Security Software. Gruss Ralf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.