我的魔法被公司防火墙限制了,所以我只能让我的代理流量从我自己的服务器过一遍,但是服务器上面的客户端只能允许本机使用,不能开放公网访问,所以就想到了端口转发

但是网络上面找到的端口转发工具需要各种配置,,,太麻烦了。所以在下班之前就开发了一个端口转发的工具 (Python牛逼! (破音)

最近看了不少的优秀代码,下面代码也用到了一些开发方法。贴出代码,希望能帮到有需要的人

# -*- coding:utf-8 -*
import socket
import threading
import sys,getopt ## 这个代码是用来做端口转发的 emmm 你问有什么用?没用,删了他吧 (摊手 # 错误
def l_w(s):
print("[!] {}".format(s)) # 信息
def l_i(s):
print("[+] {}".format(s)) # 毁灭性错误
def l_a(s):
print("[-] {}".format(s))
exit() def help():
print("""
-h 提供帮助,就是你看到的这个
-s 指定监听的本地ip,默认为 127.0.0.1
-l 指定监听的端口号,必须指定
-d 指定转发的目的主机,默认为 127.0.0.1
-p 指定转发的目的端口,必须指定 本程序具有超级牛力! moo~~ moo~~~
""")
exit() s_host = "127.0.0.1"
s_port = 0
d_host = "127.0.0.1"
d_port = 0 # 将来自s套接字的数据转发到d套接字(函数名 forward)
def fw(s,d):
try:
while True:
buf = s.recv(4096)
l_i("{} ====> {} {} 字节".format(s.getpeername(),d.getpeername(),len(buf)))
if(len(buf) == 0):
l_w("{} 断开连接".format(s.getpeername()))
return
d.send(buf)
except:
return # 处理请求,每一个连接对应一个 (函数名 request thread)
def rt(request_socket):
des_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
des_socket.connect((d_host,int(d_port)))
except Exception as e:
l_a("连接目标 {}:{} 失败!err: {}".format(d_host,d_port,str(e)))
threading.Thread(target=fw,args=(request_socket,des_socket)).start()
fw(des_socket,request_socket) l_i("这个程序由 Startu 开发 o_o | ^_^ ~~~")
# 获取参数
try:
opts,args = getopt.getopt(sys.argv[1:],"hs:l:d:p:")
except getopt.GetoptError:
l_w("参数不正确")
help()
for opt,arg in opts:
if opt == '-h':
help()
elif opt == '-s':
s_host = arg
elif opt == '-l':
s_port = arg
elif opt == '-d':
d_host = arg
elif opt == '-p':
d_port = arg
if s_host == "127.0.0.1":
l_w("将会监听: 127.0.0.1") # 因为可能你不想绑定 127.0.0.1 所以作出提示 (也许是0.0.0.0呢)
if s_port == 0 or d_port == 0:
l_a("没有指定端口号或指定为0 通过 -h 参数看帮助") l_i("监听 {}:{}".format(s_host,s_port))
l_i("将会连接 {}:{}".format(d_host,d_port)) server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
server_socket.bind((s_host,int(s_port)))
except Exception as e:
l_a("绑定 {}:{} 端口失败 {}".format(s_host,s_port,str(e)))
server_socket.listen(50) # 应该同时连接不会超过 50 个吧...
l_i("准备就绪")
while True:
request_socket,addr = server_socket.accept()
l_i("{} 已连接".format(request_socket.getpeername()))
threading.Thread(target=rt,args=(request_socket,)).start()

核心代码实际上只有十几行而已。。。

[Python] 端口转发代码分享的更多相关文章

  1. python端口扫描器

    吃了个火鸡面后感觉到了怀疑人生!!!!!!!!!妈耶,在也不吃了.思路都给辣没了!!! python端口扫描器代码如下: #-*-coding:utf-8 from socket import * i ...

  2. ssh远程端口转发&&windows系统提权之信息收集&&网安工具分享(部分)

    一.ssh远程端口转发 背景:当我们在渗透过程中,获取到内网的一台仅有内网IP的服务器后,我们可以通过ssh隧道,将内网某个主机的端口进行远程转发 1.网络拓扑图 假设获取的服务器为web服务器,we ...

  3. 基于Python的跨平台端口转发工具

    背景 使用lcx也好,nc也好,总是会被安全防护软件查杀,所以想着自己写一个.顺面学习一下,端口转发的原理. 端口转发的逻辑 端口转发的逻辑很简单开启两个scoket,一个绑定IP端口进行listen ...

  4. vIDC v2.0 强大的端口转发神器使用总结-开放内网tfs代码服务

    vIDC2.0 端口映射工具,最近在公司闲来无事,想自己整个tfs来管理自己的研究代码. 本来是想用微软Visual Studio提供的免费tfs,但是无奈速度太慢.他们的服务器在美国,中国也没有代理 ...

  5. 抓取oschina上面的代码分享python块区下的 标题和对应URL

    # -*- coding=utf-8 -*- import requests,re from lxml import etree import sys reload(sys) sys.setdefau ...

  6. 教你用Python Jupyter Notebook 制作代码分享 PPT

    PPT 是个强大的工具,但是笔者的 PPT 制作技术不咋地,所以之前的分享习惯使用 Jupyter Notebook + RISE,这样使用简单的 markdown 格式加上代码就足够做一次代码分享了 ...

  7. Python的Asyncore异步Socket模块及实现端口转发的例子

    Python的Asyncore异步Socket模块及实现端口转发的例子 Asyncore模块提供了以异步的方式写入套接字服务客户端和服务器的基础结构. 只有两种方式使一个程序在单处理器上实现" ...

  8. python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题

    笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...

  9. 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则

    负载均衡-Nginx中文文档 http://www.nginx.cn/doc/example/loadbanlance.html 负载均衡 一个简单的负载均衡的示例,把www.domain.com均衡 ...

  10. 「SSH 黑魔法」: 代理、端口转发和 shell 共享

    在好朋友的推荐下,我看了这个视频: The Black Magic Of SSH 这个视频里面,介绍了  ssh 的一些高级应用:结合工作的经历,两类问题会对我们平时的工作帮助很大: 1. 两个人怎么 ...

随机推荐

  1. 分享一个项目:`learning_go_plan9_assembly`, 学习 golang plan9 汇编

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 近期在学习 golang plan9 汇编,总算基本做到了 ...

  2. py 学习(c++ to py)

    py1: print 2024-01-27 23:18:57 星期六 #这里是注释 # py1 : 基础print总结 ''' aaa 有时候也用三个单引号当注释 但其实是字符串 交互式会输出 ''' ...

  3. 解决VS选择运行“在证书存储区中找不到清单签名证书”

     转:https://www.cnblogs.com/190196539/archive/2011/12/03/2272861.html 解决"在证书存储区中找不到清单签名证书" ...

  4. vim 从嫌弃到依赖(14)——快速跳转

    之前介绍过众多的motion,根据移动范围来排序的话有 l.e.w.j等等,但是面对那么长的代码文件,仅仅使用这几个简单的motion不知道要移动多少次才能找到我想要的代码,这个速度有时候还不如我用鼠 ...

  5. 【5】OpenCV2.4.9实现图像拼接与融合方法【SURF、SIFT、ORB、FAST、Harris角点 、stitch 】

    相关文章: [1]windows下安装OpenCV(4.3)+VS2017安装+opencv_contrib4.3.0配置 [2]Visual Studio 2017同时配置OpenCV2.4 以及O ...

  6. 2.4 CE修改器:代码替换功能

    代码替换功能,需要使用 Cheat Engine 工具的"代码查找"功能,来查找游戏数据存储在内存中的地址.首先找到当前数值的存储地址,并将其添加到下方地址列表中.然后右键单击该地 ...

  7. C# - 将HTML网页、HTML字符串转换为PDF

    将HTML转换为PDF可实现格式保留.可靠打印.文档归档等多种用途,满足不同领域和情境下的需求.本文将通过以下两个示例,演示如何使用第三方库Spire.PDF for .NET和QT插件在C# 中将H ...

  8. ESP8266的AT指令模块程序

    最新代码可点击下载:ESP8266 模块代码 和以下代码实现方式不一致,更加自由可控 本段代码只是测试了esp8266作为服务器端使用,没有测试作为客户端使用. 没有超长延时等待或死循环等待AT指令反 ...

  9. DNS正向解析

    实验介绍:正向解析 通常把域名到IP称为正向解析 把ip到域名称为反向解析 一:前期准备 准备一台客户端测试正向解析是否正常 修改ip 子网掩码 DNS服务器 使用VMnet8 IP要和DNS服务器端 ...

  10. 使用7-zip进行分卷压缩和解分卷压缩(Windows和Linux)

    现在一共有10个视频,一共313M,我对该文件夹进行分卷压缩,每个tar包100M,压缩过程如下: Windows环境首先选中所有的压缩包,然后在压缩包上单击鼠标右键,然后选择7-Zip,再选择提取到 ...