电脑技术学习

Unix操作系统网络相关的两个安全问题

dn001

  下面这个简短的程序例子是从本地机器的超级用户中把数据文件发送到另一台机器的超级用户中, 可以实现多个文件的连续自动批量发送。尽管该程序使用了超级用户进行数据发送,但由于编程时进行了巧妙的设计,所以当它被编译成可执行代码后,很难从这些二进制代码中发现有关本地计算机和远程计算机的安全方面的重要信息。同时,该程序采用了管道通信方法从而在执行过程中不会产生任何中间文件,安全性相对较高。实现代码如下:

file://安全发送数据
#include<stdio.h>
#include<string.h>
main(int argc,char *argv[])
{
int i,u1,u2,u3,u4;
float ip1,ip2;
char pw[10]=“,us[5]=“,ftpn[4]=“;
char ftpcmd[500]=“,runl[10]=“;
char ftpprt[256]=“;
FILE *fftp;
if(argc>1)
{
us[0]=‘u’;us[1]=‘s’;us[2]=‘e’;us[3]=‘r’;
u1=‘r’;u2=‘o’;u3=‘o’;u4=‘t’;
pw[0]=‘5’;pw[1]=‘1’;pw[2]=‘2’;
pw[3]=‘7’;pw[4]=‘3’;
pw[5]=‘7’;pw[6]=‘4’;
ftpn[0]=‘f’;ftpn[1]=‘t’;ftpn[2]=‘p’;
ip1=106.73;ip2=168.13;
printf(“f 从本机数据:
);
for(i=1;i
{
sprintf(runl,“l %s,argv[i]);
system(runl);
}
sprintf(ftpcmd,“%s%s -n -i %.2f.%.2f <
sprintf(ftpcmd,“%s%s %c%c%c%c %s
,ftpcmd,us,u1,u2,u3,u4,pw);
sprintf(ftpcmd,“%scd /usr/tmp
,ftpcmd);
for(i=1;i
{
sprintf(ftpcmd,“%sput %s
,ftpcmd,argv[i]);
sprintf(ftpcmd,“%sls %s
,ftpcmd,argv[i]);
}
sprintf(ftpcmd,“%sCMD
,ftpcmd);
printf(“
正在发送……
);
fftp=popen(ftpcmd,“r);
i=0;
while(fgets(ftpprt,256,fftp)!=NULL)
{
i++;
if(i>0) 
printf(“%s,ftpprt);
}
pclose(fftp);
}
}

标签: