@@ -2089,9 +2089,17 @@ def ReadFileHeaderDataWithContent(fp, listonly=False, uncompress=True, skipcheck
20892089 fjsoncontent = {}
20902090 fprejsoncontent = fp .read (fjsonsize ).decode ("UTF-8" )
20912091 if (len (fjsoncontent ) > 0 ):
2092- fjsoncontent = json .loads (fprejsoncontent .decode ("UTF-8" ))
2092+ try :
2093+ fjsoncontent = json .loads (base64 .b64decode (fprejsoncontent ).decode ("UTF-8" ))
2094+ except (binascii .Error , json .decoder .JSONDecodeError , UnicodeDecodeError ):
2095+ try :
2096+ fjsoncontent = json .loads (fprejsoncontent .decode ("UTF-8" ))
2097+ except (binascii .Error , json .decoder .JSONDecodeError , UnicodeDecodeError ):
2098+ fprejsoncontent = ""
2099+ fjsoncontent = {}
20932100 else :
20942101 fprejsoncontent = ""
2102+ fjsoncontent = {}
20952103 fp .seek (len (delimiter ), 1 )
20962104 HeaderOut .append (fjsoncontent )
20972105 newfcs = GetHeaderChecksum (
@@ -2220,9 +2228,17 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
22202228 fjsoncontent = {}
22212229 fprejsoncontent = fp .read (fjsonsize ).decode ("UTF-8" )
22222230 if (len (fjsoncontent ) > 0 ):
2223- fjsoncontent = json .loads (fprejsoncontent .decode ("UTF-8" ))
2231+ try :
2232+ fjsoncontent = json .loads (base64 .b64decode (fprejsoncontent ).decode ("UTF-8" ))
2233+ except (binascii .Error , json .decoder .JSONDecodeError , UnicodeDecodeError ):
2234+ try :
2235+ fjsoncontent = json .loads (fprejsoncontent .decode ("UTF-8" ))
2236+ except (binascii .Error , json .decoder .JSONDecodeError , UnicodeDecodeError ):
2237+ fprejsoncontent = ""
2238+ fjsoncontent = {}
22242239 else :
22252240 fprejsoncontent = ""
2241+ fjsoncontent = {}
22262242 fp .seek (len (delimiter ), 1 )
22272243 fcs = HeaderOut [- 2 ].lower ()
22282244 fccs = HeaderOut [- 1 ].lower ()
@@ -2293,7 +2309,7 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
22932309 if (not contentasfile ):
22942310 fcontents = fcontents .read ()
22952311 outlist = {'fheadersize' : fheadsize , 'fhstart' : fheaderstart , 'fhend' : fhend , 'ftype' : ftype , 'fencoding' : fencoding , 'fcencoding' : fcencoding , 'fname' : fname , 'fbasedir' : fbasedir , 'flinkname' : flinkname , 'fsize' : fsize , 'fatime' : fatime , 'fmtime' : fmtime , 'fctime' : fctime , 'fbtime' : fbtime , 'fmode' : fmode , 'fchmode' : fchmode , 'ftypemod' : ftypemod , 'fwinattributes' : fwinattributes , 'fcompression' : fcompression , 'fcsize' : fcsize , 'fuid' : fuid , 'funame' : funame , 'fgid' : fgid , 'fgname' : fgname , 'finode' : finode , 'flinkcount' : flinkcount ,
2296- 'fdev' : fdev , 'fminor' : fdev_minor , 'fmajor' : fdev_major , 'fseeknextfile' : fseeknextfile , 'fheaderchecksumtype' : HeaderOut [- 4 ], 'fcontentchecksumtype' : HeaderOut [- 3 ], 'fnumfields' : fnumfields + 2 , 'frawheader' : HeaderOut , 'fextrafields' : fextrafields , 'fextrafieldsize' : fextrasize , 'fextralist' : fextrafieldslist , 'fheaderchecksum' : fcs , 'fcontentchecksum' : fccs , 'fhascontents' : pyhascontents , 'fcontentstart' : fcontentstart , 'fcontentend' : fcontentend , 'fcontentasfile' : contentasfile , 'fcontents' : fcontents }
2312+ 'fdev' : fdev , 'fminor' : fdev_minor , 'fmajor' : fdev_major , 'fseeknextfile' : fseeknextfile , 'fheaderchecksumtype' : HeaderOut [- 4 ], 'fcontentchecksumtype' : HeaderOut [- 3 ], 'fnumfields' : fnumfields + 2 , 'frawheader' : HeaderOut , 'fextrafields' : fextrafields , 'fextrafieldsize' : fextrasize , 'fextralist' : fextrafieldslist , 'jsondata' : fjsoncontent , ' fheaderchecksum' : fcs , 'fcontentchecksum' : fccs , 'fhascontents' : pyhascontents , 'fcontentstart' : fcontentstart , 'fcontentend' : fcontentend , 'fcontentasfile' : contentasfile , 'fcontents' : fcontents }
22972313 return outlist
22982314
22992315
@@ -2362,9 +2378,17 @@ def ReadFileHeaderDataWithContentToList(fp, listonly=False, contentasfile=False,
23622378 fjsoncontent = {}
23632379 fprejsoncontent = fp .read (fjsonsize ).decode ("UTF-8" )
23642380 if (len (fjsoncontent ) > 0 ):
2365- fjsoncontent = json .loads (fprejsoncontent .decode ("UTF-8" ))
2381+ try :
2382+ fjsoncontent = json .loads (base64 .b64decode (fprejsoncontent ).decode ("UTF-8" ))
2383+ except (binascii .Error , json .decoder .JSONDecodeError , UnicodeDecodeError ):
2384+ try :
2385+ fjsoncontent = json .loads (fprejsoncontent .decode ("UTF-8" ))
2386+ except (binascii .Error , json .decoder .JSONDecodeError , UnicodeDecodeError ):
2387+ fprejsoncontent = ""
2388+ fjsoncontent = ""
23662389 else :
23672390 fprejsoncontent = ""
2391+ fjsoncontent = ""
23682392 fp .seek (len (delimiter ), 1 )
23692393 fcs = HeaderOut [- 2 ].lower ()
23702394 fccs = HeaderOut [- 1 ].lower ()
@@ -3359,11 +3383,17 @@ def AppendFileHeaderWithContent(fp, filevalues=[], extradata=[], filecontent="",
33593383 tmpoutlen = len (filevalues ) + len (extradata ) + 7
33603384 tmpoutlenhex = format (tmpoutlen , 'x' ).lower ()
33613385 tmpoutlist = filevalues
3362- fprejsoncontent = {}
3386+ fprejsoncontent = {'testing' : "test" }
33633387 if (len (fprejsoncontent ) > 0 ):
3364- fjsoncontent = json .dumps (fprejsoncontent , separators = (',' , ':' ))
3388+ try :
3389+ fjsoncontent = base64 .b64encode (json .dumps (fprejsoncontent ).encode ("UTF-8" ))
3390+ except (binascii .Error , json .decoder .JSONDecodeError , UnicodeDecodeError ):
3391+ try :
3392+ fjsoncontent = json .dumps (fprejsoncontent .decode ("UTF-8" ))
3393+ except (binascii .Error , json .decoder .JSONDecodeError , UnicodeDecodeError ):
3394+ fjsoncontent = "" .encode ("UTF-8" )
33653395 else :
3366- fjsoncontent = ""
3396+ fjsoncontent = "" . encode ( "UTF-8" )
33673397 fjsonsize = format (len (fjsoncontent ), 'x' ).lower ()
33683398 tmpoutlist .insert (0 , tmpoutlenhex )
33693399 tmpoutlist .append (fjsonsize )
@@ -3383,7 +3413,7 @@ def AppendFileHeaderWithContent(fp, filevalues=[], extradata=[], filecontent="",
33833413 nullstrecd = formatspecs ['format_delimiter' ].encode ('UTF-8' )
33843414 print (outfileoutstr )
33853415 outfileheadercshex = GetFileChecksum (
3386- outfileoutstr + nullstrecd + fjsoncontent . encode ( 'UTF-8' ) , checksumtype [0 ], True , formatspecs )
3416+ outfileoutstr + nullstrecd + fjsoncontent , checksumtype [0 ], True , formatspecs )
33873417 if (len (filecontent ) == 0 ):
33883418 outfilecontentcshex = GetFileChecksum (
33893419 filecontent , "none" , False , formatspecs )
@@ -3402,7 +3432,7 @@ def AppendFileHeaderWithContent(fp, filevalues=[], extradata=[], filecontent="",
34023432 AppendNullBytes ([outfileheadercshex , outfilecontentcshex ],
34033433 formatspecs ['format_delimiter' ])
34043434 outfileoutstrecd = outfileoutstr
3405- outfileout = outfileoutstrecd + fjsoncontent . encode ( 'UTF-8' ) + nullstrecd + filecontent + nullstrecd
3435+ outfileout = outfileoutstrecd + fjsoncontent + nullstrecd + filecontent + nullstrecd
34063436 try :
34073437 fp .write (outfileout )
34083438 except OSError :
0 commit comments