2016-03-17 127 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

相關問題