Capturando dados multicast com o Wireshark com IGMP Snooping Habilitado no switch

7

Estou tentando capturar o tráfego multicast via Wireshark (na verdade, TShark), no entanto, o switch tem a detecção IGMP ativada e só envia o tráfego Multicast nas portas que possuem uma assinatura IGMP ativa.

Atualmente estou contornando isso por ter um aplicativo separado para manter os grupos abertos que desejo gravar, mas estou tentando configurar um sistema para iniciar / parar de gravar dados dinamicamente e essa complexidade extra é dolorosa.

Existe uma maneira de forçar o Wireshark a enviar assinaturas IGMP para grupos multicast que está gravando?

    
por Chuu 17.08.2011 / 00:00

4 respostas

1

Crie um ouvinte de lua personalizado e chame-o de wireshark.

Aqui é um exemplo bem documentado:

-- This program will register a menu that will open a window with a count of occurrences
-- of every address in the capture

local function menuable_tap()
    -- Declare the window we will use
    local tw = TextWindow.new("Address Counter")

    -- This will contain a hash of counters of appearances of a certain address
    local ips = {}

    -- this is our tap
    local tap = Listener.new();

    local function remove()
        -- this way we remove the listener that otherwise will remain running indefinitely
        tap:remove();
    end

    -- we tell the window to call the remove() function when closed
    tw:set_atclose(remove)

    -- this function will be called once for each packet
    function tap.packet(pinfo,tvb)
        local src = ips[tostring(pinfo.src)] or 0
        local dst = ips[tostring(pinfo.dst)] or 0

        ips[tostring(pinfo.src)] = src + 1
        ips[tostring(pinfo.dst)] = dst + 1
    end

    -- this function will be called once every few seconds to update our window
    function tap.draw(t)
        tw:clear()
        for ip,num in pairs(ips) do
            tw:append(ip .. "\t" .. num .. "\n");
        end
    end

    -- this function will be called whenever a reset is needed
    -- e.g. when reloading the capture file
    function tap.reset()
        tw:clear()
        ips = {}
    end

    -- Ensure that all existing packets are processed.
    retap_packets()
end

-- using this function we register our function
-- to be called when the user selects the Tools->Test->Packets menu
register_menu("Test/Packets", menuable_tap, MENU_TOOLS_UNSORTED)
    
por 15.10.2012 / 08:45
1

Você pode usar "ip maddr add" para se inscrever em grupos adicionais. Isso deve fazer com que o kernel responda a consultas IGMP e receba tráfego para elas.

    
por 03.05.2014 / 20:22
1

Presumivelmente, por "grupos multicast que estão gravando", você quer dizer que você especificou um filtro de captura solicitando endereços específicos de destino multicast em uma palavra-chave "host"; essa é a única maneira de o Wireshark limitar sua captura de pacotes a determinados grupos multicast.

O Wireshark não possui nenhum mecanismo pelo qual ele envia assinaturas IGMP com base no filtro de captura; Ele pressupõe que você tenha de alguma forma organizado para ter todos os pacotes relevantes enviados para a porta em que está capturando, por exemplo, por porta espelhamento / SPAN / qualquer que seja o nome do fornecedor do switch nessa porta, para que o switch envie os pacotes all para essa porta. Se você não puder configurar o espelhamento de porta ou se isso enviar muitos pacotes para a porta em que você está capturando, você terá que assinar essa porta para o grupo de multicast apropriado (como você parece já estar fazendo) .

    
por 04.05.2014 / 00:18
0

Você pode usar o Ostinato para criar, criar e enviar .

    
por 17.08.2011 / 06:20