我如何访问以不同(非流动)目录的读取/写作的文件



我正在研究后门程序的侦听器部分(用于道德黑客课程(,我希望能够从我的Linux系统的任何部分读取文件,而不仅仅是从在我的听众python脚本所在的目录中 - 但是,这并不像指定典型的绝对路径那样简单,例如"〜/desktop/test.txt">

到目前为止,我的代码能够读取文件并将其上传到我反向后门脚本正在积极运行的虚拟机上。但这只有当我读取和上传与我的侦听器脚本相同目录(恰当地命名clucter.py(的文件时。下面显示的代码。

def read_file(self, path): 
    with open(path, "rb") as file:  
        return base64.b64encode(file.read())

正如我之前提到的,上述功能仅在我尝试打开并读取与上面代码所属脚本相同目录的文件时起作用,这意味着上述内容中的路径很简单文件名,例如" picture.jpg"

我希望能够从文件系统的任何部分读取文件,同时保持相同的功能。

例如,我希望能够指定"〜/desktop/enother_picture.jpg"为路径,以便从我的"〜/desktop"目录中的" entern_picture.jpg"的内容是base64编码的,用于进一步处理最终上传。

任何帮助都非常感谢。

编辑1:我的脚本包含所有代码的脚本" listerer.py"位于/root/pycharmprojects/virus_realated/reververs_backdoor/中。在此目录中是一个文件,为简单起见,我们可以称呼" picture.jpg"同一文件," picture.jpg"也位于我的桌面上,绝对路径="/root/desktop/picture.jpg"

当我尝试read_file(" picture.jpg"(时,没有问题,该文件会读取。

当我尝试read_file("/root/desktop/picture.jpg"(时,该文件未读取,我的终端被卡住了。

编辑2:我忘了注意,我正在使用最新版本的Kali Linux和Pycharm。我已经运行了" realpath picture.jpg",它产生了路径"/root/desktop/picture.jpg"

运行read_file("/root/desktop/picture.jpg"(,我遇到了同样的问题,我的终端被卡住了。

[最终编辑又名问题]:

基于答案,建议试图读取像" ../file"之类的文件,我意识到代码是完全正常的找到给定路径没问题。读取文件后,将其上传到运行我的后门的机器上,奇怪的是,将文件上传到我的目标计算机,但在脚本的父级目录中。那时,我意识到问题在于后门脚本中的路径而不是我的听众。py

信用也归功于评论员指出"〜"并不算作有效的路径元素。一旦得出上面提到的结论,我就尝试了失败的read_file("〜/desktop/picture.jpg"(。但是,通过快速修改,read_file("/root/desktop/picture.jpg"(已成功执行,并且一旦我实现了一些快速固定代码,就将文件上传到与我的后门脚本相同的目录中。

我对没有那么具体的道歉;当然,我的处境的复杂性使援助努力的努力感到困惑,我要亲自感谢所有人。

这是我第一次全心全意地尝试与Stackoverflow社区寻求帮助,但我并没有感到失望。欢呼!

我发现的解决方案是在文件名之前放置" ../",如果路径在字典外面。

test.py(在字典中的某些字典中

with open("../test.txt", "r") as test:
    print(test.readlines())

test.txt(在字典中"/桌面"(

Hi!
Hello!

结果:

["Hi!", "Hello!"]

这可能是最简单的解决方案。我找到了这个解决方案,因为我始终在终端上使用" CD ../"。

这不仅允许您修改当前文件,而且允许与您读/写入的所有其他文件中的所有其他文件。

path = os.path.dirname(os.path.abspath(__file__))
dir_ = os.listdir(path)
for filename in dir_:
  f = open(dir_ + '/' + filename)
  content = f.read()
  print filename, len(content)
  try:
    im = Image.open(filename)
    im.show()
  except IOError:
    print('The following file is not an image type:', filename)

最新更新