Wie werden bitweise Operationen an Dateien in Linux ausgeführt?

8

Ich möchte einige bitweise Operationen (z. B. x oder zwei Dateien) für Dateien in Linux durchführen, und ich habe keine Ahnung, wie ich das machen kann. Gibt es einen Befehl dafür oder nicht?

jede Hilfe wird geschätzt.

    
Sina 31.07.2011, 11:06
quelle

3 Antworten

9

Sie können die Datei mit mmap abbilden, bitweise Operationen auf den zugeordneten Speicher anwenden und diese schließen.

Alternativ können Sie auch Chunks in einen Puffer lesen, die Operation auf den Puffer anwenden und den Puffer schreiben.

Hier ist ein Beispiel (C, nicht C ++; da alles außer den Fehlerbehandlungen dasselbe ist), das alle Bits invertiert:

%Vor%     
phihag 31.07.2011, 11:13
quelle
2

Eine schnelle Suche im Internet ergab Monolith , ein dediziertes Open-Source-Programm zum Zweck der XOR-Bearbeitung von zwei Dateien. Ich habe es gefunden, weil Bruce Schneier darüber gebloggt hat, und das scheint der Zweck zu sein legaler Natur.

    
Kerrek SB 31.07.2011 11:22
quelle
2

Dank "phihag" dient dieser Code zum Ausführen binärer Operationen an zwei Dateien.
Beispiel 1: Sie haben zwei Dateien und möchten diese beiden vergleichen, also tun Sie ein binäres XOR für diese.
Beispiel 2: Sie haben eine Datei mit jdownloader oder ähnlichem heruntergeladen und Sie haben den unvollendeten Download in einen anderen Ordner verschoben und der Download-Manager führt dann unfertige Teile weiter und erstellt eine andere Datei. Sie haben also zwei separate Dateien, die sich gegenseitig ergänzen können. Wenn Sie nun ein binäres ODER für diese beiden Dateien ausführen, haben Sie eine komplette Datei.

WARNUNG: Die größere Datei wird mit dem Operationsergebnis überschrieben.

%Vor%     
AshkanVZ 23.03.2012 06:00
quelle