python端口转发_Python实现TCP/IP协议下的端口转发及重定向示例
首先,我们用webpy写一个简单的网站,监听8080端口,返回“Hello, EverET.org”的页面。
然后我们使用我们的forwarding.py,在80端口和8080端口中间建立两条通信管道用于双向通信。
此时,我们通过80端口访问我们的服务器。
浏览器得到:
然后,我们在forwarding.py的输出结果中可以看到浏览器和webpy之间的通信内容。
代码:
#!/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 端口转发 重定向 端口
本文原创发布php教程 ,转载请注明出处,感谢您的尊重!
上一篇:在漏洞利用Python代码真的很爽
下一篇:Python备份Mysql脚本
相关文章
相关视频
在Django框架中运行Python应用全攻略
在Python的Django框架中创建和使用模版
python获取元素在数组中索引号的方法
浅谈python中截取字符函数strip,lstr...
Python实现TCP/IP协议下的端口转发及重定...
Python 简介
python端口转发_Python实现TCP/IP协议下的端口转发及重定向示例相关推荐
- python实现端口转发_Python TCP/IP协议下实现端口转发及重定向菜鸟教程
对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 首先,我们用webpy写一个简单的网站,监听8080端口,返回"Hello,EverET ...
- php端口转发源码,Python实现TCP/IP协议下的端口转发及重定向示例
首先,我们用webpy写一个简单的网站,监听8080端口,返回"Hello, EverET.org"的页面. 然后我们使用我们的forwarding.py,在80端口和8080端口 ...
- TCP/IP协议中的端口
本文所述端口都是逻辑意义上的端口,是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等. 我们这里将要介绍的就是逻辑意义上的端口. ...
- TCP/IP协议号和端口
TCP/IP协议号和端口类似于PC机的并口或串口,也可以将其想象成交通中的交叉路口.程序员使用TCP/IP协议号和端口的目的是在TCP/IP的高层(传输层和应用层)为用户数据包选择路径,只不过协议号用 ...
- Python Web学习笔记之TCP/IP协议原理与介绍
HTTP.FTP.SMTP.Telnet等等协议,哦!那个HTTP协议啊就是访问网页用的那个协议啊然后那个······其实······你懂得,我们应该从实际来了解他,理解网络协议的作用与功能,然后再从 ...
- TCP/IP协议中的一些常用端口简单讲解
(源自http://bbs.360.cn/3232114/17010996.html) 那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门.真正的房子只有 ...
- TCP/ip 协议端口范围 详解
端口号的范围是从1-65535 端口的概念: 在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem.集线器.交换机.路由器用于连接其他网络设备的接口,如RJ ...
- TCP/IP协议端口分配规则与分类
简述 TCP/IP 协议中的端口在报头中占2个字节即16位,范围是从0-65535.端口号用来表示和区别网络中的不同应用程序 端口分类 0-1023之间的端口号,也叫Well Known ports. ...
- TCP/IP协议、端口等相关【1】
TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协 ...
最新文章
- java向量vector类,java数据结构——Vector(向量类)
- ValueError: Classification metrics can‘t handle a mix of multiclass and unknown targets
- 今晚直播 | 清华大学​高天宇:对比学习及其在NLP中的应用
- 图论--拓扑排序--模板
- 均值(Mean)和均值标准误差(S.E. Mean)
- Oracle function注释
- [CSharp]用VSS还是TFS呢?
- flink API之 Environment
- java算法-递归算法思想
- pixel 1 欧版电信破解4G,安卓P亲测可用(打电话+4G上网)
- 如何调整Exadata DB节点文件系统大小
- 虚拟存储器的基本概念
- 获取某年某月的第一天是星期几
- UEditor定制工具栏图标
- html 动态加载的菜单 当菜单点击一下,打开接着又关闭
- 【信息安全案例】——网络信息面临的安全威胁(学习笔记)
- C语言常见头文件汇总
- [Vue warn]: Invalid vnode type when creating vnode: .
- useImperativeHandle
- 学术圈很火的 超材料、超表面、超透镜:什么时候可以代替传统透镜?
热门文章
- 泡泡提示加强版 完美支持XHTML(JavaScript)--zhuan
- 贪心算法—建立雷达(POJ 1328)
- 如何快速打好java基础_学习Java课程时如何才能打好基础呢?
- python用二维码共享文档_[源码和文档分享]基于Python的QR二维码的生成与识别程序...
- 26日直播预告丨 经典知识库:ASM元数据简介及案例分享
- 今晚直播丨Oracle数据库SQL执行计划的取得和解析
- ORACLE数据库的连接
- 7个连环问揭开java多线程背后的弯弯绕
- 3种双集群系统方案设计模式详解
- 【华为云技术分享】干货!!卷积神经网络之LeNet-5迁移实践案例