Python实现TCP/IP协议下的端口转发及重定向示例


Posted in Python onJune 14, 2016

首先,我们用webpy写一个简单的网站,监听8080端口,返回“Hello, EverET.org”的页面。

然后我们使用我们的forwarding.py,在80端口和8080端口中间建立两条通信管道用于双向通信。

此时,我们通过80端口访问我们的服务器。

浏览器得到:

Python实现TCP/IP协议下的端口转发及重定向示例

然后,我们在forwarding.py的输出结果中可以看到浏览器和webpy之间的通信内容。

Python实现TCP/IP协议下的端口转发及重定向示例

代码:

#!/usr/bin/env python
import sys, socket, time, threading

loglock = threading.Lock()
def log(msg):
  loglock.acquire()
  try:
    print '[%s]: \n%s\n' % (time.ctime(), msg.strip())
    sys.stdout.flush()
  finally:
    loglock.release()

class PipeThread(threading.Thread):
  def __init__(self, source, target):
    threading.Thread.__init__(self)
    self.source = source
    self.target = target

  def run(self):
    while True:
      try:
        data = self.source.recv(1024)
        log(data)
        if not data: break
        self.target.send(data)
      except:
        break
    log('PipeThread done')

class Forwarding(threading.Thread):
  def __init__(self, port, targethost, targetport):
    threading.Thread.__init__(self)
    self.targethost = targethost
    self.targetport = targetport
    self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.sock.bind(('0.0.0.0', port))
    self.sock.listen(10)
  def run(self):
    while True:
      client_fd, client_addr = self.sock.accept()
      target_fd = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      target_fd.connect((self.targethost, self.targetport))
      log('new connect')
      # two direct pipe
      PipeThread(target_fd, client_fd).start()
      PipeThread(client_fd, target_fd).start()


if __name__ == '__main__':
  print 'Starting'
  import sys
  try:
    port = int(sys.argv[1])
    targethost = sys.argv[2]
    try: targetport = int(sys.argv[3])
    except IndexError: targetport = port
  except (ValueError, IndexError):
    print 'Usage: %s port targethost [targetport]' % sys.argv[0]
    sys.exit(1)

  #sys.stdout = open('forwaring.log', 'w')
  Forwarding(port, targethost, targetport).start()
Python 相关文章推荐
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
用Python设计一个经典小游戏
May 15 Python
Python Socket编程之多线程聊天室
Jul 28 Python
python自动化生成IOS的图标
Nov 13 Python
详解Python字符串切片
May 20 Python
利用python求积分的实例
Jul 03 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 Python
django rest framework serializer返回时间自动格式化方法
Mar 31 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
Jul 14 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
Jan 27 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 Python
Python实现TCP协议下的端口映射功能的脚本程序示例
Jun 14 #Python
浅谈python新手中常见的疑惑及解答
Jun 14 #Python
Python中死锁的形成示例及死锁情况的防止
Jun 14 #Python
实例探究Python以并发方式编写高性能端口扫描器的方法
Jun 14 #Python
Python使用dis模块把Python反编译为字节码的用法详解
Jun 14 #Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 #Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
Jun 14 #Python
You might like
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
Vue组件间的通信pubsub-js实现步骤解析
2020/03/11 Javascript
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
tensorflow 获取模型所有参数总和数量的方法
2018/06/14 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
Python中使用socks5设置全局代理的方法示例
2020/04/15 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
网络安全类面试题
2015/08/01 面试题
Java程序员常见面试题
2015/07/16 面试题
销售文员的岗位职责
2013/11/20 职场文书
交通法规咨询中心工作职责
2013/11/27 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
中国入世承诺
2014/04/01 职场文书
公司新年寄语
2014/04/04 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
《称赞》教学反思
2016/02/17 职场文书