python Trojan 模块(我忘记几了)—— 通讯隧道创建

0X01  SSH的创建  python

我想,第一步先实现简单的ssh通讯再说,相似其余那种高端的C&C将逐步研究ssh

对于ssh,python有个module叫paramiko,对没错看起来像日语单词spa

The introductions of some modules are as follow:代理

 

一、SSHClient类
SHClient类是SSH服务会话的高级表示,封装了传输、通道以及SFTPClient的校验、创建方法,一般用于执行命令。
 
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)
参数说明:
hostname:链接目标的主机地址
port:链接目录的端口,默认为22
username:用户名
password:密码
pkey:私钥方式用户验证
key_filename:私钥文件名
timeout:链接超时时间
allow_agent:是否容许使用ssh代理
look_for_keys:是否容许搜索私钥文件
compress:打开时是否压缩
 
2)exec_command方法
exec_command(self,command,bufsize=-1)
参数说明:
command:执行的的指令
bufsize:文件缓冲区大小,-1不限制
 
3)load_system_host_keys方法
load_system_host_keys(self,filename=None)
参数说明:
filename:指定远程主机的公钥文件,默认为.ssh目录下的known_hosts文件
 
4)set_missing_host_key_policy方法
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
参数说明:
AutoAddPolicy:自动添加主机名及密钥到本地并保存,不依赖load_system_host_keys()配置,即若是known_hosts里没有远程主机的公钥时,默认链接会提示yes/no,自动yes
RejectPolicy:自动拒绝未知主机名和密钥,依赖load_system_host_keys()
WarnningPlicy:功能与AutoAddPolicy相同,可是未知主机会提示yes/no
 
二、SFTPClient类
根据SSH传输协议的sftp会话,实现远程文件上传、下载等操做。
 
1)from_transport方法
 
classmethod from_transport(cls,t)
参数说明:
t:一个已经过验证的传输对象
 
示例:
>>> import paramiko
>>> a = paramiko.Transport((“127.0.0.1″,2222))
>>> a.connect(username=”root”, password=’123456′)
>>> sftp = paramiko.SFTPClient.from_transport(a)
 
2)put方法
 
put(self,localpath,remotepath,callback=None,confirm=True)
参数说明:
localpath:上传源文件的本地路径
remotepath:目标路径
callback:获取接收与总传输字节数
confirm:上传完毕后是否调用stat()方法,以便确认文件大小
 
示例:
>>> localpath=’ftp-test.log’
>>> remotepath=’/data/ftp-test.log’
>>> sftp.put(localpath,remotepath)

 

 
3)get方法
 
get(self, remotepath, localpath, callback=None)
参数说明:
remotepath:须要下载的远程文件
localpath:本地存储路径
callback:同put方法
 
4)其余方法
 
mkdir:用于建立目录
remove:删除目录
rename:重命名
stat:获取文件信息
listdir:获取目录列表
 
了解完模块,咱们先尝试实现一下链接ssh:
import paramiko
import datetime
import os

hostname = "47.10.84."
port=22
username = "root"
password = ""

ssh = paramiko.SSHClient()       #建立一个ssh链接
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  #目的是接受不在本地已知主机文件下的主机。missing host key很明显能够看出是指在丢失主机密钥的状况下作出什么动做,
                                    即自动添加相应的策略
ssh.connect(hostname
=hostname,port=22,username=username,password=password) stdin,stdout,stderr = ssh.exec_command('ls')    #传送指令 res,err = stdout.read(),stderr.read() result = res if res else err print(result) ssh.close()

很不幸的是,这种方式只能分次传送指令,下面我介绍一下另外一种方式code

相关文章
相关标签/搜索