打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
一个消息驱动的自动化抓包架构

一个消息驱动的自动化抓包架构

发布时间:2013-10-06 23:38:40, 关注:+2666, 赞美:+8, 不爽:+0

原始出处: 出家如初,成佛有余

1、业务场景: 

  串行自动化调用一些第三方的程序(请求参数变化),程序自动抓取序的请求报文,在抓取到匹配报文后,调用自有程序进行相应的业务处理。

串行调用是指必须处理完上一个请求后,才发起下一请求

2、主要技术方案: 

  系统主要语言为python

  主程序通过subprocess.call、subprocess.Popen来启动抓包程序线程和按键精灵程序线程

  抓包监听程序使用wireshark的命令行工具tshark

  自动化调用第三方程序采用按键精灵(也可考虑autoit等)

   按键精灵发起http请求使用WinHttp.WinHttpRequest.5.1

   消息队列采用RabbitMQ Server,消息传递都采用JSON报文

   接受按键精灵处理结果的系统采用Django

   对rabbitmq 的操作采用python pika库

   备注:

  a、可以通过制作按键精灵的插件来直接支持写队列等功能,这里直接利用按键精灵及VBS已有功能来;也可采用autohotkey等对python等支持较好的自动化程序

  b、在一些场合pywinauto等自动化测试工具并不能很好满足需求,而sikuli、按键精灵、autoit等在一些偏GUI的场合值得考虑

 

3、主要流程

  3.1、主程序轮询任务处理结果队列,以获取自动化程序处理结果(例如是否执行完,执行结果等);主程序的线程与tshark抓包程序线程间通过线程共享方式共享抓包结果;

      主程序通过将正在处理请求的业务数据的标识(例如账户号)与消息队列获取的自动化程序处理的结果,匹配对应自动化任务标识的抓包结果(所以必须串行执行)

  3.2、如果上一条请求已经处理完,主程序调用subprocess.call(['taskkill', '/F', '/T', '/PID', str(p.pid)])杀死上一次请求所创建的自动化程序的线程和tshark抓包线程;

  3.3、主程序轮询待处理任务队列,如有新任务,将需要处理的业务数据写入约定的文件/数据库等,以实现与自动化程序的数据共享交换;然后创建自动化程序线程和抓包请求线程,发起新的自动化操作和抓包操作

  3.4、自动化程序从文件/数据库中读取业务数据,然后调用第三方需要抓包的程序执行自动化操作,处理结果通过CreateObject("WinHttp.WinHttpRequest.5.1")发起http请求,将对于业务标识的处理结果发送给本地Django程序

3.5、Django程序接收到请求后,将结果写入任务处理结果队列

3.6、抓包程序调用tshark抓包。避免tshark对抓包结果缓冲,需要注意用-l 参数

3.7、rabbitmq 操作采用python pika库,对任务处理结果队列和待处理任务队列消息都采用必须确认、持久化方式

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
多线程框架---线程池编程(三)
高性能服务器架构
事件驱动的详解
从swing分发线程机制上理解多线程 | i flym
OO第二单元总结
你要掌握的labview多线程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服