在两个 python 脚本之间安全地发送信息

Posted

技术标签:

【中文标题】在两个 python 脚本之间安全地发送信息【英文标题】:Securely sending information between two python scripts 【发布时间】:2017-02-03 21:08:32 【问题描述】:

简要总结:

我有两个文件:foo1.pyw 和 foo2.py 我需要将大量敏感信息从 foo1.pyw 发送到 foo2.py,然后再返回。 目前,我通过写入 .txt 文件来执行此操作,然后使用 foo2.py 打开它:os.system('foo2.py [text file here] [other arguments passing information]') 这里的问题是 .txt 文件在删除时会留下痕迹。我需要将信息发送到 foo2.py 并返回,而无需写入临时文件。 信息将是格式化文本,仅包含 ASCII 字符,包括字母、数字、符号、回车、制表符和空格。

如果需要,我可以提供更多细节。

【问题讨论】:

【参考方案1】:

您可以使用 AES 等加密与 python:http://eli.thegreenplace.net/2010/06/25/aes-encryption-of-files-in-python-with-pycrypto 或使用传输层:https://docs.python.org/2/library/ssl.html

【讨论】:

我对 SSL 是什么一无所知,所以请您向我解释一下 TLS 将如何帮助我? @AustinSmith 基本上,从一个文件传递的所有数据都通过一条“开放的道路”,可以被中间人攻击拦截。 SSL/TLS 所做的是,它本质上是创建了一条通过“开放道路”下方的隧道,从而使某人更难拦截。 --最适合服务器/客户端通信。 我怎样才能将它用于本地安全,在文件之间发送原始信息?【参考方案2】:

如果你担心的是HD上留下的痕迹,实时拦截不是问题,为什么不只是shred之后的临时文件?

或者,如果要完成更多工作,您可以设置 ramdisk 并将文件保存在内存中。


正确的方法可能是使用子进程和管道,可通过subprocess.Popen 访问,然后您可以直接在脚本之间通过管道传输信息。

【讨论】:

我不担心拦截,但我想尝试阻止它。我确实使用基本的切碎。但是从 SSD 切碎文件非常困难(有时是不可能的)。我宁愿在文件之间使用某种数据传输,而不用担心粉碎。 另外,我刚刚注意到您将我链接到 Linux Shred 上的信息页面。请注意,Windows 没有此功能,因此我一直在尝试自己实现它,但效果有限。 @Austin 我添加了另一个选项,应该可以在 Windows 中使用。【参考方案3】:

我认为最简单的解决方案是从foo1.py 调用foo2.py 中的函数:

# foo1.py
import foo2
result = foo2.do_something_with_secret("hi")

# foo2.py
def do_something_with_secret(s):
  print(s)
  return 'yeah'

显然,如果您想用任意可执行文件替换 foo2.py,这将不起作用。

如果他们两个在不同的目录中,在不同版本的 Python 下运行等,这可能会有点棘手。

【讨论】:

以上是关于在两个 python 脚本之间安全地发送信息的主要内容,如果未能解决你的问题,请参考以下文章

python发送微信

使用shell脚本监控少量服务器并发送微信告警信息

Zabbix_监控报警无法通过微信发送信息

PYTHON发送微信企业号脚本

【python3-5】Jenkins pipline 执行python脚本发送企业微信通知

zabbix告警通知