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

问题描述 投票:2回答:2

从Pentester / Red Team的角度来看

好的,我们可以说我们正在尽力避免检测或避免Blue Team意识到脚本导入模块'x'。

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

根据我的理解,Blue Team可以使用进程分析(这是正确的词吗?)来找出python脚本在运行时实际执行的操作。

假设Blue Team没有查看实际的python脚本,而是查看python脚本所做的调用,那么只有在条件a为真时才可以导入模块。这将降低检测阈值。

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

Pseudocode (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 security module analysis
2个回答
0
投票

您可以在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是有条件导入的


0
投票

您可以执行以下操作:

import sys
if sys.version_info > (2, 7):
    import simplejson as json
else:
    import json
© www.soinside.com 2019 - 2024. All rights reserved.