前言

前段时间做某个项目,由于涉及到tcp/udp方面的知识比较多,于是就索性趁热打铁,写个工具来强化相关知识。另外由于并非十分擅长Golang,所以也顺便再了解下Golang吧。

简介

flynet 是一款Golang语言编写的命令行工具,目前支持的功能包括:

  • Http代理
  • 本地Socks5代理
  • C/S模式的Socks5代理,支持TCP/UDP方式
  • 内网穿透
  • ...

    项目目前分为clien端和sever端,除http、本地socks5代理两端都支持外,其余功能需要两端配合使用。

使用方式

安装

Windows、linux用户可以直接在Releases页面下载对应的版本即可,其他平台可自行下载源码编译。

Windows中命令行进入到相应目录,.\win-client.exe ....\win-server.exe ...

Linux中同样的, ./linux-server ..../linux-client ...

在下文中皆以server ...client ...表示。

尝试运行后,如果输出如下信息表示成功:

Usage: flynet [options]
-M, --mode choose which mode to run. the mode must be one of['http', 'socks5',
'socks5-tcp', 'socks5-udp', 'forward']
-L, --listen choose which port(s) to listen or forward
-S, --server the server address client connect to
-V, --verbose output detail info
-l, --log output detail info to log file
-H, --help show detail usage Mail bug reports and suggestions to <asche910@gmail.com>
or github: https://github.com/asche910/flynet

Http代理

http代理直接在本机上开启Http代理,client和server都支持,命令如下:

server -M http -L 8848

client -M http -L 8848

表示在本机8848端口上开启了Http代理服务,如果没有任何信息输出则表示启动成功,毕竟linux的一大哲学就是:

没有消息就是好消息

当然如果还是想看到消息的话,可以在后面加上 -V--verbose参数,这样的话就会输出很多消息了。或者也可以加上-l--log参数来启动日志文件,会在运行目录下生成一个 flynet.log文件。

本地Socks5代理

本机上开启socks5代理的话,也是非常简单的,client和server都支持,命令如下:

server -M socks5  -L 8848

client -M socks5 -L 8848

这就表示在本机8848端口上开启了socks5代理,然后Chrome配合SwitchyOmega就可以很好的上网了。

C/S模式的Socks5代理-TCP

前面的那个是在本地上的socks5代理,这个则是client和server相互配合的socks5代理,并且中间是以tcp协议传输。用途的话,自由发挥吧。使用方法如下:

服务端

server -M socks5-tcp -L 8888

客户端

client -M socks5-tcp -L 8848 -S asche.top:8888

这里的例子是假设我服务器域名为 asche.top,然后客户端在8848端口开启了socks5代理,然后流量是以TCP的方式转发到了服务器的8888端口上,交由服务器去请求相应的目标网站,再把请求结果返回给客户端。如果可以,中间流量再进行加密,保证了传输的安全性。

C/S模式的Socks5代理-UDP

这个和上面tcp那个非常相似,不同的是这个使用UDP报文进行传输。毕竟UDP在某些方面有它自身的优势,而且某些重要的协议主要使用udp传输,比如DNS协议。下面来介绍具体用法:

服务端

server -M socks5-udp -L 53

客户端

client -M socks5-udp -L 8848 -S asche.top:53

这里同样以域名asche.top、端口53为例,客户端在8848端口开启了socks5代理,然后所有流量通过udp方式传输到服务端的53端口上,服务端收到后解析请求,然后将所有请求发至目标网站,再将结果以udp方式返回到客户端。同样的是中间传输也进行了加密。

内网穿透

内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度

简单点说就是让外网能够访问到内网中的机器。这里该工具所做的就是将内网的某个端口映射到服务器的某个端口中去,这样通过访问服务器的某个端口就可以间接的访问到内网中的端口了。方法如下:

服务端

server -M forward -L 8888 8080

客户端

server -M forward -L 80 -S asche.top:8888

同样假设服务器域名为asche.top, 这样所完成的就是将客户端的80端口映射到了服务端的8080端口上,中间的数据传输是通过服务端监听8888来完成的。然后我们访问asche.top:8080看到的内容应该就是客户端80端口上的内容了。

结语

项目目前功能也比较局限,日后应该会加上更多功能。另外地址位于 flynet, 还望大家多多支持!

一款功能强大的TCP/UDP工具---flynet的更多相关文章

  1. [推荐] kylinPET是一款功能强大的性能测试工具

    [推荐] kylinPET是一款功能强大的性能测试工具 官方网站: http://www.kylinpet.com/

  2. Fibratus:一款功能强大的Windows内核漏洞利用和跟踪工具

    今天给大家介绍的是一款名叫Fibratus的开源工具,广大研究人员可以使用这款功能强大的工具来进行Windows内核漏洞利用.挖掘与跟踪. Fibratus这款工具能够捕捉到绝大多数的Windows内 ...

  3. Enumy:一款功能强大的Linux后渗透提权枚举工具

    Enumy是一款功能强大的Linux后渗透提权枚举工具,该工具是一个速度非常快的可移植可执行文件,广大研究人员可以在针对Linux设备的渗透测试以及CTF的后渗透阶段利用该工具实现权限提升,而Enum ...

  4. Lingoes 一款功能强大、简明易用的多语言词典和文本翻译软件

    Lingoes 软件自述 Lingoes 是一款功能强大.简明易用的多语言词典和文本翻译软件,支持多达80种语言互查互译,这些语言包括 英.法.德.意.俄.中.日.韩.西.葡.阿拉伯语 及更多... ...

  5. 一款功能强大的iphone购物应用源码

    一款功能强大的iphone购物应用源码,这款应用源码比较完整的,并且还支持信用卡支付服务等功能的,基本实现了我们常用的购物应用功能了,实现商品的基本展示功能,还具有完整的用户管理,以及完整的购物流程等 ...

  6. 7.XXEinjector:一款功能强大的自动化XXE注射工具

    今天给大家介绍的是一款名叫XXEinjector的漏洞利用工具,XXEinjector是一款基于Ruby的XXE注入工具, 它可以使用多种直接或间接带外方法来检索文件.其中,目录枚举功能只对Java应 ...

  7. 三款功能强大代码比较工具Beyond compare、DiffMerge、WinMerge

    我们经常会遇到需要比较同一文件的不同版本,特别是代码文件.如果人工去对比查看,势必费时实力还会出现纰漏和错误,因此我们需要借助一些代码比较的工具来自动完成这些工作.这里介绍3款比较流行且功能强大的工具 ...

  8. 推荐一款功能强大的Tomcat 管理监控工具,可替代Tomcat Manager

    我们在本地启动Tomcat服务器后,用localhost:访问: 再点Manager App,即可进入Tomcat自带的Manager这个应用,此处可以单独部署/卸载每一个应用.可以看到在Manage ...

  9. 强烈推荐一款功能强大的Tomcat 管理监控工具

    专注于Java领域优质技术号,欢迎关注 原创: 侯树成 Tomcat那些事儿 启动 Tomcat完毕 ,有些时候总会打开浏览器 http://localhost:8080/ 去验证你的Tomcat是否 ...

随机推荐

  1. POJ-1469 COURSES ( 匈牙利算法 dfs + bfs )

    题目链接: http://poj.org/problem?id=1469 Description Consider a group of N students and P courses. Each ...

  2. 电脑修改密码后,git push 报错unable to access

    电脑修改密码后,git push 时报错 remote: Permission to xxx A. fatal: unable to access  解决这个问题有两种方法,一种是界面修改,一种是命令 ...

  3. Python---环境以及编辑器的使用的学习

    1.搭建python的环境 官网下载Python的安装程序,记住一点在安装的时候点一下下面的 Add Python 3.5 to PATH 它会自动给你把安装的python的环境加入到计算机的环境变量 ...

  4. Spring Cloud Alibaba | 微服务分布式事务之Seata

    Spring Cloud Alibaba | 微服务分布式事务之Seata 本篇实战所使用Spring有关版本: SpringBoot:2.1.7.RELEASE Spring Cloud:Green ...

  5. SpringCloud 学习(二)-2 :Securing The Eureka Server

    由于工作等种种原因未能连续进行学习,现在继续学习微服务,不过是新建的demo,springcloud版本用的是Finchley.SR2. 之前用简单demo实现了注册中心,现在来对注册中心加安全验证: ...

  6. Java 中的array数组总结之一

    数组:是一个将同种类型的数据存储在存储单元中. 可以用三种方式声明数组: 1.数据类型 标识符[]; int mothDays[]; 2.数据类型 标识符[] = new 数据类型[大小]; int ...

  7. Java静态代码块、代码块及构造函数执行顺序

    根据以下程序进行分析 定义一个父类 package sas.LearnJava; public class ExcuteOrderTest { { System.out.println("我 ...

  8. Vert.x Core 文档手册

    Vert.x Core 文档手册 中英对照表 Client:客户端 Server:服务器 Primitive:基本(描述类型) Writing:编写(有些地方译为开发) Fluent:流式的 Reac ...

  9. spring boot使用常规发送邮件

    spring boot使用常规发送邮件 1.pom.xml文件依赖: <!-- javax.mail begin--> <dependency> <groupId> ...

  10. idea控制台乱码解决方案

    第一步:修改intellij idea配置文件: 找到intellij idea安装目录,bin文件夹下面idea64.exe.vmoptions和idea.exe.vmoptions这两个文件,分别 ...