您好,欢迎访问一九零五行业门户网

Python实现远程调用MetaSploit的方法

本文较为详细的讲述了python实现远程调用metasploit的方法,对python的学习来说有很好的参考价值。具体实现方法如下:
(1)安装python的msgpack类库,msf官方文档中的数据序列化标准就是参照msgpack。
root@kali:~# apt-get install python-setuptoolsroot@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 startroot@kali:~# sudo -u postgres /usr/bin/psql 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 msfrpcroot@kali:~# cd msfrpc/python-msfrpcroot@kali:~# python setup.py install
测试代码如下:
#!/usr/bin/env pythonimport msgpackimport 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学习可以起到一定的学习借鉴作用。
其它类似信息

推荐信息