1# Copyright (c) 2017, The MITRE Corporation. All rights reserved. 2# See LICENSE.txt for complete terms. 3 4import sys 5 6from mixbox.binding_utils import * 7from . import cybox_common 8from . import file_object 9 10 11class PDFXRefTableListType(GeneratedsSuper): 12 """The PDFXrefTableListType captures a list of PDF cross-reference 13 tables.""" 14 15 subclass = None 16 superclass = None 17 def __init__(self, Cross_Reference_Table=None): 18 if Cross_Reference_Table is None: 19 self.Cross_Reference_Table = [] 20 else: 21 self.Cross_Reference_Table = Cross_Reference_Table 22 def factory(*args_, **kwargs_): 23 if PDFXRefTableListType.subclass: 24 return PDFXRefTableListType.subclass(*args_, **kwargs_) 25 else: 26 return PDFXRefTableListType(*args_, **kwargs_) 27 factory = staticmethod(factory) 28 def get_Cross_Reference_Table(self): return self.Cross_Reference_Table 29 def set_Cross_Reference_Table(self, Cross_Reference_Table): self.Cross_Reference_Table = Cross_Reference_Table 30 def add_Cross_Reference_Table(self, value): self.Cross_Reference_Table.append(value) 31 def insert_Cross_Reference_Table(self, index, value): self.Cross_Reference_Table[index] = value 32 def hasContent_(self): 33 if ( 34 self.Cross_Reference_Table 35 ): 36 return True 37 else: 38 return False 39 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXRefTableListType', namespacedef_='', pretty_print=True): 40 if pretty_print: 41 eol_ = '\n' 42 else: 43 eol_ = '' 44 showIndent(lwrite, level, pretty_print) 45 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 46 already_processed = set() 47 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFXRefTableListType') 48 if self.hasContent_(): 49 lwrite('>%s' % (eol_, )) 50 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 51 showIndent(lwrite, level, pretty_print) 52 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 53 else: 54 lwrite('/>%s' % (eol_, )) 55 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFXRefTableListType'): 56 pass 57 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXRefTableListType', fromsubclass_=False, pretty_print=True): 58 if pretty_print: 59 eol_ = '\n' 60 else: 61 eol_ = '' 62 for Cross_Reference_Table_ in self.Cross_Reference_Table: 63 Cross_Reference_Table_.export(lwrite, level, 'PDFFileObj:', name_='Cross_Reference_Table', pretty_print=pretty_print) 64 def build(self, node): 65 self.__sourcenode__ = node 66 already_processed = set() 67 self.buildAttributes(node, node.attrib, already_processed) 68 for child in node: 69 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 70 self.buildChildren(child, node, nodeName_) 71 def buildAttributes(self, node, attrs, already_processed): 72 pass 73 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 74 if nodeName_ == 'Cross_Reference_Table': 75 obj_ = PDFXRefTableType.factory() 76 obj_.build(child_) 77 self.Cross_Reference_Table.append(obj_) 78# end class PDFXRefTableListType 79 80class PDFXRefTableType(GeneratedsSuper): 81 """The PDFXRefTableType captures the details of a PDF cross-reference 82 table, which provides a capability for the random access of 83 indirect objects contained in the file.""" 84 85 subclass = None 86 superclass = None 87 def __init__(self, Subsections=None, Offset=None, Hashes=None): 88 self.Subsections = Subsections 89 self.Offset = Offset 90 self.Hashes = Hashes 91 def factory(*args_, **kwargs_): 92 if PDFXRefTableType.subclass: 93 return PDFXRefTableType.subclass(*args_, **kwargs_) 94 else: 95 return PDFXRefTableType(*args_, **kwargs_) 96 factory = staticmethod(factory) 97 def get_Subsections(self): return self.Subsections 98 def set_Subsections(self, Subsections): self.Subsections = Subsections 99 def get_Offset(self): return self.Offset 100 def set_Offset(self, Offset): self.Offset = Offset 101 def validate_PositiveIntegerObjectPropertyType(self, value): 102 # Validate type cybox_common.PositiveIntegerObjectPropertyType, a restriction on None. 103 pass 104 def get_Hashes(self): return self.Hashes 105 def set_Hashes(self, Hashes): self.Hashes = Hashes 106 def hasContent_(self): 107 if ( 108 self.Subsections is not None or 109 self.Offset is not None or 110 self.Hashes is not None 111 ): 112 return True 113 else: 114 return False 115 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXRefTableType', namespacedef_='', pretty_print=True): 116 if pretty_print: 117 eol_ = '\n' 118 else: 119 eol_ = '' 120 showIndent(lwrite, level, pretty_print) 121 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 122 already_processed = set() 123 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFXRefTableType') 124 if self.hasContent_(): 125 lwrite('>%s' % (eol_, )) 126 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 127 showIndent(lwrite, level, pretty_print) 128 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 129 else: 130 lwrite('/>%s' % (eol_, )) 131 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFXRefTableType'): 132 pass 133 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXRefTableType', fromsubclass_=False, pretty_print=True): 134 if pretty_print: 135 eol_ = '\n' 136 else: 137 eol_ = '' 138 if self.Subsections is not None: 139 self.Subsections.export(lwrite, level, 'PDFFileObj:', name_='Subsections', pretty_print=pretty_print) 140 if self.Offset is not None: 141 self.Offset.export(lwrite, level, 'PDFFileObj:', name_='Offset', pretty_print=pretty_print) 142 if self.Hashes is not None: 143 self.Hashes.export(lwrite, level, 'PDFFileObj:', name_='Hashes', pretty_print=pretty_print) 144 def build(self, node): 145 self.__sourcenode__ = node 146 already_processed = set() 147 self.buildAttributes(node, node.attrib, already_processed) 148 for child in node: 149 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 150 self.buildChildren(child, node, nodeName_) 151 def buildAttributes(self, node, attrs, already_processed): 152 pass 153 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 154 if nodeName_ == 'Subsections': 155 obj_ = PDFXrefTableSubsectionListType.factory() 156 obj_.build(child_) 157 self.set_Subsections(obj_) 158 elif nodeName_ == 'Offset': 159 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 160 obj_.build(child_) 161 self.set_Offset(obj_) 162 elif nodeName_ == 'Hashes': 163 obj_ = cybox_common.HashListType.factory() 164 obj_.build(child_) 165 self.set_Hashes(obj_) 166# end class PDFXRefTableType 167 168class PDFXrefTableSubsectionListType(GeneratedsSuper): 169 """The PDFXrefTableSubsectionListType captures a list of cross- 170 reference table subsections.""" 171 172 subclass = None 173 superclass = None 174 def __init__(self, Subsection=None): 175 if Subsection is None: 176 self.Subsection = [] 177 else: 178 self.Subsection = Subsection 179 def factory(*args_, **kwargs_): 180 if PDFXrefTableSubsectionListType.subclass: 181 return PDFXrefTableSubsectionListType.subclass(*args_, **kwargs_) 182 else: 183 return PDFXrefTableSubsectionListType(*args_, **kwargs_) 184 factory = staticmethod(factory) 185 def get_Subsection(self): return self.Subsection 186 def set_Subsection(self, Subsection): self.Subsection = Subsection 187 def add_Subsection(self, value): self.Subsection.append(value) 188 def insert_Subsection(self, index, value): self.Subsection[index] = value 189 def hasContent_(self): 190 if ( 191 self.Subsection 192 ): 193 return True 194 else: 195 return False 196 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXrefTableSubsectionListType', namespacedef_='', pretty_print=True): 197 if pretty_print: 198 eol_ = '\n' 199 else: 200 eol_ = '' 201 showIndent(lwrite, level, pretty_print) 202 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 203 already_processed = set() 204 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFXrefTableSubsectionListType') 205 if self.hasContent_(): 206 lwrite('>%s' % (eol_, )) 207 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 208 showIndent(lwrite, level, pretty_print) 209 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 210 else: 211 lwrite('/>%s' % (eol_, )) 212 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFXrefTableSubsectionListType'): 213 pass 214 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXrefTableSubsectionListType', fromsubclass_=False, pretty_print=True): 215 if pretty_print: 216 eol_ = '\n' 217 else: 218 eol_ = '' 219 for Subsection_ in self.Subsection: 220 Subsection_.export(lwrite, level, 'PDFFileObj:', name_='Subsection', pretty_print=pretty_print) 221 def build(self, node): 222 self.__sourcenode__ = node 223 already_processed = set() 224 self.buildAttributes(node, node.attrib, already_processed) 225 for child in node: 226 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 227 self.buildChildren(child, node, nodeName_) 228 def buildAttributes(self, node, attrs, already_processed): 229 pass 230 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 231 if nodeName_ == 'Subsection': 232 obj_ = PDFXrefTableSubsectionType.factory() 233 obj_.build(child_) 234 self.Subsection.append(obj_) 235# end class PDFXrefTableSubsectionListType 236 237class PDFXrefTableSubsectionType(GeneratedsSuper): 238 """The PDFXrefTableSubsectionType captures details of subsections 239 contained within a PDF cross-reference table.""" 240 241 subclass = None 242 superclass = None 243 def __init__(self, First_Object_Number=None, Number_Of_Objects=None, Cross_Reference_Entries=None): 244 self.First_Object_Number = First_Object_Number 245 self.Number_Of_Objects = Number_Of_Objects 246 self.Cross_Reference_Entries = Cross_Reference_Entries 247 def factory(*args_, **kwargs_): 248 if PDFXrefTableSubsectionType.subclass: 249 return PDFXrefTableSubsectionType.subclass(*args_, **kwargs_) 250 else: 251 return PDFXrefTableSubsectionType(*args_, **kwargs_) 252 factory = staticmethod(factory) 253 def get_First_Object_Number(self): return self.First_Object_Number 254 def set_First_Object_Number(self, First_Object_Number): self.First_Object_Number = First_Object_Number 255 def validate_NonNegativeIntegerObjectPropertyType(self, value): 256 # Validate type cybox_common.NonNegativeIntegerObjectPropertyType, a restriction on None. 257 pass 258 def get_Number_Of_Objects(self): return self.Number_Of_Objects 259 def set_Number_Of_Objects(self, Number_Of_Objects): self.Number_Of_Objects = Number_Of_Objects 260 def get_Cross_Reference_Entries(self): return self.Cross_Reference_Entries 261 def set_Cross_Reference_Entries(self, Cross_Reference_Entries): self.Cross_Reference_Entries = Cross_Reference_Entries 262 def hasContent_(self): 263 if ( 264 self.First_Object_Number is not None or 265 self.Number_Of_Objects is not None or 266 self.Cross_Reference_Entries is not None 267 ): 268 return True 269 else: 270 return False 271 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXrefTableSubsectionType', namespacedef_='', pretty_print=True): 272 if pretty_print: 273 eol_ = '\n' 274 else: 275 eol_ = '' 276 showIndent(lwrite, level, pretty_print) 277 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 278 already_processed = set() 279 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFXrefTableSubsectionType') 280 if self.hasContent_(): 281 lwrite('>%s' % (eol_, )) 282 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 283 showIndent(lwrite, level, pretty_print) 284 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 285 else: 286 lwrite('/>%s' % (eol_, )) 287 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFXrefTableSubsectionType'): 288 pass 289 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXrefTableSubsectionType', fromsubclass_=False, pretty_print=True): 290 if pretty_print: 291 eol_ = '\n' 292 else: 293 eol_ = '' 294 if self.First_Object_Number is not None: 295 self.First_Object_Number.export(lwrite, level, 'PDFFileObj:', name_='First_Object_Number', pretty_print=pretty_print) 296 if self.Number_Of_Objects is not None: 297 self.Number_Of_Objects.export(lwrite, level, 'PDFFileObj:', name_='Number_Of_Objects', pretty_print=pretty_print) 298 if self.Cross_Reference_Entries is not None: 299 self.Cross_Reference_Entries.export(lwrite, level, 'PDFFileObj:', name_='Cross_Reference_Entries', pretty_print=pretty_print) 300 def build(self, node): 301 self.__sourcenode__ = node 302 already_processed = set() 303 self.buildAttributes(node, node.attrib, already_processed) 304 for child in node: 305 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 306 self.buildChildren(child, node, nodeName_) 307 def buildAttributes(self, node, attrs, already_processed): 308 pass 309 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 310 if nodeName_ == 'First_Object_Number': 311 obj_ = cybox_common.NonNegativeIntegerObjectPropertyType.factory() 312 obj_.build(child_) 313 self.set_First_Object_Number(obj_) 314 elif nodeName_ == 'Number_Of_Objects': 315 obj_ = cybox_common.NonNegativeIntegerObjectPropertyType.factory() 316 obj_.build(child_) 317 self.set_Number_Of_Objects(obj_) 318 elif nodeName_ == 'Cross_Reference_Entries': 319 obj_ = PDFXrefEntryListType.factory() 320 obj_.build(child_) 321 self.set_Cross_Reference_Entries(obj_) 322# end class PDFXrefTableSubsectionType 323 324class PDFTrailerListType(GeneratedsSuper): 325 """The PDFTrailerListType captures a list of PDF trailers.""" 326 327 subclass = None 328 superclass = None 329 def __init__(self, Trailer=None): 330 if Trailer is None: 331 self.Trailer = [] 332 else: 333 self.Trailer = Trailer 334 def factory(*args_, **kwargs_): 335 if PDFTrailerListType.subclass: 336 return PDFTrailerListType.subclass(*args_, **kwargs_) 337 else: 338 return PDFTrailerListType(*args_, **kwargs_) 339 factory = staticmethod(factory) 340 def get_Trailer(self): return self.Trailer 341 def set_Trailer(self, Trailer): self.Trailer = Trailer 342 def add_Trailer(self, value): self.Trailer.append(value) 343 def insert_Trailer(self, index, value): self.Trailer[index] = value 344 def hasContent_(self): 345 if ( 346 self.Trailer 347 ): 348 return True 349 else: 350 return False 351 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFTrailerListType', namespacedef_='', pretty_print=True): 352 if pretty_print: 353 eol_ = '\n' 354 else: 355 eol_ = '' 356 showIndent(lwrite, level, pretty_print) 357 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 358 already_processed = set() 359 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFTrailerListType') 360 if self.hasContent_(): 361 lwrite('>%s' % (eol_, )) 362 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 363 showIndent(lwrite, level, pretty_print) 364 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 365 else: 366 lwrite('/>%s' % (eol_, )) 367 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFTrailerListType'): 368 pass 369 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFTrailerListType', fromsubclass_=False, pretty_print=True): 370 if pretty_print: 371 eol_ = '\n' 372 else: 373 eol_ = '' 374 for Trailer_ in self.Trailer: 375 Trailer_.export(lwrite, level, 'PDFFileObj:', name_='Trailer', pretty_print=pretty_print) 376 def build(self, node): 377 self.__sourcenode__ = node 378 already_processed = set() 379 self.buildAttributes(node, node.attrib, already_processed) 380 for child in node: 381 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 382 self.buildChildren(child, node, nodeName_) 383 def buildAttributes(self, node, attrs, already_processed): 384 pass 385 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 386 if nodeName_ == 'Trailer': 387 obj_ = PDFTrailerType.factory() 388 obj_.build(child_) 389 self.Trailer.append(obj_) 390# end class PDFTrailerListType 391 392class PDFTrailerType(GeneratedsSuper): 393 """The PDFTrailerType captures the details of a PDF trailer.""" 394 395 subclass = None 396 superclass = None 397 def __init__(self, Size=None, Prev=None, Root=None, Encrypt=None, Info=None, ID=None, Last_Cross_Reference_Offset=None, Offset=None, Hashes=None): 398 self.Size = Size 399 self.Prev = Prev 400 self.Root = Root 401 self.Encrypt = Encrypt 402 self.Info = Info 403 self.ID = ID 404 self.Last_Cross_Reference_Offset = Last_Cross_Reference_Offset 405 self.Offset = Offset 406 self.Hashes = Hashes 407 def factory(*args_, **kwargs_): 408 if PDFTrailerType.subclass: 409 return PDFTrailerType.subclass(*args_, **kwargs_) 410 else: 411 return PDFTrailerType(*args_, **kwargs_) 412 factory = staticmethod(factory) 413 def get_Size(self): return self.Size 414 def set_Size(self, Size): self.Size = Size 415 def validate_PositiveIntegerObjectPropertyType(self, value): 416 # Validate type cybox_common.PositiveIntegerObjectPropertyType, a restriction on None. 417 pass 418 def get_Prev(self): return self.Prev 419 def set_Prev(self, Prev): self.Prev = Prev 420 def get_Root(self): return self.Root 421 def set_Root(self, Root): self.Root = Root 422 def get_Encrypt(self): return self.Encrypt 423 def set_Encrypt(self, Encrypt): self.Encrypt = Encrypt 424 def get_Info(self): return self.Info 425 def set_Info(self, Info): self.Info = Info 426 def get_ID(self): return self.ID 427 def set_ID(self, ID): self.ID = ID 428 def get_Last_Cross_Reference_Offset(self): return self.Last_Cross_Reference_Offset 429 def set_Last_Cross_Reference_Offset(self, Last_Cross_Reference_Offset): self.Last_Cross_Reference_Offset = Last_Cross_Reference_Offset 430 def get_Offset(self): return self.Offset 431 def set_Offset(self, Offset): self.Offset = Offset 432 def get_Hashes(self): return self.Hashes 433 def set_Hashes(self, Hashes): self.Hashes = Hashes 434 def hasContent_(self): 435 if ( 436 self.Size is not None or 437 self.Prev is not None or 438 self.Root is not None or 439 self.Encrypt is not None or 440 self.Info is not None or 441 self.ID is not None or 442 self.Last_Cross_Reference_Offset is not None or 443 self.Offset is not None or 444 self.Hashes is not None 445 ): 446 return True 447 else: 448 return False 449 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFTrailerType', namespacedef_='', pretty_print=True): 450 if pretty_print: 451 eol_ = '\n' 452 else: 453 eol_ = '' 454 showIndent(lwrite, level, pretty_print) 455 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 456 already_processed = set() 457 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFTrailerType') 458 if self.hasContent_(): 459 lwrite('>%s' % (eol_, )) 460 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 461 showIndent(lwrite, level, pretty_print) 462 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 463 else: 464 lwrite('/>%s' % (eol_, )) 465 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFTrailerType'): 466 pass 467 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFTrailerType', fromsubclass_=False, pretty_print=True): 468 if pretty_print: 469 eol_ = '\n' 470 else: 471 eol_ = '' 472 if self.Size is not None: 473 self.Size.export(lwrite, level, 'PDFFileObj:', name_='Size', pretty_print=pretty_print) 474 if self.Prev is not None: 475 self.Prev.export(lwrite, level, 'PDFFileObj:', name_='Prev', pretty_print=pretty_print) 476 if self.Root is not None: 477 self.Root.export(lwrite, level, 'PDFFileObj:', name_='Root', pretty_print=pretty_print) 478 if self.Encrypt is not None: 479 self.Encrypt.export(lwrite, level, 'PDFFileObj:', name_='Encrypt', pretty_print=pretty_print) 480 if self.Info is not None: 481 self.Info.export(lwrite, level, 'PDFFileObj:', name_='Info', pretty_print=pretty_print) 482 if self.ID is not None: 483 self.ID.export(lwrite, level, 'PDFFileObj:', name_='ID', pretty_print=pretty_print) 484 if self.Last_Cross_Reference_Offset is not None: 485 self.Last_Cross_Reference_Offset.export(lwrite, level, 'PDFFileObj:', name_='Last_Cross_Reference_Offset', pretty_print=pretty_print) 486 if self.Offset is not None: 487 self.Offset.export(lwrite, level, 'PDFFileObj:', name_='Offset', pretty_print=pretty_print) 488 if self.Hashes is not None: 489 self.Hashes.export(lwrite, level, 'PDFFileObj:', name_='Hashes', pretty_print=pretty_print) 490 def build(self, node): 491 self.__sourcenode__ = node 492 already_processed = set() 493 self.buildAttributes(node, node.attrib, already_processed) 494 for child in node: 495 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 496 self.buildChildren(child, node, nodeName_) 497 def buildAttributes(self, node, attrs, already_processed): 498 pass 499 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 500 if nodeName_ == 'Size': 501 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 502 obj_.build(child_) 503 self.set_Size(obj_) 504 elif nodeName_ == 'Prev': 505 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 506 obj_.build(child_) 507 self.set_Prev(obj_) 508 elif nodeName_ == 'Root': 509 obj_ = PDFIndirectObjectIDType.factory() 510 obj_.build(child_) 511 self.set_Root(obj_) 512 elif nodeName_ == 'Encrypt': 513 obj_ = PDFDictionaryType.factory() 514 obj_.build(child_) 515 self.set_Encrypt(obj_) 516 elif nodeName_ == 'Info': 517 obj_ = PDFIndirectObjectIDType.factory() 518 obj_.build(child_) 519 self.set_Info(obj_) 520 elif nodeName_ == 'ID': 521 obj_ = PDFFileIDType.factory() 522 obj_.build(child_) 523 self.set_ID(obj_) 524 elif nodeName_ == 'Last_Cross_Reference_Offset': 525 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 526 obj_.build(child_) 527 self.set_Last_Cross_Reference_Offset(obj_) 528 elif nodeName_ == 'Offset': 529 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 530 obj_.build(child_) 531 self.set_Offset(obj_) 532 elif nodeName_ == 'Hashes': 533 obj_ = cybox_common.HashListType.factory() 534 obj_.build(child_) 535 self.set_Hashes(obj_) 536# end class PDFTrailerType 537 538class PDFFileIDType(GeneratedsSuper): 539 """The PDFTrailerIDType captures the details of a PDF ID value stored 540 in a trailer.""" 541 542 subclass = None 543 superclass = None 544 def __init__(self, ID_String=None): 545 if ID_String is None: 546 self.ID_String = [] 547 else: 548 self.ID_String = ID_String 549 def factory(*args_, **kwargs_): 550 if PDFFileIDType.subclass: 551 return PDFFileIDType.subclass(*args_, **kwargs_) 552 else: 553 return PDFFileIDType(*args_, **kwargs_) 554 factory = staticmethod(factory) 555 def get_ID_String(self): return self.ID_String 556 def set_ID_String(self, ID_String): self.ID_String = ID_String 557 def add_ID_String(self, value): self.ID_String.append(value) 558 def insert_ID_String(self, index, value): self.ID_String[index] = value 559 def validate_StringObjectPropertyType(self, value): 560 # Validate type cybox_common.StringObjectPropertyType, a restriction on None. 561 pass 562 def hasContent_(self): 563 if ( 564 self.ID_String 565 ): 566 return True 567 else: 568 return False 569 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFFileIDType', namespacedef_='', pretty_print=True): 570 if pretty_print: 571 eol_ = '\n' 572 else: 573 eol_ = '' 574 showIndent(lwrite, level, pretty_print) 575 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 576 already_processed = set() 577 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFFileIDType') 578 if self.hasContent_(): 579 lwrite('>%s' % (eol_, )) 580 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 581 showIndent(lwrite, level, pretty_print) 582 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 583 else: 584 lwrite('/>%s' % (eol_, )) 585 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFFileIDType'): 586 pass 587 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFFileIDType', fromsubclass_=False, pretty_print=True): 588 if pretty_print: 589 eol_ = '\n' 590 else: 591 eol_ = '' 592 for ID_String_ in self.ID_String: 593 ID_String_.export(lwrite, level, 'PDFFileObj:', name_='ID_String', pretty_print=pretty_print) 594 def build(self, node): 595 self.__sourcenode__ = node 596 already_processed = set() 597 self.buildAttributes(node, node.attrib, already_processed) 598 for child in node: 599 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 600 self.buildChildren(child, node, nodeName_) 601 def buildAttributes(self, node, attrs, already_processed): 602 pass 603 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 604 if nodeName_ == 'ID_String': 605 obj_ = cybox_common.StringObjectPropertyType.factory() 606 obj_.build(child_) 607 self.ID_String.append(obj_) 608# end class PDFFileIDType 609 610class PDFIndirectObjectListType(GeneratedsSuper): 611 """The PDFIndirectObjectListType captures a list of PDF indirect 612 objects.""" 613 614 subclass = None 615 superclass = None 616 def __init__(self, Indirect_Object=None): 617 if Indirect_Object is None: 618 self.Indirect_Object = [] 619 else: 620 self.Indirect_Object = Indirect_Object 621 def factory(*args_, **kwargs_): 622 if PDFIndirectObjectListType.subclass: 623 return PDFIndirectObjectListType.subclass(*args_, **kwargs_) 624 else: 625 return PDFIndirectObjectListType(*args_, **kwargs_) 626 factory = staticmethod(factory) 627 def get_Indirect_Object(self): return self.Indirect_Object 628 def set_Indirect_Object(self, Indirect_Object): self.Indirect_Object = Indirect_Object 629 def add_Indirect_Object(self, value): self.Indirect_Object.append(value) 630 def insert_Indirect_Object(self, index, value): self.Indirect_Object[index] = value 631 def hasContent_(self): 632 if ( 633 self.Indirect_Object 634 ): 635 return True 636 else: 637 return False 638 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFIndirectObjectListType', namespacedef_='', pretty_print=True): 639 if pretty_print: 640 eol_ = '\n' 641 else: 642 eol_ = '' 643 showIndent(lwrite, level, pretty_print) 644 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 645 already_processed = set() 646 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFIndirectObjectListType') 647 if self.hasContent_(): 648 lwrite('>%s' % (eol_, )) 649 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 650 showIndent(lwrite, level, pretty_print) 651 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 652 else: 653 lwrite('/>%s' % (eol_, )) 654 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFIndirectObjectListType'): 655 pass 656 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFIndirectObjectListType', fromsubclass_=False, pretty_print=True): 657 if pretty_print: 658 eol_ = '\n' 659 else: 660 eol_ = '' 661 for Indirect_Object_ in self.Indirect_Object: 662 Indirect_Object_.export(lwrite, level, 'PDFFileObj:', name_='Indirect_Object', pretty_print=pretty_print) 663 def build(self, node): 664 self.__sourcenode__ = node 665 already_processed = set() 666 self.buildAttributes(node, node.attrib, already_processed) 667 for child in node: 668 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 669 self.buildChildren(child, node, nodeName_) 670 def buildAttributes(self, node, attrs, already_processed): 671 pass 672 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 673 if nodeName_ == 'Indirect_Object': 674 obj_ = PDFIndirectObjectType.factory() 675 obj_.build(child_) 676 self.Indirect_Object.append(obj_) 677# end class PDFIndirectObjectListType 678 679class PDFIndirectObjectType(GeneratedsSuper): 680 """The PDFObjectType captures the details of a PDF document indirect 681 object, used in constructing and storing data associated with 682 the PDF document.The type field specifies the basic type of the 683 PDF indirect object.""" 684 685 subclass = None 686 superclass = None 687 def __init__(self, type_=None, ID=None, Contents=None, Offset=None, Hashes=None): 688 self.type_ = _cast(None, type_) 689 self.ID = ID 690 self.Contents = Contents 691 self.Offset = Offset 692 self.Hashes = Hashes 693 def factory(*args_, **kwargs_): 694 if PDFIndirectObjectType.subclass: 695 return PDFIndirectObjectType.subclass(*args_, **kwargs_) 696 else: 697 return PDFIndirectObjectType(*args_, **kwargs_) 698 factory = staticmethod(factory) 699 def get_ID(self): return self.ID 700 def set_ID(self, ID): self.ID = ID 701 def get_Contents(self): return self.Contents 702 def set_Contents(self, Contents): self.Contents = Contents 703 def get_Offset(self): return self.Offset 704 def set_Offset(self, Offset): self.Offset = Offset 705 def validate_PositiveIntegerObjectPropertyType(self, value): 706 # Validate type cybox_common.PositiveIntegerObjectPropertyType, a restriction on None. 707 pass 708 def get_Hashes(self): return self.Hashes 709 def set_Hashes(self, Hashes): self.Hashes = Hashes 710 def get_type(self): return self.type_ 711 def set_type(self, type_): self.type_ = type_ 712 def hasContent_(self): 713 if ( 714 self.ID is not None or 715 self.Contents is not None or 716 self.Offset is not None or 717 self.Hashes is not None 718 ): 719 return True 720 else: 721 return False 722 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFIndirectObjectType', namespacedef_='', pretty_print=True): 723 if pretty_print: 724 eol_ = '\n' 725 else: 726 eol_ = '' 727 showIndent(lwrite, level, pretty_print) 728 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 729 already_processed = set() 730 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFIndirectObjectType') 731 if self.hasContent_(): 732 lwrite('>%s' % (eol_, )) 733 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 734 showIndent(lwrite, level, pretty_print) 735 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 736 else: 737 lwrite('/>%s' % (eol_, )) 738 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFIndirectObjectType'): 739 if self.type_ is not None: 740 741 lwrite(' type=%s' % (quote_attrib(self.type_), )) 742 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFIndirectObjectType', fromsubclass_=False, pretty_print=True): 743 if pretty_print: 744 eol_ = '\n' 745 else: 746 eol_ = '' 747 if self.ID is not None: 748 self.ID.export(lwrite, level, 'PDFFileObj:', name_='ID', pretty_print=pretty_print) 749 if self.Contents is not None: 750 self.Contents.export(lwrite, level, 'PDFFileObj:', name_='Contents', pretty_print=pretty_print) 751 if self.Offset is not None: 752 self.Offset.export(lwrite, level, 'PDFFileObj:', name_='Offset', pretty_print=pretty_print) 753 if self.Hashes is not None: 754 self.Hashes.export(lwrite, level, 'PDFFileObj:', name_='Hashes', pretty_print=pretty_print) 755 def build(self, node): 756 self.__sourcenode__ = node 757 already_processed = set() 758 self.buildAttributes(node, node.attrib, already_processed) 759 for child in node: 760 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 761 self.buildChildren(child, node, nodeName_) 762 def buildAttributes(self, node, attrs, already_processed): 763 value = find_attr_value_('type', node) 764 if value is not None: 765 self.type_ = value 766 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 767 if nodeName_ == 'ID': 768 obj_ = PDFIndirectObjectIDType.factory() 769 obj_.build(child_) 770 self.set_ID(obj_) 771 elif nodeName_ == 'Contents': 772 obj_ = PDFIndirectObjectContentsType.factory() 773 obj_.build(child_) 774 self.set_Contents(obj_) 775 elif nodeName_ == 'Offset': 776 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 777 obj_.build(child_) 778 self.set_Offset(obj_) 779 elif nodeName_ == 'Hashes': 780 obj_ = cybox_common.HashListType.factory() 781 obj_.build(child_) 782 self.set_Hashes(obj_) 783# end class PDFIndirectObjectType 784 785class PDFIndirectObjectIDType(GeneratedsSuper): 786 """The PDFIndirectObjectIDType captures the details of PDF indirect 787 object IDs.""" 788 789 subclass = None 790 superclass = None 791 def __init__(self, Object_Number=None, Generation_Number=None): 792 self.Object_Number = Object_Number 793 self.Generation_Number = Generation_Number 794 def factory(*args_, **kwargs_): 795 if PDFIndirectObjectIDType.subclass: 796 return PDFIndirectObjectIDType.subclass(*args_, **kwargs_) 797 else: 798 return PDFIndirectObjectIDType(*args_, **kwargs_) 799 factory = staticmethod(factory) 800 def get_Object_Number(self): return self.Object_Number 801 def set_Object_Number(self, Object_Number): self.Object_Number = Object_Number 802 def validate_PositiveIntegerObjectPropertyType(self, value): 803 # Validate type cybox_common.PositiveIntegerObjectPropertyType, a restriction on None. 804 pass 805 def get_Generation_Number(self): return self.Generation_Number 806 def set_Generation_Number(self, Generation_Number): self.Generation_Number = Generation_Number 807 def validate_NonNegativeIntegerObjectPropertyType(self, value): 808 # Validate type cybox_common.NonNegativeIntegerObjectPropertyType, a restriction on None. 809 pass 810 def hasContent_(self): 811 if ( 812 self.Object_Number is not None or 813 self.Generation_Number is not None 814 ): 815 return True 816 else: 817 return False 818 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFIndirectObjectIDType', namespacedef_='', pretty_print=True): 819 if pretty_print: 820 eol_ = '\n' 821 else: 822 eol_ = '' 823 showIndent(lwrite, level, pretty_print) 824 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 825 already_processed = set() 826 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFIndirectObjectIDType') 827 if self.hasContent_(): 828 lwrite('>%s' % (eol_, )) 829 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 830 showIndent(lwrite, level, pretty_print) 831 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 832 else: 833 lwrite('/>%s' % (eol_, )) 834 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFIndirectObjectIDType'): 835 pass 836 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFIndirectObjectIDType', fromsubclass_=False, pretty_print=True): 837 if pretty_print: 838 eol_ = '\n' 839 else: 840 eol_ = '' 841 if self.Object_Number is not None: 842 self.Object_Number.export(lwrite, level, 'PDFFileObj:', name_='Object_Number', pretty_print=pretty_print) 843 if self.Generation_Number is not None: 844 self.Generation_Number.export(lwrite, level, 'PDFFileObj:', name_='Generation_Number', pretty_print=pretty_print) 845 def build(self, node): 846 self.__sourcenode__ = node 847 already_processed = set() 848 self.buildAttributes(node, node.attrib, already_processed) 849 for child in node: 850 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 851 self.buildChildren(child, node, nodeName_) 852 def buildAttributes(self, node, attrs, already_processed): 853 pass 854 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 855 if nodeName_ == 'Object_Number': 856 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 857 obj_.build(child_) 858 self.set_Object_Number(obj_) 859 elif nodeName_ == 'Generation_Number': 860 obj_ = cybox_common.NonNegativeIntegerObjectPropertyType.factory() 861 obj_.build(child_) 862 self.set_Generation_Number(obj_) 863# end class PDFIndirectObjectIDType 864 865class PDFIndirectObjectContentsType(GeneratedsSuper): 866 """The PDFIndirectObjectContentsType captures the contents of a PDF 867 indirect object, including both stream and non-stream portions.""" 868 869 subclass = None 870 superclass = None 871 def __init__(self, Non_Stream_Contents=None, Stream_Contents=None): 872 self.Non_Stream_Contents = Non_Stream_Contents 873 self.Stream_Contents = Stream_Contents 874 def factory(*args_, **kwargs_): 875 if PDFIndirectObjectContentsType.subclass: 876 return PDFIndirectObjectContentsType.subclass(*args_, **kwargs_) 877 else: 878 return PDFIndirectObjectContentsType(*args_, **kwargs_) 879 factory = staticmethod(factory) 880 def get_Non_Stream_Contents(self): return self.Non_Stream_Contents 881 def set_Non_Stream_Contents(self, Non_Stream_Contents): self.Non_Stream_Contents = Non_Stream_Contents 882 def validate_StringObjectPropertyType(self, value): 883 # Validate type cybox_common.StringObjectPropertyType, a restriction on None. 884 pass 885 def get_Stream_Contents(self): return self.Stream_Contents 886 def set_Stream_Contents(self, Stream_Contents): self.Stream_Contents = Stream_Contents 887 def hasContent_(self): 888 if ( 889 self.Non_Stream_Contents is not None or 890 self.Stream_Contents is not None 891 ): 892 return True 893 else: 894 return False 895 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFIndirectObjectContentsType', namespacedef_='', pretty_print=True): 896 if pretty_print: 897 eol_ = '\n' 898 else: 899 eol_ = '' 900 showIndent(lwrite, level, pretty_print) 901 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 902 already_processed = set() 903 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFIndirectObjectContentsType') 904 if self.hasContent_(): 905 lwrite('>%s' % (eol_, )) 906 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 907 showIndent(lwrite, level, pretty_print) 908 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 909 else: 910 lwrite('/>%s' % (eol_, )) 911 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFIndirectObjectContentsType'): 912 pass 913 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFIndirectObjectContentsType', fromsubclass_=False, pretty_print=True): 914 if pretty_print: 915 eol_ = '\n' 916 else: 917 eol_ = '' 918 if self.Non_Stream_Contents is not None: 919 if self.Non_Stream_Contents.get_valueOf_() is not None: 920 value = self.Non_Stream_Contents.get_valueOf_() 921 if not value.startswith('<![CDATA['): 922 value = '<![CDATA[' + value + ']]>' 923 self.Non_Stream_Contents.set_valueOf_(value) 924 self.Non_Stream_Contents.export(lwrite, level, 'PDFFileObj:', name_='Non_Stream_Contents', pretty_print=pretty_print) 925 if self.Stream_Contents is not None: 926 self.Stream_Contents.export(lwrite, level, 'PDFFileObj:', name_='Stream_Contents', pretty_print=pretty_print) 927 def build(self, node): 928 self.__sourcenode__ = node 929 already_processed = set() 930 self.buildAttributes(node, node.attrib, already_processed) 931 for child in node: 932 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 933 self.buildChildren(child, node, nodeName_) 934 def buildAttributes(self, node, attrs, already_processed): 935 pass 936 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 937 if nodeName_ == 'Non_Stream_Contents': 938 obj_ = cybox_common.StringObjectPropertyType.factory() 939 obj_.build(child_) 940 self.set_Non_Stream_Contents(obj_) 941 elif nodeName_ == 'Stream_Contents': 942 obj_ = PDFStreamType.factory() 943 obj_.build(child_) 944 self.set_Stream_Contents(obj_) 945# end class PDFIndirectObjectContentsType 946 947class PDFStreamType(GeneratedsSuper): 948 """The PDFStreamType element captures details of PDF document stream 949 objects, which represent arbitrary sequences of bytes.""" 950 951 subclass = None 952 superclass = None 953 def __init__(self, Raw_Stream=None, Raw_Stream_Hashes=None, Decoded_Stream=None, Decoded_Stream_Hashes=None): 954 self.Raw_Stream = Raw_Stream 955 self.Raw_Stream_Hashes = Raw_Stream_Hashes 956 self.Decoded_Stream = Decoded_Stream 957 self.Decoded_Stream_Hashes = Decoded_Stream_Hashes 958 def factory(*args_, **kwargs_): 959 if PDFStreamType.subclass: 960 return PDFStreamType.subclass(*args_, **kwargs_) 961 else: 962 return PDFStreamType(*args_, **kwargs_) 963 factory = staticmethod(factory) 964 def get_Raw_Stream(self): return self.Raw_Stream 965 def set_Raw_Stream(self, Raw_Stream): self.Raw_Stream = Raw_Stream 966 def validate_StringObjectPropertyType(self, value): 967 # Validate type cybox_common.StringObjectPropertyType, a restriction on None. 968 pass 969 def get_Raw_Stream_Hashes(self): return self.Raw_Stream_Hashes 970 def set_Raw_Stream_Hashes(self, Raw_Stream_Hashes): self.Raw_Stream_Hashes = Raw_Stream_Hashes 971 def get_Decoded_Stream(self): return self.Decoded_Stream 972 def set_Decoded_Stream(self, Decoded_Stream): self.Decoded_Stream = Decoded_Stream 973 def validate_HexBinaryObjectPropertyType(self, value): 974 # Validate type cybox_common.HexBinaryObjectPropertyType, a restriction on None. 975 pass 976 def get_Decoded_Stream_Hashes(self): return self.Decoded_Stream_Hashes 977 def set_Decoded_Stream_Hashes(self, Decoded_Stream_Hashes): self.Decoded_Stream_Hashes = Decoded_Stream_Hashes 978 def hasContent_(self): 979 if ( 980 self.Raw_Stream is not None or 981 self.Raw_Stream_Hashes is not None or 982 self.Decoded_Stream is not None or 983 self.Decoded_Stream_Hashes is not None 984 ): 985 return True 986 else: 987 return False 988 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFStreamType', namespacedef_='', pretty_print=True): 989 if pretty_print: 990 eol_ = '\n' 991 else: 992 eol_ = '' 993 showIndent(lwrite, level, pretty_print) 994 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 995 already_processed = set() 996 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFStreamType') 997 if self.hasContent_(): 998 lwrite('>%s' % (eol_, )) 999 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 1000 showIndent(lwrite, level, pretty_print) 1001 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 1002 else: 1003 lwrite('/>%s' % (eol_, )) 1004 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFStreamType'): 1005 pass 1006 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFStreamType', fromsubclass_=False, pretty_print=True): 1007 if pretty_print: 1008 eol_ = '\n' 1009 else: 1010 eol_ = '' 1011 if self.Raw_Stream is not None: 1012 self.Raw_Stream.export(lwrite, level, 'PDFFileObj:', name_='Raw_Stream', pretty_print=pretty_print) 1013 if self.Raw_Stream_Hashes is not None: 1014 self.Raw_Stream_Hashes.export(lwrite, level, 'PDFFileObj:', name_='Raw_Stream_Hashes', pretty_print=pretty_print) 1015 if self.Decoded_Stream is not None: 1016 self.Decoded_Stream.export(lwrite, level, 'PDFFileObj:', name_='Decoded_Stream', pretty_print=pretty_print) 1017 if self.Decoded_Stream_Hashes is not None: 1018 self.Decoded_Stream_Hashes.export(lwrite, level, 'PDFFileObj:', name_='Decoded_Stream_Hashes', pretty_print=pretty_print) 1019 def build(self, node): 1020 self.__sourcenode__ = node 1021 already_processed = set() 1022 self.buildAttributes(node, node.attrib, already_processed) 1023 for child in node: 1024 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 1025 self.buildChildren(child, node, nodeName_) 1026 def buildAttributes(self, node, attrs, already_processed): 1027 pass 1028 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 1029 if nodeName_ == 'Raw_Stream': 1030 obj_ = cybox_common.StringObjectPropertyType.factory() 1031 obj_.build(child_) 1032 self.set_Raw_Stream(obj_) 1033 elif nodeName_ == 'Raw_Stream_Hashes': 1034 obj_ = cybox_common.HashListType.factory() 1035 obj_.build(child_) 1036 self.set_Raw_Stream_Hashes(obj_) 1037 elif nodeName_ == 'Decoded_Stream': 1038 obj_ = cybox_common.HexBinaryObjectPropertyType.factory() 1039 obj_.build(child_) 1040 self.set_Decoded_Stream(obj_) 1041 elif nodeName_ == 'Decoded_Stream_Hashes': 1042 obj_ = cybox_common.HashListType.factory() 1043 obj_.build(child_) 1044 self.set_Decoded_Stream_Hashes(obj_) 1045# end class PDFStreamType 1046 1047class PDFDocumentInformationDictionaryType(GeneratedsSuper): 1048 """The PDFDocumentInformationDictionaryType captures details of the PDF 1049 Document Information Dictionary, used for storing metadata 1050 associated with the PDF document.""" 1051 1052 subclass = None 1053 superclass = None 1054 def __init__(self, Title=None, Author=None, Subject=None, Keywords=None, Creator=None, Producer=None, CreationDate=None, ModDate=None, Trapped=None): 1055 self.Title = Title 1056 self.Author = Author 1057 self.Subject = Subject 1058 self.Keywords = Keywords 1059 self.Creator = Creator 1060 self.Producer = Producer 1061 self.CreationDate = CreationDate 1062 self.ModDate = ModDate 1063 self.Trapped = Trapped 1064 def factory(*args_, **kwargs_): 1065 if PDFDocumentInformationDictionaryType.subclass: 1066 return PDFDocumentInformationDictionaryType.subclass(*args_, **kwargs_) 1067 else: 1068 return PDFDocumentInformationDictionaryType(*args_, **kwargs_) 1069 factory = staticmethod(factory) 1070 def get_Title(self): return self.Title 1071 def set_Title(self, Title): self.Title = Title 1072 def validate_StringObjectPropertyType(self, value): 1073 # Validate type cybox_common.StringObjectPropertyType, a restriction on None. 1074 pass 1075 def get_Author(self): return self.Author 1076 def set_Author(self, Author): self.Author = Author 1077 def get_Subject(self): return self.Subject 1078 def set_Subject(self, Subject): self.Subject = Subject 1079 def get_Keywords(self): return self.Keywords 1080 def set_Keywords(self, Keywords): self.Keywords = Keywords 1081 def get_Creator(self): return self.Creator 1082 def set_Creator(self, Creator): self.Creator = Creator 1083 def get_Producer(self): return self.Producer 1084 def set_Producer(self, Producer): self.Producer = Producer 1085 def get_CreationDate(self): return self.CreationDate 1086 def set_CreationDate(self, CreationDate): self.CreationDate = CreationDate 1087 def validate_DateTimeObjectPropertyType(self, value): 1088 # Validate type cybox_common.DateTimeObjectPropertyType, a restriction on None. 1089 pass 1090 def get_ModDate(self): return self.ModDate 1091 def set_ModDate(self, ModDate): self.ModDate = ModDate 1092 def get_Trapped(self): return self.Trapped 1093 def set_Trapped(self, Trapped): self.Trapped = Trapped 1094 def hasContent_(self): 1095 if ( 1096 self.Title is not None or 1097 self.Author is not None or 1098 self.Subject is not None or 1099 self.Keywords is not None or 1100 self.Creator is not None or 1101 self.Producer is not None or 1102 self.CreationDate is not None or 1103 self.ModDate is not None or 1104 self.Trapped is not None 1105 ): 1106 return True 1107 else: 1108 return False 1109 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFDocumentInformationDictionaryType', namespacedef_='', pretty_print=True): 1110 if pretty_print: 1111 eol_ = '\n' 1112 else: 1113 eol_ = '' 1114 showIndent(lwrite, level, pretty_print) 1115 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 1116 already_processed = set() 1117 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFDocumentInformationDictionaryType') 1118 if self.hasContent_(): 1119 lwrite('>%s' % (eol_, )) 1120 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 1121 showIndent(lwrite, level, pretty_print) 1122 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 1123 else: 1124 lwrite('/>%s' % (eol_, )) 1125 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFDocumentInformationDictionaryType'): 1126 pass 1127 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFDocumentInformationDictionaryType', fromsubclass_=False, pretty_print=True): 1128 if pretty_print: 1129 eol_ = '\n' 1130 else: 1131 eol_ = '' 1132 if self.Title is not None: 1133 self.Title.export(lwrite, level, 'PDFFileObj:', name_='Title', pretty_print=pretty_print) 1134 if self.Author is not None: 1135 self.Author.export(lwrite, level, 'PDFFileObj:', name_='Author', pretty_print=pretty_print) 1136 if self.Subject is not None: 1137 self.Subject.export(lwrite, level, 'PDFFileObj:', name_='Subject', pretty_print=pretty_print) 1138 if self.Keywords is not None: 1139 self.Keywords.export(lwrite, level, 'PDFFileObj:', name_='Keywords', pretty_print=pretty_print) 1140 if self.Creator is not None: 1141 self.Creator.export(lwrite, level, 'PDFFileObj:', name_='Creator', pretty_print=pretty_print) 1142 if self.Producer is not None: 1143 self.Producer.export(lwrite, level, 'PDFFileObj:', name_='Producer', pretty_print=pretty_print) 1144 if self.CreationDate is not None: 1145 self.CreationDate.export(lwrite, level, 'PDFFileObj:', name_='CreationDate', pretty_print=pretty_print) 1146 if self.ModDate is not None: 1147 self.ModDate.export(lwrite, level, 'PDFFileObj:', name_='ModDate', pretty_print=pretty_print) 1148 if self.Trapped is not None: 1149 self.Trapped.export(lwrite, level, 'PDFFileObj:', name_='Trapped', pretty_print=pretty_print) 1150 def build(self, node): 1151 self.__sourcenode__ = node 1152 already_processed = set() 1153 self.buildAttributes(node, node.attrib, already_processed) 1154 for child in node: 1155 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 1156 self.buildChildren(child, node, nodeName_) 1157 def buildAttributes(self, node, attrs, already_processed): 1158 pass 1159 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 1160 if nodeName_ == 'Title': 1161 obj_ = cybox_common.StringObjectPropertyType.factory() 1162 obj_.build(child_) 1163 self.set_Title(obj_) 1164 elif nodeName_ == 'Author': 1165 obj_ = cybox_common.StringObjectPropertyType.factory() 1166 obj_.build(child_) 1167 self.set_Author(obj_) 1168 elif nodeName_ == 'Subject': 1169 obj_ = cybox_common.StringObjectPropertyType.factory() 1170 obj_.build(child_) 1171 self.set_Subject(obj_) 1172 elif nodeName_ == 'Keywords': 1173 obj_ = cybox_common.StringObjectPropertyType.factory() 1174 obj_.build(child_) 1175 self.set_Keywords(obj_) 1176 elif nodeName_ == 'Creator': 1177 obj_ = cybox_common.StringObjectPropertyType.factory() 1178 obj_.build(child_) 1179 self.set_Creator(obj_) 1180 elif nodeName_ == 'Producer': 1181 obj_ = cybox_common.StringObjectPropertyType.factory() 1182 obj_.build(child_) 1183 self.set_Producer(obj_) 1184 elif nodeName_ == 'CreationDate': 1185 obj_ = cybox_common.DateTimeObjectPropertyType.factory() 1186 obj_.build(child_) 1187 self.set_CreationDate(obj_) 1188 elif nodeName_ == 'ModDate': 1189 obj_ = cybox_common.DateTimeObjectPropertyType.factory() 1190 obj_.build(child_) 1191 self.set_ModDate(obj_) 1192 elif nodeName_ == 'Trapped': 1193 obj_ = cybox_common.StringObjectPropertyType.factory() 1194 obj_.build(child_) 1195 self.set_Trapped(obj_) 1196# end class PDFDocumentInformationDictionaryType 1197 1198class PDFXrefEntryListType(GeneratedsSuper): 1199 """The PDFXrefEntryListType captures a list of cross-reference table 1200 subsection entries.""" 1201 1202 subclass = None 1203 superclass = None 1204 def __init__(self, Cross_Reference_Entry=None): 1205 if Cross_Reference_Entry is None: 1206 self.Cross_Reference_Entry = [] 1207 else: 1208 self.Cross_Reference_Entry = Cross_Reference_Entry 1209 def factory(*args_, **kwargs_): 1210 if PDFXrefEntryListType.subclass: 1211 return PDFXrefEntryListType.subclass(*args_, **kwargs_) 1212 else: 1213 return PDFXrefEntryListType(*args_, **kwargs_) 1214 factory = staticmethod(factory) 1215 def get_Cross_Reference_Entry(self): return self.Cross_Reference_Entry 1216 def set_Cross_Reference_Entry(self, Cross_Reference_Entry): self.Cross_Reference_Entry = Cross_Reference_Entry 1217 def add_Cross_Reference_Entry(self, value): self.Cross_Reference_Entry.append(value) 1218 def insert_Cross_Reference_Entry(self, index, value): self.Cross_Reference_Entry[index] = value 1219 def hasContent_(self): 1220 if ( 1221 self.Cross_Reference_Entry 1222 ): 1223 return True 1224 else: 1225 return False 1226 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXrefEntryListType', namespacedef_='', pretty_print=True): 1227 if pretty_print: 1228 eol_ = '\n' 1229 else: 1230 eol_ = '' 1231 showIndent(lwrite, level, pretty_print) 1232 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 1233 already_processed = set() 1234 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFXrefEntryListType') 1235 if self.hasContent_(): 1236 lwrite('>%s' % (eol_, )) 1237 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 1238 showIndent(lwrite, level, pretty_print) 1239 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 1240 else: 1241 lwrite('/>%s' % (eol_, )) 1242 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFXrefEntryListType'): 1243 pass 1244 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXrefEntryListType', fromsubclass_=False, pretty_print=True): 1245 if pretty_print: 1246 eol_ = '\n' 1247 else: 1248 eol_ = '' 1249 for Cross_Reference_Entry_ in self.Cross_Reference_Entry: 1250 Cross_Reference_Entry_.export(lwrite, level, 'PDFFileObj:', name_='Cross_Reference_Entry', pretty_print=pretty_print) 1251 def build(self, node): 1252 self.__sourcenode__ = node 1253 already_processed = set() 1254 self.buildAttributes(node, node.attrib, already_processed) 1255 for child in node: 1256 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 1257 self.buildChildren(child, node, nodeName_) 1258 def buildAttributes(self, node, attrs, already_processed): 1259 pass 1260 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 1261 if nodeName_ == 'Cross_Reference_Entry': 1262 obj_ = PDFXrefEntryType.factory() 1263 obj_.build(child_) 1264 self.Cross_Reference_Entry.append(obj_) 1265# end class PDFXrefEntryListType 1266 1267class PDFXrefEntryType(GeneratedsSuper): 1268 """The PDFXrefEntryType captures details of a cross-reference table 1269 subsection entry.The type field specifies the type of the cross- 1270 reference entry.""" 1271 1272 subclass = None 1273 superclass = None 1274 def __init__(self, type_=None, Byte_Offset=None, Object_Number=None, Generation_Number=None): 1275 self.type_ = _cast(None, type_) 1276 self.Byte_Offset = Byte_Offset 1277 self.Object_Number = Object_Number 1278 self.Generation_Number = Generation_Number 1279 def factory(*args_, **kwargs_): 1280 if PDFXrefEntryType.subclass: 1281 return PDFXrefEntryType.subclass(*args_, **kwargs_) 1282 else: 1283 return PDFXrefEntryType(*args_, **kwargs_) 1284 factory = staticmethod(factory) 1285 def get_Byte_Offset(self): return self.Byte_Offset 1286 def set_Byte_Offset(self, Byte_Offset): self.Byte_Offset = Byte_Offset 1287 def validate_IntegerObjectPropertyType(self, value): 1288 # Validate type cybox_common.IntegerObjectPropertyType, a restriction on None. 1289 pass 1290 def get_Object_Number(self): return self.Object_Number 1291 def set_Object_Number(self, Object_Number): self.Object_Number = Object_Number 1292 def validate_NonNegativeIntegerObjectPropertyType(self, value): 1293 # Validate type cybox_common.NonNegativeIntegerObjectPropertyType, a restriction on None. 1294 pass 1295 def get_Generation_Number(self): return self.Generation_Number 1296 def set_Generation_Number(self, Generation_Number): self.Generation_Number = Generation_Number 1297 def get_type(self): return self.type_ 1298 def set_type(self, type_): self.type_ = type_ 1299 def hasContent_(self): 1300 if ( 1301 self.Byte_Offset is not None or 1302 self.Object_Number is not None or 1303 self.Generation_Number is not None 1304 ): 1305 return True 1306 else: 1307 return False 1308 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXrefEntryType', namespacedef_='', pretty_print=True): 1309 if pretty_print: 1310 eol_ = '\n' 1311 else: 1312 eol_ = '' 1313 showIndent(lwrite, level, pretty_print) 1314 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 1315 already_processed = set() 1316 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFXrefEntryType') 1317 if self.hasContent_(): 1318 lwrite('>%s' % (eol_, )) 1319 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 1320 showIndent(lwrite, level, pretty_print) 1321 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 1322 else: 1323 lwrite('/>%s' % (eol_, )) 1324 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFXrefEntryType'): 1325 if self.type_ is not None: 1326 1327 lwrite(' type=%s' % (quote_attrib(self.type_), )) 1328 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFXrefEntryType', fromsubclass_=False, pretty_print=True): 1329 if pretty_print: 1330 eol_ = '\n' 1331 else: 1332 eol_ = '' 1333 if self.Byte_Offset is not None: 1334 self.Byte_Offset.export(lwrite, level, 'PDFFileObj:', name_='Byte_Offset', pretty_print=pretty_print) 1335 if self.Object_Number is not None: 1336 self.Object_Number.export(lwrite, level, 'PDFFileObj:', name_='Object_Number', pretty_print=pretty_print) 1337 if self.Generation_Number is not None: 1338 self.Generation_Number.export(lwrite, level, 'PDFFileObj:', name_='Generation_Number', pretty_print=pretty_print) 1339 def build(self, node): 1340 self.__sourcenode__ = node 1341 already_processed = set() 1342 self.buildAttributes(node, node.attrib, already_processed) 1343 for child in node: 1344 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 1345 self.buildChildren(child, node, nodeName_) 1346 def buildAttributes(self, node, attrs, already_processed): 1347 value = find_attr_value_('type', node) 1348 if value is not None: 1349 1350 self.type_ = value 1351 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 1352 if nodeName_ == 'Byte_Offset': 1353 obj_ = cybox_common.IntegerObjectPropertyType.factory() 1354 obj_.build(child_) 1355 self.set_Byte_Offset(obj_) 1356 elif nodeName_ == 'Object_Number': 1357 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 1358 obj_.build(child_) 1359 self.set_Object_Number(obj_) 1360 elif nodeName_ == 'Generation_Number': 1361 obj_ = cybox_common.NonNegativeIntegerObjectPropertyType.factory() 1362 obj_.build(child_) 1363 self.set_Generation_Number(obj_) 1364# end class PDFXrefEntryType 1365 1366class PDFDictionaryType(GeneratedsSuper): 1367 """The PDFDictionaryType captures a PDF dictionary as a set of key 1368 value pairs, or as a reference to an indirect object that 1369 contains.""" 1370 1371 subclass = None 1372 superclass = None 1373 def __init__(self, Object_Reference=None, Raw_Contents=None): 1374 self.Object_Reference = Object_Reference 1375 self.Raw_Contents = Raw_Contents 1376 def factory(*args_, **kwargs_): 1377 if PDFDictionaryType.subclass: 1378 return PDFDictionaryType.subclass(*args_, **kwargs_) 1379 else: 1380 return PDFDictionaryType(*args_, **kwargs_) 1381 factory = staticmethod(factory) 1382 def get_Object_Reference(self): return self.Object_Reference 1383 def set_Object_Reference(self, Object_Reference): self.Object_Reference = Object_Reference 1384 def get_Raw_Contents(self): return self.Raw_Contents 1385 def set_Raw_Contents(self, Raw_Contents): self.Raw_Contents = Raw_Contents 1386 def validate_StringObjectPropertyType(self, value): 1387 # Validate type cybox_common.StringObjectPropertyType, a restriction on None. 1388 pass 1389 def hasContent_(self): 1390 if ( 1391 self.Object_Reference is not None or 1392 self.Raw_Contents is not None 1393 ): 1394 return True 1395 else: 1396 return False 1397 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFDictionaryType', namespacedef_='', pretty_print=True): 1398 if pretty_print: 1399 eol_ = '\n' 1400 else: 1401 eol_ = '' 1402 showIndent(lwrite, level, pretty_print) 1403 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 1404 already_processed = set() 1405 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFDictionaryType') 1406 if self.hasContent_(): 1407 lwrite('>%s' % (eol_, )) 1408 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 1409 showIndent(lwrite, level, pretty_print) 1410 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 1411 else: 1412 lwrite('/>%s' % (eol_, )) 1413 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFDictionaryType'): 1414 pass 1415 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFDictionaryType', fromsubclass_=False, pretty_print=True): 1416 if pretty_print: 1417 eol_ = '\n' 1418 else: 1419 eol_ = '' 1420 if self.Object_Reference is not None: 1421 self.Object_Reference.export(lwrite, level, 'PDFFileObj:', name_='Object_Reference', pretty_print=pretty_print) 1422 if self.Raw_Contents is not None: 1423 if self.Raw_Contents.get_valueOf_() is not None: 1424 value = self.Raw_Contents.get_valueOf_() 1425 if not value.startswith('<![CDATA['): 1426 value = '<![CDATA[' + value + ']]>' 1427 self.Raw_Contents.set_valueOf_(value) 1428 self.Raw_Contents.export(lwrite, level, 'PDFFileObj:', name_='Raw_Contents', pretty_print=pretty_print) 1429 def build(self, node): 1430 self.__sourcenode__ = node 1431 already_processed = set() 1432 self.buildAttributes(node, node.attrib, already_processed) 1433 for child in node: 1434 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 1435 self.buildChildren(child, node, nodeName_) 1436 def buildAttributes(self, node, attrs, already_processed): 1437 pass 1438 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 1439 if nodeName_ == 'Object_Reference': 1440 obj_ = PDFIndirectObjectIDType.factory() 1441 obj_.build(child_) 1442 self.set_Object_Reference(obj_) 1443 elif nodeName_ == 'Raw_Contents': 1444 obj_ = cybox_common.StringObjectPropertyType.factory() 1445 obj_.build(child_) 1446 self.set_Raw_Contents(obj_) 1447# end class PDFDictionaryType 1448 1449class PDFFileMetadataType(GeneratedsSuper): 1450 """The PDFFileMetadaType captures some metadata regarding the PDF file 1451 object.The encrypted field specifies whether the PDF file is 1452 encrypted.The optimized field specifies whether the PDF file has 1453 been optimized.""" 1454 1455 subclass = None 1456 superclass = None 1457 def __init__(self, encrypted=None, optimized=None, Document_Information_Dictionary=None, Number_Of_Indirect_Objects=None, Number_Of_Trailers=None, Number_Of_Cross_Reference_Tables=None, Keyword_Counts=None): 1458 self.encrypted = _cast(bool, encrypted) 1459 self.optimized = _cast(bool, optimized) 1460 self.Document_Information_Dictionary = Document_Information_Dictionary 1461 self.Number_Of_Indirect_Objects = Number_Of_Indirect_Objects 1462 self.Number_Of_Trailers = Number_Of_Trailers 1463 self.Number_Of_Cross_Reference_Tables = Number_Of_Cross_Reference_Tables 1464 self.Keyword_Counts = Keyword_Counts 1465 def factory(*args_, **kwargs_): 1466 if PDFFileMetadataType.subclass: 1467 return PDFFileMetadataType.subclass(*args_, **kwargs_) 1468 else: 1469 return PDFFileMetadataType(*args_, **kwargs_) 1470 factory = staticmethod(factory) 1471 def get_Document_Information_Dictionary(self): return self.Document_Information_Dictionary 1472 def set_Document_Information_Dictionary(self, Document_Information_Dictionary): self.Document_Information_Dictionary = Document_Information_Dictionary 1473 def get_Number_Of_Indirect_Objects(self): return self.Number_Of_Indirect_Objects 1474 def set_Number_Of_Indirect_Objects(self, Number_Of_Indirect_Objects): self.Number_Of_Indirect_Objects = Number_Of_Indirect_Objects 1475 def validate_PositiveIntegerObjectPropertyType(self, value): 1476 # Validate type cybox_common.PositiveIntegerObjectPropertyType, a restriction on None. 1477 pass 1478 def get_Number_Of_Trailers(self): return self.Number_Of_Trailers 1479 def set_Number_Of_Trailers(self, Number_Of_Trailers): self.Number_Of_Trailers = Number_Of_Trailers 1480 def get_Number_Of_Cross_Reference_Tables(self): return self.Number_Of_Cross_Reference_Tables 1481 def set_Number_Of_Cross_Reference_Tables(self, Number_Of_Cross_Reference_Tables): self.Number_Of_Cross_Reference_Tables = Number_Of_Cross_Reference_Tables 1482 def get_Keyword_Counts(self): return self.Keyword_Counts 1483 def set_Keyword_Counts(self, Keyword_Counts): self.Keyword_Counts = Keyword_Counts 1484 def get_encrypted(self): return self.encrypted 1485 def set_encrypted(self, encrypted): self.encrypted = encrypted 1486 def get_optimized(self): return self.optimized 1487 def set_optimized(self, optimized): self.optimized = optimized 1488 def hasContent_(self): 1489 if ( 1490 self.Document_Information_Dictionary is not None or 1491 self.Number_Of_Indirect_Objects is not None or 1492 self.Number_Of_Trailers is not None or 1493 self.Number_Of_Cross_Reference_Tables is not None or 1494 self.Keyword_Counts is not None 1495 ): 1496 return True 1497 else: 1498 return False 1499 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFFileMetadataType', namespacedef_='', pretty_print=True): 1500 if pretty_print: 1501 eol_ = '\n' 1502 else: 1503 eol_ = '' 1504 showIndent(lwrite, level, pretty_print) 1505 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 1506 already_processed = set() 1507 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFFileMetadataType') 1508 if self.hasContent_(): 1509 lwrite('>%s' % (eol_, )) 1510 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 1511 showIndent(lwrite, level, pretty_print) 1512 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 1513 else: 1514 lwrite('/>%s' % (eol_, )) 1515 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFFileMetadataType'): 1516 if self.encrypted is not None: 1517 1518 lwrite(' encrypted="%s"' % self.gds_format_boolean(self.encrypted, input_name='encrypted')) 1519 if self.optimized is not None: 1520 1521 lwrite(' optimized="%s"' % self.gds_format_boolean(self.optimized, input_name='optimized')) 1522 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFFileMetadataType', fromsubclass_=False, pretty_print=True): 1523 if pretty_print: 1524 eol_ = '\n' 1525 else: 1526 eol_ = '' 1527 if self.Document_Information_Dictionary is not None: 1528 self.Document_Information_Dictionary.export(lwrite, level, 'PDFFileObj:', name_='Document_Information_Dictionary', pretty_print=pretty_print) 1529 if self.Number_Of_Indirect_Objects is not None: 1530 self.Number_Of_Indirect_Objects.export(lwrite, level, 'PDFFileObj:', name_='Number_Of_Indirect_Objects', pretty_print=pretty_print) 1531 if self.Number_Of_Trailers is not None: 1532 self.Number_Of_Trailers.export(lwrite, level, 'PDFFileObj:', name_='Number_Of_Trailers', pretty_print=pretty_print) 1533 if self.Number_Of_Cross_Reference_Tables is not None: 1534 self.Number_Of_Cross_Reference_Tables.export(lwrite, level, 'PDFFileObj:', name_='Number_Of_Cross_Reference_Tables', pretty_print=pretty_print) 1535 if self.Keyword_Counts is not None: 1536 self.Keyword_Counts.export(lwrite, level, 'PDFFileObj:', name_='Keyword_Counts', pretty_print=pretty_print) 1537 def build(self, node): 1538 self.__sourcenode__ = node 1539 already_processed = set() 1540 self.buildAttributes(node, node.attrib, already_processed) 1541 for child in node: 1542 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 1543 self.buildChildren(child, node, nodeName_) 1544 def buildAttributes(self, node, attrs, already_processed): 1545 value = find_attr_value_('encrypted', node) 1546 if value is not None: 1547 1548 if value in ('true', '1'): 1549 self.encrypted = True 1550 elif value in ('false', '0'): 1551 self.encrypted = False 1552 else: 1553 raise_parse_error(node, 'Bad boolean attribute') 1554 value = find_attr_value_('optimized', node) 1555 if value is not None: 1556 1557 if value in ('true', '1'): 1558 self.optimized = True 1559 elif value in ('false', '0'): 1560 self.optimized = False 1561 else: 1562 raise_parse_error(node, 'Bad boolean attribute') 1563 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 1564 if nodeName_ == 'Document_Information_Dictionary': 1565 obj_ = PDFDocumentInformationDictionaryType.factory() 1566 obj_.build(child_) 1567 self.set_Document_Information_Dictionary(obj_) 1568 elif nodeName_ == 'Number_Of_Indirect_Objects': 1569 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 1570 obj_.build(child_) 1571 self.set_Number_Of_Indirect_Objects(obj_) 1572 elif nodeName_ == 'Number_Of_Trailers': 1573 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 1574 obj_.build(child_) 1575 self.set_Number_Of_Trailers(obj_) 1576 elif nodeName_ == 'Number_Of_Cross_Reference_Tables': 1577 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 1578 obj_.build(child_) 1579 self.set_Number_Of_Cross_Reference_Tables(obj_) 1580 elif nodeName_ == 'Keyword_Counts': 1581 obj_ = PDFKeywordCountsType.factory() 1582 obj_.build(child_) 1583 self.set_Keyword_Counts(obj_) 1584# end class PDFFileMetadataType 1585 1586class PDFKeywordCountsType(GeneratedsSuper): 1587 """The PDFKeywordCountsType captures the occurrences of various 1588 keywords in a PDF file.""" 1589 1590 subclass = None 1591 superclass = None 1592 def __init__(self, Page_Count=None, Encrypt_Count=None, ObjStm_Count=None, JS_Count=None, JavaScript_Count=None, AA_Count=None, OpenAction_Count=None, ASCIIHexDecode_Count=None, ASCII85Decode_Count=None, LZWDecode_Count=None, FlateDecode_Count=None, RunLengthDecode_Count=None, JBIG2Decode_Count=None, DCTDecode_Count=None, RichMedia_Count=None, CCITTFaxDecode_Count=None, Launch_Count=None, XFA_Count=None): 1593 self.Page_Count = Page_Count 1594 self.Encrypt_Count = Encrypt_Count 1595 self.ObjStm_Count = ObjStm_Count 1596 self.JS_Count = JS_Count 1597 self.JavaScript_Count = JavaScript_Count 1598 self.AA_Count = AA_Count 1599 self.OpenAction_Count = OpenAction_Count 1600 self.ASCIIHexDecode_Count = ASCIIHexDecode_Count 1601 self.ASCII85Decode_Count = ASCII85Decode_Count 1602 self.LZWDecode_Count = LZWDecode_Count 1603 self.FlateDecode_Count = FlateDecode_Count 1604 self.RunLengthDecode_Count = RunLengthDecode_Count 1605 self.JBIG2Decode_Count = JBIG2Decode_Count 1606 self.DCTDecode_Count = DCTDecode_Count 1607 self.RichMedia_Count = RichMedia_Count 1608 self.CCITTFaxDecode_Count = CCITTFaxDecode_Count 1609 self.Launch_Count = Launch_Count 1610 self.XFA_Count = XFA_Count 1611 def factory(*args_, **kwargs_): 1612 if PDFKeywordCountsType.subclass: 1613 return PDFKeywordCountsType.subclass(*args_, **kwargs_) 1614 else: 1615 return PDFKeywordCountsType(*args_, **kwargs_) 1616 factory = staticmethod(factory) 1617 def get_Page_Count(self): return self.Page_Count 1618 def set_Page_Count(self, Page_Count): self.Page_Count = Page_Count 1619 def get_Encrypt_Count(self): return self.Encrypt_Count 1620 def set_Encrypt_Count(self, Encrypt_Count): self.Encrypt_Count = Encrypt_Count 1621 def get_ObjStm_Count(self): return self.ObjStm_Count 1622 def set_ObjStm_Count(self, ObjStm_Count): self.ObjStm_Count = ObjStm_Count 1623 def get_JS_Count(self): return self.JS_Count 1624 def set_JS_Count(self, JS_Count): self.JS_Count = JS_Count 1625 def get_JavaScript_Count(self): return self.JavaScript_Count 1626 def set_JavaScript_Count(self, JavaScript_Count): self.JavaScript_Count = JavaScript_Count 1627 def get_AA_Count(self): return self.AA_Count 1628 def set_AA_Count(self, AA_Count): self.AA_Count = AA_Count 1629 def get_OpenAction_Count(self): return self.OpenAction_Count 1630 def set_OpenAction_Count(self, OpenAction_Count): self.OpenAction_Count = OpenAction_Count 1631 def get_ASCIIHexDecode_Count(self): return self.ASCIIHexDecode_Count 1632 def set_ASCIIHexDecode_Count(self, ASCIIHexDecode_Count): self.ASCIIHexDecode_Count = ASCIIHexDecode_Count 1633 def get_ASCII85Decode_Count(self): return self.ASCII85Decode_Count 1634 def set_ASCII85Decode_Count(self, ASCII85Decode_Count): self.ASCII85Decode_Count = ASCII85Decode_Count 1635 def get_LZWDecode_Count(self): return self.LZWDecode_Count 1636 def set_LZWDecode_Count(self, LZWDecode_Count): self.LZWDecode_Count = LZWDecode_Count 1637 def get_FlateDecode_Count(self): return self.FlateDecode_Count 1638 def set_FlateDecode_Count(self, FlateDecode_Count): self.FlateDecode_Count = FlateDecode_Count 1639 def get_RunLengthDecode_Count(self): return self.RunLengthDecode_Count 1640 def set_RunLengthDecode_Count(self, RunLengthDecode_Count): self.RunLengthDecode_Count = RunLengthDecode_Count 1641 def get_JBIG2Decode_Count(self): return self.JBIG2Decode_Count 1642 def set_JBIG2Decode_Count(self, JBIG2Decode_Count): self.JBIG2Decode_Count = JBIG2Decode_Count 1643 def get_DCTDecode_Count(self): return self.DCTDecode_Count 1644 def set_DCTDecode_Count(self, DCTDecode_Count): self.DCTDecode_Count = DCTDecode_Count 1645 def get_RichMedia_Count(self): return self.RichMedia_Count 1646 def set_RichMedia_Count(self, RichMedia_Count): self.RichMedia_Count = RichMedia_Count 1647 def get_CCITTFaxDecode_Count(self): return self.CCITTFaxDecode_Count 1648 def set_CCITTFaxDecode_Count(self, CCITTFaxDecode_Count): self.CCITTFaxDecode_Count = CCITTFaxDecode_Count 1649 def get_Launch_Count(self): return self.Launch_Count 1650 def set_Launch_Count(self, Launch_Count): self.Launch_Count = Launch_Count 1651 def get_XFA_Count(self): return self.XFA_Count 1652 def set_XFA_Count(self, XFA_Count): self.XFA_Count = XFA_Count 1653 def hasContent_(self): 1654 if ( 1655 self.Page_Count is not None or 1656 self.Encrypt_Count is not None or 1657 self.ObjStm_Count is not None or 1658 self.JS_Count is not None or 1659 self.JavaScript_Count is not None or 1660 self.AA_Count is not None or 1661 self.OpenAction_Count is not None or 1662 self.ASCIIHexDecode_Count is not None or 1663 self.ASCII85Decode_Count is not None or 1664 self.LZWDecode_Count is not None or 1665 self.FlateDecode_Count is not None or 1666 self.RunLengthDecode_Count is not None or 1667 self.JBIG2Decode_Count is not None or 1668 self.DCTDecode_Count is not None or 1669 self.RichMedia_Count is not None or 1670 self.CCITTFaxDecode_Count is not None or 1671 self.Launch_Count is not None or 1672 self.XFA_Count is not None 1673 ): 1674 return True 1675 else: 1676 return False 1677 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFKeywordCountsType', namespacedef_='', pretty_print=True): 1678 if pretty_print: 1679 eol_ = '\n' 1680 else: 1681 eol_ = '' 1682 showIndent(lwrite, level, pretty_print) 1683 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 1684 already_processed = set() 1685 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFKeywordCountsType') 1686 if self.hasContent_(): 1687 lwrite('>%s' % (eol_, )) 1688 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 1689 showIndent(lwrite, level, pretty_print) 1690 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 1691 else: 1692 lwrite('/>%s' % (eol_, )) 1693 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFKeywordCountsType'): 1694 pass 1695 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFKeywordCountsType', fromsubclass_=False, pretty_print=True): 1696 if pretty_print: 1697 eol_ = '\n' 1698 else: 1699 eol_ = '' 1700 if self.Page_Count is not None: 1701 self.Page_Count.export(lwrite, level, 'PDFFileObj:', name_='Page_Count', pretty_print=pretty_print) 1702 if self.Encrypt_Count is not None: 1703 self.Encrypt_Count.export(lwrite, level, 'PDFFileObj:', name_='Encrypt_Count', pretty_print=pretty_print) 1704 if self.ObjStm_Count is not None: 1705 self.ObjStm_Count.export(lwrite, level, 'PDFFileObj:', name_='ObjStm_Count', pretty_print=pretty_print) 1706 if self.JS_Count is not None: 1707 self.JS_Count.export(lwrite, level, 'PDFFileObj:', name_='JS_Count', pretty_print=pretty_print) 1708 if self.JavaScript_Count is not None: 1709 self.JavaScript_Count.export(lwrite, level, 'PDFFileObj:', name_='JavaScript_Count', pretty_print=pretty_print) 1710 if self.AA_Count is not None: 1711 self.AA_Count.export(lwrite, level, 'PDFFileObj:', name_='AA_Count', pretty_print=pretty_print) 1712 if self.OpenAction_Count is not None: 1713 self.OpenAction_Count.export(lwrite, level, 'PDFFileObj:', name_='OpenAction_Count', pretty_print=pretty_print) 1714 if self.ASCIIHexDecode_Count is not None: 1715 self.ASCIIHexDecode_Count.export(lwrite, level, 'PDFFileObj:', name_='ASCIIHexDecode_Count', pretty_print=pretty_print) 1716 if self.ASCII85Decode_Count is not None: 1717 self.ASCII85Decode_Count.export(lwrite, level, 'PDFFileObj:', name_='ASCII85Decode_Count', pretty_print=pretty_print) 1718 if self.LZWDecode_Count is not None: 1719 self.LZWDecode_Count.export(lwrite, level, 'PDFFileObj:', name_='LZWDecode_Count', pretty_print=pretty_print) 1720 if self.FlateDecode_Count is not None: 1721 self.FlateDecode_Count.export(lwrite, level, 'PDFFileObj:', name_='FlateDecode_Count', pretty_print=pretty_print) 1722 if self.RunLengthDecode_Count is not None: 1723 self.RunLengthDecode_Count.export(lwrite, level, 'PDFFileObj:', name_='RunLengthDecode_Count', pretty_print=pretty_print) 1724 if self.JBIG2Decode_Count is not None: 1725 self.JBIG2Decode_Count.export(lwrite, level, 'PDFFileObj:', name_='JBIG2Decode_Count', pretty_print=pretty_print) 1726 if self.DCTDecode_Count is not None: 1727 self.DCTDecode_Count.export(lwrite, level, 'PDFFileObj:', name_='DCTDecode_Count', pretty_print=pretty_print) 1728 if self.RichMedia_Count is not None: 1729 self.RichMedia_Count.export(lwrite, level, 'PDFFileObj:', name_='RichMedia_Count', pretty_print=pretty_print) 1730 if self.CCITTFaxDecode_Count is not None: 1731 self.CCITTFaxDecode_Count.export(lwrite, level, 'PDFFileObj:', name_='CCITTFaxDecode_Count', pretty_print=pretty_print) 1732 if self.Launch_Count is not None: 1733 self.Launch_Count.export(lwrite, level, 'PDFFileObj:', name_='Launch_Count', pretty_print=pretty_print) 1734 if self.XFA_Count is not None: 1735 self.XFA_Count.export(lwrite, level, 'PDFFileObj:', name_='XFA_Count', pretty_print=pretty_print) 1736 def build(self, node): 1737 self.__sourcenode__ = node 1738 already_processed = set() 1739 self.buildAttributes(node, node.attrib, already_processed) 1740 for child in node: 1741 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 1742 self.buildChildren(child, node, nodeName_) 1743 def buildAttributes(self, node, attrs, already_processed): 1744 pass 1745 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 1746 if nodeName_ == 'Page_Count': 1747 obj_ = PDFKeywordCountType.factory() 1748 obj_.build(child_) 1749 self.set_Page_Count(obj_) 1750 elif nodeName_ == 'Encrypt_Count': 1751 obj_ = PDFKeywordCountType.factory() 1752 obj_.build(child_) 1753 self.set_Encrypt_Count(obj_) 1754 elif nodeName_ == 'ObjStm_Count': 1755 obj_ = PDFKeywordCountType.factory() 1756 obj_.build(child_) 1757 self.set_ObjStm_Count(obj_) 1758 elif nodeName_ == 'JS_Count': 1759 obj_ = PDFKeywordCountType.factory() 1760 obj_.build(child_) 1761 self.set_JS_Count(obj_) 1762 elif nodeName_ == 'JavaScript_Count': 1763 obj_ = PDFKeywordCountType.factory() 1764 obj_.build(child_) 1765 self.set_JavaScript_Count(obj_) 1766 elif nodeName_ == 'AA_Count': 1767 obj_ = PDFKeywordCountType.factory() 1768 obj_.build(child_) 1769 self.set_AA_Count(obj_) 1770 elif nodeName_ == 'OpenAction_Count': 1771 obj_ = PDFKeywordCountType.factory() 1772 obj_.build(child_) 1773 self.set_OpenAction_Count(obj_) 1774 elif nodeName_ == 'ASCIIHexDecode_Count': 1775 obj_ = PDFKeywordCountType.factory() 1776 obj_.build(child_) 1777 self.set_ASCIIHexDecode_Count(obj_) 1778 elif nodeName_ == 'ASCII85Decode_Count': 1779 obj_ = PDFKeywordCountType.factory() 1780 obj_.build(child_) 1781 self.set_ASCII85Decode_Count(obj_) 1782 elif nodeName_ == 'LZWDecode_Count': 1783 obj_ = PDFKeywordCountType.factory() 1784 obj_.build(child_) 1785 self.set_LZWDecode_Count(obj_) 1786 elif nodeName_ == 'FlateDecode_Count': 1787 obj_ = PDFKeywordCountType.factory() 1788 obj_.build(child_) 1789 self.set_FlateDecode_Count(obj_) 1790 elif nodeName_ == 'RunLengthDecode_Count': 1791 obj_ = PDFKeywordCountType.factory() 1792 obj_.build(child_) 1793 self.set_RunLengthDecode_Count(obj_) 1794 elif nodeName_ == 'JBIG2Decode_Count': 1795 obj_ = PDFKeywordCountType.factory() 1796 obj_.build(child_) 1797 self.set_JBIG2Decode_Count(obj_) 1798 elif nodeName_ == 'DCTDecode_Count': 1799 obj_ = PDFKeywordCountType.factory() 1800 obj_.build(child_) 1801 self.set_DCTDecode_Count(obj_) 1802 elif nodeName_ == 'RichMedia_Count': 1803 obj_ = PDFKeywordCountType.factory() 1804 obj_.build(child_) 1805 self.set_RichMedia_Count(obj_) 1806 elif nodeName_ == 'CCITTFaxDecode_Count': 1807 obj_ = PDFKeywordCountType.factory() 1808 obj_.build(child_) 1809 self.set_CCITTFaxDecode_Count(obj_) 1810 elif nodeName_ == 'Launch_Count': 1811 obj_ = PDFKeywordCountType.factory() 1812 obj_.build(child_) 1813 self.set_Launch_Count(obj_) 1814 elif nodeName_ == 'XFA_Count': 1815 obj_ = PDFKeywordCountType.factory() 1816 obj_.build(child_) 1817 self.set_XFA_Count(obj_) 1818# end class PDFKeywordCountsType 1819 1820class PDFKeywordCountType(GeneratedsSuper): 1821 """The PDFKeywordCountType captures the obfuscated and non-obfuscated 1822 occurrences of a keyword.""" 1823 1824 subclass = None 1825 superclass = None 1826 def __init__(self, Non_Obfuscated_Count=None, Obfuscated_Count=None): 1827 self.Non_Obfuscated_Count = Non_Obfuscated_Count 1828 self.Obfuscated_Count = Obfuscated_Count 1829 def factory(*args_, **kwargs_): 1830 if PDFKeywordCountType.subclass: 1831 return PDFKeywordCountType.subclass(*args_, **kwargs_) 1832 else: 1833 return PDFKeywordCountType(*args_, **kwargs_) 1834 factory = staticmethod(factory) 1835 def get_Non_Obfuscated_Count(self): return self.Non_Obfuscated_Count 1836 def set_Non_Obfuscated_Count(self, Non_Obfuscated_Count): self.Non_Obfuscated_Count = Non_Obfuscated_Count 1837 def validate_NonNegativeIntegerObjectPropertyType(self, value): 1838 # Validate type cybox_common.NonNegativeIntegerObjectPropertyType, a restriction on None. 1839 pass 1840 def get_Obfuscated_Count(self): return self.Obfuscated_Count 1841 def set_Obfuscated_Count(self, Obfuscated_Count): self.Obfuscated_Count = Obfuscated_Count 1842 def hasContent_(self): 1843 if ( 1844 self.Non_Obfuscated_Count is not None or 1845 self.Obfuscated_Count is not None 1846 ): 1847 return True 1848 else: 1849 return False 1850 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFKeywordCountType', namespacedef_='', pretty_print=True): 1851 if pretty_print: 1852 eol_ = '\n' 1853 else: 1854 eol_ = '' 1855 showIndent(lwrite, level, pretty_print) 1856 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 1857 already_processed = set() 1858 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFKeywordCountType') 1859 if self.hasContent_(): 1860 lwrite('>%s' % (eol_, )) 1861 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 1862 showIndent(lwrite, level, pretty_print) 1863 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 1864 else: 1865 lwrite('/>%s' % (eol_, )) 1866 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFKeywordCountType'): 1867 pass 1868 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFKeywordCountType', fromsubclass_=False, pretty_print=True): 1869 if pretty_print: 1870 eol_ = '\n' 1871 else: 1872 eol_ = '' 1873 if self.Non_Obfuscated_Count is not None: 1874 self.Non_Obfuscated_Count.export(lwrite, level, 'PDFFileObj:', name_='Non_Obfuscated_Count', pretty_print=pretty_print) 1875 if self.Obfuscated_Count is not None: 1876 self.Obfuscated_Count.export(lwrite, level, 'PDFFileObj:', name_='Obfuscated_Count', pretty_print=pretty_print) 1877 def build(self, node): 1878 self.__sourcenode__ = node 1879 already_processed = set() 1880 self.buildAttributes(node, node.attrib, already_processed) 1881 for child in node: 1882 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 1883 self.buildChildren(child, node, nodeName_) 1884 def buildAttributes(self, node, attrs, already_processed): 1885 pass 1886 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 1887 if nodeName_ == 'Non_Obfuscated_Count': 1888 obj_ = cybox_common.NonNegativeIntegerObjectPropertyType.factory() 1889 obj_.build(child_) 1890 self.set_Non_Obfuscated_Count(obj_) 1891 elif nodeName_ == 'Obfuscated_Count': 1892 obj_ = cybox_common.NonNegativeIntegerObjectPropertyType.factory() 1893 obj_.build(child_) 1894 self.set_Obfuscated_Count(obj_) 1895# end class PDFKeywordCountType 1896 1897class PDFFileObjectType(file_object.FileObjectType): 1898 """The PDFFileObjectType type is intended to characterize the 1899 structural makeup of PDF files.""" 1900 1901 subclass = None 1902 superclass = file_object.FileObjectType 1903 def __init__(self, object_reference=None, Custom_Properties=None, xsi_type=None, is_packed=None, File_Name=None, File_Path=None, Device_Path=None, Full_Path=None, File_Extension=None, Size_In_Bytes=None, Magic_Number=None, File_Format=None, Hashes=None, Digital_Signatures=None, Modified_Time=None, Accessed_Time=None, Created_Time=None, File_Attributes_List=None, Permissions=None, User_Owner=None, Packer_List=None, Peak_Entropy=None, Sym_Links=None, Byte_Runs=None, Extracted_Features=None, Metadata=None, Version=None, Indirect_Objects=None, Cross_Reference_Tables=None, Trailers=None): 1904 super(PDFFileObjectType, self).__init__(object_reference, Custom_Properties, is_packed, File_Name, File_Path, Device_Path, Full_Path, File_Extension, Size_In_Bytes, Magic_Number, File_Format, Hashes, Digital_Signatures, Modified_Time, Accessed_Time, Created_Time, File_Attributes_List, Permissions, User_Owner, Packer_List, Peak_Entropy, Sym_Links, Byte_Runs, Extracted_Features, ) 1905 self.Metadata = Metadata 1906 self.Version = Version 1907 self.Indirect_Objects = Indirect_Objects 1908 self.Cross_Reference_Tables = Cross_Reference_Tables 1909 self.Trailers = Trailers 1910 def factory(*args_, **kwargs_): 1911 if PDFFileObjectType.subclass: 1912 return PDFFileObjectType.subclass(*args_, **kwargs_) 1913 else: 1914 return PDFFileObjectType(*args_, **kwargs_) 1915 factory = staticmethod(factory) 1916 def get_Metadata(self): return self.Metadata 1917 def set_Metadata(self, Metadata): self.Metadata = Metadata 1918 def get_Version(self): return self.Version 1919 def set_Version(self, Version): self.Version = Version 1920 def validate_DoubleObjectPropertyType(self, value): 1921 # Validate type cybox_common.DoubleObjectPropertyType, a restriction on None. 1922 pass 1923 def get_Indirect_Objects(self): return self.Indirect_Objects 1924 def set_Indirect_Objects(self, Indirect_Objects): self.Indirect_Objects = Indirect_Objects 1925 def get_Cross_Reference_Tables(self): return self.Cross_Reference_Tables 1926 def set_Cross_Reference_Tables(self, Cross_Reference_Tables): self.Cross_Reference_Tables = Cross_Reference_Tables 1927 def get_Trailers(self): return self.Trailers 1928 def set_Trailers(self, Trailers): self.Trailers = Trailers 1929 def hasContent_(self): 1930 if ( 1931 self.Metadata is not None or 1932 self.Version is not None or 1933 self.Indirect_Objects is not None or 1934 self.Cross_Reference_Tables is not None or 1935 self.Trailers is not None or 1936 super(PDFFileObjectType, self).hasContent_() 1937 ): 1938 return True 1939 else: 1940 return False 1941 def export(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFFileObjectType', namespacedef_='', pretty_print=True): 1942 if pretty_print: 1943 eol_ = '\n' 1944 else: 1945 eol_ = '' 1946 showIndent(lwrite, level, pretty_print) 1947 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 1948 already_processed = set() 1949 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFFileObjectType') 1950 if self.hasContent_(): 1951 lwrite('>%s' % (eol_, )) 1952 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 1953 showIndent(lwrite, level, pretty_print) 1954 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 1955 else: 1956 lwrite('/>%s' % (eol_, )) 1957 def exportAttributes(self, lwrite, level, already_processed, namespace_='PDFFileObj:', name_='PDFFileObjectType'): 1958 super(PDFFileObjectType, self).exportAttributes(lwrite, level, already_processed, namespace_, name_='PDFFileObjectType') 1959 def exportChildren(self, lwrite, level, namespace_='PDFFileObj:', name_='PDFFileObjectType', fromsubclass_=False, pretty_print=True): 1960 super(PDFFileObjectType, self).exportChildren(lwrite, level, 'PDFFileObj:', name_, True, pretty_print=pretty_print) 1961 if pretty_print: 1962 eol_ = '\n' 1963 else: 1964 eol_ = '' 1965 if self.Metadata is not None: 1966 self.Metadata.export(lwrite, level, 'PDFFileObj:', name_='Metadata', pretty_print=pretty_print) 1967 if self.Version is not None: 1968 self.Version.export(lwrite, level, 'PDFFileObj:', name_='Version', pretty_print=pretty_print) 1969 if self.Indirect_Objects is not None: 1970 self.Indirect_Objects.export(lwrite, level, 'PDFFileObj:', name_='Indirect_Objects', pretty_print=pretty_print) 1971 if self.Cross_Reference_Tables is not None: 1972 self.Cross_Reference_Tables.export(lwrite, level, 'PDFFileObj:', name_='Cross_Reference_Tables', pretty_print=pretty_print) 1973 if self.Trailers is not None: 1974 self.Trailers.export(lwrite, level, 'PDFFileObj:', name_='Trailers', pretty_print=pretty_print) 1975 def build(self, node): 1976 self.__sourcenode__ = node 1977 already_processed = set() 1978 self.buildAttributes(node, node.attrib, already_processed) 1979 for child in node: 1980 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 1981 self.buildChildren(child, node, nodeName_) 1982 def buildAttributes(self, node, attrs, already_processed): 1983 super(PDFFileObjectType, self).buildAttributes(node, attrs, already_processed) 1984 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 1985 if nodeName_ == 'Metadata': 1986 obj_ = PDFFileMetadataType.factory() 1987 obj_.build(child_) 1988 self.set_Metadata(obj_) 1989 elif nodeName_ == 'Version': 1990 obj_ = cybox_common.DoubleObjectPropertyType.factory() 1991 obj_.build(child_) 1992 self.set_Version(obj_) 1993 elif nodeName_ == 'Indirect_Objects': 1994 obj_ = PDFIndirectObjectListType.factory() 1995 obj_.build(child_) 1996 self.set_Indirect_Objects(obj_) 1997 elif nodeName_ == 'Cross_Reference_Tables': 1998 obj_ = PDFXRefTableListType.factory() 1999 obj_.build(child_) 2000 self.set_Cross_Reference_Tables(obj_) 2001 elif nodeName_ == 'Trailers': 2002 obj_ = PDFTrailerListType.factory() 2003 obj_.build(child_) 2004 self.set_Trailers(obj_) 2005 super(PDFFileObjectType, self).buildChildren(child_, node, nodeName_, True) 2006# end class PDFFileObjectType 2007 2008GDSClassesMapping = { 2009 'Build_Utility': cybox_common.BuildUtilityType, 2010 'Errors': cybox_common.ErrorsType, 2011 'Title': cybox_common.StringObjectPropertyType, 2012 'File_Extension': cybox_common.StringObjectPropertyType, 2013 'Opcodes': cybox_common.StringObjectPropertyType, 2014 'Certificate_Issuer': cybox_common.StringObjectPropertyType, 2015 'Identifier': cybox_common.PlatformIdentifierType, 2016 'Metadata': cybox_common.MetadataType, 2017 'Hash': cybox_common.HashType, 2018 'Number_Of_Trailers': cybox_common.PositiveIntegerObjectPropertyType, 2019 'Trapped': cybox_common.StringObjectPropertyType, 2020 'Size_In_Bytes': cybox_common.UnsignedLongObjectPropertyType, 2021 'Author': cybox_common.StringObjectPropertyType, 2022 'Generation_Number': cybox_common.NonNegativeIntegerObjectPropertyType, 2023 'Environment_Variable': cybox_common.EnvironmentVariableType, 2024 'Information_Source_Type': cybox_common.ControlledVocabularyStringType, 2025 'Dependencies': cybox_common.DependenciesType, 2026 'Internal_Strings': cybox_common.InternalStringsType, 2027 'Fuzzy_Hash_Structure': cybox_common.FuzzyHashStructureType, 2028 'Byte_Runs': cybox_common.ByteRunsType, 2029 'SubDatum': cybox_common.MetadataType, 2030 'Segment_Hash': cybox_common.HashValueType, 2031 'Digital_Signature': cybox_common.DigitalSignatureInfoType, 2032 'Code_Snippets': cybox_common.CodeSnippetsType, 2033 'Value': cybox_common.StringObjectPropertyType, 2034 'Length': cybox_common.IntegerObjectPropertyType, 2035 'Raw_Contents': cybox_common.StringObjectPropertyType, 2036 'Device_Path': cybox_common.StringObjectPropertyType, 2037 'Producer': cybox_common.StringObjectPropertyType, 2038 'Raw_Stream_Hashes': cybox_common.HashListType, 2039 'Internationalization_Settings': cybox_common.InternationalizationSettingsType, 2040 'Tool_Configuration': cybox_common.ToolConfigurationType, 2041 'English_Translation': cybox_common.StringObjectPropertyType, 2042 'Last_Cross_Reference_Offset': cybox_common.PositiveIntegerObjectPropertyType, 2043 'Subject': cybox_common.StringObjectPropertyType, 2044 'Functions': cybox_common.FunctionsType, 2045 'Byte_Offset': cybox_common.IntegerObjectPropertyType, 2046 'Compiler_Informal_Description': cybox_common.CompilerInformalDescriptionType, 2047 'Entry_Point': cybox_common.HexBinaryObjectPropertyType, 2048 'System': cybox_common.ObjectPropertiesType, 2049 'Platform': cybox_common.PlatformSpecificationType, 2050 'Version': cybox_common.StringObjectPropertyType, 2051 'Created_Time': cybox_common.DateTimeObjectPropertyType, 2052 'Type': file_object.PackerClassType, 2053 'Compilers': cybox_common.CompilersType, 2054 'Digital_Signatures': cybox_common.DigitalSignaturesType, 2055 'Tool_Type': cybox_common.ControlledVocabularyStringType, 2056 'String': cybox_common.ExtractedStringType, 2057 'File_Format': cybox_common.StringObjectPropertyType, 2058 'Tool': cybox_common.ToolInformationType, 2059 'Non_Stream_Contents': cybox_common.StringObjectPropertyType, 2060 'Detected_Entrypoint_Signatures': file_object.EntryPointSignatureListType, 2061 'Tool_Hashes': cybox_common.HashListType, 2062 'File_Path': file_object.FilePathType, 2063 'Entry_Point_Signature': file_object.EntryPointSignatureType, 2064 'Error_Instances': cybox_common.ErrorInstancesType, 2065 'Data_Segment': cybox_common.StringObjectPropertyType, 2066 'Sym_Link': cybox_common.StringObjectPropertyType, 2067 'Certificate_Subject': cybox_common.StringObjectPropertyType, 2068 'Error': cybox_common.ErrorType, 2069 'Signature': cybox_common.StringObjectPropertyType, 2070 'Property': cybox_common.PropertyType, 2071 'Strings': cybox_common.ExtractedStringsType, 2072 'User_Owner': cybox_common.StringObjectPropertyType, 2073 'Contributors': cybox_common.PersonnelType, 2074 'Packer': file_object.PackerType, 2075 'Simple_Hash_Value': cybox_common.SimpleHashValueType, 2076 'Number_Of_Indirect_Objects': cybox_common.PositiveIntegerObjectPropertyType, 2077 'User_Account_Info': cybox_common.ObjectPropertiesType, 2078 'File_Attributes_List': file_object.FileAttributeType, 2079 'Configuration_Settings': cybox_common.ConfigurationSettingsType, 2080 'Number_Of_Objects': cybox_common.NonNegativeIntegerObjectPropertyType, 2081 'Compiler_Platform_Specification': cybox_common.PlatformSpecificationType, 2082 'Size': cybox_common.PositiveIntegerObjectPropertyType, 2083 'Byte_String_Value': cybox_common.HexBinaryObjectPropertyType, 2084 'Sym_Links': file_object.SymLinksListType, 2085 'Image_Offset': cybox_common.IntegerObjectPropertyType, 2086 'Number_Of_Cross_Reference_Tables': cybox_common.PositiveIntegerObjectPropertyType, 2087 'Instance': cybox_common.ObjectPropertiesType, 2088 'Obfuscated_Count': cybox_common.NonNegativeIntegerObjectPropertyType, 2089 'Import': cybox_common.StringObjectPropertyType, 2090 'Accessed_Time': cybox_common.StringObjectPropertyType, 2091 'String_Value': cybox_common.StringObjectPropertyType, 2092 'Usage_Context_Assumptions': cybox_common.UsageContextAssumptionsType, 2093 'Tool_Specific_Data': cybox_common.ToolSpecificDataType, 2094 'Execution_Environment': cybox_common.ExecutionEnvironmentType, 2095 'Build_Utility_Platform_Specification': cybox_common.PlatformSpecificationType, 2096 'Search_Distance': cybox_common.IntegerObjectPropertyType, 2097 'Decoded_Stream': cybox_common.HexBinaryObjectPropertyType, 2098 'Segment_Count': cybox_common.IntegerObjectPropertyType, 2099 'Offset': cybox_common.IntegerObjectPropertyType, 2100 'Date': cybox_common.DateRangeType, 2101 'Hashes': cybox_common.HashListType, 2102 'Raw_Stream': cybox_common.StringObjectPropertyType, 2103 'Segments': cybox_common.HashSegmentsType, 2104 'Permissions': file_object.FilePermissionsType, 2105 'Language': cybox_common.StringObjectPropertyType, 2106 'Usage_Context_Assumption': cybox_common.StructuredTextType, 2107 'Block_Hash': cybox_common.FuzzyHashBlockType, 2108 'Dependency': cybox_common.DependencyType, 2109 'Packer_List': file_object.PackerListType, 2110 'Time': cybox_common.TimeType, 2111 'Trigger_Point': cybox_common.HexBinaryObjectPropertyType, 2112 'Byte_Run': cybox_common.ByteRunType, 2113 'File_System_Offset': cybox_common.IntegerObjectPropertyType, 2114 'Creator': cybox_common.StringObjectPropertyType, 2115 'Imports': cybox_common.ImportsType, 2116 'Object_Number': cybox_common.NonNegativeIntegerObjectPropertyType, 2117 'Build_Information': cybox_common.BuildInformationType, 2118 'References': cybox_common.ToolReferencesType, 2119 'Encoding': cybox_common.ControlledVocabularyStringType, 2120 'Keywords': cybox_common.StringObjectPropertyType, 2121 'Non_Obfuscated_Count': cybox_common.NonNegativeIntegerObjectPropertyType, 2122 'Block_Hash_Value': cybox_common.HashValueType, 2123 'File_Name': cybox_common.StringObjectPropertyType, 2124 'Configuration_Setting': cybox_common.ConfigurationSettingType, 2125 'Modified_Time': cybox_common.StringObjectPropertyType, 2126 'Reference_Description': cybox_common.StructuredTextType, 2127 'Libraries': cybox_common.LibrariesType, 2128 'Decoded_Stream_Hashes': cybox_common.HashListType, 2129 'Prev': cybox_common.PositiveIntegerObjectPropertyType, 2130 'Function': cybox_common.StringObjectPropertyType, 2131 'Description': cybox_common.StructuredTextType, 2132 'Code_Snippet': cybox_common.ObjectPropertiesType, 2133 'Build_Configuration': cybox_common.BuildConfigurationType, 2134 'Extracted_Features': cybox_common.ExtractedFeaturesType, 2135 'Magic_Number': cybox_common.HexBinaryObjectPropertyType, 2136 'ModDate': cybox_common.DateTimeObjectPropertyType, 2137 'ID_String': cybox_common.StringObjectPropertyType, 2138 'Address': cybox_common.HexBinaryObjectPropertyType, 2139 'Search_Within': cybox_common.IntegerObjectPropertyType, 2140 'Segment': cybox_common.HashSegmentType, 2141 'Depth': cybox_common.IntegerObjectPropertyType, 2142 'Full_Path': cybox_common.StringObjectPropertyType, 2143 'Compiler': cybox_common.CompilerType, 2144 'Name': cybox_common.StringObjectPropertyType, 2145 'Library': cybox_common.LibraryType, 2146 'First_Object_Number': cybox_common.NonNegativeIntegerObjectPropertyType, 2147 'Signature_Description': cybox_common.StringObjectPropertyType, 2148 'EP_Jump_Codes': file_object.EPJumpCodeType, 2149 'Block_Size': cybox_common.IntegerObjectPropertyType, 2150 'Peak_Entropy': cybox_common.DoubleObjectPropertyType, 2151 'Fuzzy_Hash_Value': cybox_common.FuzzyHashValueType, 2152 'Data_Size': cybox_common.DataSizeType, 2153 'Dependency_Description': cybox_common.StructuredTextType, 2154 'File': file_object.FileObjectType, 2155 'Contributor': cybox_common.ContributorType, 2156 'CreationDate': cybox_common.DateTimeObjectPropertyType, 2157 'Tools': cybox_common.ToolsInformationType, 2158 'Custom_Properties': cybox_common.CustomPropertiesType, 2159} 2160 2161USAGE_TEXT = """ 2162Usage: python <Parser>.py [ -s ] <in_xml_file> 2163""" 2164 2165def usage(): 2166 print(USAGE_TEXT) 2167 sys.exit(1) 2168 2169def get_root_tag(node): 2170 tag = Tag_pattern_.match(node.tag).groups()[-1] 2171 rootClass = GDSClassesMapping.get(tag) 2172 if rootClass is None: 2173 rootClass = globals().get(tag) 2174 return tag, rootClass 2175 2176def parse(inFileName): 2177 doc = parsexml_(inFileName) 2178 rootNode = doc.getroot() 2179 rootTag, rootClass = get_root_tag(rootNode) 2180 if rootClass is None: 2181 rootTag = 'PDF_File' 2182 rootClass = PDFFileObjectType 2183 rootObj = rootClass.factory() 2184 rootObj.build(rootNode) 2185 # Enable Python to collect the space used by the DOM. 2186 doc = None 2187# sys.stdout.write('<?xml version="1.0" ?>\n') 2188# rootObj.export(sys.stdout.write, 0, name_=rootTag, 2189# namespacedef_='', 2190# pretty_print=True) 2191 return rootObj 2192 2193def parseEtree(inFileName): 2194 doc = parsexml_(inFileName) 2195 rootNode = doc.getroot() 2196 rootTag, rootClass = get_root_tag(rootNode) 2197 if rootClass is None: 2198 rootTag = 'PDF_File' 2199 rootClass = PDFFileObjectType 2200 rootObj = rootClass.factory() 2201 rootObj.build(rootNode) 2202 # Enable Python to collect the space used by the DOM. 2203 doc = None 2204 rootElement = rootObj.to_etree(None, name_=rootTag) 2205 content = etree_.tostring(rootElement, pretty_print=True, 2206 xml_declaration=True, encoding="utf-8") 2207 sys.stdout.write(content) 2208 sys.stdout.write('\n') 2209 return rootObj, rootElement 2210 2211def parseString(inString): 2212 from mixbox.vendor.six import StringIO 2213 doc = parsexml_(StringIO(inString)) 2214 rootNode = doc.getroot() 2215 rootTag, rootClass = get_root_tag(rootNode) 2216 if rootClass is None: 2217 rootTag = 'PDF_File' 2218 rootClass = PDFFileObjectType 2219 rootObj = rootClass.factory() 2220 rootObj.build(rootNode) 2221 # Enable Python to collect the space used by the DOM. 2222 doc = None 2223# sys.stdout.write('<?xml version="1.0" ?>\n') 2224# rootObj.export(sys.stdout.write, 0, name_="PDF_File", 2225# namespacedef_='') 2226 return rootObj 2227 2228def main(): 2229 args = sys.argv[1:] 2230 if len(args) == 1: 2231 parse(args[0]) 2232 else: 2233 usage() 2234 2235if __name__ == '__main__': 2236 #import pdb; pdb.set_trace() 2237 main() 2238 2239__all__ = [ 2240 "PDFFileObjectType", 2241 "PDFXRefTableListType", 2242 "PDFXRefTableType", 2243 "PDFXrefTableSubsectionListType", 2244 "PDFXrefTableSubsectionType", 2245 "PDFTrailerListType", 2246 "PDFTrailerType", 2247 "PDFFileIDType", 2248 "PDFIndirectObjectListType", 2249 "PDFIndirectObjectType", 2250 "PDFIndirectObjectIDType", 2251 "PDFIndirectObjectContentsType", 2252 "PDFStreamType", 2253 "PDFDocumentInformationDictionaryType", 2254 "PDFXrefEntryListType", 2255 "PDFXrefEntryType", 2256 "PDFDictionaryType", 2257 "PDFFileMetadataType", 2258 "PDFKeywordCountsType", 2259 "PDFKeywordCountType" 2260 ] 2261