Преобразование байтов в таблицу в Lua не работает в 5.2.4

Я пишу диссектор для Wireshark и хочу использовать aeslua для расшифровки некоторых пакетов, которые Мой диссектор работает нормально, но aeslua ловит строку, которая пытается поместить пароль в таблицу после преобразования его в байты.

Речь идет о следующей строке:

local pwBytes = { string.byte(password,1,#password)}

Это возвращает null в Lua 5.2.4 (который включен в Wireshark 2.2.4), но в онлайн-демонстрации (2.3.4 на момент написания) он возвращает ожидаемое значение.

Я попытался изменить его на:

local pwBytes = { password:byte(1, #password) }

Но получил тот же нулевой результат.

Для справки, это код, который я запускал в демонстрации Lua:

local password = "ABCDEFABCDEFA"
local pwBytes = {string.byte(password,1,#password)}
print(pwBytes)

Есть ли способ обойти это?


person Grayda    schedule 12.02.2017    source источник
comment
Код отлично работает в стоковом Lua 5.2.4.   -  person lhf    schedule 12.02.2017
comment
@lhf Это интересно. Тогда может быть ошибка с Wireshark. Возможно, мне придется передать этот разговор и на AskWireshark.   -  person Grayda    schedule 12.02.2017


Ответы (1)


Код отлично работает в стоковом Lua 5.2.4:

local password = "ABCDEFABCDEFA"
local pwBytes = {string.byte(password,1,#password)}
print(pwBytes)
for k,v in ipairs(pwBytes) do
  print(k,v)
end

дает

table: 0x7fc689d00560
1   65
2   66
3   67
4   68
5   69
6   70
7   65
8   66
9   67
10  68
11  69
12  70
13  65
person lhf    schedule 12.02.2017
comment
Спасибо за это. Я также разместил этот вопрос на Сайт вопросов и ответов Wireshark - person Grayda; 12.02.2017