0X01  SSH的建立 

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

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

The introductions of some modules are as follow:

1、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
 
2、SFTPClient类
根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。
 
1)from_transport方法
 
classmethod from_transport(cls,t)
参数说明:
t:一个已通过验证的传输对象
 
示例:
  1. >>> import paramiko
  2. >>> a = paramiko.Transport((“127.0.0.1″,2222))
  3. >>> a.connect(username=”root”, password=’123456′)
  4. >>> sftp = paramiko.SFTPClient.from_transport(a)
 
2)put方法
 
put(self,localpath,remotepath,callback=None,confirm=True)
参数说明:
localpath:上传源文件的本地路径
remotepath:目标路径
callback:获取接收与总传输字节数
confirm:上传完毕后是否调用stat()方法,以便确认文件大小
 
示例:
  1. >>> localpath=’ftp-test.log
  2. >>> remotepath=’/data/ftp-test.log
  3. >>> sftp.put(localpath,remotepath)
 
3)get方法
 
get(self, remotepath, localpath, callback=None)
参数说明:
remotepath:需要下载的远程文件
localpath:本地存储路径
callback:同put方法
 
4)其他方法
 
mkdir:用于创建目录
remove:删除目录
rename:重命名
stat:获取文件信息
listdir:获取目录列表
 
了解完模块,我们先尝试实现一下连接ssh:
  1. import paramiko
  2. import datetime
  3. import os
  4.  
  5. hostname = "47.10.84."
  6. port=22
  7. username = "root"
  8. password = ""
  9.  
  10. ssh = paramiko.SSHClient() #创建一个ssh连接
  11. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #目的是接受不在本地已知主机文件下的主机。missing host key很明显可以看出是指在丢失主机密钥的情况下做出什么动作,                                    即自动添加相应的策略
  12. ssh.connect(hostname=hostname,port=22,username=username,password=password)
  13.  
  14. stdin,stdout,stderr = ssh.exec_command('ls')    #传送指令
  15. res,err = stdout.read(),stderr.read()
  16. result = res if res else err
  17. print(result)
  18. ssh.close()

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

 

python Trojan 模块(我忘记几了)—— 通信隧道建立的更多相关文章

  1. python select模块

    Python select 一.前言 Python的select()方法直接调用操作系统的IO接口,它监控sockets,open files, and pipes(所有带fileno()方法的文件句 ...

  2. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  3. Python::OS 模块 -- 文件和目录操作

    os模块的简介参看 Python::OS 模块 -- 简介 os模块的进程管理 Python::OS 模块 -- 进程管理 os模块的进程参数 Python::OS 模块 -- 进程参数 os模块中包 ...

  4. python 常用模块(转载)

    转载地址:http://codeweblog.com/python-%e5%b8%b8%e7%94%a8%e6%a8%a1%e5%9d%97/ adodb:我们领导推荐的数据库连接组件bsddb3:B ...

  5. python 各模块

    01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支 ...

  6. python datetime模块strptime/strptime format常见格式命令_施罗德_新浪博客

    python datetime模块strptime/strptime format常见格式命令_施罗德_新浪博客     python datetime模块strptime/strptime form ...

  7. Day5 模块及Python常用模块

    模块概述 定义:模块,用一砣代码实现了某类功能的代码集合. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,提供了代码的重用性.在Python中,一个.py文件就称之为一个模块(Mod ...

  8. Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures

    参考博客: https://www.cnblogs.com/xiao987334176/p/9046028.html 线程简述 什么是线程?线程是cpu调度的最小单位进程是资源分配的最小单位 进程和线 ...

  9. python 全栈开发,Day42(Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures)

    昨日内容回顾 线程什么是线程?线程是cpu调度的最小单位进程是资源分配的最小单位 进程和线程是什么关系? 线程是在进程中的 一个执行单位 多进程 本质上开启的这个进程里就有一个线程 多线程 单纯的在当 ...

随机推荐

  1. Android, iOS, 各种软件汇总

    Android: 长截图:软件叫PPIICC的可以截图之后拼接:有些手机自带截图,比如小米,华为,三星等. 视频:全格式的Kodi XBMC, 一般的:moboplayer, VLC, F蔷:***, ...

  2. lua--从白开始(2)

    眼下lua最新的版本号,5.2.3. 这个例子是一个简单lua分析器,来源自<Lua游戏开发实践指南>. 测试程序的功能:解决简单lua说明,例如:print("Hello wo ...

  3. Windows多线程系列

    来自CSDN - 秒杀多线程系列.覆盖了Windows系统的线程同步机制.对于理解各种锁以及多线程典型场景很有帮助.

  4. WPF中制作立体效果的文字或LOGO图形(续)

    原文:WPF中制作立体效果的文字或LOGO图形(续) 上篇"WPF中制作立体效果的文字或LOGO图形"(http://blog.csdn.net/johnsuna/archive/ ...

  5. 制作简单的WPF时钟

    原文:制作简单的WPF时钟 在很早之前,我曾经写过一个GDI+的时钟,见"C#时钟控件 (C# Clock Control)" http://blog.csdn.net/johns ...

  6. WPF_界面_图片/界面/文字模糊解决之道整理

    原文:WPF_界面_图片/界面/文字模糊解决之道整理 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010265681/article/detai ...

  7. WPF查找父元素子元素

    原文:WPF查找父元素子元素 /// <summary>        /// WPF中查找元素的父元素        /// </summary>        /// &l ...

  8. 使用aws和tomcat搭建服务器过程中的一些坑.

    在国外没啥事做, 考前也不愿意复习, 看到aws能免费试用一年, 于是就试着搞了搞, 就准备搭建个个人网站玩玩. aws的注册与创建实例 首先个人感觉这个东西使用起来还是很方便的, 一开始注册完验证完 ...

  9. 用MVVM模式开发中遇到的零散问题总结(5)——将动态加载的可视元素保存为图片的控件,Binding刷新的时机

    原文:用MVVM模式开发中遇到的零散问题总结(5)--将动态加载的可视元素保存为图片的控件,Binding刷新的时机 在项目开发中经常会遇到这样一种情况,就是需要将用户填写的信息排版到一张表单中,供打 ...

  10. 定长文本格式编辑神器 - Record Editor

    由于项目里有系统使用的是定长的文本格式,如果列数比较多的话编辑检查起来会特别麻烦.之前也找了各种编辑器的插件,最多只能显示列宽.辅助线而以还是不方便 .最后发现了一个开源项目 Record Edito ...