Kopiervorgang abfangen

cheh

Mitglied
Hey Leute,

wisst ihr eine Möglichkeit, wie ich mit Java in Windows den kopiervorgang einer Datei in einen bestimmten Ordner abfangen kann ?
Ich würde mein Programm gerne so in Windows integrieren, dass ein Event/o.Ä. ausgelöst wird, wenn der User eine Datei in den Ordner kopiert, bzw. dort eine erzeugt. Dann soll mein Programm die Datei verschlüsseln und erst DANACH in den Ordner lassen.

Mitbekommen, dass eine Datei erzeugt wurde kann ich, das ist ja mit Java 7 nicht mehr schwer das wird hier ja auch sehr schön gezeigt.

Leider ist die Datei ja dann schon vorhanden, wenn das Event ausgelöst wird und dann ist es zu spät.

Hintergrund ist, dass ich gerne ein Programm hätte, was alle Dateien die ich in meinen DropBox ordner (o.Ä.) kopiere verschlüsseln soll, bevor sie auf den Server gelangen. Also auch bevor sie in den Ordner gelangen.
Und da ich das gerne selber könnte möchte ich mein Programm selber schreiben und nicht (falls es die überhaupt gibt) eine Freeware oder so benutzen ...


Habt Ihr eine Idee oder einen Tipp ?

Danke schon einmal 🙂
 
Nein, da hast du mit Java schlechte Karten. Das ist alles sehr Betriebssystem nah, da wirst du so ohne weiteres nicht rankommen, wenn sich das Betriebssystem da überhaupt reinpfuschen lässt...

Seit Java7 gibts nen FileWatcher, der dich benachrichtigen kann wenn Dateien erstellt, gelöscht oder modifiziert wurden. Aber das wird dir bei deinem Problem nicht soviel helfen.
 
Lassen sich in Windows nicht ohnehin ganze Ordner per User verschlüsseln? Warum der Umweg über eine App?
 
Alternative könnte man doch auch einfach den Ordner beobachten.
Kommt ein neues File hinzu, wird es verschlüsselt und anschliessend in etwa so deleted

Java:
        File file = new File("c:/output.txt");
        
        //Zuvor alle mit dem File assoziierten Streams schließen...
        
        if(file.exists()){
            file.delete();
        }
 
danke 🙂

werde mir etwas überlegen ..

Das man Widows Ordner verschlüsseln lassen kann wusste ich nicht, danke für den Tipp 🙂
 
Lassen sich in Windows nicht ohnehin ganze Ordner per User verschlüsseln? Warum der Umweg über eine App?

Und wie greift man auf die verschlüsselten Daten zu? Solange man eingelogt ist erscheinen die Daten ja unverschlüsselt...und dann läd auch Dropbox die Dateien unverschlüsselt hoch.

Unter Linux könnte man einfach encfs verwenden.
 
Wie wäre folgender USE CASE1: Änderung von Datei durch User

User kopiert seine Datei in Ordner A

Die Anwendung(Filewatcher) erkennt das verschlüsselt die Datei und kopiert sie in Ordner B.

Ordner B wird mit deinem Clouddienst synchronisiert.


Und USE CASE2: Änderung von Datei durch Clouddienst.

Der Clouddienst hat eine Änderung und synchronisiert Ordner B.

Die Anwendung(Filewatcher) erkennt, das eine nicht von ihr ausgelöste Änderung vorliegt.

Die geänderten Dateien werden entschlüsselt und in Ordner A abgelegt.
 
ich schlag mal auf eine etwas andere art dazwischen ...

da ich dropbox selbst nicht kenne ... aber sehr wohl weis das es software gibt die netz-dienste als laufwerke einbinden können *sowas wie FTP-2-drive oder wie das heißt* könnte man doch dort ansetzen ...

so wie ich das rausgelesen habe hast du eine anwendung welche dir dein dropbox account als laufwerk / ordnerstruktur in dein file-system einbindet ...

eine möglichkeit *wobei ich nicht ganz sicher bin ob das mit java und einigen jni/jna möglich ist* wäre doch jetzt anstatt die offizielle app zu verwenden eine eigene zu schreiben welche die daten beim upload verschlüsselt ...

eine andere : im dropbox-client einen proxy einstellen , diesen als java-app implementieren und dann so den netzwerkverkehr manipulieren ...

aber mit java dierekt in datei-operationen von windows eingreifen ist schlicht unmöglich ...
um das zu erreichen müsste deine app sämtliche DLLs die daren beteiligt sind hooken , die calls überwachen und ggf dazwischen hauen ... ganz zu schweigen von der ansteuerung der geräte-treiber ...

und bevor du dir so einen aufwand machst sollte es einfacher sein ein virtuelles drive mit entsprechendem driver über java zu managen ...
 
Wie wäre folgender USE CASE1: Änderung von Datei durch User

User kopiert seine Datei in Ordner A

Die Anwendung(Filewatcher) erkennt das verschlüsselt die Datei und kopiert sie in Ordner B.

Ordner B wird mit deinem Clouddienst synchronisiert.


Und USE CASE2: Änderung von Datei durch Clouddienst.

Der Clouddienst hat eine Änderung und synchronisiert Ordner B.

Die Anwendung(Filewatcher) erkennt, das eine nicht von ihr ausgelöste Änderung vorliegt.

Die geänderten Dateien werden entschlüsselt und in Ordner A abgelegt.

so habe ich jetzt auch vor das zu machen 🙂
kann euch ja das ergebnis hinterher zeigen ..




ich schlag mal auf eine etwas andere art dazwischen ...

da ich dropbox selbst nicht kenne ... aber sehr wohl weis das es software gibt die netz-dienste als laufwerke einbinden können *sowas wie FTP-2-drive oder wie das heißt* könnte man doch dort ansetzen ...

so wie ich das rausgelesen habe hast du eine anwendung welche dir dein dropbox account als laufwerk / ordnerstruktur in dein file-system einbindet ...

eine möglichkeit *wobei ich nicht ganz sicher bin ob das mit java und einigen jni/jna möglich ist* wäre doch jetzt anstatt die offizielle app zu verwenden eine eigene zu schreiben welche die daten beim upload verschlüsselt ...

eine andere : im dropbox-client einen proxy einstellen , diesen als java-app implementieren und dann so den netzwerkverkehr manipulieren ...

aber mit java dierekt in datei-operationen von windows eingreifen ist schlicht unmöglich ...
um das zu erreichen müsste deine app sämtliche DLLs die daren beteiligt sind hooken , die calls überwachen und ggf dazwischen hauen ... ganz zu schweigen von der ansteuerung der geräte-treiber ...

und bevor du dir so einen aufwand machst sollte es einfacher sein ein virtuelles drive mit entsprechendem driver über java zu managen ...

hm.. wobei das hier hört sich auch interessant an. Ich muss mal schauen wo ich nachlesen kann wie soetwas mit proxys ect. funktioniert ...
hat jemand zu soetwas einen tutorial/link/sonstiges ?
 

Zurück
Oben