def unlock_device(self, device, password): """Unlock the LUKS persistent device""" cleartext_name = 'TailsData_unlocked' cleartext_device = '/dev/mapper/' + cleartext_name if not os.path.exists(cleartext_device): args = [ "/usr/bin/sudo", "-n", "/sbin/cryptsetup", "luksOpen", "--tries", "1", device, cleartext_name ] proc = subprocess.Popen( args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) out, err = proc.communicate(password + "\n") out = unicode_to_utf8(out) err = unicode_to_utf8(err) if proc.returncode: logging.debug( "cryptsetup failed with return code %(returncode)s:\n%(stdout)s\n%(stderr)s" % { 'returncode': proc.returncode, 'stdout': out, 'stderr': err }) raise tailsgreeter.errors.WrongPassphraseError( _("cryptsetup failed with return code %(returncode)s:\n%(stdout)s\n%(stderr)s") % { 'returncode': proc.returncode, 'stdout': out, 'stderr': err } ) logging.debug("crytpsetup success") return cleartext_device
def unlock_device(self, device, password): """Unlock the LUKS persistent device""" cleartext_name = 'TailsData_unlocked' cleartext_device = '/dev/mapper/' + cleartext_name if not os.path.exists(cleartext_device): args = [ "/usr/bin/sudo", "-n", "/sbin/cryptsetup", "luksOpen", "--tries", "1", device, cleartext_name ] proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = proc.communicate(password + "\n") out = unicode_to_utf8(out) err = unicode_to_utf8(err) if proc.returncode: logging.debug( "cryptsetup failed with return code %(returncode)s:\n%(stdout)s\n%(stderr)s" % { 'returncode': proc.returncode, 'stdout': out, 'stderr': err }) raise tailsgreeter.errors.WrongPassphraseError( _("cryptsetup failed with return code %(returncode)s:\n%(stdout)s\n%(stderr)s" ) % { 'returncode': proc.returncode, 'stdout': out, 'stderr': err }) logging.debug("crytpsetup success") return cleartext_device
def setup_persistence(self, cleartext_device, readonly): args = [ "/usr/bin/sudo", "-n", "/usr/local/sbin/live-persist" ] if readonly: args.append('--read-only') else: args.append('--read-write') args.append('--log-file=/var/log/live-persist') args.append('activate') args.append(cleartext_device) proc = subprocess.Popen( args, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) out, err = proc.communicate() out = unicode_to_utf8(out) err = unicode_to_utf8(err) if proc.returncode: raise tailsgreeter.errors.LivePersistError( _("live-persist failed with return code %(returncode)s:\n%(stdout)s\n%(stderr)s") % { 'returncode': proc.returncode, 'stdout': out, 'stderr': err } )
def list_containers(self): """Returns a list of persistence containers we might want to unlock.""" proc = subprocess.Popen([ "/usr/bin/sudo", "-n", "/usr/local/sbin/live-persist", "--log-file=/var/log/live-persist", "--encryption=luks", "list", "TailsData" ], stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = proc.communicate() out = unicode_to_utf8(out) err = unicode_to_utf8(err) if proc.returncode: raise tailsgreeter.errors.LivePersistError( _("live-persist failed with return code %(returncode)s:\n%(stderr)s" ) % { 'returncode': proc.returncode, 'stderr': err }) containers = str.splitlines(out) logging.debug("found containers: %s", containers) return containers
def list_containers(self): """Returns a list of persistence containers we might want to unlock.""" proc = subprocess.Popen( [ "/usr/bin/sudo", "-n", "/usr/local/sbin/live-persist", "--log-file=/var/log/live-persist", "--encryption=luks", "list", "TailsData" ], stdout=subprocess.PIPE, stderr=subprocess.PIPE ) out, err = proc.communicate() out = unicode_to_utf8(out) err = unicode_to_utf8(err) if proc.returncode: raise tailsgreeter.errors.LivePersistError( _("live-persist failed with return code %(returncode)s:\n%(stderr)s") % { 'returncode': proc.returncode, 'stderr': err } ) containers = str.splitlines(out) logging.debug("found containers: %s", containers) return containers
def setup_persistence(self, cleartext_device, readonly): args = ["/usr/bin/sudo", "-n", "/usr/local/sbin/live-persist"] if readonly: args.append('--read-only') else: args.append('--read-write') args.append('--log-file=/var/log/live-persist') args.append('activate') args.append(cleartext_device) proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = proc.communicate() out = unicode_to_utf8(out) err = unicode_to_utf8(err) if proc.returncode: raise tailsgreeter.errors.LivePersistError( _("live-persist failed with return code %(returncode)s:\n%(stdout)s\n%(stderr)s" ) % { 'returncode': proc.returncode, 'stdout': out, 'stderr': err })