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 address_object 9 10 11class AttachmentsType(GeneratedsSuper): 12 """The AttachmenstType captures a list of attachments for an email 13 message.""" 14 15 subclass = None 16 superclass = None 17 def __init__(self, File=None): 18 if File is None: 19 self.File = [] 20 else: 21 self.File = File 22 def factory(*args_, **kwargs_): 23 if AttachmentsType.subclass: 24 return AttachmentsType.subclass(*args_, **kwargs_) 25 else: 26 return AttachmentsType(*args_, **kwargs_) 27 factory = staticmethod(factory) 28 def get_File(self): return self.File 29 def set_File(self, File): self.File = File 30 def add_File(self, value): self.File.append(value) 31 def insert_File(self, index, value): self.File[index] = value 32 def hasContent_(self): 33 if ( 34 self.File 35 ): 36 return True 37 else: 38 return False 39 def export(self, lwrite, level, namespace_='EmailMessageObj:', name_='AttachmentsType', 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_='AttachmentsType') 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_='EmailMessageObj:', name_='AttachmentsType'): 56 pass 57 def exportChildren(self, lwrite, level, namespace_='EmailMessageObj:', name_='AttachmentsType', fromsubclass_=False, pretty_print=True): 58 if pretty_print: 59 eol_ = '\n' 60 else: 61 eol_ = '' 62 for File_ in self.File: 63 File_.export(lwrite, level, 'EmailMessageObj:', name_='File', 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_ == 'File': 75 obj_ = AttachmentReferenceType.factory() 76 obj_.build(child_) 77 self.File.append(obj_) 78# end class AttachmentsType 79 80class EmailHeaderType(GeneratedsSuper): 81 """The EmailHeaderType captures a representation of a standard email 82 header.""" 83 84 subclass = None 85 superclass = None 86 def __init__(self, Received_Lines=None, To=None, CC=None, BCC=None, From=None, Subject=None, In_Reply_To=None, Date=None, Message_ID=None, Sender=None, Reply_To=None, Errors_To=None, Boundary=None, Content_Type=None, MIME_Version=None, Precedence=None, User_Agent=None, X_Mailer=None, X_Originating_IP=None, X_Priority=None): 87 self.Received_Lines = Received_Lines 88 self.To = To 89 self.CC = CC 90 self.BCC = BCC 91 self.From = From 92 self.Subject = Subject 93 self.In_Reply_To = In_Reply_To 94 self.Date = Date 95 self.Message_ID = Message_ID 96 self.Sender = Sender 97 self.Reply_To = Reply_To 98 self.Errors_To = Errors_To 99 self.Boundary = Boundary 100 self.Content_Type = Content_Type 101 self.MIME_Version = MIME_Version 102 self.Precedence = Precedence 103 self.User_Agent = User_Agent 104 self.X_Mailer = X_Mailer 105 self.X_Originating_IP = X_Originating_IP 106 self.X_Priority = X_Priority 107 def factory(*args_, **kwargs_): 108 if EmailHeaderType.subclass: 109 return EmailHeaderType.subclass(*args_, **kwargs_) 110 else: 111 return EmailHeaderType(*args_, **kwargs_) 112 factory = staticmethod(factory) 113 def get_Received_Lines(self): return self.Received_Lines 114 def set_Received_Lines(self, Received_Lines): self.Received_Lines = Received_Lines 115 def get_To(self): return self.To 116 def set_To(self, To): self.To = To 117 def get_CC(self): return self.CC 118 def set_CC(self, CC): self.CC = CC 119 def get_BCC(self): return self.BCC 120 def set_BCC(self, BCC): self.BCC = BCC 121 def get_From(self): return self.From 122 def set_From(self, From): self.From = From 123 def get_Subject(self): return self.Subject 124 def set_Subject(self, Subject): self.Subject = Subject 125 def validate_StringObjectPropertyType(self, value): 126 # Validate type cybox_common.StringObjectPropertyType, a restriction on None. 127 pass 128 def get_In_Reply_To(self): return self.In_Reply_To 129 def set_In_Reply_To(self, In_Reply_To): self.In_Reply_To = In_Reply_To 130 def get_Date(self): return self.Date 131 def set_Date(self, Date): self.Date = Date 132 def validate_DateTimeObjectPropertyType(self, value): 133 # Validate type cybox_common.DateTimeObjectPropertyType, a restriction on None. 134 pass 135 def get_Message_ID(self): return self.Message_ID 136 def set_Message_ID(self, Message_ID): self.Message_ID = Message_ID 137 def get_Sender(self): return self.Sender 138 def set_Sender(self, Sender): self.Sender = Sender 139 def get_Reply_To(self): return self.Reply_To 140 def set_Reply_To(self, Reply_To): self.Reply_To = Reply_To 141 def get_Errors_To(self): return self.Errors_To 142 def set_Errors_To(self, Errors_To): self.Errors_To = Errors_To 143 def get_Boundary(self): return self.Boundary 144 def set_Boundary(self, Boundary): self.Boundary = Boundary 145 def get_Content_Type(self): return self.Content_Type 146 def set_Content_Type(self, Content_Type): self.Content_Type = Content_Type 147 def get_MIME_Version(self): return self.MIME_Version 148 def set_MIME_Version(self, MIME_Version): self.MIME_Version = MIME_Version 149 def get_Precedence(self): return self.Precedence 150 def set_Precedence(self, Precedence): self.Precedence = Precedence 151 def get_User_Agent(self): return self.User_Agent 152 def set_User_Agent(self, User_Agent): self.User_Agent = User_Agent 153 def get_X_Mailer(self): return self.X_Mailer 154 def set_X_Mailer(self, X_Mailer): self.X_Mailer = X_Mailer 155 def get_X_Originating_IP(self): return self.X_Originating_IP 156 def set_X_Originating_IP(self, X_Originating_IP): self.X_Originating_IP = X_Originating_IP 157 def get_X_Priority(self): return self.X_Priority 158 def set_X_Priority(self, X_Priority): self.X_Priority = X_Priority 159 def validate_PositiveIntegerObjectPropertyType(self, value): 160 # Validate type cybox_common.PositiveIntegerObjectPropertyType, a restriction on None. 161 pass 162 def hasContent_(self): 163 if ( 164 self.Received_Lines is not None or 165 self.To is not None or 166 self.CC is not None or 167 self.BCC is not None or 168 self.From is not None or 169 self.Subject is not None or 170 self.In_Reply_To is not None or 171 self.Date is not None or 172 self.Message_ID is not None or 173 self.Sender is not None or 174 self.Reply_To is not None or 175 self.Errors_To is not None or 176 self.Boundary is not None or 177 self.Content_Type is not None or 178 self.MIME_Version is not None or 179 self.Precedence is not None or 180 self.User_Agent is not None or 181 self.X_Mailer is not None or 182 self.X_Originating_IP is not None or 183 self.X_Priority is not None 184 ): 185 return True 186 else: 187 return False 188 def export(self, lwrite, level, namespace_='EmailMessageObj:', name_='EmailHeaderType', namespacedef_='', pretty_print=True): 189 if pretty_print: 190 eol_ = '\n' 191 else: 192 eol_ = '' 193 showIndent(lwrite, level, pretty_print) 194 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 195 already_processed = set() 196 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='EmailHeaderType') 197 if self.hasContent_(): 198 lwrite('>%s' % (eol_, )) 199 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 200 showIndent(lwrite, level, pretty_print) 201 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 202 else: 203 lwrite('/>%s' % (eol_, )) 204 def exportAttributes(self, lwrite, level, already_processed, namespace_='EmailMessageObj:', name_='EmailHeaderType'): 205 pass 206 def exportChildren(self, lwrite, level, namespace_='EmailMessageObj:', name_='EmailHeaderType', fromsubclass_=False, pretty_print=True): 207 if pretty_print: 208 eol_ = '\n' 209 else: 210 eol_ = '' 211 if self.Received_Lines is not None: 212 self.Received_Lines.export(lwrite, level, 'EmailMessageObj:', name_='Received_Lines', pretty_print=pretty_print) 213 if self.To is not None: 214 self.To.export(lwrite, level, 'EmailMessageObj:', name_='To', pretty_print=pretty_print) 215 if self.CC is not None: 216 self.CC.export(lwrite, level, 'EmailMessageObj:', name_='CC', pretty_print=pretty_print) 217 if self.BCC is not None: 218 self.BCC.export(lwrite, level, 'EmailMessageObj:', name_='BCC', pretty_print=pretty_print) 219 if self.From is not None: 220 self.From.export(lwrite, level, 'EmailMessageObj:', name_='From', pretty_print=pretty_print) 221 if self.Subject is not None: 222 self.Subject.export(lwrite, level, 'EmailMessageObj:', name_='Subject', pretty_print=pretty_print) 223 if self.In_Reply_To is not None: 224 self.In_Reply_To.export(lwrite, level, 'EmailMessageObj:', name_='In_Reply_To', pretty_print=pretty_print) 225 if self.Date is not None: 226 self.Date.export(lwrite, level, 'EmailMessageObj:', name_='Date', pretty_print=pretty_print) 227 if self.Message_ID is not None: 228 self.Message_ID.export(lwrite, level, 'EmailMessageObj:', name_='Message_ID', pretty_print=pretty_print) 229 if self.Sender is not None: 230 self.Sender.export(lwrite, level, 'EmailMessageObj:', name_='Sender', pretty_print=pretty_print) 231 if self.Reply_To is not None: 232 self.Reply_To.export(lwrite, level, 'EmailMessageObj:', name_='Reply_To', pretty_print=pretty_print) 233 if self.Errors_To is not None: 234 self.Errors_To.export(lwrite, level, 'EmailMessageObj:', name_='Errors_To', pretty_print=pretty_print) 235 if self.Boundary is not None: 236 self.Boundary.export(lwrite, level, 'EmailMessageObj:', name_='Boundary', pretty_print=pretty_print) 237 if self.Content_Type is not None: 238 self.Content_Type.export(lwrite, level, 'EmailMessageObj:', name_='Content_Type', pretty_print=pretty_print) 239 if self.MIME_Version is not None: 240 self.MIME_Version.export(lwrite, level, 'EmailMessageObj:', name_='MIME_Version', pretty_print=pretty_print) 241 if self.Precedence is not None: 242 self.Precedence.export(lwrite, level, 'EmailMessageObj:', name_='Precedence', pretty_print=pretty_print) 243 if self.User_Agent is not None: 244 self.User_Agent.export(lwrite, level, 'EmailMessageObj:', name_='User_Agent', pretty_print=pretty_print) 245 if self.X_Mailer is not None: 246 self.X_Mailer.export(lwrite, level, 'EmailMessageObj:', name_='X_Mailer', pretty_print=pretty_print) 247 if self.X_Originating_IP is not None: 248 self.X_Originating_IP.export(lwrite, level, 'EmailMessageObj:', name_='X_Originating_IP', pretty_print=pretty_print) 249 if self.X_Priority is not None: 250 self.X_Priority.export(lwrite, level, 'EmailMessageObj:', name_='X_Priority', pretty_print=pretty_print) 251 def build(self, node): 252 self.__sourcenode__ = node 253 already_processed = set() 254 self.buildAttributes(node, node.attrib, already_processed) 255 for child in node: 256 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 257 self.buildChildren(child, node, nodeName_) 258 def buildAttributes(self, node, attrs, already_processed): 259 pass 260 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 261 if nodeName_ == 'Received_Lines': 262 obj_ = EmailReceivedLineListType.factory() 263 obj_.build(child_) 264 self.set_Received_Lines(obj_) 265 elif nodeName_ == 'To': 266 obj_ = EmailRecipientsType.factory() 267 obj_.build(child_) 268 self.set_To(obj_) 269 elif nodeName_ == 'CC': 270 obj_ = EmailRecipientsType.factory() 271 obj_.build(child_) 272 self.set_CC(obj_) 273 elif nodeName_ == 'BCC': 274 obj_ = EmailRecipientsType.factory() 275 obj_.build(child_) 276 self.set_BCC(obj_) 277 elif nodeName_ == 'From': 278 obj_ = address_object.AddressObjectType.factory() 279 obj_.build(child_) 280 self.set_From(obj_) 281 elif nodeName_ == 'Subject': 282 obj_ = cybox_common.StringObjectPropertyType.factory() 283 obj_.build(child_) 284 self.set_Subject(obj_) 285 elif nodeName_ == 'In_Reply_To': 286 obj_ = cybox_common.StringObjectPropertyType.factory() 287 obj_.build(child_) 288 self.set_In_Reply_To(obj_) 289 elif nodeName_ == 'Date': 290 obj_ = cybox_common.DateTimeObjectPropertyType.factory() 291 obj_.build(child_) 292 self.set_Date(obj_) 293 elif nodeName_ == 'Message_ID': 294 obj_ = cybox_common.StringObjectPropertyType.factory() 295 obj_.build(child_) 296 self.set_Message_ID(obj_) 297 elif nodeName_ == 'Sender': 298 obj_ = address_object.AddressObjectType.factory() 299 obj_.build(child_) 300 self.set_Sender(obj_) 301 elif nodeName_ == 'Reply_To': 302 obj_ = address_object.AddressObjectType.factory() 303 obj_.build(child_) 304 self.set_Reply_To(obj_) 305 elif nodeName_ == 'Errors_To': 306 obj_ = cybox_common.StringObjectPropertyType.factory() 307 obj_.build(child_) 308 self.set_Errors_To(obj_) 309 elif nodeName_ == 'Boundary': 310 obj_ = cybox_common.StringObjectPropertyType.factory() 311 obj_.build(child_) 312 self.set_Boundary(obj_) 313 elif nodeName_ == 'Content_Type': 314 obj_ = cybox_common.StringObjectPropertyType.factory() 315 obj_.build(child_) 316 self.set_Content_Type(obj_) 317 elif nodeName_ == 'MIME_Version': 318 obj_ = cybox_common.StringObjectPropertyType.factory() 319 obj_.build(child_) 320 self.set_MIME_Version(obj_) 321 elif nodeName_ == 'Precedence': 322 obj_ = cybox_common.StringObjectPropertyType.factory() 323 obj_.build(child_) 324 self.set_Precedence(obj_) 325 elif nodeName_ == 'User_Agent': 326 obj_ = cybox_common.StringObjectPropertyType.factory() 327 obj_.build(child_) 328 self.set_User_Agent(obj_) 329 elif nodeName_ == 'X_Mailer': 330 obj_ = cybox_common.StringObjectPropertyType.factory() 331 obj_.build(child_) 332 self.set_X_Mailer(obj_) 333 elif nodeName_ == 'X_Originating_IP': 334 obj_ = address_object.AddressObjectType.factory() 335 obj_.build(child_) 336 self.set_X_Originating_IP(obj_) 337 elif nodeName_ == 'X_Priority': 338 obj_ = cybox_common.PositiveIntegerObjectPropertyType.factory() 339 obj_.build(child_) 340 self.set_X_Priority(obj_) 341# end class EmailHeaderType 342 343class EmailRecipientsType(GeneratedsSuper): 344 """The EmailRecipientsType captures a list of recipients for an email 345 message.""" 346 347 subclass = None 348 superclass = None 349 def __init__(self, Recipient=None): 350 if Recipient is None: 351 self.Recipient = [] 352 else: 353 self.Recipient = Recipient 354 def factory(*args_, **kwargs_): 355 if EmailRecipientsType.subclass: 356 return EmailRecipientsType.subclass(*args_, **kwargs_) 357 else: 358 return EmailRecipientsType(*args_, **kwargs_) 359 factory = staticmethod(factory) 360 def get_Recipient(self): return self.Recipient 361 def set_Recipient(self, Recipient): self.Recipient = Recipient 362 def add_Recipient(self, value): self.Recipient.append(value) 363 def insert_Recipient(self, index, value): self.Recipient[index] = value 364 def hasContent_(self): 365 if ( 366 self.Recipient 367 ): 368 return True 369 else: 370 return False 371 def export(self, lwrite, level, namespace_='EmailMessageObj:', name_='EmailRecipientsType', namespacedef_='', pretty_print=True): 372 if pretty_print: 373 eol_ = '\n' 374 else: 375 eol_ = '' 376 showIndent(lwrite, level, pretty_print) 377 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 378 already_processed = set() 379 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='EmailRecipientsType') 380 if self.hasContent_(): 381 lwrite('>%s' % (eol_, )) 382 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 383 showIndent(lwrite, level, pretty_print) 384 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 385 else: 386 lwrite('/>%s' % (eol_, )) 387 def exportAttributes(self, lwrite, level, already_processed, namespace_='EmailMessageObj:', name_='EmailRecipientsType'): 388 pass 389 def exportChildren(self, lwrite, level, namespace_='EmailMessageObj:', name_='EmailRecipientsType', fromsubclass_=False, pretty_print=True): 390 if pretty_print: 391 eol_ = '\n' 392 else: 393 eol_ = '' 394 for Recipient_ in self.Recipient: 395 Recipient_.export(lwrite, level, 'EmailMessageObj:', name_='Recipient', pretty_print=pretty_print) 396 def build(self, node): 397 self.__sourcenode__ = node 398 already_processed = set() 399 self.buildAttributes(node, node.attrib, already_processed) 400 for child in node: 401 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 402 self.buildChildren(child, node, nodeName_) 403 def buildAttributes(self, node, attrs, already_processed): 404 pass 405 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 406 if nodeName_ == 'Recipient': 407 obj_ = address_object.AddressObjectType.factory() 408 obj_.build(child_) 409 self.Recipient.append(obj_) 410# end class EmailRecipientsType 411 412class LinksType(GeneratedsSuper): 413 """The LinksType captures a list of URIs, representing the links 414 contained in the message.""" 415 416 subclass = None 417 superclass = None 418 def __init__(self, Link=None): 419 if Link is None: 420 self.Link = [] 421 else: 422 self.Link = Link 423 def factory(*args_, **kwargs_): 424 if LinksType.subclass: 425 return LinksType.subclass(*args_, **kwargs_) 426 else: 427 return LinksType(*args_, **kwargs_) 428 factory = staticmethod(factory) 429 def get_Link(self): return self.Link 430 def set_Link(self, Link): self.Link = Link 431 def add_Link(self, value): self.Link.append(value) 432 def insert_Link(self, index, value): self.Link[index] = value 433 def hasContent_(self): 434 if ( 435 self.Link 436 ): 437 return True 438 else: 439 return False 440 def export(self, lwrite, level, namespace_='EmailMessageObj:', name_='LinksType', namespacedef_='', pretty_print=True): 441 if pretty_print: 442 eol_ = '\n' 443 else: 444 eol_ = '' 445 showIndent(lwrite, level, pretty_print) 446 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 447 already_processed = set() 448 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='LinksType') 449 if self.hasContent_(): 450 lwrite('>%s' % (eol_, )) 451 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 452 showIndent(lwrite, level, pretty_print) 453 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 454 else: 455 lwrite('/>%s' % (eol_, )) 456 def exportAttributes(self, lwrite, level, already_processed, namespace_='EmailMessageObj:', name_='LinksType'): 457 pass 458 def exportChildren(self, lwrite, level, namespace_='EmailMessageObj:', name_='LinksType', fromsubclass_=False, pretty_print=True): 459 if pretty_print: 460 eol_ = '\n' 461 else: 462 eol_ = '' 463 for Link_ in self.Link: 464 Link_.export(lwrite, level, 'EmailMessageObj:', name_='Link', pretty_print=pretty_print) 465 def build(self, node): 466 self.__sourcenode__ = node 467 already_processed = set() 468 self.buildAttributes(node, node.attrib, already_processed) 469 for child in node: 470 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 471 self.buildChildren(child, node, nodeName_) 472 def buildAttributes(self, node, attrs, already_processed): 473 pass 474 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 475 if nodeName_ == 'Link': 476 obj_ = LinkReferenceType.factory() 477 obj_.build(child_) 478 self.Link.append(obj_) 479# end class LinksType 480 481class EmailReceivedLineType(GeneratedsSuper): 482 """The EmailReceivedLineType captures a single 'Received' line in an 483 email message header.""" 484 subclass = None 485 superclass = None 486 def __init__(self, From=None, By=None, Via=None, With=None, For=None, ID=None, Timestamp=None): 487 self.From = From 488 self.By = By 489 self.Via = Via 490 self.With = With 491 self.For = For 492 self.ID = ID 493 self.Timestamp = Timestamp 494 def factory(*args_, **kwargs_): 495 if EmailReceivedLineType.subclass: 496 return EmailReceivedLineType.subclass(*args_, **kwargs_) 497 else: 498 return EmailReceivedLineType(*args_, **kwargs_) 499 factory = staticmethod(factory) 500 def get_From(self): return self.From 501 def set_From(self, From): self.From = From 502 def validate_StringObjectPropertyType(self, value): 503 # Validate type cybox_common.StringObjectPropertyType, a restriction on None. 504 pass 505 def get_By(self): return self.By 506 def set_By(self, By): self.By = By 507 def get_Via(self): return self.Via 508 def set_Via(self, Via): self.Via = Via 509 def get_With(self): return self.With 510 def set_With(self, With): self.With = With 511 def get_For(self): return self.For 512 def set_For(self, For): self.For = For 513 def get_ID(self): return self.ID 514 def set_ID(self, ID): self.ID = ID 515 def get_Timestamp(self): return self.Timestamp 516 def set_Timestamp(self, Timestamp): self.Timestamp = Timestamp 517 def hasContent_(self): 518 if ( 519 self.From is not None or 520 self.By is not None or 521 self.Via is not None or 522 self.With is not None or 523 self.For is not None or 524 self.ID is not None or 525 self.Timestamp is not None 526 ): 527 return True 528 else: 529 return False 530 def export(self, lwrite, level, namespace_='EmailMessageObj:', name_='EmailReceivedLineType', namespacedef_='', pretty_print=True): 531 if pretty_print: 532 eol_ = '\n' 533 else: 534 eol_ = '' 535 showIndent(lwrite, level, pretty_print) 536 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 537 already_processed = set() 538 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='EmailReceivedLineType') 539 if self.hasContent_(): 540 lwrite('>%s' % (eol_, )) 541 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 542 showIndent(lwrite, level, pretty_print) 543 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 544 else: 545 lwrite('/>%s' % (eol_, )) 546 def exportAttributes(self, lwrite, level, already_processed, namespace_='EmailMessageObj:', name_='EmailReceivedLineType'): 547 pass 548 def exportChildren(self, lwrite, level, namespace_='EmailMessageObj:', name_='EmailReceivedLineType', fromsubclass_=False, pretty_print=True): 549 if pretty_print: 550 eol_ = '\n' 551 else: 552 eol_ = '' 553 if self.From is not None: 554 self.From.export(lwrite, level, 'EmailMessageObj:', name_='From', pretty_print=pretty_print) 555 if self.By is not None: 556 self.By.export(lwrite, level, 'EmailMessageObj:', name_='By', pretty_print=pretty_print) 557 if self.Via is not None: 558 self.Via.export(lwrite, level, 'EmailMessageObj:', name_='Via', pretty_print=pretty_print) 559 if self.With is not None: 560 self.With.export(lwrite, level, 'EmailMessageObj:', name_='With', pretty_print=pretty_print) 561 if self.For is not None: 562 self.For.export(lwrite, level, 'EmailMessageObj:', name_='For', pretty_print=pretty_print) 563 if self.ID is not None: 564 self.ID.export(lwrite, level, 'EmailMessageObj:', name_='ID', pretty_print=pretty_print) 565 if self.Timestamp is not None: 566 self.Timestamp.export(lwrite, level, 'EmailMessageObj:', name_='Timestamp', pretty_print=pretty_print) 567 def build(self, node): 568 self.__sourcenode__ = node 569 already_processed = set() 570 self.buildAttributes(node, node.attrib, already_processed) 571 for child in node: 572 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 573 self.buildChildren(child, node, nodeName_) 574 def buildAttributes(self, node, attrs, already_processed): 575 pass 576 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 577 if nodeName_ == 'From': 578 obj_ = cybox_common.StringObjectPropertyType.factory() 579 obj_.build(child_) 580 self.set_From(obj_) 581 elif nodeName_ == 'By': 582 obj_ = cybox_common.StringObjectPropertyType.factory() 583 obj_.build(child_) 584 self.set_By(obj_) 585 elif nodeName_ == 'Via': 586 obj_ = cybox_common.StringObjectPropertyType.factory() 587 obj_.build(child_) 588 self.set_Via(obj_) 589 elif nodeName_ == 'With': 590 obj_ = cybox_common.StringObjectPropertyType.factory() 591 obj_.build(child_) 592 self.set_With(obj_) 593 elif nodeName_ == 'For': 594 obj_ = cybox_common.StringObjectPropertyType.factory() 595 obj_.build(child_) 596 self.set_For(obj_) 597 elif nodeName_ == 'ID': 598 obj_ = cybox_common.StringObjectPropertyType.factory() 599 obj_.build(child_) 600 self.set_ID(obj_) 601 elif nodeName_ == 'Timestamp': 602 obj_ = cybox_common.DateTimeObjectPropertyType.factory() 603 obj_.build(child_) 604 self.set_Timestamp(obj_) 605# end class EmailReceivedLineType 606 607class EmailReceivedLineListType(GeneratedsSuper): 608 """The EmailReceivedLineListType captures a list of 'Received' lines in 609 an email message header.""" 610 611 subclass = None 612 superclass = None 613 def __init__(self, Received=None): 614 if Received is None: 615 self.Received = [] 616 else: 617 self.Received = Received 618 def factory(*args_, **kwargs_): 619 if EmailReceivedLineListType.subclass: 620 return EmailReceivedLineListType.subclass(*args_, **kwargs_) 621 else: 622 return EmailReceivedLineListType(*args_, **kwargs_) 623 factory = staticmethod(factory) 624 def get_Received(self): return self.Received 625 def set_Received(self, Received): self.Received = Received 626 def add_Received(self, value): self.Received.append(value) 627 def insert_Received(self, index, value): self.Received[index] = value 628 def hasContent_(self): 629 if ( 630 self.Received 631 ): 632 return True 633 else: 634 return False 635 def export(self, lwrite, level, namespace_='EmailMessageObj:', name_='EmailReceivedLineListType', namespacedef_='', pretty_print=True): 636 if pretty_print: 637 eol_ = '\n' 638 else: 639 eol_ = '' 640 showIndent(lwrite, level, pretty_print) 641 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 642 already_processed = set() 643 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='EmailReceivedLineListType') 644 if self.hasContent_(): 645 lwrite('>%s' % (eol_, )) 646 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 647 showIndent(lwrite, level, pretty_print) 648 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 649 else: 650 lwrite('/>%s' % (eol_, )) 651 def exportAttributes(self, lwrite, level, already_processed, namespace_='EmailMessageObj:', name_='EmailReceivedLineListType'): 652 pass 653 def exportChildren(self, lwrite, level, namespace_='EmailMessageObj:', name_='EmailReceivedLineListType', fromsubclass_=False, pretty_print=True): 654 if pretty_print: 655 eol_ = '\n' 656 else: 657 eol_ = '' 658 for Received_ in self.Received: 659 Received_.export(lwrite, level, 'EmailMessageObj:', name_='Received', pretty_print=pretty_print) 660 def build(self, node): 661 self.__sourcenode__ = node 662 already_processed = set() 663 self.buildAttributes(node, node.attrib, already_processed) 664 for child in node: 665 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 666 self.buildChildren(child, node, nodeName_) 667 def buildAttributes(self, node, attrs, already_processed): 668 pass 669 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 670 if nodeName_ == 'Received': 671 obj_ = EmailReceivedLineType.factory() 672 obj_.build(child_) 673 self.Received.append(obj_) 674# end class EmailReceivedLineListType 675 676class AttachmentReferenceType(GeneratedsSuper): 677 """The AttachmentReferenceType specifies a reference to an Object 678 defined elsewhere in the document which characterizes an 679 attachment included in the email message.The object_reference 680 field specifies a reference to an file-oriented (i.e., the File 681 Object or one its derivations such as the Windows File Object) 682 Object defined elsewhere in the document, via its id.""" 683 684 subclass = None 685 superclass = None 686 def __init__(self, object_reference=None): 687 self.object_reference = _cast(None, object_reference) 688 pass 689 def factory(*args_, **kwargs_): 690 if AttachmentReferenceType.subclass: 691 return AttachmentReferenceType.subclass(*args_, **kwargs_) 692 else: 693 return AttachmentReferenceType(*args_, **kwargs_) 694 factory = staticmethod(factory) 695 def get_object_reference(self): return self.object_reference 696 def set_object_reference(self, object_reference): self.object_reference = object_reference 697 def hasContent_(self): 698 if ( 699 700 ): 701 return True 702 else: 703 return False 704 def export(self, lwrite, level, namespace_='EmailMessageObj:', name_='AttachmentReferenceType', namespacedef_='', pretty_print=True): 705 if pretty_print: 706 eol_ = '\n' 707 else: 708 eol_ = '' 709 showIndent(lwrite, level, pretty_print) 710 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 711 already_processed = set() 712 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='AttachmentReferenceType') 713 if self.hasContent_(): 714 lwrite('>%s' % (eol_, )) 715 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 716 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 717 else: 718 lwrite('/>%s' % (eol_, )) 719 def exportAttributes(self, lwrite, level, already_processed, namespace_='EmailMessageObj:', name_='AttachmentReferenceType'): 720 if self.object_reference is not None: 721 722 lwrite(' object_reference=%s' % (quote_attrib(self.object_reference), )) 723 def exportChildren(self, lwrite, level, namespace_='EmailMessageObj:', name_='AttachmentReferenceType', fromsubclass_=False, pretty_print=True): 724 pass 725 def build(self, node): 726 self.__sourcenode__ = node 727 already_processed = set() 728 self.buildAttributes(node, node.attrib, already_processed) 729 for child in node: 730 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 731 self.buildChildren(child, node, nodeName_) 732 def buildAttributes(self, node, attrs, already_processed): 733 value = find_attr_value_('object_reference', node) 734 if value is not None: 735 736 self.object_reference = value 737 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 738 pass 739# end class AttachmentReferenceType 740 741class LinkReferenceType(GeneratedsSuper): 742 """The LinkReferenceType specifies a reference to a URI Object defined 743 elsewhere in the document which characterizes a hyperlink 744 embedded in the body of the email message.The object_reference 745 field specifies a reference to a URI Object defined elsewhere in 746 the document, via its id.""" 747 748 subclass = None 749 superclass = None 750 def __init__(self, object_reference=None): 751 self.object_reference = _cast(None, object_reference) 752 pass 753 def factory(*args_, **kwargs_): 754 if LinkReferenceType.subclass: 755 return LinkReferenceType.subclass(*args_, **kwargs_) 756 else: 757 return LinkReferenceType(*args_, **kwargs_) 758 factory = staticmethod(factory) 759 def get_object_reference(self): return self.object_reference 760 def set_object_reference(self, object_reference): self.object_reference = object_reference 761 def hasContent_(self): 762 if ( 763 764 ): 765 return True 766 else: 767 return False 768 def export(self, lwrite, level, namespace_='EmailMessageObj:', name_='LinkReferenceType', namespacedef_='', pretty_print=True): 769 if pretty_print: 770 eol_ = '\n' 771 else: 772 eol_ = '' 773 showIndent(lwrite, level, pretty_print) 774 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 775 already_processed = set() 776 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='LinkReferenceType') 777 if self.hasContent_(): 778 lwrite('>%s' % (eol_, )) 779 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 780 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 781 else: 782 lwrite('/>%s' % (eol_, )) 783 def exportAttributes(self, lwrite, level, already_processed, namespace_='EmailMessageObj:', name_='LinkReferenceType'): 784 if self.object_reference is not None: 785 786 lwrite(' object_reference=%s' % (quote_attrib(self.object_reference), )) 787 def exportChildren(self, lwrite, level, namespace_='EmailMessageObj:', name_='LinkReferenceType', fromsubclass_=False, pretty_print=True): 788 pass 789 def build(self, node): 790 self.__sourcenode__ = node 791 already_processed = set() 792 self.buildAttributes(node, node.attrib, already_processed) 793 for child in node: 794 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 795 self.buildChildren(child, node, nodeName_) 796 def buildAttributes(self, node, attrs, already_processed): 797 value = find_attr_value_('object_reference', node) 798 if value is not None: 799 800 self.object_reference = value 801 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 802 pass 803# end class LinkReferenceType 804 805class EmailMessageObjectType(cybox_common.ObjectPropertiesType): 806 """The EmailMessageObjectType type is intended to characterize an 807 individual email message.""" 808 809 subclass = None 810 superclass = cybox_common.ObjectPropertiesType 811 def __init__(self, object_reference=None, Custom_Properties=None, xsi_type=None, Header=None, Email_Server=None, Raw_Body=None, Raw_Header=None, Attachments=None, Links=None): 812 super(EmailMessageObjectType, self).__init__(object_reference, Custom_Properties, xsi_type ) 813 self.Header = Header 814 self.Email_Server = Email_Server 815 self.Raw_Body = Raw_Body 816 self.Raw_Header = Raw_Header 817 self.Attachments = Attachments 818 self.Links = Links 819 def factory(*args_, **kwargs_): 820 if EmailMessageObjectType.subclass: 821 return EmailMessageObjectType.subclass(*args_, **kwargs_) 822 else: 823 return EmailMessageObjectType(*args_, **kwargs_) 824 factory = staticmethod(factory) 825 def get_Header(self): return self.Header 826 def set_Header(self, Header): self.Header = Header 827 def get_Email_Server(self): return self.Email_Server 828 def set_Email_Server(self, Email_Server): self.Email_Server = Email_Server 829 def validate_StringObjectPropertyType(self, value): 830 # Validate type cybox_common.StringObjectPropertyType, a restriction on None. 831 pass 832 def get_Raw_Body(self): return self.Raw_Body 833 def set_Raw_Body(self, Raw_Body): self.Raw_Body = Raw_Body 834 def get_Raw_Header(self): return self.Raw_Header 835 def set_Raw_Header(self, Raw_Header): self.Raw_Header = Raw_Header 836 def get_Attachments(self): return self.Attachments 837 def set_Attachments(self, Attachments): self.Attachments = Attachments 838 def get_Links(self): return self.Links 839 def set_Links(self, Links): self.Links = Links 840 def hasContent_(self): 841 if ( 842 self.Header is not None or 843 self.Email_Server is not None or 844 self.Raw_Body is not None or 845 self.Raw_Header is not None or 846 self.Attachments is not None or 847 self.Links is not None or 848 super(EmailMessageObjectType, self).hasContent_() 849 ): 850 return True 851 else: 852 return False 853 def export(self, lwrite, level, namespace_='EmailMessageObj:', name_='EmailMessageObjectType', namespacedef_='', pretty_print=True): 854 if pretty_print: 855 eol_ = '\n' 856 else: 857 eol_ = '' 858 showIndent(lwrite, level, pretty_print) 859 lwrite('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) 860 already_processed = set() 861 self.exportAttributes(lwrite, level, already_processed, namespace_, name_='EmailMessageObjectType') 862 if self.hasContent_(): 863 lwrite('>%s' % (eol_, )) 864 self.exportChildren(lwrite, level + 1, namespace_, name_, pretty_print=pretty_print) 865 showIndent(lwrite, level, pretty_print) 866 lwrite('</%s%s>%s' % (namespace_, name_, eol_)) 867 else: 868 lwrite('/>%s' % (eol_, )) 869 def exportAttributes(self, lwrite, level, already_processed, namespace_='EmailMessageObj:', name_='EmailMessageObjectType'): 870 super(EmailMessageObjectType, self).exportAttributes(lwrite, level, already_processed, namespace_, name_='EmailMessageObjectType') 871 def exportChildren(self, lwrite, level, namespace_='EmailMessageObj:', name_='EmailMessageObjectType', fromsubclass_=False, pretty_print=True): 872 super(EmailMessageObjectType, self).exportChildren(lwrite, level, 'EmailMessageObj:', name_, True, pretty_print=pretty_print) 873 if pretty_print: 874 eol_ = '\n' 875 else: 876 eol_ = '' 877 if self.Header is not None: 878 self.Header.export(lwrite, level, 'EmailMessageObj:', name_='Header', pretty_print=pretty_print) 879 if self.Email_Server is not None: 880 self.Email_Server.export(lwrite, level, 'EmailMessageObj:', name_='Email_Server', pretty_print=pretty_print) 881 if self.Raw_Body is not None: 882 if self.Raw_Body.get_valueOf_() is not None: 883 value = self.Raw_Body.get_valueOf_() 884 if not value.startswith('<![CDATA['): 885 value = '<![CDATA[' + value + ']]>' 886 self.Raw_Body.set_valueOf_(value) 887 self.Raw_Body.export(lwrite, level, 'EmailMessageObj:', name_='Raw_Body', pretty_print=pretty_print) 888 if self.Raw_Header is not None: 889 if self.Raw_Header.get_valueOf_() is not None: 890 value = self.Raw_Header.get_valueOf_() 891 if not value.startswith('<![CDATA['): 892 value = '<![CDATA[' + value + ']]>' 893 self.Raw_Header.set_valueOf_(value) 894 self.Raw_Header.export(lwrite, level, 'EmailMessageObj:', name_='Raw_Header', pretty_print=pretty_print) 895 if self.Attachments is not None: 896 self.Attachments.export(lwrite, level, 'EmailMessageObj:', name_='Attachments', pretty_print=pretty_print) 897 if self.Links is not None: 898 self.Links.export(lwrite, level, 'EmailMessageObj:', name_='Links', pretty_print=pretty_print) 899 def build(self, node): 900 self.__sourcenode__ = node 901 already_processed = set() 902 self.buildAttributes(node, node.attrib, already_processed) 903 for child in node: 904 nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] 905 self.buildChildren(child, node, nodeName_) 906 def buildAttributes(self, node, attrs, already_processed): 907 super(EmailMessageObjectType, self).buildAttributes(node, attrs, already_processed) 908 def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): 909 if nodeName_ == 'Header': 910 obj_ = EmailHeaderType.factory() 911 obj_.build(child_) 912 self.set_Header(obj_) 913 elif nodeName_ == 'Email_Server': 914 obj_ = cybox_common.StringObjectPropertyType.factory() 915 obj_.build(child_) 916 self.set_Email_Server(obj_) 917 elif nodeName_ == 'Raw_Body': 918 obj_ = cybox_common.StringObjectPropertyType.factory() 919 obj_.build(child_) 920 self.set_Raw_Body(obj_) 921 elif nodeName_ == 'Raw_Header': 922 obj_ = cybox_common.StringObjectPropertyType.factory() 923 obj_.build(child_) 924 self.set_Raw_Header(obj_) 925 elif nodeName_ == 'Attachments': 926 obj_ = AttachmentsType.factory() 927 obj_.build(child_) 928 self.set_Attachments(obj_) 929 elif nodeName_ == 'Links': 930 obj_ = LinksType.factory() 931 obj_.build(child_) 932 self.set_Links(obj_) 933 super(EmailMessageObjectType, self).buildChildren(child_, node, nodeName_, True) 934# end class EmailMessageObjectType 935 936GDSClassesMapping = { 937 'Build_Utility': cybox_common.BuildUtilityType, 938 'Errors': cybox_common.ErrorsType, 939 'Search_Distance': cybox_common.IntegerObjectPropertyType, 940 'Time': cybox_common.TimeType, 941 'Certificate_Issuer': cybox_common.StringObjectPropertyType, 942 'Metadata': cybox_common.MetadataType, 943 'Hash': cybox_common.HashType, 944 'User_Agent': cybox_common.StringObjectPropertyType, 945 'Information_Source_Type': cybox_common.ControlledVocabularyStringType, 946 'Dependencies': cybox_common.DependenciesType, 947 'By': cybox_common.StringObjectPropertyType, 948 'Segment_Hash': cybox_common.HashValueType, 949 'Internal_Strings': cybox_common.InternalStringsType, 950 'SubDatum': cybox_common.MetadataType, 951 'Sender': address_object.AddressObjectType, 952 'Digital_Signature': cybox_common.DigitalSignatureInfoType, 953 'Code_Snippets': cybox_common.CodeSnippetsType, 954 'Value': cybox_common.StringObjectPropertyType, 955 'Length': cybox_common.IntegerObjectPropertyType, 956 'Encoding': cybox_common.ControlledVocabularyStringType, 957 'Internationalization_Settings': cybox_common.InternationalizationSettingsType, 958 'Image_Offset': cybox_common.IntegerObjectPropertyType, 959 'File_System_Offset': cybox_common.IntegerObjectPropertyType, 960 'English_Translation': cybox_common.StringObjectPropertyType, 961 'Subject': cybox_common.StringObjectPropertyType, 962 'Functions': cybox_common.FunctionsType, 963 'From': cybox_common.StringObjectPropertyType, 964 'String_Value': cybox_common.StringObjectPropertyType, 965 'For': cybox_common.StringObjectPropertyType, 966 'Build_Utility_Platform_Specification': cybox_common.PlatformSpecificationType, 967 'Compiler_Informal_Description': cybox_common.CompilerInformalDescriptionType, 968 'System': cybox_common.ObjectPropertiesType, 969 'Platform': cybox_common.PlatformSpecificationType, 970 'Usage_Context_Assumptions': cybox_common.UsageContextAssumptionsType, 971 'Import': cybox_common.StringObjectPropertyType, 972 'Raw_Header': cybox_common.StringObjectPropertyType, 973 'Type': cybox_common.ControlledVocabularyStringType, 974 'Compilers': cybox_common.CompilersType, 975 'Tool_Type': cybox_common.ControlledVocabularyStringType, 976 'String': cybox_common.ExtractedStringType, 977 'Raw_Body': cybox_common.StringObjectPropertyType, 978 'Tool': cybox_common.ToolInformationType, 979 'Build_Information': cybox_common.BuildInformationType, 980 'Tool_Hashes': cybox_common.HashListType, 981 'X_Priority': cybox_common.PositiveIntegerObjectPropertyType, 982 'Error_Instances': cybox_common.ErrorInstancesType, 983 'Data_Segment': cybox_common.StringObjectPropertyType, 984 'Certificate_Subject': cybox_common.StringObjectPropertyType, 985 'Property': cybox_common.PropertyType, 986 'Strings': cybox_common.ExtractedStringsType, 987 'Contributors': cybox_common.PersonnelType, 988 'Simple_Hash_Value': cybox_common.SimpleHashValueType, 989 'X_Mailer': cybox_common.StringObjectPropertyType, 990 'Reference_Description': cybox_common.StructuredTextType, 991 'User_Account_Info': cybox_common.ObjectPropertiesType, 992 'Execution_Environment': cybox_common.ExecutionEnvironmentType, 993 'Configuration_Settings': cybox_common.ConfigurationSettingsType, 994 'Compiler_Platform_Specification': cybox_common.PlatformSpecificationType, 995 'In_Reply_To': cybox_common.StringObjectPropertyType, 996 'Byte_String_Value': cybox_common.HexBinaryObjectPropertyType, 997 'Instance': cybox_common.ObjectPropertiesType, 998 'MIME_Version': cybox_common.StringObjectPropertyType, 999 'Boundary': cybox_common.StringObjectPropertyType, 1000 'Segment': cybox_common.HashSegmentType, 1001 'Identifier': cybox_common.PlatformIdentifierType, 1002 'Tool_Specific_Data': cybox_common.ToolSpecificDataType, 1003 'Timestamp': cybox_common.DateTimeObjectPropertyType, 1004 'Message_ID': cybox_common.StringObjectPropertyType, 1005 'Segment_Count': cybox_common.IntegerObjectPropertyType, 1006 'Offset': cybox_common.IntegerObjectPropertyType, 1007 'Date': cybox_common.DateRangeType, 1008 'Hashes': cybox_common.HashListType, 1009 'Recipient': address_object.AddressObjectType, 1010 'Segments': cybox_common.HashSegmentsType, 1011 'Language': cybox_common.StringObjectPropertyType, 1012 'Errors_To': cybox_common.StringObjectPropertyType, 1013 'Usage_Context_Assumption': cybox_common.StructuredTextType, 1014 'Block_Hash': cybox_common.FuzzyHashBlockType, 1015 'Dependency': cybox_common.DependencyType, 1016 'Error': cybox_common.ErrorType, 1017 'Trigger_Point': cybox_common.HexBinaryObjectPropertyType, 1018 'Environment_Variable': cybox_common.EnvironmentVariableType, 1019 'Byte_Run': cybox_common.ByteRunType, 1020 'Precedence': cybox_common.StringObjectPropertyType, 1021 'Tool_Configuration': cybox_common.ToolConfigurationType, 1022 'Imports': cybox_common.ImportsType, 1023 'Library': cybox_common.LibraryType, 1024 'References': cybox_common.ToolReferencesType, 1025 'Block_Hash_Value': cybox_common.HashValueType, 1026 'Fuzzy_Hash_Structure': cybox_common.FuzzyHashStructureType, 1027 'Configuration_Setting': cybox_common.ConfigurationSettingType, 1028 'Libraries': cybox_common.LibrariesType, 1029 'X_Originating_IP': address_object.AddressObjectType, 1030 'Email_Server': cybox_common.StringObjectPropertyType, 1031 'Function': cybox_common.StringObjectPropertyType, 1032 'Description': cybox_common.StructuredTextType, 1033 'Code_Snippet': cybox_common.ObjectPropertiesType, 1034 'Build_Configuration': cybox_common.BuildConfigurationType, 1035 'VLAN_Name': cybox_common.StringObjectPropertyType, 1036 'Address': address_object.AddressObjectType, 1037 'Reply_To': address_object.AddressObjectType, 1038 'Search_Within': cybox_common.IntegerObjectPropertyType, 1039 'With': cybox_common.StringObjectPropertyType, 1040 'Compiler': cybox_common.CompilerType, 1041 'Name': cybox_common.StringObjectPropertyType, 1042 'Address_Value': cybox_common.StringObjectPropertyType, 1043 'VLAN_Num': cybox_common.IntegerObjectPropertyType, 1044 'Content_Type': cybox_common.StringObjectPropertyType, 1045 'Signature_Description': cybox_common.StringObjectPropertyType, 1046 'Block_Size': cybox_common.IntegerObjectPropertyType, 1047 'ID': cybox_common.StringObjectPropertyType, 1048 'Fuzzy_Hash_Value': cybox_common.FuzzyHashValueType, 1049 'Data_Size': cybox_common.DataSizeType, 1050 'Dependency_Description': cybox_common.StructuredTextType, 1051 'Contributor': cybox_common.ContributorType, 1052 'Tools': cybox_common.ToolsInformationType, 1053 'Custom_Properties': cybox_common.CustomPropertiesType, 1054} 1055 1056USAGE_TEXT = """ 1057Usage: python <Parser>.py [ -s ] <in_xml_file> 1058""" 1059 1060def usage(): 1061 print(USAGE_TEXT) 1062 sys.exit(1) 1063 1064def get_root_tag(node): 1065 tag = Tag_pattern_.match(node.tag).groups()[-1] 1066 rootClass = GDSClassesMapping.get(tag) 1067 if rootClass is None: 1068 rootClass = globals().get(tag) 1069 return tag, rootClass 1070 1071def parse(inFileName): 1072 doc = parsexml_(inFileName) 1073 rootNode = doc.getroot() 1074 rootTag, rootClass = get_root_tag(rootNode) 1075 if rootClass is None: 1076 rootTag = 'Email_Message' 1077 rootClass = EmailMessageObjectType 1078 rootObj = rootClass.factory() 1079 rootObj.build(rootNode) 1080 # Enable Python to collect the space used by the DOM. 1081 doc = None 1082# sys.stdout.write('<?xml version="1.0" ?>\n') 1083# rootObj.export(sys.stdout.write, 0, name_=rootTag, 1084# namespacedef_='', 1085# pretty_print=True) 1086 return rootObj 1087 1088def parseEtree(inFileName): 1089 doc = parsexml_(inFileName) 1090 rootNode = doc.getroot() 1091 rootTag, rootClass = get_root_tag(rootNode) 1092 if rootClass is None: 1093 rootTag = 'Email_Message' 1094 rootClass = EmailMessageObjectType 1095 rootObj = rootClass.factory() 1096 rootObj.build(rootNode) 1097 # Enable Python to collect the space used by the DOM. 1098 doc = None 1099 rootElement = rootObj.to_etree(None, name_=rootTag) 1100 content = etree_.tostring(rootElement, pretty_print=True, 1101 xml_declaration=True, encoding="utf-8") 1102 sys.stdout.write(content) 1103 sys.stdout.write('\n') 1104 return rootObj, rootElement 1105 1106def parseString(inString): 1107 from mixbox.vendor.six import StringIO 1108 doc = parsexml_(StringIO(inString)) 1109 rootNode = doc.getroot() 1110 rootTag, rootClass = get_root_tag(rootNode) 1111 if rootClass is None: 1112 rootTag = 'Email_Message' 1113 rootClass = EmailMessageObjectType 1114 rootObj = rootClass.factory() 1115 rootObj.build(rootNode) 1116 # Enable Python to collect the space used by the DOM. 1117 doc = None 1118# sys.stdout.write('<?xml version="1.0" ?>\n') 1119# rootObj.export(sys.stdout.write, 0, name_="Email_Message", 1120# namespacedef_='') 1121 return rootObj 1122 1123def main(): 1124 args = sys.argv[1:] 1125 if len(args) == 1: 1126 parse(args[0]) 1127 else: 1128 usage() 1129 1130if __name__ == '__main__': 1131 #import pdb; pdb.set_trace() 1132 main() 1133 1134__all__ = [ 1135 "EmailMessageObjectType", 1136 "AttachmentsType", 1137 "EmailHeaderType", 1138 "EmailRecipientsType", 1139 "LinksType", 1140 "EmailReceivedLineType", 1141 "EmailReceivedLineListType", 1142 "AttachmentReferenceType", 1143 "LinkReferenceType" 1144 ] 1145