成长值: 249 签到天数: 4708 天 [LV.Master]伴坛终老
|
发表于 2021/8/12 03:27
|
显示全部楼层
|阅读模式
|Google Chrome 92.0.4515.131 |Windows 10
linux 安装使用frp做BT下载内网穿透踩坑记录 获取用户真实IP
踩坑
https://gofrp.org/docs/features/common/realip/ 获取用户真实IP这个功能开启后,如果不支持该协议,则会导致端口穿透失败,关掉就正常了
通过网络抓包,可以发现建立内网穿透连接的过程,frp会发送一个报文到客户端,解密后报文为如下,感觉可以利用这串报文来实现frp获取真实ip以便防止反吸血出问题(可以尝试提交给BT开发者来适配frp),目前客户端显示用户为127.0.0.1,BT汇报客户端监听端口50888
- {"proxy_name":"BT Listen TCP","src_addr":"183.50.207.148","dst_addr":"172.30.0.37","src_port":2349,"dst_port":22223,"error":""}
复制代码
观察字段,172.30.0.37为vps服务器eth0 ip,src_addr为对方真实ip,src_port为对方连接远程端口,dst_port为本机被访问端口,proxy_name为frp客户端中设置的注释名
随后客户端会响应内容到服务端,数据为
- {"run_id":"cb4b18c4513d2def","privilege_key":"","timestamp":0}
复制代码
最终服务端通知客户端交换证书密钥,升级到SSH加密通道进行传输数据(该操作为BT客户端的DHE加密,并非是frp执行了加密传输)
frp如果用作websocket握手阶段,默认请求地址为
frp用作tcp建立请求握手报文
- {"version":"0.37.1","hostname":"","os":"windows","arch":"amd64","user":"","privilege_key":"40dc610c48f590fe85aa11bdd1ab7bb0","timestamp":1628709693,"run_id":"","metas":null,"pool_count":1}
复制代码
服务器响应
- {"version":"0.37.1","run_id":"ddf3ad339579a62d","server_udp_port":8000,"error":""}
复制代码
总结,,,frp传输默认情况下无任何加密措施,全部数据均为明文传输,会被运营商干扰导致速度变慢
需要在客户端中common字符串增加以下参数强制启用tls加密,此时无法被抓包探测数据内容
下方这个代理字段中的参数是无效的,测试0效果存在BUG,请用上方那个tls_enable = true执行加密
完美使用版教程:https://bbs.itzmx.com/thread-98648-1-1.html
|
评分
-
查看全部评分
|