2016-03-17 131 views
-5

我可以得到任何帮助,找出代码有什么问题吗? 它给了我这个错误,当我运行它:IndexError:列表索引超出范围

Traceback (most recent call last): 
    File "ap_settings.py", line 19, in <module> 
    AP_NUMBER = SETTINGS[TEST_SETTINGS_INDEX][0] 
IndexError: list index out of range 

这是文件ap_settings.py:

# Define variables 
# SETTINGS is [ (AP_NUMBER, SAVE_RESULTS, SKIP) ] 

TEST_SETTINGS_INDEX = 3 

SETTINGS = [ 
      (0, 0, 0), 
      ] 

# Defining the fuzzing MAC address device 
STA_MAC = "00:20:A6:61:2D:09" 

# Defining the injection interface 
IFACE = "ath0" 

##### BELOW VARIABLES SHOULD NOT BE TWEAKED BY THE USER 

AP_NUMBER = SETTINGS[TEST_SETTINGS_INDEX][0] 
SAVE_RESULTS = SETTINGS[TEST_SETTINGS_INDEX][1] 
SKIP = SETTINGS[TEST_SETTINGS_INDEX][2] 

# Defining fuzzing specific variables 
AP = [ 
     ('kikoo', '00:11:22:33:44:55', 11, 'WPA-PSK'), 
     ][AP_NUMBER] 

SSID = AP[0] 
AP_MAC = AP[1] 
CHANNEL = chr(AP[2]) 
AP_CONFIG = AP[3] 

# Defining the number of retries when authenticating/associating to the AP 
CRASH_RETRIES = 10 
DELAY = 1 
STATE_WAIT_TIME = 2 
DELAY_REBOOT = 10 
LOG_LEVEL = 3 
CRASH_THRESHOLD = 3 
TRUNCATE = True 

# Defining the log file 
FNAME = [None, 'audits/ap-%s-%s.session' % (AP_MAC, AP_CONFIG)][SAVE_RESULTS] 
+0

你有没有听说过PEP8风格约定蟒蛇?对于命名变量,所有上限都不是合适的python样式。它的工作原理是 – MarkyPython

回答

3

在你的文件的顶部,你有这样的:

TEST_SETTINGS_INDEX = 3 
SETTINGS = [ 
      (0, 0, 0), 
      ] 

然后再往下看,你有这个:

AP_NUMBER = SETTINGS[TEST_SETTINGS_INDEX][0] 
SAVE_RESULTS = SETTINGS[TEST_SETTINGS_INDEX][1] 
SKIP = SETTINGS[TEST_SETTINGS_INDEX][2] 

您尝试访问索引位置的SETTINGS3因为这是TEST_SETTINGS_INDEX设置为,但SETTINGS只中有一个项目,所以你应该在指数0寻找:

AP_NUMBER = SETTINGS[0][0] 
SAVE_RESULTS = SETTINGS[0][1] 
SKIP = SETTINGS[0][2] 
+0

。非常感谢。 – Raveena

0

设置列表中包含了(0,0,0)的元组,所以基本上你的列表只包含一个元素。 即len(SETTINGS)=1

因此您的代码表示

AP_NUMBER=SETTINGS[TEST_SETTINGS_INDEX][0] 

其中TEST_SETTINGS_INDEX = 3,I:E

AP_NUMBER=SETTINGS[3][0] 

,这意味着你正在访问不存在该列表的第三个元素,这是为什么你会得到错误'索引超出范围'。

另外列表包含n个元素,然后访问第n个元素,你需要使用n-1。 例如

x = [1,2,3,4] then x[0]=1, x[1]=2, x[2]=3, x[3]=4 
你的情况的代码

所以应该是

AP_NUMBER = SETTINGS[0][TEST_SETTINGS_INDEX] 

此外,由于在设置列表元组的len为3 I:E

len((0,0,0)) = 3 

因此您TEST_SETTINGS_INDEX的价值应范围从0到2

AP_NUMBER = SETTINGS[0][0] 
AP_NUMBER = SETTINGS[0][1] 
AP_NUMBER = SETTINGS[0][2] 

欲了解更多信息请参阅list and tuples

相关问题