我想我在标题中总结了一下。关于这个问题,我一直在评估我的工具选项,它允许我制作,捕获和分析TCP / IP数据包。我是网络编程的新手,我还在学习,但此时,我想编写一个建立TCP连接的程序。
以下是我的目标(长期到短期):
部署并编码一个系统,该系统可以在NATS后面的两台计算机之间建立一个ssh连接,给出它们的本地主机名(即feynman.home到feynman.work)和路由器的IP地址。如果可能/必要,我还希望能够引导一组跳跃的连接。 不使用第三方或任何形式的封闭源代码。 @
以“更清晰”的格式重写(并可能修改)pwnat(即使用一些发展良好的高级语言库。)
在同一NAT后面的两台主机之间建立ssh连接(当然使用我自己的代码。)
在同一NAT后面的两台主机之间建立TCP连接(当然使用我自己的代码。)
我设法发现netexpect看起来很有希望,直到它无法在我的Mac OS X上构建(我的电脑现在正经历一个小故障时期。)Netexpect可能是最好的选择,但我我遇到过很多其他的(例如scapy及其perl和ruby实现。)其中许多都没有得到很好的维护(例如scapy及其perl和ruby实现。)
所以,我认为最好把问题带到stackoverflow(除非有更好的stackexchange我不知道。)
*鉴于我的计算机的当前状态(不要问)可移植性很重要。
*我希望维护得很好/正在积极开发,以便最好地保证我将拥有我短期和长期目标所需的所有工具。
*最后,我更喜欢使用解释性语言的一些原因,从我的经验到我的偏好。
@是的我完全清楚有更简单的方法。我想按照自己的方式去做,因为这和学习经验一样实用。
答案 0 :(得分:1)
我知道您正在寻找解释性语言的库,但libcrafter非常易于使用。是一个用于制作和解析网络数据包的C ++库。在未来,它将支持更多的协议。
答案 1 :(得分:0)
您描述的涉及在多个跃点/ NAT之间路由连接的大部分内容 - 根本不在SSH客户端中完成。这将涉及访问多个网络路由器并提前设置所有这些NAT,然后这些转换将在连接路由时自动发生。
您是在谈论通过多台服务器代理您的连接吗?这可以通过登录到服务器A的宏来完成,然后从服务器A再次自动调用ssh到达服务器B,依此类推。
你能否详细描述一下你想要完成的事情?
编辑:我刚刚阅读了pwnat的描述。这是非常专有的(并且无论如何都不适用于所有情况,因为许多配置完全阻止了ICMP)。如果你真的想尝试一下,你可能会被C / C ++困住。出于安全原因,我认为Java或.NET不会为您提供数据包工艺所需的低级灵活性。您是否看过Ostinato:http://code.google.com/p/ostinato/wiki/Downloads?tm=2或Nemesis:http://nemesis.sourceforge.net/
Windows上的所有内容都将使用winpcap,而在* nix上它将使用libpcap。
答案 2 :(得分:0)
虽然我没有尝试过,但这可能有效:http://www.codeproject.com/Articles/12458/SharpPcap-A-Packet-Capture-Framework-for-NET
它说SharpPcap处理与winpcap的接口......所以根据它们实现的内容,或者你是否可以扩展它的功能,你可以把它放在一起。
或者,在java中,您可以使用类似的东西作为起点:http://jpcap.sourceforge.net/
答案 3 :(得分:0)
libtins 是我过去一年开发的一个开源,多平台的C ++库。您可以使用它来伪造,嗅探和解释来自网络接口的数据包。它使用起来非常简单,它提供了高级接口,因此您不必担心字节顺序,内部协议实现等。
您可以在library's website上查看。