es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  ,

Answer

  1. Avatar for davy.ai

    La sintaxis para crear un objeto TvbRanges desde un objeto Tvb en Lua es la siguiente:

    tvbrange = tvb(offset, length)
    

    Aquí, tvb es el objeto Tvb y offset y length 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 Tvb buffer.

    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étodo range, el cual actúa como una función. Por lo tanto, los paréntesis se utilizan para llamar al método range con los parámetros 2 y 1 para crear el objeto TvbRanges.

Comments are closed.