Python实现远程调用MetaSploit的方法


Posted in Python onAugust 22, 2014

本文较为详细的讲述了Python实现远程调用MetaSploit的方法,对Python的学习来说有很好的参考价值。具体实现方法如下:

(1)安装Python的msgpack类库,MSF官方文档中的数据序列化标准就是参照msgpack。

root@kali:~# apt-get install python-setuptools
root@kali:~# easy_install msgpack-python

 
(2)创建createdb_sql.txt:

create database msf;
create user msf with password 'msf123';
grant all privileges on database msf to msf;

 
(3)在PostgreSQL 执行上述文件:

root@kali:~# /etc/init.d/postgresql start
root@kali:~# sudo -u postgres /usr/bin/psql < createdb_sql.txt

 
(4)创建setup.rc文件

db_connect msf:msf123@127.0.0.1/msf
load msgrpc User=msf Pass='abc123'

 
(5)启动MSF并执行载入文件

root@kali:~# msfconsole -r setup.rc
* SNIP *
[*] Processing setup.rc for ERB directives.
resource (setup.rc)> db_connect msf:msf123@127.0.0.1/msf
[*] Rebuilding the module cache in the background...
resource (setup.rc)> load msgrpc User=msf Pass='abc123'
[*] MSGRPC Service: 127.0.0.1:55552
[*] MSGRPC Username: msf
[*] MSGRPC Password: abc123
[*] Successfully loaded plugin: msgrpc

 
(6)Github上有一个Python的类库,不过很不好用

root@kali:~# git clone git://github.com/SpiderLabs/msfrpc.git msfrpc
root@kali:~# cd msfrpc/python-msfrpc
root@kali:~# python setup.py install

测试代码如下:

#!/usr/bin/env python
import msgpack
import httplib
 
class Msfrpc:
 class MsfError(Exception):
  def __init__(self,msg):
   self.msg = msg
  def __str__(self):
   return repr(self.msg)
 
 class MsfAuthError(MsfError):
  def __init__(self,msg):
   self.msg = msg
  
 def __init__(self,opts=[]):
  self.host = opts.get('host') or "127.0.0.1"
  self.port = opts.get('port') or 55552
  self.uri = opts.get('uri') or "/api/"
  self.ssl = opts.get('ssl') or False
  self.authenticated = False
  self.token = False
  self.headers = {"Content-type" : "binary/message-pack" }
  if self.ssl:
   self.client = httplib.HTTPSConnection(self.host,self.port)
  else:
   self.client = httplib.HTTPConnection(self.host,self.port)
 
 def encode(self,data):
  return msgpack.packb(data)
 def decode(self,data):
  return msgpack.unpackb(data)
 
 def call(self,meth,opts = []):
  if meth != "auth.login":
   if not self.authenticated:
    raise self.MsfAuthError("MsfRPC: Not Authenticated")
 
  if meth != "auth.login":
   opts.insert(0,self.token)
 
  opts.insert(0,meth)
  params = self.encode(opts)
  self.client.request("POST",self.uri,params,self.headers)
  resp = self.client.getresponse()
  return self.decode(resp.read()) 
 
 def login(self,user,password):
  ret = self.call('auth.login',[user,password])
  if ret.get('result') == 'success':
self.authenticated = True
    self.token = ret.get('token')
    return True
  else:
    raise self.MsfAuthError("MsfRPC: Authentication failed")
 
if __name__ == '__main__':
 
 # Create a new instance of the Msfrpc client with the default options
 client = Msfrpc({})
 
 # Login to the msfmsg server using the password "abc123"
 client.login('msf','abc123')
 
 # Get a list of the exploits from the server
 mod = client.call('module.exploits')
 
 # Grab the first item from the modules value of the returned dict
 print "Compatible payloads for : %s\n" % mod['modules'][0]
 
 # Get the list of compatible payloads for the first option
 ret = client.call('module.compatible_payloads',[mod['modules'][0]])
 for i in (ret.get('payloads')):
  print "\t%s" % i

相信本文所述方法对大家的Python学习可以起到一定的学习借鉴作用。

Python 相关文章推荐
Python3中多线程编程的队列运作示例
Apr 16 Python
自己使用总结Python程序代码片段
Jun 02 Python
使用pandas对两个dataframe进行join的实例
Jun 08 Python
Python实现多属性排序的方法
Dec 05 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 Python
python tkinter图形界面代码统计工具
Sep 18 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
opencv3/C++实现视频读取、视频写入
Dec 11 Python
keras获得model中某一层的某一个Tensor的输出维度教程
Jan 24 Python
python小程序之4名牌手洗牌发牌问题解析
May 15 Python
Pytorch环境搭建与基本语法
Jun 03 Python
python实现图像随机裁剪的示例代码
Dec 10 Python
Python解释执行原理分析
Aug 22 #Python
Python实现的石头剪子布代码分享
Aug 22 #Python
Python使用MD5加密字符串示例
Aug 22 #Python
Python中让MySQL查询结果返回字典类型的方法
Aug 22 #Python
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
Aug 22 #Python
Python with的用法
Aug 22 #Python
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 #Python
You might like
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
php检查页面是否被百度收录
2015/10/28 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
9个比较实用的php代码片段
2016/03/15 PHP
php中时间函数date及常用的时间计算
2017/05/12 PHP
学习面向对象之面向对象的术语
2010/11/30 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
基于原生JS实现图片裁剪
2016/08/01 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
python实现的各种排序算法代码
2013/03/04 Python
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
毕业生学校推荐信范文
2014/05/21 职场文书
基层党员公开承诺书
2014/05/29 职场文书
新闻学专业求职信
2014/07/28 职场文书
法定代表人资格证明书
2014/09/11 职场文书
四风问题对照检查材料
2014/09/22 职场文书
工程部经理岗位职责
2015/02/02 职场文书
教师岗位职责范本
2015/04/02 职场文书
出生证明格式
2015/06/15 职场文书
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis