nICEnnnnnnnLee/freedom4NG

tcp server 转发问题

Closed this issue · 8 comments

作者您好,我根据您的vpn 文件夹想自己试试抓包,但是在运行过程中源地址和目标地址都顺利被修改后却不会进到本地服务器,但java并不是我主语言,研究了好几天没有结果,所以只好来请教一下了,希望有空可以解答下

这是我的仓库

从您的博客来的,博客写的挺好,连我都能看懂😋

TCPServer 建议先不要使用Netty,测试连通性可以先试一试简单的ServerSocket

不知道你的具体目的是什么,但是不ROOT的话Android 7.0以后的手机没法抓包HTTPS流量的。

TCPServer 建议先不要使用Netty,测试连通性可以先试一试简单的ServerSocket

不知道你的具体目的是什么,但是不ROOT的话Android 7.0以后的手机没法抓包HTTPS流量的。

好的我试试,我只用抓http其他的不作处理

您好,我使用了 PrintTCPContentServer ,但问题依旧,并且我不知道为什么,不过从浏览器直接访问虚拟ip加端口是可以返回的

我把更新提交到了仓库

你使用了应用白名单模式,需要添加应用自身,并检查测试数据的发送包名"mark.via"是否正确

你使用了应用白名单模式,需要添加应用自身,并检查测试数据的发送包名"mark.via"是否正确

这个是via浏览器的包名,可以确定是正确的
而且如果不加这个,浏览器访问虚拟ip加端口是没反应的
image
访问其他的没反应
image

你改改再试试,访问443端口没有反应正常

http://1.1.1.1/
http://baidu.com:80/

https://github.com/ltxhhz/dxx/blob/d58b5b3136c8772035f92b892b068e762d2c849f/app/src/main/java/com/ltxhhz/dxx/vpn/LocalVpnService.java#L77-L81

try {
    builder.addAllowedApplication(this.getPackageName());
    //builder.addAllowedApplication("com.android.chrome");
    builder.addAllowedApplication("mark.via");
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

https://github.com/ltxhhz/dxx/blob/d58b5b3136c8772035f92b892b068e762d2c849f/app/src/main/java/com/ltxhhz/dxx/vpn/LocalVpnService.java#L174-L182

if(dstPort == 80){
                        
    NATSession session = NATSessionManager.getSession("tcp", portKey);
    if (session == null || session.RemoteIP != dstIP || session.RemotePort != dstPort) {
        NATSessionManager.createSession("tcp", portKey, dstIP, dstPort);
    }
    ipHeader.setSourceIP(intUniqueIp);
    ipHeader.setDestinationIP(intLocalIP);
    tcpHeader.setDestinationPort((short) localPort);
    Log.i(Config.tag, CommonMethods.ComputeTCPChecksum(ipHeader, tcpHeader) ? "校验成功" : "校验失败");
    vpnOutput.write(ipHeader.m_Data, ipHeader.m_Offset, size);
    
}

https://github.com/ltxhhz/dxx/blob/d58b5b3136c8772035f92b892b068e762d2c849f/app/src/main/java/com/ltxhhz/dxx/vpn/server/PrintTCPContentServer.java#L44

writer.write("Content-Type: text/html; charset=UTF-8\r\n");

非常感谢您,改动之后确实正常工作了,原来白名单需要添加自身的😭,这个我没想到