Suchoptionen

WinHex & X-Ways

Suchoptionen

 

Groß-/Kleinschreibung beachten: Suchvorgänge können optional zwischen Groß- und Kleinschreibung unterscheiden und suchen den Text dann immer in genau der Schreibweise, in der Sie ihn vorgeben. Z. B. wird „Beispiel“ mit einem großen B nicht bei der Vorgabe „beispielsweise“ gefunden. Wenn Sie das Häkchen in diesem Kontrollkästchen entfernen, suchen Sie nach allen Groß- und Kleinschreibungsvarianten der Suchbegriffe, und die Suche wird selbst bei „bEIsPiEl“ fündig. Dies funktioniert beim Befehl „Text suchen“ nur mit Buchstaben von a-z und deutschen Umlauten (äöü), bei der parallelen Suche auch mit sonstigen sprachspezifischen Buchstaben (z. B. çåê oder Kyrillisch). In der parallelen Suche können Sie bei halb gewählter Option zeitgleich manche Suchbegriffe unter Beachtung von Groß- und Kleinschreibung suchen, indem Sie diesen Suchbegriffen die Zeichen „case:“ voranstellen, und die anderen in allen Groß- und Kleinschreibungsvarianten.

 

Unicode: Der Text wird im Unicode-Zeichensatz gesucht (UTF-16 Little Endian). Dieser Zeichensatz reserviert im Normalfall 16 Bit je Zeichen. Die parallele Suche erlaubt es, denselben Text gleichzeitig in Unicode und in diversen anderen Codepages zu suchen.

 

Sie können ein frei wählbares Jokerzeichen (ein Zeichen bzw. ein zweistelliger Hex-Wert) verwenden, das genau ein Byte abdecken kann. Z. B. kann man mit der Such-Zeichenfolge »Sp?ck« sowohl »Speck« als auch »Spock« finden.

 

Nur ganze Wörter suchen: Die zu suchende Zeichenfolge wird nur erkannt, wenn sie als einzelnes Wort vorkommt, also von anderen Buchstaben (a...z, A...Z, äöüß, französische Buchstaben) durch Nichtbuchstaben, also z. B. durch Leer-, Satz- oder Steuerzeichen oder Ziffern, getrennt ist. Reduziert die Anzahl der Treffer verläßlich nur für Text in Deutsch, Englisch und Französisch. Bei einer Parallelen Suche werden entweder alle Suchbegriffe als ganze Wörter gesucht oder nur solche, die eingerückt (vorne mit einem Tabulatorzeichen versehen) sind oder keine, in Abhängigkeit vom Status des zugehörigen Kontrollkästchens. Wenn die Einrückung für die Suche als ganzes Wort mit dem Präfix für Beachtung von Groß- und Kleinschreibung kombiniert werden soll, muß erst „case:“ kommen und dann das Tabulatorzeichen für die Einrückung.

 

Für Parallelen Suchen können Sie die Wortgrenzenerkennung für Sprachen, die die Codepage Latin 1 verwenden, individuell anpassen, d. h. entweder strenger machen (für weniger Suchtreffer) oder weicher (für mehr Suchtreffer), indem Sie das Alphabet von Zeichen definieren, die als Buchstaben betrachtet werden (d. h. Zeichen, die zu Wörtern gehören), im Gegensatz zu Nicht-Wort-Zeichen. Ein Wort-Zeichen gefolgt von einem Nicht-Wort-Zeichen (oder andersherum) wird als Wortgrenze angesehen. Es gibt drei leicht zu verwendete vordefinierte Einstellungen. Die Einstellung für das gründlichste Suchergebnis ist als Standard vorgesehen. Benutzer, die von unsinnigen Suchtreffern für kurze Suchbegriffe in Nicht-Text-Daten wie Base64 oder binären Mülldaten überschwemmt werden, können die beiden anderen Optionen probieren. Diese zwei Optionen können dazu führen, in bestimmten Konstellationen gültige Suchtreffer zu verpassen (hängt vom Dateiformat ab), aber sind immer noch zu rechtfertigen als große Zeitersparnis für Suchen in Textdokumenten, eher in der sog. Electronic Discovery, eher nicht in der Computerforensik.

 

For more explanation and an example of how the whole words option works, please read on: A word boundary is a boundary between two consecutive characters of which one character is a word character and the other character is not a word character. If two consecutive characters are both word characters (e.g. "ns"), then obviously the "s" does not start a new whole word, and the "n" cannot be the end of a whole word. It can be somewhere in the middle of a whole word (e.g. "mansion"), but in between these two characters "ns" there is definitely no word boundary. If both characters are non-word characters (e.g. "! ", exclamation mark followed by a space), then obviously the position between the two is not a word boundary either. The exclamation mark cannot be the end of a word (cannot occur anywhere within a word), and the space cannot be the start of a word (cannot occur anywhere within a word either, excluding compound words). If you are searching for "man" as a whole word within "our mansion", then XWF will provisionally/internally find "man", and then first check whether the character before the "m" is a word character. That character is a space. A space character is not a word character. Then it also checks whether "m" is a word character according to the alphabet. It is. That means there is a word boundary before the "m". Next XWF needs to check whether "n" and "s" are word characters. Both are. That means that after the "n" there is no word boundary. Hence the three letters "man" within "mansion" are not considered a whole word occurrence of "man".

 

The whole words only restriction of the Simultaneous Search is not applied to search hits that are not words according to the user's selected alphabet definition (checking only the first and the last character in the search hit). For example if you are searching for "LOL!!", then this cannot possibly be a whole word because the exclamation mark is not a letter and thus not contained in the defined alphabet (well, unless you have added the exclamation mark to it manually). However, the GREP word boundary indicator \b is still applied in such a case, for example to be able to search for certain data in between words, data that is not considered a word itself.

 

In addition to the alphabet of characters for the Latin 1 code page (for all Western European languages), an optional additional alphabet can be defined for letters of another language. If activated, it is used for searches in UTF-16 and searches in regional ANSI/OEM/IBM/ISO/Mac code pages with only 1 byte character such as for Cyrillic, Greek, Turkish, Arabic, Hebrew, Vietnamese, and various Central/Eastern/South Eastern European languages. The Cyrillic alphabet is predefined.

 

Suchrichtung: Bestimmen Sie, ob von vorne bis hinten oder von der aktuellen Position an ab- oder aufwärts gesucht werden soll.

 

Bedingung: Offset modulo x = y: Der Suchalgorithmus erfaßt nur Vorkommnisse an Offsets, die die genannte Bedingung erfüllen. Wenn Sie bspw. Daten suchen, von denen Sie wissen, daß sie an Position 10 eines Festplatten-Sektors stehen, geben Sie x=512, y=10 an. Wenn Sie DWORD-ausgerichtete Daten suchen, verwenden Sie x=4, y=0, um irrelevante Treffer auszuschließen.

 

Nur im Block suchen: Es wird nur derjenige Teil der Datei/des Datenträgers/des virtuellen Speichers durchsucht, der innerhalb des Blockes liegt.

 

In allen geöffneten Fenstern suchen: Die Suche wird der Reihe nach in allen in WinHex offenen Editierfenstern durchgeführt. Wird WinHex in einem Fenster fündig, kann die Suche danach im selben Fenster normal fortgesetzt werden (durch F3); zum nächsten Fenster geht WinHex mit der Funktion »Globale Suche fortsetzen« (F4) über. Wenn »Nur im Block suchen« aktiviert ist, wird in jedem Fenster nur der dort festgelegte Block durchsucht.

 

Fundstellen zählen (und auflisten): Die Anzahl der Vorkommnisse des gesuchten Texts/der gesuchten Hex-Werte in der Datei/auf dem Datenträger/im virtuellen Speicher wird ermittelt. Die Positionen der Vorkommnisse werden ggf. im Positions-Manager gespeichert, so daß sie zu einem späteren Zeitpunkt wiedergefunden und bearbeitet werden können.

 

Suche nach »Nicht-Treffern«: Unter »Hex-Werte suchen« können Sie einen Hex-Wert mit einem Ausrufungszeichen als Präfix angeben (z. B. !00), um WinHex das erste Byte mit einem davon abweichenden Wert finden zu lassen.

 

Optionen und Vorzüge der logischen Suche

 

GREP-Syntax: Nur verfügbar bei der Parallelen Suche. Reguläre Ausdrücke sind ein mächtiges Suchwerkzeug. Ein einziger regulärer Ausdruck kann viele verschiedene Wörter abdecken. Entweder werden alle Suchbegriffe als GREP-Ausdrücke interpretiert oder nur solche, denen Sie "grep:" voranstellen oder keine, abhängig vom Status des zugehörigen Kontrollkästchens. Es ist auch möglich, denselben Suchbegriffen gleichzeitig sowohl "case:" (s. o.) als auch "grep:" voranzustellen, in dieser Reihenfolge. Die folgenden Zeichen haben in regulären Ausdrücken eine besondere Bedeutung, wie unten erklärt: ( ) [ ] {| \ . # + ?. An Stellen, an denen diese besonderen Zeichen wörtlich zu verstehen sind, muß ihnen ein umgekehrter Schrägstrich (\) vorangestellt werden.

 

Der Oder-Operator (|) wird verwendet, um Alternativen zu formulieren. So kann man mit Auto(s|reifen) nach Autos oder Autoreifen suchen, Autoseifen wird hingegen nicht gefunden. Es wird also immer nach einer kompletten Zeichenkette gesucht, die vor, hinter, oder zwischen |-Zeichen steht. Die Wirkung von | wird nur durch runde Klammern begrenzt.

 

. und # sind Platzhalter (Joker-Zeichen): . paßt auf alle Zeichen, # paßt auf alle Ziffern. Weitere Zeichenmengen lassen sich innerhalb von eckigen Klammern angeben: [xyz] paßt auf die Zeichen x, y, und z. [^xyz] paßt auf alle Zeichen außer x, y, z. Auch Intervalle können angegebben werden: [a-z] paßt auf alle Kleinbuchstaben. [^a-z] paßt auf alle Zeichen außer Kleinbuchstaben. Die Auflistung darf mehrere einzelne Zeichen und Listen zugleich enthalten. Daher paßt [aceg-loq] auf die Zeichen a, c, e, g, h, i, j, k, l, o, und q. Alle Zeichen außer [, ], -, \ werden zwischen eckigen Klammern wörtlich interpretiert, auch die Platzhalter . und #.

 

\b steht für den Anfang oder das Ende eines Wortes, d. h. die Grenze zwischen einem Wort-Zeichen und einem Nicht-Wort-Zeichen. Welche Zeichen/Buchstaben als Wort-Zeichen gelten, ist in der parallelen Suche vom Benutzer frei definierbar. Der Anfang und das Ende einer Datei gelten auch als Wortgrenzen. \b wird nur am Anfang und/oder Ende eines Suchbegriffs unterstützt, und nicht zusammen mit |. Die Anker (\b, ^, $) funktionieren nur, wenn in Asservaten von Fällen gesucht wird, und nicht in Index-Suchen.

 

Byte-Werte, die ASCII-Zeichen entsprechen, die nicht bequem über die Tastatur erzeugbar sind, können in dezimaler oder hexadezimaler Schreibweise angegeben werden. Zum Beispiel sind \032 und \x20 äquivalent zum Leerzeichen im ASCII-Zeichensatz. Diese Art der Notation wird auch innerhalb von eckigen Klammern unterstützt. Z. B. deckt [\000-\x1f] alle nichtdruckbaren ASCII-Zeichen ab.

 

Multiplikatoren (*, + und ?) bestimmen, daß das/die vorangehende Zeichen mehr als einmal vorkommen können oder müssen (s. u.). Komplexes Beispiel: a(b|cd|e[f-h]i)*j paßt auf aj, abj, acdj, aefij, aegij, aehij, abcdj und abefij.

 

Innerhalb von eckigen Klammern werden die Zeichen .*+?{}()| nicht als besondere GREP-Zeichen, sondern wörtlich behandelt.

 

Kurzübersicht der unterstützen Syntax (alles andere wird wörtlich interpretiert)

.                                Ein Punkt steht für ein einzelnes beliebiges Zeichen.

#                                Eine Raute steht für ein einzelnes numerisches Zeichen [0-9].

\nnn                Ein Byte-Wert angegeben durch drei dezimale Ziffern (\000..\255).

\xnn                Ein Byte-Wert angegeben durch zwei hexadezimale Ziffern (\x00...\xFF). Z. B. \x0D\x0A = Zeilenendezeichen

\unnnn                Ein Unicode-Wert angegeben durch vier hexadezimale Ziffern. Entspricht je nach Codepage unterschiedlichen und unterschiedliche vielen Byte-Werten.

?                                Deckt 1 oder 0 Vorkommnisse des/r vorangehenden Zeichen(s) ab.

*                                Deckt eine beliebige Anzahl von Vorkommnissen des vorangehenden Zeichens ab, auch 0.

+                                Deckt eine beliebige Anzahl von Vorkommnissen des vorangehenden Zeichens außer 0 ab.

[XYZ]                Zeichen in eckigen Klammern decken ein beliebiges der darin angegebenen Zeichen ab.

[^XYZ]                Ein Zirkumflex am Anfang des geklammerten Ausdrucks bedeutet NICHT.

[A-Z]                Ein Bindestrich innerhalb von eckigen Klammern zeigt ein Intervall von Zeichen an.

\                                Bewirkt, daß das folgende besondere GREP-Zeichen wörtlich zu behandeln ist.

{X,Y}                Wiederholt das/die vorangehenden Zeichen X bis Y mal.

(ab)                                Verhält sich wie eine Klammerung in einem mathematischen Ausdruck. Gruppiert a und b für +, ?, *, |, und { }

a|b                                Verhält sich wie ein logisches ODER (a oder b).

\b                                Steht für eine Wortgrenze.

^                                Steht für den Anfang einer Datei.

$                                Steht für das logische oder physische Ende einer Datei, je nach Suchoptionen.

 

GREP-Beispiele

 

E-Mail-Adressen

[a-zA-Z0-9_\-\+\.]{1,20}@[a-zA-Z0-9\-\.]{2,20}\.[a-zA-Z]{2,7}

(Das + vor dem @ wird in Gmail-Adressen unterstützt.)

 

Internet-Adressen mit http://, https://, ftp://

[a-zA-Z]+://[a-zA-Z0-9/_\?$&=\-\.]+

 

Visa- und Mastercard-Kreditkartennummern

[^#a-z][45]###############[^#a-z]

[45]###-####-####-####

[45]### #### #### ####

(am besten über eine X-Tension mit dem Luhn-Algorithmus prüfen und ohne [^#a-z] suchen)

 

Überlappende Treffer erlauben: Wenn Sie mit GREP nach Suchtreffern variabler Länger suchen, können mehrere gültige Treffer an derselben Stelle entstehen. Wenn Sie z. B. nach E-Mail-Adressen suchen, und der Suchalgorithmus wird mit der Zeichenfolge "[email protected]" gefüttert, dann stellt er fest, daß die Zeichen ab dem "m" von "mail" auf den GREP-Ausdruck passen und vermerkt einen Treffer. Anschließend macht er beim "a" in "mail" weiter und stellt fest, daß [email protected] auch auf den GREP-Ausdruck paßt. Und [email protected] paßt auch, ebenso wie [email protected]. All dies könnten gültige E-Mail-Adressen sein. Damit liegt der Suchalgorithmus also richtig, aber i. d. R. möchte man solche zusätzlichen Treffer als Benutzer nicht sehen. Wenn Sie daher überlappende Treffer nicht erlauben, werden neue Treffer erst wieder nach dem "m" von ".com" gewertet. Überlappenden Treffer nicht zu erlauben, bedeutet, daß alle von einem Treffer abgedeckten Zeichen allein diesem Treffer zuordnet und keinem anderen Treffer mehr "gegönnt" werden.

 

Suchen-Menü

Optionen des Ersetzens

Technische Hinweise

 

 

Suchfenster, Umgebungssuche

 

Die Größe des Suchfensters bei der GREP-Suche beträgt standardmäßig 128 Bytes. Das bedeutet, es ist nicht garantiert, daß Sie mit einem GREP-Suchbegriff variabler Länge, d. h. unter Verwendung der Syntax-Features {nden können, die sich über mehr als 128 Bytes erstrecken. Sie können das Suchfenster verbreitern, wenn Sie mehr als das abdecken möchten.

 

Das Suchfenster ist z. B. für Umgebungssuchen (Kontextsuchen) relevant. Wenn Sie Dokumente suchen, in denen zwei Suchbegriff zugleich vorkommen, und zwar relativ nah beieinander, können Sie nach diesen Begriffen mit zwei GREP-Ausdrücken suchen und die maximale Entfernung, die zwischen ihnen erlaubt sein soll, als zweiten Parameter in den geschweiften Klammern angeben:

keyword1.{0,maxdistance}keyword2

keyword2.{plainmaxdistance}keyword1

Die benötigte Suchfensterbreite in Bytes (Annahme: Suche in einneeeeeeeeeeeeem 8-Bit-Zeichensatz) ist die Summe von maxdistance, Länge(keyword1) und Länge(keyword2).

 

Bitte beachten Sie, daß die bevorzugte Methode zum Auffinden von zwei Suchbegriffen nahe beieinander die NEAR-Kombination in der Suchbegriffsliste ist, die zur Verfügung steht, wenn zwei Suchbegriffe bereits mit einem logisch UND verknüpft sind, nachdem Sie separat voneinander gesucht wurden.