™N ¿m8cs6 kZkZkZ dZ dZdZdZdZdZdddd d d gZ ei i Z d Z dZd ZdZd „Z!d„Z&d„Z4d„ZKd„ZVd„ZŽd„Z°d„ZÐd„Zïeieid„Zd„Zedjoödeijp deijoeƒei dƒndeijo(e!d„eiƒe_dZne"eiƒdjoeƒnPe"eiƒdjoeeidƒneeideidƒndS(iiiiiisHKEY_CLASSES_ROOT\sHKEY_LOCAL_MACHINE\s HKEY_USERS\sHKEY_CURRENT_USER\sHKEY_CURRENT_CONFIG\sHKEY_DYN_DATA\scs t|d„tƒSdS(sLReturns: List containing matching root keys, or an empty list if no matches.csti||ƒd jS(Ni(sstringsfindsysx(sxsys/usr/local/tcc/bin/make_reg.pyssN(sfilterskeys VALID_KEYS(skeys/usr/local/tcc/bin/make_reg.pyscheckkeyscs/!"#titi|ddƒddƒSdS(s:Returns: s where backslash (\), then quote (") is escaped.s\s\\s"s\"N(sstringsreplacess(sss/usr/local/tcc/bin/make_reg.pys quote_string!scs‰&'(t}*|tdjo|tp|tp|to -d}n..|to/dt|tƒd}n1|SdS(s3Returns: Name for the keyvalue, or None if no name.ss@s"N(sNonesnamesreglistsREG_NAMEs REG_OLDVALsREG_VALsREG_TYPEs quote_string(sreglistsnames/usr/local/tcc/bin/make_reg.pysgetname&s 5 csÊ49:dddd};ti||ƒ}=| o >dSn@y\Ati|idƒdƒ}Bti|idƒƒ}C|d @oD|d }nWnEFdSnXH||jSd S( sãValid dwords are of the following format: '0xhexval (decval)', where: hexval is an 8 digit hex number decval is the decimal equivalent Windows/RegView use lowercase letters for 0xa through 0xf. s\A0x(?Ps[a-f0-9]is)\ \((?P-?\d+)\)\Zishexnumisdecnumi€lN( sdwordrexsresmatchsssmsstringsatolsgroupshexvalsdecval(sssdwordrexsmshexvalsdecvals/usr/local/tcc/bin/make_reg.pysisdword4s   cs&KPQd}Sti||ƒSdS(sÄValid binary datum are of the following format: 'aa aa aa '(ad infinitum), where: aa is an 8 bit hex number Not that we can't tell the difference between an empty binary and an empty string. s+\A(([a-f0-9][a-f0-9] )*[a-f0-9][a-f0-9])?\ZN(shexrexsresmatchss(ssshexrexs/usr/local/tcc/bin/make_reg.pysishexKs cs V`ac|tdjoyg|t|t<h|tdjot|tƒ p |tdjot|tƒ ojtdtt fƒnn€l|tdjot omn^n|tdjoIqt|tƒo rd}ntst |tƒot|tƒo td}nBu|tdjo|tddgjo wd}n yd}~|t|jo|t o’|djo €d}n ‚|}ƒtd tt |t||fƒ…||t<‡|t  o |djoˆtd tt fƒnnn‹|Sd S( sYReturns: reglist that does not have the miscellaneous discrepancies from RegView's reg-diff format. Types are resolved as follows: Orig Type: Detected Hex DWord String Empty H H(S) S(H) Hex H H H(S) DWord D(S) D D(S) Unknown S S S sAddedsBinarysDWORDs5%s(%i): Added value is of invalid type! CHECK ME!!! sStringsChangedssunknowns:%s(%i): Regview used type %s for type %s -- Using type %s sA%s(%i): Empty name assigned non-String type -- Using type String N(sreglistsREG_OPs REG_OLDVALsREG_VALsREG_TYPEsishexsisdwordswarns inputnamescurlines string_typingsregtypeslensREG_NAMEstemp(sreglistsregtypestemps/usr/local/tcc/bin/make_reg.pys rv_bugfixVs2 I % +    $ #csaŽ‘“•t|tjoR–d|t}—|ta˜t|tƒ o™tdttfƒnn ›d}t|ƒ}ž| o Ÿ|Sn¡t |ƒ}¤|t djo*¥dt i t i|tƒdƒ}nV¦|t djo&§dt i|tƒd d }n©d t|tƒd }«|d ||f}­|Sd S(sNReturns: string containing the registry file format generated from reglist. s [%s] s%s(%i): Invalid key ssBinaryshex:s,sDWORDsdword:iis"s%s=%s N(sPrevKeysreglistsREG_KEYsretscheckkeyswarns inputnamescurlinesgetnamesnames rv_bugfixsREG_TYPEsstringsjoinssplitsREG_VALsvalues quote_string(sreglistsretsnamesvalues/usr/local/tcc/bin/make_reg.pys gen_reglineŽs&    *&csQ°±²titi|ƒdƒ}³d}µt|ƒdjoì·|dd|d<¸|d d |d <ºt|ƒdjo»tdtt fƒn¾|t ddgjo¿t |ƒ}n^Á|t d jo+Ãtd tt t |ƒ|t fƒnÇtd tt |t fƒnËtd tt fƒÍ|Sd S(s<Returns: regedit version of Regview's reg-diff string input.s", "siiis.%s(%i): Strange registry line -- Please check sChangedsAddedsDeleteds%s(%i): Deleted value %s (%s) s'%s(%i): Unknown registry operation: %s s!%s(%i): Incomplete registry line N(sstringssplitsstripsinputsregparamsretslenswarns inputnamescurlinesREG_OPs gen_reglinesgetnamesREG_KEY(sinputsregparamsrets/usr/local/tcc/bin/make_reg.pysparse_diffline°s +"cs'ÐÒÓÕ|iƒ}Øddg}ÚxOÚ|oti|ƒ|djo*Û|d=ÜtdaÝ|iƒ}q-Wß|oàtdtƒnãx{ã|djojäti|ƒdjo1åt |ƒ}æ|oç|i |ƒnnê|iƒ}ëtdaq¡WìdSdS(sSParse file object Regview reg-diff file inf into a Windows '95 registry file outf.s>Status, Key, Value Name, Ori. Value Data, New Value Data, Types>--------------------------------------------------------------iis)%s: Missing or incomplete RegView header sN( sinfsreadlinesinputs DIFF_HEADERsstringsstripscurlineswarns inputnamesparse_difflinesoutputsoutfswrite(sinfsoutfsinputs DIFF_HEADERsoutputs/usr/local/tcc/bin/make_reg.pys parsediffÐs($    csïðòt|ƒttiƒtdƒfjoótd‚nõt|ƒttiƒtdƒfjoötd‚nøt|ƒtdƒjoùt|dƒ}nût|ƒtdƒjoüt|dƒ}nþ|iaÿ|i dƒt ||ƒdSdS(Nss inf should be a file or filenames!outf should be a file or filenamesrswbs REGEDIT4 ( stypesinfssyssstdins TypeErrorsoutfsopensnames inputnameswrites parsediff(sinfsoutfs/usr/local/tcc/bin/make_reg.pys difftoregïs++ cs!dtidGH dSdS(NsÀUsage: %s [-s] [(input file) [(outputfile)] -s -- Enable string retyping. If not specified strings will not be retyped, even if the data matches the format of another data type. (input file) -- A RegView registry diff file. Defaults to stdin if not specified. (output file) -- File to put Windows registry in. Defaults to stdout if not specified.i(ssyssargv(s/usr/local/tcc/bin/make_reg.pysshowhelpss__main__s-hs--helps-scs |djS(Ns-s(sx(sxs/usr/local/tcc/bin/make_reg.pyssN(#ssyssstringsresREG_OPsREG_KEYsREG_NAMEs REG_OLDVALsREG_VALsREG_TYPEs VALID_KEYSsstderrswriteswarnsPrevKeyscurlines inputnames string_typingscheckkeys quote_stringsgetnamesisdwordsishexs rv_bugfixs gen_reglinesparse_difflines parsediffsstdinsstdouts difftoregsshowhelps__name__sargvsexitsfilterslen(s/usr/local/tcc/bin/make_reg.pys? sF               8 "  #