Altere o LUKS UUID (sem o cryptsetup 1.2)

2

De acordo com o changelog cryptsetup (1.2.0):

Allow explicit UUID setting in luksFormat and allow change it later in luksUUID (--uuid parameter).

Meu problema é que o Debian estável atual (squeeze) usa 1.1.3 - Existe uma maneira de alterar o UUID do LUKS se eu não puder atualizar esta versão? (Talvez com outro programa)?

    
por vbence 29.07.2012 / 20:14

2 respostas

1

O formato luks parece bastante simples e é baseado em texto, por isso deve ser fácil de manipular. Eu escrevi isso em cerca de 10 minutos que deveria fazê-lo.

Faça o backup dos seus cabeçalhos luks primeiro!

#!/usr/bin/python
import sys
import uuid
import re

if __name__ == "__main__":
    haveuuid = False
    val = ""

    f = open(sys.argv[1], "r+")
    if len(sys.argv) > 2:
       if not re.match('[0-9a-f]{8}\-([0-9a-f]{4}\-){3}[0-9a-f]{12}', \
                                                        sys.argv[2]):
          print "Not a valid UUID"
          sys.exit(1)
       else:
          val = sys.argv[2]
    else:
       # Create a new UUID
       val = uuid.uuid1()
    # Be happy this is LUKS
    if f.read(4) == "LUKS":
        # This is the start position of the UUID field.
        f.seek((32*5)+8, 0)

        f.write(val.__str__())
        f.close()
    else:
        print "Not a luks image"

Execute com python /path/to/script.py /path/to/luks/device Opcionalmente, para especificar um UUID: python /path/to/script.py /path/to/luks/device abcdef01-abcd-abcd-abcd-abcdef012345

    
por 04.08.2012 / 20:59
0

Não sei se funciona, mas você pode inicializar em um liveCD com cryptsetup > = 1.2.0 e alterar o UUID do seu volume.

    
por 02.08.2012 / 16:30

Tags