使用iodef xml格式(rfc 5070)创建、分析和编辑网络事件报告的python库

iodeflib的Python项目详细描述


iodeflib是一个创建、解析和编辑网络事件的python库 使用iodef xml格式(RFC 5070)的报表。

项目网站:http://www.decalage.info/python/iodeflib

一方面,IODEF是一个非常丰富、灵活、可扩展的XML 描述网络事件的格式。另一方面,它可以 在实践中使用起来很复杂,因为很难解析iodef 内容由于其丰富的功能和深度嵌套的结构。

iodeflib试图提供一个简单的api来简化开发 对iodef敏感的脚本和应用程序。

iodeflib与 iodefpython包发布于 Pypi和SourceForge。实际上我创建iodeflib是因为 因IODEF软件包的复杂性而感到失望。生成iodef 使用 GenerateDS,其中 事实上暴露了IODEF模式的复杂性。

相反,iodeflib是经过精心设计的,以便保留python 接口尽可能简单,隐藏一些不必要的嵌套 iodef模式的结构,并添加更方便的快捷方式。 iodeflib也被设计成可扩展的。

用法

iodeflib包中提供了以下示例脚本 “示例”子文件夹。

如何解析iodef数据

import iodeflib
# open XML file and parse IODEF:
iodef = iodeflib.parse_file('iodef.xml')
# print some attributes for each incident:
for incident in iodef.incidents:
    print 'Incident %s from %s - impact type: %s' % (incident.id,
        incident.id_name, incident.get_first_impact().type)
    for desc in incident.descriptions:
        print desc
    print 'Sources:'
    for system in incident.get_sources(): print system.get_addresses()
    print 'Targets:'
    for system in incident.get_targets(): print system.get_addresses()
    print ''

如何创建iodef数据

import iodeflib
# create a new IODEF document:
iodef = iodeflib.IODEF_Document()
# create a new incident:
incident1 = iodeflib.Incident(id='1234', id_name='CSIRT-X',
    report_time='2011-09-13T11:01:00+00:00',
    start_time='2011-09-13T10:19:24+00:00')
# add description:
incident1.descriptions = ['Detected denial of service attack']
# add sources and targets:
incident1.add_system(category='source', address='192.168.1.2')
incident1.add_system(category='target', address='192.168.3.7', name='XYZ')
# add impact assessment:
incident1.add_impact(description='DoS on system XYZ', type='dos',
    severity='medium', completion='succeeded', occurence='actual',
    restriction='need-to-know')
iodef.incidents.append(incident1)
# serialize IODEF to XML, print it and save it to a file:
print iodef
open('iodef2.xml', 'w').write(str(iodef))

如何编辑iodef数据

# open XML file and parse IODEF:
iodef = iodeflib.parse_file('iodef2.xml')
# get incident, add end time and history item:
incident1 = iodef.incidents[0]
histitem = iodeflib.HistoryItem(descriptions=['Blocked source IP.'],
    datetime='2011-09-13T13:47:12+00:00')
incident1.history.append(histitem)
incident1.end_time='2011-09-13T13:47:12+00:00'
incident1.report_time='2011-09-13T13:52:00+00:00'
# save IODEF back to an XML file:
print iodef
open('iodef2_updated.xml', 'w').write(str(iodef))

关于api的更多信息

请参阅iodeflib文件夹中的iodeflib.html,或检查 源代码。

状态

并不是rfc 5070的所有特性都在iodeflib中实现。 但是,最有用的类已经可用。

如何贡献

向作者发送电子邮件,或使用fork/pull请求 对bitbucket的特性提出了改进代码的建议。

有关潜在的 改进。

如何报告错误

您可以在上创建发行票据 https://bitbucket.org/decalage/iodeflib/issues,或向 作者。

请提供足够的信息来重现错误:哪个版本 您使用的是哪种操作系统和python版本等 提供示例代码和数据文件以重现错误。

许可证

版权所有(c)2011-2012,Philippe Lagadec(http://www.decalage.info)。 保留所有权利。

以源和二进制形式重新分配和使用,有无 允许修改,但条件如下 会议:

  • 源代码的重新分发必须保留上述版权 注意,此条件列表和以下免责声明。
  • 以二进制形式重新分配必须复制上述版权 注意,此条件列表和以下免责声明 分发时提供的文件和/或其他材料。

本软件由版权所有者和贡献者“作为 以及任何明示或默示保证,包括但不限于 对……的适销性和适用性的默示保证 特殊目的被驳回。在任何情况下,版权 持有人或出资人对任何直接、间接、附带的, 特殊、惩戒性或后果性损害(包括但不限于 采购替代货物或服务;失去使用、数据或 利润;或营业中断)无论是何种原因引起的 责任,无论是合同责任、严格责任还是侵权责任(包括 疏忽或其他)以任何方式产生 软件,即使被告知有这种损坏的可能性。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ArrayList Java中的搜索字符串   另一个web应用程序的java访问会话   另一个应用程序中的活动和服务之间的java通信   java根据Json字符串类型将Json字符串转换为对象   eclipse如何解决java中的错误异常。lang.NoSuchMethodError:'java。字符串javax。摆动JOptionPane。showInputDialog(java.lang.String)'   线程“main”java中的安卓异常。lang.NoClassDefFoundError:org/codehaus/jackson/JsonParseException   java如何在安卓 emulator上显示Mat图像?使用NDK   Java在本地读取测试源文件,但在服务器上读取失败   java dowhile循环用于计算输入数字中的数字。故障排除代码   JAva初学者在编写获取成本的方法时遇到困难   java是shell游戏。我如何让物体移动,特别是在特定的曲线上,但顺序是随机的?   java如何区分两个同名的JButton   java为什么我在Spring Boot中需要一个接口?   java将文件路径插入数据库将删除\   使用InterfaceType初始化java对象   java如何部署一个分为Angular、Spring Boot和MySQL的项目?   java如何使用Symja解决不等式?