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 相关文章推荐
python编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 Python
python+opencv识别图片中的圆形
Mar 25 Python
python版大富翁源代码分享
Nov 19 Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 Python
Python依赖包整体迁移方法详解
Aug 15 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 Python
在 Python 中使用 7zip 备份文件的操作
Dec 11 Python
python中@contextmanager实例用法
Feb 07 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
Home Coffee Roasting
2021/03/03 咖啡文化
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
在JavaScript中构建ArrayList示例代码
2014/09/17 Javascript
js数组的操作指南
2014/12/28 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
vue实现记事本功能
2019/06/26 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
浅谈vue异步数据影响页面渲染
2019/10/29 Javascript
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
python类继承与子类实例初始化用法分析
2015/04/17 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
python实现发送邮件及附件功能
2021/03/02 Python
Python中的CSV文件使用&quot;with&quot;语句的方式详解
2018/10/16 Python
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
AC Lens:购买隐形眼镜
2017/02/26 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
建筑人员岗位职责
2013/12/25 职场文书
工厂实习感言
2014/01/14 职场文书
公司活动邀请函
2014/01/24 职场文书
出国留学导师推荐信
2015/03/26 职场文书
2015年六年级班主任工作总结
2015/10/15 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers