Encfs Dateinamen decrypten

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
#!/usr/bin/python

import string,sys,os

encfsin,encfsout= os.popen2("encfsctl decode .one " ,"w")

while (1):
  zeile = sys.stdin.readline()
  #print zeile
  gefunden = zeile.find("changed  <-?-> changed    ")
  if (gefunden >= 0):
    #print zeile[26:]
    encfsin.write(zeile[26:])
    encfsin.flush()
    #encfsin.close()
    decrypt=encfsout.readline()
    #encfsout.close()
    print "changed  <-?-> changed    " + zeile[26:].strip() +"="+ decrypt.strip()
  else:
    print zeile.strip()
  if (zeile == ""):
    break

Erklärung: Wenn unison einen Versionskonflikt entdeckt, dann fragt er den Anwender, was er tun soll. Das hat natürlich bei einem verschlüsselten Dateisystem den Nachteil, dass man erst umständlich jeden Namen mit dem encfsctl-Kommando wieder dechiffrieren muss, um eine Entscheidung treffen zu können. Dafür hat Jochen dieses Skript erdacht: es sucht aus der Logdatei, die unsion anlegt die Zeilen mit dem String "changed <-?-> changed " heraus, wodurch unison einen Versionskonflikt anzeigt, dechiffriert dann die Namen und gibt das Ganze bekömmlich aufbereitet wieder aus :)