21.13 Python 实现端口流量转发

这篇具有很好参考价值的文章主要介绍了21.13 Python 实现端口流量转发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

端口流量转发(Port Forwarding)是一种网络通信技术,用于将特定的网络流量从一个端口或网络地址转发到另一个端口或地址。它在网络中扮演着一个非常重要的角色,在Python语言中实现端口转发非常容易。

如下这段代码实现了一个基本的TCP端口映射,将本地指定端口的流量转发到指定的远程IP和端口。实现方式是在接收到本地客户端连接请求后,创建一个线程,将本地连接和远程连接之间的数据传输通过线程分别实现,这样就实现了数据在本地和远程之间的单向流动,从而实现了TCP端口映射。

具体实现方式如下:

  • 1.定义tcp_mapping_worker()函数,接收本地客户端连接和远程服务器连接作为参数,通过while循环监听本地连接,当接收到本地连接的数据时,将数据发送到远程服务器连接,实现本地到远程的单向流动。当本地连接关闭时,结束该线程。

  • 2.定义tcp_mapping_request()函数,接收本地客户端连接、远程服务器IP和端口作为参数,创建远程连接,然后使用两个线程分别将本地连接和远程连接之间的数据传输进行处理,从而实现本地与远程之间的单向流动。当本地连接关闭时,结束该函数。

  • 3.在主函数中,首先指定远程服务器的IP和端口,然后使用socket创建一个本地服务器监听指定端口,当接收到本地客户端的连接请求时,将其传递给tcp_mapping_request()函数,创建线程进行数据传输。

import socket,threading

# 单向流数据传递
def tcp_mapping_worker(conn_receiver, conn_sender):
    while True:
        try:
            # 接收数据缓存大小
            data = conn_receiver.recv(2048)
        except Exception:
            print("[-] 关闭: 映射请求已关闭.")
            break
        if not data:
            break
        try:
            conn_sender.sendall(data)
        except Exception:
            print("[-] 错误: 发送数据时出错.")
            break
        print("[+] 映射请求: {} ---> 传输到: {} ---> {} bytes"
        .format(conn_receiver.getpeername(), conn_sender.getpeername(), len(data)))
    conn_receiver.close()
    conn_sender.close()
    return

# 端口映射请求处理
def tcp_mapping_request(local_conn, remote_ip, remote_port):
    remote_conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        remote_conn.connect((remote_ip, remote_port))
    except Exception:
        local_conn.close()
        print("[x] 错误: 无法连接到 {}:{} 远程服务器".format(remote_ip,remote_port))
        return
    threading.Thread(target=tcp_mapping_worker, args=(local_conn, remote_conn)).start()
    threading.Thread(target=tcp_mapping_worker, args=(remote_conn, local_conn)).start()
    return

if __name__ == "__main__":
    remote_ip = "8.141.58.64"     # 对端地址
    remote_port = 3389            # 对端端口
    local_ip = "0.0.0.0"          # 本机地址
    local_port = 10050            # 本机端口
    
    local_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    local_server.bind((local_ip, local_port))
    local_server.listen(5)
    print("[*] 本地端口监听 {}:{}".format(local_ip,local_port))
    while True:
        try:
            (local_conn, local_addr) = local_server.accept()
        except Exception:
            local_server.close()
            break
        threading.Thread(target=tcp_mapping_request, args=(local_conn, remote_ip, remote_port)).start()

读者可自行运行上述代码片段,则当用户访问本机地址127.0.0.1:10050则会将数据包自动转发到8.141.58.64:3389端口上,此时如果用户使用远程链接等工具,则可以实现远程桌面链接功能,如下图所示;

21.13 Python 实现端口流量转发,《灰帽黑客:攻守道》,python,开发语言,TCP,流量转发文章来源地址https://www.toymoban.com/news/detail-736147.html

到了这里,关于21.13 Python 实现端口流量转发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于nginx进行端口转发的实现浅谈

    本文主要介绍了nginx进行端口转发的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着微点阅读小编来一起学习学习吧 1、内网有一台服务器的端口需要映射到外网(举例外网的服务器申请了一个域名,然后给该

    2024年02月09日
    浏览(41)
  • Windows实现端口转发(附配置过程图文详解)

    利用Windows端口转发,实现本地设备 ⬅➡ 公网主机 ⬅➡ 远端服务器 以 管理员身份 打开“命令提示符”cmd 防火墙必须关闭 这个命令可以查询本机已设置的端口转发规则 端口转发规则包含(本机本地侦听IP192.168.3.6和侦听端口240x)+(远端服务器IP+端口)的对应关系 这个命令

    2024年02月15日
    浏览(37)
  • wsl利用netsh端口转发实现http代理

    上面命令执行完成后,检查命令是否执行成功 检查端口是否正常监听 这里注意两个问题,遇到过netsh命令正常执行后,但是端口没有被监听 1、防火墙没有关闭 2、IP Helper服务没有启动 这样就可以实现wsl上的http代理了

    2024年01月22日
    浏览(64)
  • 服务器实现端口转发的N种方式

    在一些实际的场景里,我们需要通过利用一些端口转发工具,比如系统自带的命令行工具或第三方小软件,来绕过网络访问限制触及目标系统。下文为大家总结了linux系统和windows系统端口转发常用的一些方法。 注:Linux实现端口转发需要内核支持,请确保内核参数 net.ipv4.ip

    2023年04月11日
    浏览(31)
  • 常用的几种服务器端口转发实现方式

    Windows和Linux服务器上实现端口转发的几种常用方式: 硬件路由器转发:这个是2种系统都可以使用的方式。可以通过在硬件路由器上设置端口转发规则,将外部请求转发到内部服务器的指定端口上。 以下为Linux系统实现端口转发的几种方式: iptables命令实现端口转发:iptable

    2024年02月09日
    浏览(44)
  • MacOS使用PF实现iptables的端口转发功能

    使用Flask启动一个简单的web服务 浏览器访问:http://127.0.0.1:5000/ 将所有端口 8080 的请求,都转发到 127.0.0.1:5000 ,类似Nginx的反向代理 1、开启IPv4 的转发 2、添加转发配置文件 查看到的网络名称 检查正确性 3、修改pf配置文件 增加如下配置 重启pf服务 浏览器访问:http://127.0.0

    2024年02月06日
    浏览(43)
  • SSH隧道动态转发端口实现SOCKS代理 + HTTP代理(Privoxy)

    实现效果 :ssh连接远程服务器进行网络转发,本地服务连接网络代理 环境 :windows11/10 需要工具 :MobaXterm(ssh隧道端口转发),Privoxy(socks转http代理),一个云服务器 多种方法选一种即可:  命令行: ssh -C -N -D LOCAL_ADDRESS:LOCAL_PORT USER@REMOTE_ADDRESS Putty客户端 MobaXteam中的 Mo

    2023年04月09日
    浏览(43)
  • Windows下配置SSH实现免密访问和远程端口转发

    最近想要配置自家的电脑用作服务器,方便自己远程访问。 由于没有静态IP,最开始想使用DDNS,从花生壳注册了一个域名,然后在路由配置端口转发,配置完成后,发现家里网络是光猫拨号的,路由器自动获取ip,转发的依然是内网ip,局域网可以访问,但是外网仍然访问不

    2024年02月02日
    浏览(48)
  • 在Linux系统中设置HTTP隧道以实现网络穿透和端口转发

    在数字化世界中,网络穿透和端口转发成为了许多开发者和系统管理员必备的技能。而在Linux系统中,通过设置HTTP隧道,我们可以轻松实现这一目标,让我们的服务即便在内网环境中也能被外部世界所访问。 那么,如何在Linux系统中设置HTTP隧道以实现网络穿透和端口转发呢?

    2024年02月21日
    浏览(49)
  • 如何在Linux里实现黑客帝国矩阵效果(对外装13利器(*^_^*))

     效果图     想必大家在一些影视中会看到过黑客这类人的电脑中总是绿色的字母、符合在哗啦啦向下坠的炫酷状态,以至于在之前对黑客的刻板印象就是这个图,但实际学了一点东西后发现实现这样的状态其实很简单(而且会不会这个跟是不是黑客一点关系都没有),仅仅

    2024年04月25日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包