Python exe - 如何限制查看源代码和字节码?

问题描述

我正在制作一个简单的项目,我将在 HTML 网站上提供可下载的抓取工具。刮刀是用 Python 制作的,并被转换为 .exe 文件以供下载。然而,在 python 代码中,我在电子邮件帐户中包含了一个 Google 应用程序密码,因为刮刀发送了一封电子邮件,我需要服务器使用可用的 Google 帐户登录。虽然 .exe 文件很难获得源代码,但我已经看到有办法做到这一点,我想知道,我怎样才能做到让任何下载了 scraper.exe 文件的人都看不到电子邮件当刮板需要时,我将用来向他们发送电子邮件登录详细信息?如果可能,甚至可以完全阻止他们访问任何 .exe 源代码或字节码?我正在使用 Python 库 bs4 和 requests。

此外,这是题外话,因为这是我第一次开发可下载文件,即使在将 Python 文件转换为 .exe 文件时,我的防病毒软件也将其识别为可疑文件。这就像一个 50 行的网络爬虫,显然其中没有任何恶意代码。如何使代码对防病毒程序不那么可疑?

解决方法

遗憾的是,即使在今天,这个问题也没有完美的解决方案。

  • 理想的用例是从网络应用程序提供这个 secret_password,但在您的情况下似乎不太可能,因为您正在构建一个相当小的桌面应用程序。
  • 最好和最简单的方法是在一个单独的文件中创建一个提供这个 secret_password 的函数,并用 Cython 编译这个文件,这会很好地混淆你的脚本(和你的 secret_password)。这会保护你吗?让我们说匿名或国家安全机构?不。这里是关于您的密码真正的机密性和重要性以及您主要可能受到伤害的人的合理思考。 最后,在编译之前,您可以“加盐”您的脚本或使用 bcrypt 或其他库进一步模糊它。

至于您的第二个问题,防病毒软件,特别是 Windows 不喜欢在没有安装程序和未签名的情况下运行的程序。 您可以使用 inno setup 创建一个真实的程序安装程序。 如果您想处理 UAC 或与未签名程序相关的其他问题,您可以签署您的程序(需要花钱)。

,
  • 首先,它为什么还要给他们发送电子邮件?由于他们将运行 .exe,所以它可以弹出一个窗口并提供保存文件。如果必须发送电子邮件,它可以来自用户的 Gmail,而不是您的。

  • 其次,以这种方式使用您的 Gmail 帐户可能违反服务条款。您可能会暂停您的帐户,从技术上讲,这在美国可能是重罪。如果有这方面的问题,请咨询律师。

  • 对于您的问题,基本上没有办法混淆密码,这对最不感兴趣的人来说只会是一种轻微的烦恼。归根结底,(a) 脚本在用户的控制下运行,可能在 VM 或容器中,可能会捕获网络通信; (b) 在某些时候,它必须解密并发送密码。解码并遵循脚本或它进行的网络通信对于任何想要付出适度努力的人来说都相对简单。