Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

udp packet reassembly and dissection with lua

Hello,

I'm trying to perform udp packet reassembly. I'm using following as example/guide. My code looks like that

local deligator = Proto("ABC","abc")
function deligator.init()
    partialBuffer = {}
end

function locals.proto_abc.dissector(buffer, pinfo, tree)
    --do something--
    local completeBuffer=ByteArray.new()

    print("-------------------------")
    print("Packet # " .. pinfo.number)

    if (condition to identify some data from previous packet) then
        print("BINGO")
        print("data from previous packet completeBuffer.len() = " .. completeBuffer.len())
        print("data from previous packet partialBuffer.len() = " .. partialBuffer.len())

        --concatinate previous packet data with current packet data and dessect
    else
        -- do something--
        if (condition that current packet shall contain extradata in next packet) then
            local d = buffer(some offset)
            local bytes = d:bytes()
            partialBuffer = buffer:range(x,y)   -- x,y are some numbers (I've checked and they are correct)
            completeBuffer = completeBuffer .. bytes
            print("completeBuffer.len() = " .. completeBuffer.len())
            print("partialBuffer.len() = " .. partialBuffer.len())
        else
            --dissect the packet
        end
    end
end

When executing it, I'm getting error expired buffer on the print("data from previous packet completeBuffer.len() = " .. completeBuffer.len()) and on print("data from previous packet completeBuffer.len() = " .. completeBuffer.len()) i'm getting value of 0.

Please suggest what I'm doing wrong.

Regards

udp packet reassembly and dissection with lua

Hello,

I'm trying to perform udp packet reassembly. I'm using following as example/guide. My code looks like that

local deligator = Proto("ABC","abc")
function deligator.init()
    partialBuffer = {}
end

function locals.proto_abc.dissector(buffer, pinfo, tree)
    --do something--
    local completeBuffer=ByteArray.new()

    print("-------------------------")
    print("Packet # " .. pinfo.number)

    if (condition to identify some data from previous packet) then
        print("BINGO")
        print("data from previous packet completeBuffer.len() = " .. completeBuffer.len())
        print("data from previous packet partialBuffer.len() = " .. partialBuffer.len())

        --concatinate previous packet data with current packet data and dessect
    else
        -- do something--
        if (condition that current packet shall contain extradata in next packet) then
            local d = buffer(some offset)
            local bytes = d:bytes()
            partialBuffer = buffer:range(x,y)   -- x,y are some numbers (I've (Ive checked and they are correct)
            completeBuffer = completeBuffer .. bytes
            print("completeBuffer.len() = " .. completeBuffer.len())
            print("partialBuffer.len() = " .. partialBuffer.len())
        else
            --dissect the packet
        end
    end
end

When executing it, I'm getting error expired buffer on the print("data from previous packet completeBuffer.len() = " .. completeBuffer.len()) and on print("data from previous packet completeBuffer.len() = " .. completeBuffer.len()) i'm getting value of 0.

Please suggest what I'm doing wrong.

Regards

udp packet reassembly and dissection with lua

Hello,

I'm trying to perform udp packet reassembly. I'm using following as example/guide. My code looks like that

local deligator = Proto("ABC","abc")
function deligator.init()
    partialBuffer = {}
end

function locals.proto_abc.dissector(buffer, pinfo, tree)
    --do something--
    local completeBuffer=ByteArray.new()

    print("-------------------------")
    print("Packet # " .. pinfo.number)

    if (condition to identify some data from previous packet) then
        print("BINGO")
        print("data from previous packet completeBuffer.len() = " .. completeBuffer.len())
        print("data from previous packet partialBuffer.len() = " .. partialBuffer.len())

        --concatinate previous packet data with current packet data and dessect
    else
        -- do something--
        if (condition that current packet shall contain extradata in next packet) then
            local d = buffer(some offset)
            local bytes = d:bytes()
            partialBuffer = buffer:range(x,y)   -- x,y are some numbers (Ive checked and they are correct)
            completeBuffer = completeBuffer .. bytes
            print("completeBuffer.len() = " .. completeBuffer.len())
            print("partialBuffer.len() = " .. partialBuffer.len())
        else
            --dissect the packet
        end
    end
end

When executing it, I'm getting error expired buffertvb on the print("data from previous packet completeBuffer.len() = " .. completeBuffer.len()) and on print("data from previous packet completeBuffer.len() = " .. completeBuffer.len()) i'm getting value of 0.

Please suggest what I'm doing wrong.

Regards