设计Unix下木马程序

文章试读
不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国。一、二、三、四
职场规划:一些杂七杂八的职场感悟吧。不值钱的软件人才 精力充沛与事业成功   让系分来得更猛烈些吧    不值钱的系统分析师   经济危机下大学生如何就业
我的诗歌:都是我的打油诗,但是很值得一读。不要工作还衣食无忧之四难歌   香格里拉美人图
宝宝图片:超可爱的小宝宝 写博客
考试培训:主要是关于考研、软考和等级的相关题解。2009考研试题分析   2008年12月程序员试题分析    2009年软考备考全攻略    2008年5月程序员试题解析  轻松写系分论文
 
 
 
 

精通Unix下C语言编程与项目实践之

19 分布式应用技术之远程调用模型

作者:朱云翔,胡平
 
在网络时代的生产实践中,提供服务往往是分布式地,而单个主机系统,也经常需要调用其它主机系统的服务。 比如出于安全性考虑,某些数据库系统常常被限制为只能在某台(几台)主机上直接访问,这样就只有部分主机(暂时称之为数据库主机)能够访问和操作数据库。其它主机(暂时称之为远程主机)就必须调用数据库主机提供的服务才能完成数据库操作,这个远程调用的流程一般为:向数据库主机建立套接字连接,并发送访问申请。数据库主机接收这些申请,并校验远程主机的合法性,再向数据库转发操作请求,最后把数据库操作结果返回给远程主机。整个过程对于用户来说是透明的,就好像远程主机直接访问了数据库一样。
远程调用就是指本地主机运行网络中另外一台计算机上某程序、函数或服务,就如同在本机上运行一样,以上关于数据库的访问就是远程调用的一个例子。远程调用也使用了客户机-服务器模型,发送本地请求的主机是客户机,网络中另外一台实际运行进程或服务的主机就是服务器。
本章将设计一个远程调用的模型,在服务器端运行一个进程,这个进程接收客户端发送的 shell 请求,通过安全性验证后在服务器端运行这个 shell ,并将输出结果转发到客户端。

19.1 系统分析

本项目实际上是运行在服务器端的一个程序,它接收客户申请、执行 shell 命令、将 shell 输出结果转发到客户端,那么在设计项目前必须解决如下问题:

1. 接收客户端请求

服务器端如何接收并处理客户申请,包括采用什么样的通信发送,选择并发处理流程还是串行处理流程等。

2. 执行shell命令

服务器端如何运行客户请求的 shell 命令,选择何种方式在进程中执行其它的程序,供选择的答案有 system fork-exec popen

3. 获取运行的shell输出结果

由于服务器需要把进程运行时的输出结果返回给客户端,那么就必须考虑如何获取正在运行的 shell 进程的输出结果。
事实上新进程的执行可以选择以下两种方案:
(1) system fork-exec
在此方案下,服务进程无法交互式的获取 shell 进程的输出信息,但可以通过输入输出重定向,将 shell 进程的输出写入到一个文件中,待 shell 进程执行完毕后读取该文件,并将其内容发送给客户端即可。
(2) popen
以管道的方式创建新进程执行 shell 命令,设置函数 popen 的参数 type 为“ r ”,就可以及时获取 shell 进程的输出信息了。
1. popen 执行命令 szCmd ,并将命令 szCmd 的输出结果打印到 stderr 中。
FILE *pfile;                       
char szLine[8192 + 1];
pfile = popen(szCmd, "r");          /* 创建管道、执行 shell 命令 */
while (fgets(szLine, sizeof(szLine), pfile) != NULL)    /* 读取输出结果 */
{
    PrintLog(stderr, szLine);       /* 打印输出结果 */
}
pclose(pfile);                      /* 结束 shell 进程,关闭管道 */
与采用 system fork-exec 方式相比,采用 popen 方式执行 shell 命令不但设计简单,而且可以直接、及时地读取到命令的输出结果。因此,本项目以多进程并发套接字模式接收客户端的请求,并采用 popen 交互地执行新进程。
 
相关文章:
封面          前言        目录         策划         作者
动态库        变长参数    文件锁       外设         僵死进程
定时器        I/O重定向   消息队列    共享内存
 
  实践项目:
开发网页投票器(一)  (二) 
开发网页投票器  字符串报文
银行代发工资报文
Unix下远程控制程序
 

你可能感兴趣的:(c,远程控制,木马,Unix编程,精通Unix下C语言编程)