加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何使用Python脚本为批处理文件提供输入?

发布时间:2020-12-20 13:51:05 所属栏目:Python 来源:网络整理
导读:假设我有一个批处理文件,它要求我输入我的名字.我把我的名字输入.这是手动方式. 但我想用Python尝试一下.是否有可能在Python脚本中创建一个变量并将我的名字放在变量中并在它要求输入时将该变量传递给bat文件? 我的bat文件的第一步是问我的名字.询问名称批
假设我有一个批处理文件,它要求我输入我的名字.我把我的名字输入.这是手动方式.

但我想用Python尝试一下.是否有可能在Python脚本中创建一个变量并将我的名字放在变量中并在它要求输入时将该变量传递给bat文件?

我的bat文件的第一步是问我的名字.询问名称批处理文件是出于测试目的.我的主批处理文件有以下代码:

@ECHO OFF

:choice
set /P c=Do you want to continue [Y/N]?
if /I "%c%" EQU "Y" goto :yes
if /I "%c%" EQU "N" goto :no
goto :choice


:yes
"scriptsenter.py" yes
goto :continue

:no
"scriptskick_out.py" no

:continue
pause 
exit

所以,我希望这会有所帮助.我想通过大约2个输入.首先是Y和其他当它调用enter.py时它会询问我的登录详细信息.我的用户名和密码.所以,我需要做3个输入.我怎样才能做到这一点?

解决方法

这是可行的:我用它来注入使用不可打印的ascii字符(如空字节)的攻击字符串.

使用Python 3的示例:

inject_string.py

import ctypes
import time
import subprocess
import binascii


if __name__ =="__main__":
    response = "Y"

    p = subprocess.Popen("echo.bat",stdin = subprocess.PIPE)
    time.sleep(2)

    p.stdin.write(bytes(response,'ascii')) #Answer the question
    print("injected string :",response)

echo.bat

@ECHO OFF

:choice
set /P c=Do you want to continue [Y/N]?
if /I "%c%" EQU "Y" goto :yes
if /I "%c%" EQU "N" goto :no
goto :choice

:yes
echo "User has typed yes"
goto :continue

:no
echo "User has typed no"

:continue
pause

Output

python inject_string.py
Do you want to continue [Y/N]?injected string : Y
"User has typed yes"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读