基于Python的跨平台端口转发工具
背景
使用lcx也好,nc也好,总是会被安全防护软件查杀,所以想着自己写一个。顺面学习一下,端口转发的原理。
端口转发的逻辑
端口转发的逻辑很简单开启两个scoket,一个绑定IP端口进行listen,一个连接被转发的内网服务的IP和端口,使用select循环检测,转发信息。
代码
# -*- coding:utf-8 -*-
import os
import select
import socket
from optparse import OptionParser
class PortMap(object):
def __init__(self, laddr, lport, raddr, rport):
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self._server = None
self.laddr = laddr
self.lport = lport
self.raddr = raddr
self.rport = rport
def run(self):
try:
self.server.bind((self.laddr, self.lport))
self.server.listen(1)
except Exception, reason:
print "Create Listen Port Failed!"
exit(0)
self.rlist = [self.server]
self.wlist = []
self.elist = [self.server]
while True:
rs, ws, es = select.select(self.rlist, self.wlist, self.elist)
for sockfd in rs:
if sockfd == self.server:
self._server, addr = sockfd.accept()
self.rlist.append(self._server)
try:
self.client.connect((self.raddr, self.rport))
except Exception, reason:
print "Connect Source Port Failed!"
exit(0)
self.rlist.append(self.client)
self.elist.append(self.client)
continue
elif sockfd == self._server:
data = sockfd.recv(4096)
self.client.send(data)
elif sockfd == self.client:
data = sockfd.recv(4096)
self._server.send(data)
if __name__ == "__main__":
optParser =OptionParser ()
optParser .add_option ('-R','--raddr',dest ='raddr')
optParser .add_option ('-l','--laddr',dest ='laddr')
optParser .add_option ("-P","--rport",dest ="rport")
optParser .add_option ("-p","--lport",dest ="lport")
options ,args =optParser .parse_args ()
maper = PortMap(options.laddr,int(options.lport),options.raddr,int(options.rport))
mapert.run()
使用
python portmap.py -l 127.0.0.1 -p 4444 -R 172.16.204.137 -P 22
或者编译后
bobac@ubuntu:~/Desktop$ cython portmap.py --embed
bobac@ubuntu:~/Desktop$ ls
backdoor backdoor.py dist hello.c portmap.py warcraft3.c
backdoor.c build hello portmap.c warcraft3 warcraft3.py
bobac@ubuntu:~/Desktop$ gcc `python-config --cflags` -o portmap portmap.c `python-config --ldflags`
bobac@ubuntu:~/Desktop$ ./portmap -l 172.16.204.137 -p 4433 -R 127.0.0.1 -P 22
效果图
安全软件效果:
包括卡巴斯基、360不会报毒,本来嘛,作为网络工具常用的功能罢了,只不过在渗透中也能成为有用的小工具。
基于Python的跨平台端口转发工具的更多相关文章
- 端口转发工具lcx使用两类
lcx是一款强大的内网端口转发工具,用于将内网主机开放的内部端口映射到外网主机(有公网IP)任意端口.它是一款命令行工具,当然也可以在有权限的webshell下执行,正因如此lcx常被认为是一款黑客入 ...
- 一行导出所有任意微软SQL server数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解
文章标题: 一行导出所有任意微软SQL serer数据脚本-基于Python的微软官方mssql-scripter工具使用全讲解 关键字 : mssql-scripter,SQL Server 文章分 ...
- psutil一个基于python的跨平台系统信息跟踪模块
受益于这个模块的帮助,在这里我推荐一手. https://pythonhosted.org/psutil/#processes psutil是一个基于python的跨平台系统信息监视模块.在pytho ...
- 初识TPOT:一个基于Python的自动化机器学习开发工具
1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...
- Windows 和 Linux 平台下的端口转发工具
原文地址: http://unmi.cc/windows-linux-port-forwarding/ 这里记录一下我曾经使用过的几个端口转发工具,即端口映射.端口重定向,和 NAT 也是差不多的概念 ...
- Windows自带的端口转发工具netsh使用方法_DOS/BAT
Windows自带的端口转发工具netsh使用方法_DOS/BAT 作者:用户 来源:互联网 时间:2017-02-22 17:24:30 netsh 端口转发 摘要: 下面的代码在windows ...
- windows端口转发工具(LCX)
端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法.端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过 ...
- [原创]小巧免杀的端口转发工具PortTran(附.net源码)
0x001 简介 PortTran by k8gege.NET版端口转发工具,支持任意权限下转发 0x002 背景工具在2016年左右写的,当时某个内网不知何原故LCX用不了 由于Win2003才刚停 ...
- rinetd基于内网TCP端口转发
在Linux系统中大多数情况选择用iptables来实现端口转发,iptables虽然强大,但配置不便,而且新手容易出错.在此分享另一个TCP/UDP端口转发工具rinetd,rinetd体积小巧,配 ...
随机推荐
- Git 基础 - 远程仓库的使用
远程仓库的使用 要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某个项目时,需要管 ...
- MyEclipse连接CVS,如果中间经过一层代理,就没法直接联接到CVS了,哪位知道怎么办?
- Centos yum安装java jdk1.8
yum -y install java-1.8.0-openjdk* 安装后 java -version查看版本 检验是否安装成功. 其安装位置 /usr/lib/jvm/java-1.8.0-ope ...
- lakala proportion轨迹分析代码
/** * Created by lkl on 2017/12/7. */ import breeze.numerics.abs import org.apache.spark.sql.SQLCont ...
- RGB转LAB色彩空间
1.原理 RGB无法直接转换成LAB,需要先转换成XYZ再转换成LAB,即:RGB——XYZ——LAB 因此转换公式分两部分: (1)RGB转XYZ 假设r,g,b为像素三个通道,取值范围均为[0,2 ...
- ★Wireshark基本介绍和学习TCP三次握手
之前写过一篇博客:用 Fiddler 来调试HTTP,HTTPS. 这篇文章介绍另一个好用的抓包工具wireshark, 用来获取网络数据封包,包括http,TCP,UDP,等网络协议包. 记得大学的 ...
- Eclipse + PyDev 快捷键
●多行缩进(减少缩进):tab/shift+tab ●复制行: Ctrl+Alt+方向键'↓' ●删除行:Ctrl+d ●自动完成:Alt+/ ●注释:Ctrl+/ ●窗口最大小:Ctrl+m == ...
- 【转载】MongoDB集群和实战详解
1.概述 最近有同学和网友私信我,问我MongoDB方面的问题:这里我整理一篇博客来赘述下MongoDB供大家学习参考,博客的目录内容如下: 基本操作 CRUD MapReduce 本篇文章是基于Mo ...
- linux环境中,如何查看某个软件包,都依赖哪些软件包?被哪些软件包依赖?
需求描述: 今天查看主机上的一个软件ghostscript,准备删除,就先看下这个软件都依赖哪些软件, 然后呢被哪些软件依赖 操作过程: 1.查看这个软件依赖哪些软件(rpm方式查询) [root@t ...
- Linux-PAM认证机制
http://www.cnblogs.com/marility/articles/9235522.html https://www.jianshu.com/p/342c05b51b7c https:/ ...