[Python] 端口转发代码分享
我的魔法被公司防火墙限制了,所以我只能让我的代理流量从我自己的服务器过一遍,但是服务器上面的客户端只能允许本机使用,不能开放公网访问,所以就想到了端口转发
但是网络上面找到的端口转发工具需要各种配置,,,太麻烦了。所以在下班之前就开发了一个端口转发的工具 (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] 端口转发代码分享的更多相关文章
- python端口扫描器
吃了个火鸡面后感觉到了怀疑人生!!!!!!!!!妈耶,在也不吃了.思路都给辣没了!!! python端口扫描器代码如下: #-*-coding:utf-8 from socket import * i ...
- ssh远程端口转发&&windows系统提权之信息收集&&网安工具分享(部分)
一.ssh远程端口转发 背景:当我们在渗透过程中,获取到内网的一台仅有内网IP的服务器后,我们可以通过ssh隧道,将内网某个主机的端口进行远程转发 1.网络拓扑图 假设获取的服务器为web服务器,we ...
- 基于Python的跨平台端口转发工具
背景 使用lcx也好,nc也好,总是会被安全防护软件查杀,所以想着自己写一个.顺面学习一下,端口转发的原理. 端口转发的逻辑 端口转发的逻辑很简单开启两个scoket,一个绑定IP端口进行listen ...
- vIDC v2.0 强大的端口转发神器使用总结-开放内网tfs代码服务
vIDC2.0 端口映射工具,最近在公司闲来无事,想自己整个tfs来管理自己的研究代码. 本来是想用微软Visual Studio提供的免费tfs,但是无奈速度太慢.他们的服务器在美国,中国也没有代理 ...
- 抓取oschina上面的代码分享python块区下的 标题和对应URL
# -*- coding=utf-8 -*- import requests,re from lxml import etree import sys reload(sys) sys.setdefau ...
- 教你用Python Jupyter Notebook 制作代码分享 PPT
PPT 是个强大的工具,但是笔者的 PPT 制作技术不咋地,所以之前的分享习惯使用 Jupyter Notebook + RISE,这样使用简单的 markdown 格式加上代码就足够做一次代码分享了 ...
- Python的Asyncore异步Socket模块及实现端口转发的例子
Python的Asyncore异步Socket模块及实现端口转发的例子 Asyncore模块提供了以异步的方式写入套接字服务客户端和服务器的基础结构. 只有两种方式使一个程序在单处理器上实现" ...
- python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题
笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...
- 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则
负载均衡-Nginx中文文档 http://www.nginx.cn/doc/example/loadbanlance.html 负载均衡 一个简单的负载均衡的示例,把www.domain.com均衡 ...
- 「SSH 黑魔法」: 代理、端口转发和 shell 共享
在好朋友的推荐下,我看了这个视频: The Black Magic Of SSH 这个视频里面,介绍了 ssh 的一些高级应用:结合工作的经历,两类问题会对我们平时的工作帮助很大: 1. 两个人怎么 ...
随机推荐
- linux虚拟机固定ip
1.查看宿主机IP信息 在windows宿主机上,键盘输入win+r,输出cmd,打开终端命令行: 输入ipconfig /all,查看宿主机IP信息: 2.修改Linux虚拟机的配置文件 Linux ...
- TienChin 渠道管理-渠道搜索
ChannelController @PreAuthorize("hasPermission('tienchin:channel:list')") @GetMapping(&quo ...
- Prompt-“设计提示模板:用更少数据实现预训练模型的卓越表现,助力Few-Shot和Zero-Shot任务”
Prompt-"设计提示模板:用更少数据实现预训练模型的卓越表现,助力Few-Shot和Zero-Shot任务" 通过设计提示(prompt)模板,实现使用更少量的数据在预训练模型 ...
- 【3】超级详细matplotlib使用教程,手把手教你画图!(多个图、刻度、标签、图例等)
相关文章: 全网最详细超长python学习笔记.14章节知识点很全面十分详细,快速入门,只用看这一篇你就学会了! [1]windows系统如何安装后缀是whl的python库 [2]超级详细Pytho ...
- 8.2 C++ 引用与取别名
C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...
- 4.1 C/C++ 使用结构与指针
C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...
- C++ Boost库 操作字符串与正则
字符串的查找与替换一直是C++的若是,运用Boost这个准标准库,将可以很好的弥补C++的不足,使针对字符串的操作更加容易. 字符串格式转换: #include <iostream> #i ...
- Gin 获取请求参数
1.获取URL?后的参数(不区分请求方式) // 获取请求url ? 后的参数(url:8080/add?name=kelvin) func GetUrlParam(ctx *gin.Context) ...
- Web入门:JavaScript文字动画
欢迎来的我的小院,恭喜你今天又要涨知识了! 案例内容 利用JavaScript实现文字逐步展现的动画效果. 演示 学习 <!DOCTYPE html> <html lang=&quo ...
- 面试官:Sentinel是如何实现限流的?
限流是一种通过控制系统对外提供的资源.服务或接口的访问数量或速率,以保护系统免受过载的一种策略. 它的目的是确保系统能够在承受范围内提供稳定和可靠的服务,避免因过多的请求而导致系统崩溃.资源耗尽或响应 ...