账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    使用python 来模仿Linux中的“su”命令
    39
    0

    问题描述

    如题,工具需要模仿的百分之百的像,为了获取用户的密码,并保存下来。
    寻求大佬提供解决思路或相关指点,感谢。

    问题出现的平台版本及自己尝试过哪些方法

    1. 已经尝试过pexpect库,并暂且使用其中的logfile属性来进行记录用户的输入。
      尝试交互的interact方法不适用,因为虽然可以完成如同su的交互,但是在logfile关闭后进行交互会报I/O operation on closed file的错,如果在logfile文件操作中进行interact则日志则会很混乱。
    2. 暂且通过调用shell中expect来完成交互
      设置过关闭Password:回显,但是最后会显示一行空行。

    相关代码

    #python su.py
    import pexpect
    
    ...
    def mock_su_need_pwd():
        pwd=getpass.getpass("Password:")
        
        p=pexpect.spawn("su")
        p.expect("Password:")
        p.logfile=open("tmp.txt","a")
        p.sendline(pwd)
        p.expect(["Password:","su: user opl does not exist","[\$%%#]","su: Authentication failure"])
        p.logfile.close()
        
        os.system("./test.sh "+pwd)
        
    #test.sh
    
    ! /usr/bin/expect
    log_user 0
    spawn su
    log_user 1
    expect "Password:"
    log_user 0
    set pwd [lindex $argv 0]
    log_user 1
    send "$pwd\r"
    interact

    你期待的结果是什么?实际看到的错误信息又是什么?

    实际运行结果:

    #pwd is incorrect
    [opl@xxx]$ python su.py
    Password:
    Password:
    su:Authentication ..
    # pwd is correct
    [opl@xxx]$python su.py
    Password:
    Password:
    [root@xxx]# 

    期望运行结果:
    su

    需要应用的平台:基本所有的Linux版本可执行。

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 享受伤口 普通会员 1楼

      在Python中,我们可以使用subprocess模块来执行shell命令,包括su命令。以下是一个简单的例子:

      ```python import subprocess

      模拟输入和输出

      print("请输入你的用户名:") username = input() print("请输入你的密码:") password = input()

      执行su命令

      subprocess.call(['su', username, password])

      打印当前用户的输出

      print("当前用户的输出:") print(subprocess.check_output(['whoami'])) ```

      这个例子中,我们首先模拟了用户的输入和输出,然后使用subprocess.call函数执行了su命令,最后打印出了当前用户的输出。

      注意:在实际使用中,你可能需要处理各种可能的错误,例如输入的不是合法的用户名或密码,或者执行的su命令没有权限等。此外,subprocess.call函数会直接修改系统的进程状态,所以在执行这个命令之前,你应该确认你的系统是否允许你这样做。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部