2016-03-17 3 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? Все кепки не являются подходящим стилем 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] 

Вы пытаетесь получить доступ к позиции индекса 3 из SETTINGS, потому что это то, что TEST_SETTINGS_INDEX установлен, но SETTINGS имеет только один пункт в нем, так что вы должны смотреть на индекс 0:

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

Это сработало. большое спасибо. – Raveena

0

список SETTINGS содержит кортеж (0,0,0), поэтому в основном ваш список содержит только один элемент. т.е. len(SETTINGS)=1

так что ваш код говорит

AP_NUMBER=SETTINGS[TEST_SETTINGS_INDEX][0] 

где TEST_SETTINGS_INDEX = 3, я: е

AP_NUMBER=SETTINGS[3][0] 

означает, что вы обращаетесь к 3-й элемент списка, который не существует, это почему вы получаете индекс ошибки вне диапазона.

Также в списке содержится 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] 

Также с Леном из кортежа в списке параметров настройки 3 я: е

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

Смежные вопросы