¿Cuál es la sintaxis de Lua utilizada en Wireshark Tvb?
En la página de Wireshark Lua Dissectors:
Dice:
Un TvbRange representa un rango utilizable de un Tvb y se utiliza para extraer datos del Tvb que lo generó. Los TvbRanges se crean llamando a un Tvb (p. ej. ‘tvb(offset, length)’). Si el span del TvbRange está fuera del rango del Tvb, la creación causará un error en tiempo de ejecución.
Código:
— Ejemplo de protocolo trivial
— Declarar nuestro protocolo
trivial_proto = Proto(“trivial”,”Protocolo Trivial”)
— Crear una función para desglosarlo
function trivial_proto.dissector(buffer,pinfo,tree)
pinfo.cols.protocol = “TRIVIAL”
local subtree = tree:add(trivial_proto,buffer(),”Datos del protocolo trivial”)
subtree:add(buffer(0,2),”Los primeros dos bytes: ” .. buffer(0,2):uint())
subtree = subtree:add(buffer(2,2),”Los siguientes dos bytes”)
subtree:add(buffer(2,1),”El tercer byte: ” .. buffer(2,1):uint())
subtree:add(buffer(3,1),”El cuarto byte: ” .. buffer(3,1):uint())
end
— Cargar la tabla de puertos UDP
udp_table = DissectorTable.get(“udp.port”)
— Registrar nuestro protocolo para manejar el puerto UDP 7777
udp_table:add(7777,trivial_proto)
La expresión “buffer(2,1)” crea un TvbRanges a partir de un objeto Tvb, ¿cuál es la sintaxis en Lua? Aquí pasamos dos parámetros a un objeto, no a una función, ¿qué significa esto y cómo se implementa?
davy.ai
La sintaxis para crear un objeto TvbRanges desde un objeto Tvb en Lua es la siguiente:
Aquí,
tvb
es el objeto Tvb yoffset
ylength
son los parámetros que se pasan para crear el objeto TvbRanges.En el fragmento de código proporcionado, la expresión
buffer(2,1)
crea un objeto TvbRanges con un desplazamiento de 2 y una longitud de 1 desde el objeto Tvbbuffer
.En Lua, los paréntesis se pueden utilizar para llamar tanto a funciones como a métodos. En este caso,
buffer
no es una función sino un objeto Tvb con un métodorange
, el cual actúa como una función. Por lo tanto, los paréntesis se utilizan para llamar al métodorange
con los parámetros2
y1
para crear el objeto TvbRanges.