信息安全實(shí)踐第四次作業(yè)遠(yuǎn)程控制系統(tǒng)_第1頁(yè)
信息安全實(shí)踐第四次作業(yè)遠(yuǎn)程控制系統(tǒng)_第2頁(yè)
信息安全實(shí)踐第四次作業(yè)遠(yuǎn)程控制系統(tǒng)_第3頁(yè)
信息安全實(shí)踐第四次作業(yè)遠(yuǎn)程控制系統(tǒng)_第4頁(yè)
信息安全實(shí)踐第四次作業(yè)遠(yuǎn)程控制系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、四 川 大 學(xué) 計(jì) 算 機(jī) 學(xué) 院、軟 件 學(xué) 院實(shí) 驗(yàn) 報(bào) 告 學(xué)號(hào): 姓名:專(zhuān)業(yè): 班級(jí): 第 3 周 課程名稱 信息安全產(chǎn)品開(kāi)發(fā)實(shí)踐  實(shí)驗(yàn)課時(shí)4實(shí)驗(yàn)項(xiàng)目遠(yuǎn)程控制系統(tǒng)實(shí)驗(yàn)時(shí)間2013.9.27實(shí)驗(yàn)?zāi)康?利用流套接字實(shí)現(xiàn)一個(gè)簡(jiǎn)單的遠(yuǎn)程控制系統(tǒng)  實(shí)驗(yàn)環(huán)境 虛擬機(jī) Ubuntu-VMware Workstation  實(shí)驗(yàn)內(nèi)容(算法、程序、步驟和方法) 服務(wù)器服務(wù)器代碼中有兩個(gè)死循環(huán),外部是為了重復(fù)連接客戶端(即使對(duì)方斷了此次連接仍然能繼續(xù)等待并連接下一客戶端),要注意每連接一次客戶端套接字都會(huì)不同,而且除了連接客戶端的套接字以外還有監(jiān)聽(tīng)套接字。#include

2、<stdlib.h>#include<stdio.h>#include<sys/socket.h>#include<netdb.h>#include<string.h>#include<unistd.h>#include<netinet/in.h>#include<arpa/inet.h>#define PORT 8900#defineSIZE 2048/* 2K BUFFER */void exec (char* command,char* result)FILE * in;int len;cha

3、r c;len=0;bzero(result,sizeof(result);in=popen(command,"r");if (NULL=in)fprintf(stderr,"error in create a pipen");/return -1;while(c=fgetc(in)!=EOF)&&(len<SIZE)resultlen=c;len+;resultlen='0'pclose(in);if (0=len)sprintf(result,"%s cannot executen",comm

4、and);int main(int argc,char* argv)struct sockaddr_in server;struct sockaddr_in client;int len;int port;int listend;int connectd;int sendnum;int opt;int recvnum;char send_buf2048;char recv_buf2048;int rvalue;char cmd10; /* these two var used to deal with cd command */char path2048;port= PORT;memset(s

5、end_buf,0,2048);memset(recv_buf,0,2048);opt = SO_REUSEADDR;if (-1=(listend=socket(AF_INET,SOCK_STREAM,0)/使用TCP創(chuàng)建監(jiān)聽(tīng)用的套接字perror("create listen socket errorn");exit(1);setsockopt(listend,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt);#ifdef DEBUGprintf("the listen id is %dn",listend);

6、#endifmemset(&server,0,sizeof(struct sockaddr_in);server.sin_family = AF_INET;/IPv4協(xié)議server.sin_addr.s_addr = htonl(INADDR_ANY);/接收任意地址server.sin_port = htons(port);/設(shè)置端口號(hào)if (-1=bind(listend,(struct sockaddr *)&server,sizeof(struct sockaddr)/綁定perror("bind errorn");exit(1); if (-1=

7、listen(listend,5) perror("listen errorn");exit(1); while(1)/外部死循環(huán),用來(lái)重復(fù)連接客戶端if (-1=(connectd=accept(listend,(struct sockaddr*)&client,&len)/創(chuàng)建新的套接字連接客戶端perror("create connect socket errorn");continue;while (1)memset(recv_buf,0,2048);#ifdef DEBUGprintf("the connect id

8、is %d",connect);printf("the client ip addr is %s",inet_ntoa(client.sin_addr);#endif#ifdef DEBUGprintf("the send num is %d",sendnum);printf("the client ip addr is %s",inet_ntoa(client.sin_addr);#endifif (0>(recvnum = recv(connectd,recv_buf,sizeof(recv_buf),0)perr

9、or("recv errorn");close(connectd);continue;recv_bufrecvnum-1='0'/這里要注意-1,不然會(huì)保留換行符if (0=strcmp(recv_buf,"quit")|(0=strcmp(recv_buf,"QUIT")/結(jié)束對(duì)話,跳出內(nèi)部循環(huán),繼續(xù)外部循環(huán)printf("overn");break;sscanf(recv_buf,"%s %s",cmd,path);if (0=strcmp("cd",cm

10、d) |(0=strcmp("CD",cmd)chdir(path);continue;exec(recv_buf,send_buf);rvalue=-1;rvalue=send(connectd,send_buf,sizeof(send_buf),0); close(listend); return 0;  (接上)實(shí)驗(yàn)內(nèi)容(算法、程序、步驟和方法)客戶端客戶端代碼中只有一個(gè)死循環(huán),和上次實(shí)驗(yàn)差別不大。#include<stdlib.h>#include<stdio.h>#include<sys/socket.h>#inclu

11、de<netdb.h>#include<string.h>#include<unistd.h>#include<netinet/in.h>#include<arpa/inet.h>#define SIZE 2048void print_usage (char* cmd )fprintf(stderr,"Usage:%s ip addressn",cmd);int main(int argc,char* argv)struct sockaddr_in server;int ret;int len;int port;i

12、nt sockfd;int sendnum;int recvnum;char send_buf2048;char recv_buf2048;int rvalue;char bufferSIZE;char cmd10; if (2>argc)| (argc >3)print_usage(argv0);exit(1);if (3=argc) /這里的端口號(hào)從主函數(shù)參數(shù)獲取port = atoi(argv2);if (-1=(sockfd=socket(AF_INET,SOCK_STREAM,0)perror("can not create socketn");exi

13、t(1);memset(&server,0,sizeof(struct sockaddr_in);server.sin_family = AF_INET;server.sin_addr.s_addr = inet_addr(argv1);server.sin_port = htons(port);if (0>(ret=connect(sockfd,(struct sockaddr*)&server,sizeof(struct sockaddr)perror("connect error");close(sockfd);exit(1);while(1)/

14、這邊只需一個(gè)死循環(huán)memset(buffer,0,2048);fprintf(stderr,"TCP>");fgets(buffer,SIZE,stdin);rvalue=send(sockfd,buffer,strlen(buffer),0);if (0=strcmp(buffer,"quitn")|(0=strcmp(buffer,"QUITn")/結(jié)束對(duì)話close(sockfd);break;if (0>rvalue)fprintf(stderr,"error in receiving datan");continue;sscanf(buffer,"%s",cmd);if (0=strcmp("cd",cmd)|(0=strcmp("CD",cmd)continue;/如果是cd命令則沒(méi)有返回內(nèi)容直接重新開(kāi)始循環(huán)len=sizeof(struct sockaddr);if (0>(len=recv(sockfd,buffer,2048,0)perror("recv data errorn");close(sockfd);exit(1);bufferlen='0'printf(&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論