C# 如何重定向应用程序';通过Socks5/SSH/HTTPS隧道连接?SDK和x27的任何建议;谁来完成这样的任务?

C# 如何重定向应用程序';通过Socks5/SSH/HTTPS隧道连接?SDK和x27的任何建议;谁来完成这样的任务?,c#,c++,https,ssh,tunnel,C#,C++,Https,Ssh,Tunnel,我需要通过Socks5、SSH或HTTPS对应用程序建立的连接(主要是TCP)进行隧道 到目前为止,我已经找到了3种方法:api挂钩、winsock lsp和驱动程序 我正在寻找关于处理这个问题的最佳方法的建议,以及任何关于SDK的建议,这些建议可能会为我抽象出这个任务(首选免费/开源,但只要一个人创业的公司负担不起高昂的价格,商业建议是受欢迎的) 另外,我正在使用.Net(C#和或C++/CLI) 编辑:我对目标应用程序没有任何控制权。直接调用命令行创建隧道,然后从应用程序连接到本地主机。Pl

我需要通过Socks5、SSH或HTTPS对应用程序建立的连接(主要是TCP)进行隧道

到目前为止,我已经找到了3种方法:api挂钩、winsock lsp和驱动程序

我正在寻找关于处理这个问题的最佳方法的建议,以及任何关于SDK的建议,这些建议可能会为我抽象出这个任务(首选免费/开源,但只要一个人创业的公司负担不起高昂的价格,商业建议是受欢迎的)

另外,我正在使用.Net(C#和或C++/CLI)


编辑:我对目标应用程序没有任何控制权。

直接调用命令行创建隧道,然后从应用程序连接到本地主机。Plink是Putty的命令行版本,您有很多选择,它是一个非常受欢迎、安全且经过测试的应用程序

您有一个应用程序(),它通过一个漂亮的UI为您完成这项工作。这是一个有点车,但它的工作刚刚好

此示例将远程计算机中的端口80连接到本地主机的端口8000

plink.exe -L 127.0.0.1:8000:127.0.0.1:80 -C -pw 1234 -2  -l user myserver.com
我不推荐这种方法,因为命令行包含密码,任何流程管理器都可以很容易地看到,现在plink的好处是,您有可用的源代码,因此可以将其集成到项目中

编辑

现在假设您的应用程序连接到“yahoo.com”以获取一些数据,您不能修改应用程序,但可以设置一个。您可以执行下一个命令:

plink.exe -L 127.0.0.1:80:google.com:80 -C -pw 1234 -2  -l user myserver.com
其中myserver.com是一个SSH服务器,允许您进行隧道操作并访问google.com 现在以管理员身份转到C:\windows\system32\drivers\etc\中的主机文件,并添加下一项:

127.0.0.1 yahoo.com
您可以使用浏览器测试设置,然后导航到yahoo.com,您将看到google.com页面。这看起来很简单,但真正的力量是所有的流量都通过myserver.com

一些优点是

  • 所有到yahoo.com的流量都是加密的
  • 您可以使用此方法绕过代理限制
  • 如果您可以从外部连接到myserver.com所在的内部网,则可以访问该内部网
  • 您可以记录或修改连接的数据

  • 请注意,由于证书身份验证,此方法很可能在HTTPS连接中出现问题。

    作为一种直接方法,您可以调用命令行创建隧道,然后从应用程序连接到本地主机。Plink是Putty的命令行版本,您有很多选择,它是一个非常受欢迎、安全且经过测试的应用程序

    您有一个应用程序(),它通过一个漂亮的UI为您完成这项工作。这是一个有点车,但它的工作刚刚好

    此示例将远程计算机中的端口80连接到本地主机的端口8000

    plink.exe -L 127.0.0.1:8000:127.0.0.1:80 -C -pw 1234 -2  -l user myserver.com
    
    我不推荐这种方法,因为命令行包含密码,任何流程管理器都可以很容易地看到,现在plink的好处是,您有可用的源代码,因此可以将其集成到项目中

    编辑

    现在假设您的应用程序连接到“yahoo.com”以获取一些数据,您不能修改应用程序,但可以设置一个。您可以执行下一个命令:

    plink.exe -L 127.0.0.1:80:google.com:80 -C -pw 1234 -2  -l user myserver.com
    
    其中myserver.com是一个SSH服务器,允许您进行隧道操作并访问google.com 现在以管理员身份转到C:\windows\system32\drivers\etc\中的主机文件,并添加下一项:

    127.0.0.1 yahoo.com
    
    您可以使用浏览器测试设置,然后导航到yahoo.com,您将看到google.com页面。这看起来很简单,但真正的力量是所有的流量都通过myserver.com

    一些优点是

  • 所有到yahoo.com的流量都是加密的
  • 您可以使用此方法绕过代理限制
  • 如果您可以从外部连接到myserver.com所在的内部网,则可以访问该内部网
  • 您可以记录或修改连接的数据

  • 请注意,由于证书身份验证,此方法很可能在HTTPS连接中出现问题。

    Plink如何拦截目标连接?据我所知,Plink就像本地代理一样工作,不是吗?不是。您必须将应用程序重定向到本地主机,隧道将使应用程序认为它正在与远程计算机直接通信。如果应用程序正在连接到域名,您可以在主机文件中添加一个条目。这就是问题所在,我无法控制目标应用程序。Plink如何拦截目标连接?据我所知,Plink就像本地代理一样工作,不是吗?不是。您必须将应用程序重定向到本地主机,隧道将使应用程序认为它正在与远程计算机直接通信。如果应用程序正在连接到域名,您可以在主机文件中添加一个条目。这就是问题所在,我无法控制目标应用程序。您是否有能力更改应用程序的源代码?或者你是想从应用程序的“外部”执行此操作?@Rob H:从“外部”执行。我无法控制目标应用程序。您有能力更改应用程序的源代码吗?或者你是想从应用程序的“外部”执行此操作?@Rob H:从“外部”执行。我对目标应用程序没有任何控制权。