【问题标题】:How to determine the source of an import?如何确定进口来源?
【发布时间】:2013-10-21 03:49:07
【问题描述】:

在这里原谅我的无知。 Python我读的不好,根本不会写。

我正在尝试审核 CVE-2013-1445 的 python 项目。我相信找到了一个可能需要注意的源文件(以及其他改进机会)。文件是util.py,它有一行:

import base64

from Crypto.Hash import HMAC
from Crypto import Random
...

当我查看Python crypto docs 时,我没有看到提到Random 类。只有hashlibhmac

The modules described in this chapter implement various algorithms of a
cryptographic nature. They are available at the discretion of the
installation. On Unix systems, the crypt module may also be available.
Here’s an overview:

    15.1. hashlib — Secure hashes and message digests
    15.2. hmac — Keyed-Hashing for Message Authentication

...

Random 究竟来自哪里?是原生的还是第三方的?

或者我的问题应该是,Crypto 来自哪里?如果Crypto 它的第三方,我如何确定第三方库和类的包含方式/位置(相对于本机库和类)?

为了完整起见,我试图理解 Python 的作用域和命名空间,但目前对我来说毫无意义(正如这个问题可能表明的那样)。例如,CryptoRandom 没有明显的 Scope 或 Namespace(RandomCrypto 的一部分除外)。

提前致谢。

【问题讨论】:

  • Crypto 不是标准库模块。

标签: python class import


【解决方案1】:

Crypto 不是任何标准 Python 发行版的一部分。这就是 Python 文档没有提及它的原因;-) 您可以在此处下载源代码:

https://www.dlitz.net/software/pycrypto/

【讨论】:

  • 感谢蒂姆。什么决定了我什么时候应该寻找 Python 的本地库,什么时候应该在 Python 之外寻找其他库?
  • @noloader: 多年的经验 ;-) 任何人都可以将任何.py 文件放在他们想要放置的任何位置。 约定存在于各种平台上“应该”放置外部 Python 包的位置,但此类约定因平台而异。 Python目录下的site-packages目录很常见。
  • 谢谢蒂姆。所以我很清楚:从凯文的垃圾场中取出,site-packages 是第三方?如果是这样,原生包存储在哪里?
  • 再次感谢时间。我查看了github.com/dlitz/pycryptosrc 中提供的内容。我没有看到Random 课程。意思是Random 既不是本机也不是pycrypto?如果是这样,我应该去哪里看?
  • Random 是一个包,here。标准包存储在不同的地方,具体取决于平台约定,但通常位于名称以“python”开头的目录下。我建议你下载 Python 并自己安装在你感兴趣的各种平台上;-)
【解决方案2】:

您是在问文件存储在哪里?模块有一个名为__file__ 的属性,它列出了模块在磁盘上的路径。

>>> from Crypto import Random
>>> Random.__file__
'/home/ubuntu/.env/local/lib/python2.7/site-packages/Crypto/Random/__init__.pyc'

(在我的例子中,PyCrypto 安装在我家目录中的 virtualenv 中)

【讨论】:

  • 谢谢凯文。我分不清什么是内置的,什么是外部的。我的问题类似于(请原谅 C/C++ 头韵),我怎么知道 Random 是 Python::Crypto::Random,还是 Vendor::Crypto::Random
  • 是的site-packages一般是第三方模块。
猜你喜欢
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
相关资源
最近更新 更多