1.SSH隧道。
SSH隧道是一个不可思议又难以理解和配置的技术方法,特别是在做反向SSH隧道的时候!关于SSH隧道的具体内容可以访问这个链接学习!
https://www.ibm.com/developerworks/cn/linux/l-cn-sshforward/index.html
2.rforword.py工具。
paramiko库文件中包含了叫rforward.py的文件,他可以完美解决这个问题可以到下面的链接去去下载它!
https://github.com/paramiko/paramiko/tree/master/demos
3.代码。
main()函数

def main():options, server, remote = parse_options()    #确保必要参数传递给了脚本password = Noneif options.readpass:password = getpass.getpass("Enter SSH password: ")client = paramiko.SSHClient()   #建立与SSH客户端的连接client.load_system_host_keys()client.set_missing_host_key_policy(paramiko.WarningPolicy())verbose("Connecting to ssh host %s:%d ..." % (server[0], server[1]))try:client.connect(server[0],server[1],username=options.user,key_filename=options.keyfile,look_for_keys=options.look_for_keys,password=password,)except Exception as e:            #测试代码print("*** Failed to connect to %s:%d: %r" % (server[0], server[1], e))sys.exit(1)verbose("Now forwarding remote port %d `to` %s:%d ..."% (options.port, remote[0], remote[1]))try:                               #调用函数reverse_forward_tunnel(options.port, remote[0], remote[1], client.get_transport())except KeyboardInterrupt:          #测试代码如果端口关闭打印消息print("C-c: Port forwarding stopped.")sys.exit(0)

rever_forward_tunnel函数

def reverse_forward_tunnel(server_port, remote_host, remote_port, transport):transport.request_port_forward("", server_port)      #转发SSH服务器一个端口的TCP连接while True:chan = transport.accept(1000)                 #建立新的传输通道if chan is None:continuethr = threading.Thread(target=handler, args=(chan, remote_host, remote_port)   #调用handler函数处理)thr.setDaemon(True)thr.start()

Paramiko中,两个主要的通信方法:transport用来处理和维护加密连接,channel加密传输会话中发送和接受数据。
handler函数

def handler(chan, host, port):sock = socket.socket()try:sock.connect((host, port))except Exception as e:verbose("Forwarding request to %s:%d failed: %r" % (host, port, e))returnverbose("Connected!  Tunnel open %r -> %r -> %r"% (chan.origin_addr, chan.getpeername(), (host, port)))while True:           #数据的发送和接收r, w, x = select.select([sock, chan], [], [])if sock in r:data = sock.recv(1024)if len(data) == 0:breakchan.send(data)if chan in r:data = chan.recv(1024)if len(data) == 0:breaksock.send(data)chan.close()sock.close()verbose("Tunnel closed from %r" % (chan.origin_addr,))

4.测试。
我们先在Windows系统上运行rforword.py并将它设置成WEB服务器和kail SSH服务器端的中间人程序。我将WEB服务器设置成了百度。

Windows主机上可以看到,连接到了192.168.179.128的SSH服务端并且打开了8080端口,程序将数据流量导向180.97.33.108主机的80端口。现在用Linux服务器上的浏览器访问http://127.0.01:8080,通过SSH隧道连接到位于180.97.33.108的WEB服务器上。返回Windows主机,可以看到Paramiko已经建立了连接:

python黑帽子学习笔记(三)—— ssh隧道相关推荐

  1. python白帽子学习笔记(整合)

    python白帽子学习笔记(整合) 学习笔记目录 python白帽子学习笔记(整合) 前言 一.基础篇 1.正则表达式 2.列表 3.元组带上了枷锁的列表 4.奇葩的内置方法 5.格式化字符 6.序列 ...

  2. Python计算机视觉编程学习笔记 三 图像到图像的映射

    图像到图像的映射 (一)单应性变换 1.2 仿射变换 (二)图像扭曲 2.1 图像中的图像 2.2 图像配准 (三)创建全景图 3.1 RANSAC 3.2 拼接图像 (一)单应性变换 单应性变换是将 ...

  3. Python基础函数学习笔记(三)

    数学函数,字符串,对象. Simple Python Build-in Functions abs,max(x1,x2,x3...),min(x1,x2,x3...),pow(a,b),round(x ...

  4. python自然语言处理学习笔记三

    第三章 处理原始文本 1 从网络和硬盘访问文本 #<<罪与罚>>的英文翻译 未作测试?? From utlib import urlopen Url='http://www.g ...

  5. scapy python3_【Python3黑帽子学习笔记 on Mac】第四章 Scapy:网络的掌控者

    Scapy:网络掌控者? 哇咔咔,我喜欢!可是我的问题来了,貌似Scapy只支持Python2,那哥哥这Python3咋办呢? [最新更新:目前scapy目前已经支持Python3了,就不用折腾这个了 ...

  6. Python黑帽子-黑客与渗透测试编程之道

    Python黑帽子-黑客与渗透测试编程之道 时间:2018年4月28日 前言 本文参考了两篇资料,优化补全了代码内容 giantbranch 的 Python黑帽子–黑客与渗透测试编程之道 意闲 的 ...

  7. 关于《Python黑帽子:黑客与渗透测试编程之道》的学习笔记

    本篇文章是学习<Python黑帽子:黑客与渗透测试编程之道>的笔记,会持续地将书上的代码自己敲一遍,从而让自己对Python的安全编程有更多的了解,同时希望各位可以给给建议,不足之处太多了 ...

  8. 《Python 黑帽子》学习笔记 - 命令行选项和参数处理 - Day 4

    在学习书中 netcat 代码的时候,发现其命令行选项和参数的处理存在一些小问题,由于调用 getopt 模块的 getopt() 函数时参数设置不当,会引起代码执行时获取不到参数值或引发异常.该问题 ...

  9. 《Python黑帽子:黑客与渗透测试编程之道》读书笔记(三):scapy——网络的掌控者

    目录 前言 1.窃取email认证 2.ARP缓存投毒 3.PCAP文件处理 结语 前言 <Python黑帽子:黑客与渗透测试编程之道>的读书笔记,会包括书中源码,并自己将其中一些改写成P ...

  10. 《Python 黑帽子》学习笔记 - 准备 - Day 1

    信息安全是一个有意思的方向,也是自己的爱好,从零开始,想在工作之余把这个爱好培养为自己的技术能力,而 web 安全相对来说容易入门些,于是选择 web 渗透测试作为学习的起点,并选择同样是容易入门的 ...

最新文章

  1. !! 机器学习常用工具
  2. magic系统将来能升鸿蒙,荣耀30和V30将首批搭载Magic UI 4.0 后续可升级鸿蒙系统
  3. 【转】Linux查看物理CPU个数、核数、逻辑CPU个数
  4. Proxy + Reflect 实现 响应的数据变化
  5. 自学Python六 爬虫基础必不可少的正则
  6. 中国行业趋势报告——2022年度特别报告
  7. 【less-7】sqli-labs靶场第七关(类似less-5)
  8. 基于人脸识别的课堂签到管理系统(二)---摄像头显示
  9. 12.RabbitMQ实战 --- 聪明的Rabbit:扩展RabbitMQ
  10. Java - Java Mail邮件开发(2)springboot +Java Mail + Html
  11. STM32单片机雨滴模块
  12. 北斗三号频点_海格通信发布国内首批北斗三号双模应用专用芯片
  13. SQL创建数据库与写入数据的全过程
  14. 曾经跨过山和大海的百度AI技术汇,跨进北工大!
  15. oracle的安装教程
  16. App渗透中常见的加密与解密。
  17. [从头读历史] 第301节 山海经 其实这不是一本神话书
  18. 【最近抖音上元宇宙虚拟项目七国争霸,直播互动游戏源码解析】
  19. Python数据分析实战之物流行业数据分析
  20. 分享给你一份温暖,如冬日暖阳亦或是一杯午后的咖啡

热门文章

  1. C/C++网络编程详解(Windows版)
  2. Recycler 病毒(jwgkvsq.vmx)手动查杀
  3. 基于wemos d1 按键开锁
  4. 什么是Proxy Server
  5. ucenter通信失败和不能登录的解决
  6. “跟技术Leader聊了10分钟,我就猜到下周要发生重大宕机事故!”
  7. 【NetBeans IDE 8.2链接MySQL数据库教程】
  8. 遥感图像几何校正 matlab,利用多项式实现图像几何校正(Matlab实现)
  9. 计算半圆弧的周长及半圆的面积
  10. FastStone Capture滚动截屏丢失行解决办法