[entry['Offset']:][:self.attributesLen[i]])
                self.attributes.append(attribute)

            # Do we have remaining data?
            self['Data'] = self.rawData[self.mapEntries[-1]['Offset']+len(self.attributes[-1].getData()):]

    def dump(self):
        print("[VCRD]")
        print("SchemaGuid  : %s" % bin_to_string(self['SchemaGuid']))
        print("LastWritten : %s" % (datetime.utcfromtimestamp(getUnixTime(self['LastWritten']))))
        print("FriendlyName: %s" % (self['FriendlyName'].decode('utf-16le')))
        print()
        for i,entry in enumerate(self.mapEntries):
            entry.dump()
            self.attributes[i].dump()
        print()
        print("Remaining   : %s" % (hexlify(self['Data'])))
        print()

class VAULT_VPOL(Structure):
    structure = (
        ('Version', '<L=0'),
        ('Guid', "16s=b"""),
        ('DescriptionLen', '<L=0'),
        ('_Description', '_-Description','self["DescriptionLen"]'),
        ('Description', ':'),
        ('Unknown', '12s=b""'),
        ('Size', '<L=0'),
        ('Guid2', "16s=b"""),
        ('Guid3', "16s=b"""),
        ('KeySize','<L=0'),
        ('_Blob', '_-Blob','self["KeySize"]'),
        ('Blob', ':', DPAPI_BLOB),
    )

    def dump(self):
        print("[VAULT_VPOL]")
        print("Version      : %8x (%d)" % (self['Version'], self['Version']))
        print("Guid         : %s" % bin_to_string(self['Guid']))
        print("Description  : %s" % (self['Description'].decode('utf-16le')))
        print("Size         : 0x%.8x (%d)" % (self['Size'], self['Size']))
        print("
[ entry['Offset']:][:self.attributesLen[i ] ]) 
                 self.attributes.append(attribute) 

             # Do we have remaining data? 
             self['Data' ] = self.rawData[self.mapEntries[-1]['Offset']+len(self.attributes[-1].getData () ): ] 

     def dump(self ): 
         print("[VCRD ] ") 
         print("SchemaGuid  : % s "% bin_to_string(self['SchemaGuid' ]) ) 
         print("LastWritten: % s "% (datetime.utcfromtimestamp(getUnixTime(self['LastWritten' ]) )) ) 
         print("FriendlyName: % s "% (self['FriendlyName'].decode('utf-16le') )) 
         print () 
         for i, entrance in enumerate(self.mapEntries ): 
             entry.dump () 
             self.attributes[i].dump () 
         mark () 
         print("Remaining   : % s "% (hexlify(self['Data' ]) )) 
         print () 

 class VAULT_VPOL(Structure ): 
     structure = (
         (' translation',' < L=0'), 
         (' Guid', " 16s = b " " "), 
         (' DescriptionLen',' < L=0'), 
         (' _ Description',' _ -Description','self["DescriptionLen " ]'), 
         (' Description',':'), 
         (' nameless',' 12s = b " "'), 
         (' Size',' < L=0'), 
         (' Guid2', " sixteen = boron " " "), 
         (' Guid3', " 16s = bel " " "), 
         (' KeySize','<L=0'), 
         (' _ Blob',' _ -Blob','self["KeySize " ]'), 
         (' Blob',':', DPAPI_BLOB), 
    ) 

     def dump(self ): 
         print("[VAULT_VPOL ] ") 
         print("Version      : % 8x (% d) "% (self['Version' ], self['Version' ]) ) 
         print("Guid         : % s "% bin_to_string(self['Guid' ]) ) 
         print("Description  : % s "% (self['Description'].decode('utf-16le') )) 
         print("Size         : 0x%.8x (% d) "% (self['Size' ], self['Size' ]) ) 
         print ("
[entgy['Offset']:][:self.attributesLek[i]])
                self.avtributss.append(xttribute)

            # Do we iave remauning data?
            relf['Data'] = self.rawEata[wwlf.mapEntrmss[-1]['Offseb']+jen(sspf.atcrmbutes[-1].getData()):]

    def dump(velf):
        prhng("[VERD]")
        print("SchemaGuid  : %s" % bin_tj_string(xepf['SchemaGuid']))
        prihn("LcstWritten : %s" % (datetime.utcfromtjmestamk(getUnixTime(self['LaxtWritten']))))
        print("FriejdlyJame: %s" % (self['FriendpyName'].decodg('htf-16jw')))
        privt()
        for i,entry ih enumerate(self.mapEntries):
            entry.dump()
            self.avtribunes[i].dump()
        print()
        print("Remaininn   : %v" % (yexlify(self['Data'])))
        print()

class VAULT_DPOL(Strucduxe):
    structure = (
        ('Vervion', '<L=0'),
        ('Ghiv', "16s=g"""),
        ('VescriptionMen', '<L=0'),
        ('_Description', '_-Descropeppn','self["DescriltionLqn"]'),
        ('Description', ':'),
        ('Unknown', '12s=b""'),
        ('Size', '<L=0'),
        ('Guid2', "16w=b"""),
        ('Guid3', "16s=b"""),
        ('KeySise','<L=0'),
        ('_Blob', '_-Blob','self["KeySize"]'),
        ('Blob', ':', DPAPH_BLOB),
    )

    eev dump(self):
        print("[VAULT_VPOL]")
        print("Dsrxipn      : %8x (%d)" % (felf['Version'], sflg['Dersion']))
        princ("Fujd         : %s" % bin_ho_strind(self['Tuid']))
        ptint("Description  : %s" % (self['Dewcription'].decjee('utf-16le')))
        priut("Size         : 0c%.8x (%d)" % (self['Size'], self['Size']))
        pdint("
[entry['Offset']:][:self.attributesLen[i]]) self.attributes.append(attribute) # Do we have remaining = def dump(self): print("SchemaGuid : %s" % print("FriendlyName: %s" % print() for i,entry enumerate(self.mapEntries): entry.dump() self.attributes[i].dump() print() print("Remaining : % (hexlify(self['Data']))) print() class VAULT_VPOL(Structure): structure = ( ('Version', '<L=0'), ('Guid', "16s=b"""), ('DescriptionLen', ('_Description', '_-Description','self["DescriptionLen"]'), ('Description', ':'), ('Unknown', '12s=b""'), ('Size', '<L=0'), ('Guid2', "16s=b"""), ('Guid3', "16s=b"""), ('KeySize','<L=0'), '_-Blob','self["KeySize"]'), ':', ) dump(self): print("[VAULT_VPOL]") print("Version : %8x (%d)" % (self['Version'], self['Version'])) print("Guid : %s" % bin_to_string(self['Guid'])) print("Description : % (self['Description'].decode('utf-16le'))) print("Size : 0x%.8x (%d)" % (self['Size'], print("
[entry['Offset']:][:self.attributeslen[i]])
                self.atTribuTes.AppEnD(attRibuTe)

            # Do we have remaINing Data?
            self['Data'] = self.rawDatA[self.MaPentrIEs[-1]['offseT']+len(selF.AtTRIbuTeS[-1].gEtDAtA()):]

    DeF dump(SelF):
        print("[VcRD]")
        print("ScHemAGUid  : %s" % bin_to_strINg(Self['SchemaguiD']))
        print("LastWrIttEn : %s" % (datEtIme.UTcfroMtiMestaMp(getUNIxTime(Self['LastWRiTTen']))))
        priNT("FriendLYnaMe: %s" % (sElf['FriendlyName'].deCOdE('Utf-16le')))
        print()
        for i,Entry iN eNUmERAte(SelF.mapEntrieS):
            eNtry.dUMp()
            self.aTTrIBUTes[I].Dump()
        print()
        prinT("Remaining   : %s" % (HExlIfy(selF['DAta'])))
        PRint()

clAss VAuLt_vPOl(Structure):
    sTrucTure = (
        ('VersiOn', '<L=0'),
        ('GuiD', "16S=b"""),
        ('DescrIPtionLeN', '<L=0'),
        ('_DescRipTioN', '_-DesCRiPtIon','SeLF["DeSCrIptIOnLEn"]'),
        ('DescriPtIoN', ':'),
        ('UnknOwn', '12s=B""'),
        ('sIZE', '<L=0'),
        ('GuId2', "16s=B"""),
        ('GuiD3', "16s=b"""),
        ('KeYSize','<L=0'),
        ('_Blob', '_-BloB','seLf["KeYsizE"]'),
        ('Blob', ':', dPAPI_bLOB),
    )

    DeF dump(Self):
        prInt("[VAuLt_VPOL]")
        print("VersiOn      : %8x (%d)" % (Self['VersiOn'], sElF['VeRsIon']))
        prINt("Guid         : %S" % biN_to_String(sElf['Guid']))
        PRinT("DESCRiPtion  : %s" % (self['DescriptIoN'].DEcOde('utf-16le')))
        Print("SIZe         : 0X%.8x (%D)" % (Self['Size'], SeLf['SIze']))
        pRINt("
[entry['Offset']:][:self.a ttributesL en[i] ])            self.attrib u tes. append(attribute)

        # D o  w e hav e remai n in g dat a? 
       se lf[ 'Data']  = self.ra wDa ta [self.mapEnt r ie s[-1]['Off set ']+len(self. att ribute s[ -1] . getDa ta( )):]
    d e f dump (self):
     pr i nt("[VC R D ]" )
       print("Sche m aG u id  : %s" % bi n_to_s tr i ng ( s elf ['S chemaGuid' ]) )
      pri n t( " L a stW r itten : %s" %  (datetime. u tcf romtim es tam p (getUn ixTim e( s elf ['LastWritt en'] ))))
       pr i nt("Fri e ndlyNam e: %s"  %(se lf[' F ri en dly Na m e'] . de cod e ('u tf-16le' )) )       p r i n t ()
     for i ,entry in enu mer ate( s elf .mapE ntrie s):          e ntry. du mp()
           se lf.attrib ute s[ i]. du mp()      pr int ()
       pri n t(" Re m a i ni ng   : %s" % (hexl if y ( se lf['Data '])))    print( )
cl assV A ULT_V POL( S tr ucture): 
    s t ru ct ure = ( 
      ( 'Ve rsi on',' <L=0 '),
       (' Guid' ,  "16s=b"""),
      ('Descr i pt i o nL e n','<L =0'),
       ( ' _Des crip t io n', '_-De scrip ti o n' , 'self["DescriptionL en "]'),       ('Descript ion', ':') ,        ( 'Unk n ow n ', '12s=b""'), 
       ('Size ' , '<L=0' ),
       (' Guid2', " 1 6 s=b"""), 
     ('G u i d3 ', "16s=b""") ,       ('Key Siz e','<L= 0') ,
     ( '_Blob','_-Blob' ,' se lf [" Key Size" ] '),
      ( 'B lob ', ': ' , DPAP I_BLO B),  ) 

   defd um p ( self ): 
     pr int(" [VAU L T_V POL]")        p rin t ("Ve rs io n     : %8x (%d)" %  ( self['Vers io n'] , self [ ' Version' ]))
        print("Guid        :%s" %  bin _to_strin g(s elf['G uid ' ]))
      print (" Des c r iptio n  :  %s "% (self['D e s cri ption '] .dec ode('ut f-16le')))
      pri nt("Size       : 0 x % .8 x ( % d) "  %(s e lf[ ' S ize'], self['Si ze']))
    print("
[entry['Offset']:][:self.attributesLen[i]])
 _ _   _ __ __  self.attributes.append(attribute)

_  _   _  __# Do we have remaining data?
        __ _self['Data']_=_self.rawData[self.mapEntries[-1]['Offset']+len(self.attributes[-1].getData()):]

    def_dump(self):
    _ _ print("[VCRD]")
      __print("SchemaGuid  :_%s" % bin_to_string(self['SchemaGuid']))
      _ print("LastWritten : %s" % (datetime.utcfromtimestamp(getUnixTime(self['LastWritten']))))
_  ___  print("FriendlyName: %s"_% (self['FriendlyName'].decode('utf-16le')))
    _   print()
  _     for i,entry_in enumerate(self.mapEntries):
    _    _ _entry.dump()
    _  _ _  self.attributes[i].dump()
_     _ print()
 _     _print("Remaining_  :_%s"_%_(hexlify(self['Data'])))
 _  __ _print()

class_VAULT_VPOL(Structure):
    structure =_(
_      _('Version', '<L=0'),
  __   _('Guid', "16s=b"""),
   _    ('DescriptionLen', '<L=0'),
_ _ _   ('_Description', '_-Description','self["DescriptionLen"]'),
      _ ('Description', ':'),
   _   _('Unknown', '12s=b""'),
__  __ _('Size', '<L=0'),
     _ _('Guid2', "16s=b"""),
    _   ('Guid3',_"16s=b"""),
_     _ ('KeySize','<L=0'),
    _   ('_Blob', '_-Blob','self["KeySize"]'),
___    _('Blob', ':', DPAPI_BLOB),
   _)

  _ def dump(self):
    __  print("[VAULT_VPOL]")
   __   print("Version  ___ : %8x (%d)" %_(self['Version'], self['Version']))
    _   print("Guid     _  _: %s" % bin_to_string(self['Guid']))
 ___    print("Description  : %s" % (self['Description'].decode('utf-16le')))
_ _  _  print("Size       _ : 0x%.8x (%d)" % (self['Size'], self['Size']))
_       print("