程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 設計Unix下木馬程序

設計Unix下木馬程序

編輯:關於C語言

文章試讀 不拘一個遍程序系列編程序不能一個腦袋鑽到底,有時要學會變通,即所謂的曲線救國。 職場規劃:一些雜七雜八的職場感悟吧。不值錢的軟件人才 精力充沛與事業成功   讓系分來得更猛烈些吧    不值錢的系統分析師   經濟危機下大學生如何就業 我的詩歌:都是我的打油詩,但是很值得一讀。不要工作還衣食無憂之四難歌   香格裡拉美人圖 寶寶圖片:超可愛的小寶寶 博客 考試培訓:主要是關於考研、軟考和等級的相關題解。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下遠程控制程序  

本文出自 “編程浪子朱雲翔” 博客,請務必保留此出處http://zhuyunxiang.blog.51cto.com/653596/142510

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved