实验四 Linux下的C语言编程以及GCC工具的使用
实验四 Linux下的C语言编程以及GCC工具的使用 篇1
实验四 Linux下的C语言编程以及GCC工具的使用
【实验目的】了解Linux下的用户管理机制,熟练掌握Linux下的C语言编程以及GCC工具的使用。
【预备知识】复习C/C++语言的基本技能、用户管理知识和GCC使用的内容。
【实验要求】Linux系统管理的一项重要工作就是用户管理。用户的口令以加密的形式存储在/etc/shadow文件中.弱口令就是很容易被猜出来的口令,比如与用户名相同的口令、常用的单词口令等。管理员应该定期检测系统中是否存在弱口令。试编写一个C语言程序,主动检查自己的Linux系统中是否存在弱口令。
【实验步骤】
1)分析/etc/shadow文件的格式。可以查看自己的系统中该文件的格式,根据8.1节的介绍,该文件的每一行对应一个用户,下面是一个系统中/etc/shadow文件的实例:root:$1$j33ff543SWQ/C7Swn6jR9xyfoEcLaS.:12912:0:99999:7:::bin:*:12834:0:99999:7:::
daemon:*:12834:0:99999:7:::
2)了解Linux下口令加密的原理。
口令的加密是使用Linux系统的crypt函数实现的。使用info或者man可以了解该命令的工作原理。它使用包含12个字符的字符串作为种子salt,将用户输入的口令key进行加密pwd=crypt(key.salt),将所得的包含34个字符的字符串存入,etc,shadow文件的第2个字段,这34个字符的前12个就是salt。当给用户设置口令时,种子是由系统随机选取的。
当用户在登录界面中输入自己的口令时,系统使用crypt进行上述计算,如果所得的结果与/etc/shadow中存储的一致,则允许用户登录。
3)检查弱口令。弱口令就是很容易被猜出来的口令。比如admin、guest、fllower、123456、beauty等。在口令猜测或者破解时,一般不会穷尽所有字符的所有排列组合,一般使用弱口令字典,字典中包含常被用来作为口令的字符串。可以到网上查找弱口令字典。
下面介绍弱口令检查的原理。对每个用户而言,逐个将经常被作为口令的词,使用crypt做加密,如果加密结果与/etc/shadow所存储的内容相同,则口令被猜出来。
4)用C语言编写实现口令检查,关键部分的代码如下。通过读取,etc/shadow的每一行,获得一个关于
用户的数据结构,存放在pwd中。
char saltstr[13];//存放种子
saltstr[13]=’\0’;
strncpy(saltstr,pwd->pw_passwd,12);//将口令的前12个字符作为种子 cp=crypt(guess,saltstr);//加密
if(strncmp(cp,pwd->pw_passwd,34))//与存储的不一致
return(0);
Printf(“Warninq!Password Problem:Guessed:\t%s\tpasswd:%s\n”,pwd->pw-name,guess);//找到口令,显示信息
5)编译运行,命令为:
gcc-o passchk pass.c-Icrypt
6)执行口令检查程序。
【实验四 Linux下的C语言编程以及GCC工具的使用】推荐阅读:
c语言实验报告内容07-10
c语言实验五函数11-20
实验一 C语言的运行环境和运行过程08-02
西南交大c语言实验07-16
C语言程序设计实验九08-21
c语言程序设计实验三09-06
C语言实验报告《逻辑结构程序设计》05-14