实验四 Linux下的C语言编程以及GCC工具的使用

2024-10-22

实验四 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)执行口令检查程序。

上一篇:高中生义工社会实践报告下一篇:上海世博会英语作文范例