我可以使用 IF 语句导入模块吗?稍后可以在 python 脚本中导入吗?

Can I use IF statements for importing modules? Is importing later in a python script possible?

从Pentester/Red队进攻的角度来看

好吧,假设我们正在尽最大努力避免检测或避免蓝队意识到脚本导入了模块“x”。

我们在我们的代码中实施了故障安全检查条件 a 是否为真。如果这不是我们的目标,我们希望脚本以不会引起注意的方式运行。

根据我的理解,Blue Team 可以使用 过程分析 (这个词对吗?)找出当 [=53] 时 python 脚本实际做了什么=].

假设 Blue Team 没有查看实际的 python 脚本,而是查看 python 脚本进行的调用,是否可以仅在条件 [=30] 时导入模块=]a 是真的。这将降低检测阈值。

但是,我遇到了 python 文档,该文档建议将所有导入保留在脚本的开头。有了这个,我们将无法实现 IF 语句来选择我们是否应该导入某些东西。

伪代码(Python)

import sys
# ...other functions
def check_user():
    # check user against target fingerprint
    if a is True:
        import x

TLDR:我可以使用 IF/THEN 语句来导入模块吗?我可以稍后在 python 脚本中导入模块吗?

安全相关问题:在不分析实际代码的情况下,什么是用于分析 python 脚本及其调用/操作的好程序?

您可以在 Python 中有条件地导入模块。

示例:

def check():
   if sys.version_info[0] == 2:
      from itertools import izip
   else:
      izip = zip

   a=[1,2,3]
   b=[4,5,6]

   print(izip)
   for c in izip(a,b):
       print(c)

这里基于Python版本有条件导入izip

您可以执行如下操作:

import sys
if sys.version_info > (2, 7):
    import simplejson as json
else:
    import json