我正在编写一个使用外部可执行文件的代码,我正在尝试看看是否有办法在输出中搜索只与我提供的特定日期相对应的信息。可执行文件是tsk_gettimes,我需要扫描用户提供的文件的所有信息,其中用户只需输入他们想要搜索的日期,代码只打印出该信息,而不是该文件的全部信息。
import os, sys, re
#user file input
filename = input()
if(filename = NULL)
print(os.system('"C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe"'))
#user date input
keydate = input()
#executable file
os.chdir('C:\Program Files\sleuthkit-4.11.1-win32\bin')
os.system('"C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe %s"', filename).read()
#search for key date
for in
re.search()
#date specifier
如果这有帮助的话,这就是我目前掌握的代码。
使用subprocess.popen()
运行命令并读取其输出。
import subprocess
with subprocess.Popen(['C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe', filename], stdout=PIPE) as proc:
output = proc.stdout.read()
if re.search(regexp, output):
...
你可以试试这样的。。。在不知道可执行文件的作用的情况下,我并不完全相信它会起作用。
import subprocess
import os
filename, keydate = input().split(' ')
print(filename)
assert os.path.exists(filename) # can't find filename
assert os.path.exists("C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe") # can't find executable
prog = subprocess.run([
"C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe",
filename
], stdout=subrocess.PIPE)
output = prog.stdout.decode().split('n')
for i in output:
if keydate in i:
print(i)
如果出现编码错误,只需将latin-1
作为decode
的参数output = prog.stdout.decode('latin-1').split('n')
如果您喜欢继续使用os.system
:,请尝试此操作
import os, sys, re
# user file input
# user date input
keydate = input()
filename = input()
temp = "temp"
with open(temp,'wt') as tempfile:
pass
temp = f'"{os.path.abspath(temp)}"'
filename = f'{filename}'
#executable file
os.system(f'"C:\Program Files\sleuthkit-4.11.1-win32\bin\tsk_gettimes.exe" {filename} >> {temp_location}')
with open(temp_location,'rt') as temp:
data = temp.read()
os.remove(temp_location)
#search for key date
for i in data.split('n'):
if keydate in i:
print(i)