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
Exemple #2
0
 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 }
             )
Exemple #4
0
 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
Exemple #6
0
 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
               })