|
|

楼主 |
发表于 2007-3-31 11:37:43
|
显示全部楼层
Post by 生来自由
楼主,要是能详细的解释一下原理的话肯定就能加精了。
我对网络不是很懂,rrs和ssh是什么关系?为什么主机没开ssh rrs就没用了?
而且如果把pyrrs装到公司电脑上,它会不断的向外网某个IP链接,这不是很容易被网管发现?放火墙设置的好的话也可以记录下来。
原理其实很简单,
pyrrs是一个二合一的程序,它有两个工作模式, 想要在两端分别使用,一个模式叫做connector一个叫listener。connector把一个“终端”推送到listener端
pyrrs在connector端用到了unix的"pseudo terminal"
一端(防火墙内),connector会一直试图连接一个地址,如果成功,打开一个伪终端,会返回master和slave两个描述符,原引APUE的话:“任何写到伪终端主设备的输入会作为从设备端的输入,反之依然”。
然后connector用fork复制自己,子进程关闭master描述符,然后绑定slave和其stdin/stdout/stderr,用dup2。最后调用exec执行一个shell。
父进程关闭slave描述符,如果收到网络数据,就写到master描述符里,收到master数据就写到网络上。直到网络连接中断。
pyrrs的listener端就相对简单了,收到键盘数据就写到网络上,收到网络数据就写到屏幕上。
我的pyrrs比原来的rrs多了加密(其实原来的rrs用的是openssl,想要发证书啥的,实际用起来挺麻烦,也可能是我不会用吧。), 我对密码系统也不是很熟悉啦,用的人家的库。 反正现在是密文传输就对了,至于它的feedback一直搞不定。
差不多就是这样啦,版主能精了吗?哈哈 |
|