网站大量收购独家精品文档,联系QQ:2885784924

文件传输之一:框架结构和界面实现[精选].doc

文件传输之一:框架结构和界面实现[精选].doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文件传输之一:框架结构和界面实现[精选]

在木马中文件管理的重要性,是无需质疑的,对于文件的管理,做到并不难,但做好却也不易在我们编写一个功能完整的“文件木马” 其实现效果如图所示。为了文章的完整性,我们将分为数篇来介绍,本文主要介绍程序的整体框架和界面实现,在以后的文章中将以此框架为基础实现详细的功能。 实现:枚举磁盘,枚举目录,获取文件信息 上传文件,下载文件,执行文件,创建目录,删除目录等 传输控制结构 要实现客户端与服务端的通信,设计一个合理的传输控制结构,会使后面的工作轻松很多,为了使代码易读 首先对要使用的命令进行预定义其各个命令定义如下 #define GetDriver 0x01 //磁盘信息 #define GetDirInfo 0x02 //目录信息 #define ExecFile 0x03 //执行文件 #define GetFile 0x04 //下载文件 #define PutFile 0x05 //上传文件 #define DelFile 0x06 //删除文件 #define DelDir 0x07 //删除目录 #define CreateDir 0x08 //创建目录 #define FileInfo 0x09 //文件信息 #define GetScreen 0x10 //查看屏幕 在程序的网络通信中主要有 操作命令 ,命令对像,和具体数据三部分,对于命令的传输定义如下结构 typedef struct { int ID; //操作命令 BYTE lparam[BUF_LEN*2]; //命令对像 }COMMAND; 因为在程序中打交道最多的就是文件,对文件的详细属性定义如下结构 typedef struct? { char FileName[MAX_PATH]; //文件名称 int FileLen; //文件长度 char Time[50]; //时间信息 BOOL IsDir; //为目录否 BOOL Error; //错误信息 HICON hIcon; //图标句柄 }FILEINFO; 服务端结构 服务端还是比较简单的其整体思路如下 1.服务端循环接受连接,并把连接交给线程处理 2.线程接受命令数据,并跟据命令ID将命令对像和SOCKET句柄传给处理函数 3.函数执行指定功能,并返回执行结果 对整体结构的描述,我们用伪代码表述如下 main() { /*初示化设置......*/ while(true) { if(client=accept(server,(sockaddr *)clientaddr,len))//循环接受连接 { CreateThread(NULL,NULL,SLisen,(LPVOID)client,NULL,NULL);//传递线程处理 } } /*清理释放资源......*/ WSACleanup(); } 服务端程序运行后循环接受连接,如果有新的连接就传递给新的线程处理,线程代码如下 DWORD WINAPI SLisen(LPVOID lparam) { SOCKET client=(SOCKET)lparam; COMMAND command; while(1) { if(recv(client,(char*)command,sizeof(command),0)==SOCKET_ERROR)//接受命令数据 { coutThe Clinet Socket is Closed\n; break; }else { switch(command.ID)//判断命令ID { case GetDriver://将命令对像和SOCKET句柄传递给处理函数 ??? GetDriverProc (command,client); ??? break; case DelFile: ??? DelFileProc (command,client); ??? break; /*其它命令......*/ } } } } 线程式的功能是接受客户端的命令数据,并跟跟据命令ID 将命令对像传递给处理函数,由函数完成指定的功能 以删除文件命令为例其函数格式如下 DWORD DelFileProc (COMMAND command,SOCKET client) { if(DeleteFile((char*)command.lparam)==0)//command.lparam为命令对像,这里为要删除的文件路径 { send(client,删除失败...); } else { send(client,删除成功...); } } 很容易看出,处理函数接受命令对像和客户端SOCKET句柄,执行后会把结果传递回去.... 客户端结构 客

文档评论(0)

jsntrgzxy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档