破解密码,营救模式,初识脚本

Linux密码破解步骤

  1. 重新启动系统
  2. 开机倒数时间内,敲任意键
  3. 按字母e去编辑
  4. 选择kernel 开头的行,再次按字母e 编辑 ,然后敲空格,输入数字1,再敲回车。进入单用户模式,破解密码。此模式绕过密码验证
  5. 按字母键b 去引导进入系统
  6. 直接passwd 修改root用户的密码
  7. 修改密码后,输入init 5或者init 3 进入系统,或者reboot重新启动系统

vim /etc/inittab(必记!!)

  • 0 关机(不能把默认设置成这个);
  • 1 单用户模式 —》破解密码的时候(单用户模式还是要登录root)(绕过了shadow文件)(相当于windows中进PE模式);
  • 2 多用户模式。不能使用NFS功能(网络功能);
  • 3 完全多用户模式,可以使用网络功能。纯字符界面;
  • 4 unused 没有的;
  • 5 图形界面;
  • 6 重新启动(不能把默认设置成此项)。

所以,在终端输入:

  • init 0 :关机 (/poweroff/halt/shutdown -h now都是关机)
  • init 6 重新启动(/reboot/shutdown -r now)
  • init 3 进入字符界面
runlevel 查看当前运行级别
 会看到:1  S  ---》1代表开机进入的运行级别  S 代表当前的运行级别
 若是: S  3  ---》说明是从单用户切换到运行级别3

营救模式

eg:删除了/etc/passwd文件,进不去系统

如何进入营救模式?(rescue mode )

  1. 使用光盘进入
  2. 设置从光盘启动(快速按下ESC键,选择从光盘启动) 注意!按一次ESC即可,注意,不好按!太快了!

放入系统光盘;
选择rescue installed system 进入营救模式
(centos需要选择)rescue method –》local cd/dvd
这里写图片描述
(敲)

    chroot /mnt/sysimage  --》切换根环境到原来本身系统里的根
    cp /etc/passwd-  /etc/passwd
    exit
    reboot

小结:

单用户模式—》破解密码–》看/etc/passwd,不看/etc/shadow
营救模式–》进入不了系统了


写脚本

作业1:
写一个脚本新建5个用户,用户名的前缀为zhang 例如:zhang1 zhang2 到zhang5,5个用户的密码为123456zhang,家目录在/zhang目录下与用户名同名。

   1.需求分析
        1.使用什么命令来实现,什么功能算法
            useradd 、passwd 、for
    2.完善功能
    3.开始给脚本起名字
        create_user.sh
    4.运行调试
方法一
#!/bin/bash
#function:create system user
#author:cali
#version:1.0
mkdir /zhang
for i in `seq 5`
do
 useradd -d /zhang/zhang$i zhang$i
echo "123456zhang"|passwd zhang$i --stdin
done
方法二(加强版)
#!/bin/bash
echo "please input system user name"
read Name

[ -d /zhang ]&&echo "now,beginning to create user"||mkdir /zhang
for i in {1..5}
#for i in `seq 5`
#for i in $(seq 5)
do
        if id $Name$i &>/dev/null
        then
                echo "sorry,user $Name$i is exist,please input name again"
                exit
        else
                useradd -d /zhang/$Name$i $Name$i
                echo "123456zhang"|passwd $Name$i --stdin &>/dev/null
                echo "create $Name$i sucess!"
        fi
done

计时小脚本900秒。

echo 实验开始
for i in `seq 900`   ---》``反引号:优先执行反引号里面的命令:
do
      echo 过去了$i秒
      sleep 1   --》暂停一秒
done
echo  timeover

awk是linux下的一个文本处理工具,主要用来截取想要的文本。

  • -F : 是指定分割符号;
  • $1 $2 是第几个
  • cmd1 && cmd2 作用:如果cmd1命令执行成功就执行cmd2命令
  • cmd1 || cmd2 作用:如果cmd1命令执行不成功就执行cmd2命令
  • cmd1 &&cmd2 ||cmd3 作用:如果cmd1执行成功就执行cmd2,如果cmd1执行不成功就执行cmd3命令
  • (mkdir aa mkdir bb mkdir ccc) 小括号的作用就是看做一个整体,只要括号内最后一条命令执行成功,则echo $? 就等于0.

if 命令

编写2个脚本
实现批量新建用户,可以自定义输入用户的名字、新建用户的数量、用户的密码。输入密码的时候不能显示出来。

if [ 条件];then
        command1
        command2
        ......
else
        command1
        command2
        ......
fi

[条件] 其实就是执行命令。当条件成立(命令执行成功),就执行第1个command1及后续命令;如果不成立,就执行else后面的command1及后续命令;
$? 是上一条命令的返回值,其中 0 代表命令执行成功,非零值代表不成功;
;分号是 命令连接符,不管前面的命令执行成功与否都会执行后面的命令!!!

执行脚本的方法

  • bash abc.sh
  • ./abc.sh
  • . abc.sh
  chmod +x adduser.sh  授予可执行权限
# bash -x useradd_feng.sh  调试脚本。可以看到每条命令的执行过程

练习:

1.编写脚本实现如下新建用户的功能:
  1.接受用户输入的用户名,例如liu  ,将liu作为用户名的前缀
  2.接受用户输入的需要创建的用户数量,例如:20  ,意思就是要新建20个用户
  3.接受用户输入的想要给所有用户设置的密码,例如:123456a
#!/bin/bash
read -p "please input username:" name
read -p "please input the number:" num
read -sp "please input the passwd:" passwd
for i in `seq $num`
do
      useradd $name$i
if [ $? = 0 ]
then
      echo "useradd $name$i is OK"
else
      echo "useradd $name$i failed"
      continue
fi
      echo $num |passwd $name --stdin &>/dev/null
      echo "passwd $name$i is ok!"
done

2.如果root的密码忘记了,如何破解?—–》虚拟机里完成,密码破解。

密码破解步骤
1.重新启动系统
2.开机倒数时间内,敲任意键
3.按字母e去编辑
4.选择kernel 开头的行,再次按字母e 编辑,然后敲空格 输入数字1,再敲回车。进入单用户模式,破解密码。此模式绕过密码验证
5.按字母键b 去引导进入系统
6.直接passwd 修改root用户的密码
7.输入init 5或者init 3 进入系统,或者reboot重新启动系统

3.编写删除用户的脚本。

  1.接受用户输入的用户名,例如liu  ,将liu作为用户名的前缀  
  2.接受用户输入的需要删除的用户数量,例如:20  
  3.要求有显示所有系统里用户的功能,删除前先显示下系统里所有的用户,然后接受用户输入的用户名,开始去删除。
  4.如果用户不存在给予提醒,不能删除不存在的用户
#!/bin/bash
#function:To delete the user
#author:liupeng
#version:1.0
read -p "please input delete  username:" name
read -p "please input the number:" num
for i in `seq $num`
do
        userdel -r $name$i
if [ $? = 0 ]
then
        echo "userdel $name$i is OK"
else
        echo "userdel $name$i failed"
        continue
fi
done

4.请编写一个脚本实现如下功能:

在屏幕上显示uid 大于500的用户的名字和uid号及家目录的位置,例如下面的格式输出
 xiaoliu   uid is 500   home directory is /home/xiaoliu
 xiaohei   uid is 600   home directory is /home/xiaohei
 wuji   uid is 900   home directory is /home/wuji
  ......

方法一:

#cat /etc/passwd| sort -n -k 3 -t:|cut -d : -f1,3,6|awk -F ':'  '{if($2>=500)print "$1 "   uid is  "$2 "   the home dir is "$3"}'
#cat /etc/passwd| sort -n -k 3 -t:|cut -d : -f1,3,6|awk -F ':'  '$2>=500&&$2<=1000{print "$1 "   uid is  "$2 "   the home dir is "$3"}'

方法二:

[root@teacher lianxi]# cat hecheng_gt500.sh
#!/bin/bash                                                                    
#function:Statistics  user uid great than 500
#author:naige
#version:1.0
cat passwd |cut -d ":" -f 1,3,4,6 |sort -n -t: -k2 >tongji.txt
cp -f /etc/passwd ./
#username
username=($(cat tongji.txt |cut -d: -f1))
#uid
home=($(cat tongji.txt |cut -d: -f4))
uid=($(cat tongji.txt |cut -d: -f2))
#gid
#gid=($(cat tongji.txt |cut -d: -f3))
#home
echo "${username[$i-1]}  uid is ${uid[$i-1]}  home directory is ${home[$i-1]}"
for i in `seq ${#username[@]}`
do
     if ((  ${uid[$i-1]} > 500 ))

     then
     fi
done        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斯言甚善

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值