Do you know how to read a pcap file continuously?

Carter Bullard carter at qosient.com
Tue Oct 8 08:42:56 EDT 2013


Hey sebas,
With it working for you, could you describe the environment that this is running in ????  There was a mention of VMs, Virtualbox, etc...  Could you elaborate a bit on what you now have ???

I've done quite a bit of cloud and SDN work with argus, and I'm curious about your approach.

Hope all is most excellent !!!

Carter

> On Oct 8, 2013, at 4:53 AM, el draco <eldraco at gmail.com> wrote:
> 
> Carter! It is working perfectly!!
> Thanks a lot for your time on this...
> 
> I tried both a manual tcpdump without -U and the real virtualbox pcap
> capture, and both worked fine, here the commands just for the sake of
> completion:
> 
> In one console:
> tcpdump -n -s0 -i eth0 -v -w /tmp/test.pcap
> 
> In other console:
> ./bin/argus -f -r /tmp/test.pcap -w /tmp/test.argus -P 2040
> 
> And now you can both read with ra the socket or the file continuously:
> ra -n -S localhost:2040
> 
> It is great! We are going to start using it...
> thanks again
> sebas
> 
>> On Mon, Oct 7, 2013 at 9:13 PM, Carter Bullard <carter at qosient.com> wrote:
>> Hey Sebas,
>> Try this version of ArgusSource.c and ArgusSource.h. These should fix trying to read a truncated file.
>> Replace the ones in the ./argus directory and remake.
>> 
>> Carter
>> 
>> 
>> 
>>> On Oct 7, 2013, at 4:17 PM, el draco <eldraco at gmail.com> wrote:
>>> 
>>> Hi Carter
>>> 
>>> The basic stuff we need is to read a common pcap file (no -U in
>>> tcpdump) continuously with argus.
>>> 
>>> We are not expecting argus to survive a file deletion.
>>> If the pcap file is not there or it is deleted, we start over, no
>>> problem for us.
>>> If the file is not there when argus starts, argus can exit.
>>> 
>>> Does this make it easier?
>>> thanks!
>>> sebas
>>> 
>>> 
>>>> On Mon, Oct 7, 2013 at 7:10 PM, Carter Bullard <carter at qosient.com> wrote:
>>>> Hey Sebas,
>>>> I can recover from the truncated file error condition, but
>>>> its a bit expensive, pcap_close(), look for a change in size
>>>> then pcap_open() lseek() …, but its really expensive.
>>>> 
>>>> If you can describe the conditions that you expect, like
>>>> should survive file deletion, etc…  Then we can wrap this
>>>> thing up pretty quick.
>>>> 
>>>> Carter
>>>> 
>>>> 
>>>> 
>>>>> On Oct 7, 2013, at 11:18 AM, el draco <eldraco at gmail.com> wrote:
>>>>> 
>>>>> Hi list, we have been playing a little bit with reading a pcap file
>>>>> continuously. I'm resending our posts so they remain in the list.
>>>>> 
>>>>> Sorry that you have to read the mails backwards in time to make sanse of this.
>>>>> In summary, you can read a pcap file continuously. Better if the
>>>>> tcpdump is using -U, but there is a work-around if it is not. Thanks
>>>>> Carter for all your work.
>>>>> 
>>>>> sebas
>>>>> 
>>>>>> On Oct 7, 2013, at 10:21 AM, el draco <eldraco at gmail.com> wrote:
>>>>>> Hi Carter!
>>>>>> 
>>>>>> Ufff that's an issue. While I can run it with -U if I can choose to,
>>>>>> right now we are using virtualbox
>>>>>> -tracefile option to crate the pcap file. It means that when we start
>>>>>> a vm, virtualbox automatically creates the pcap file for us. And
>>>>>> unfortunately, virtualbox is not running the capture with -U.
>>>>>> 
>>>>>> However I managed to find a workaround!! It is ugly... again.. but it works.
>>>>>> 
>>>>>> So, first you have a non-buffered pcap file running (without -U), like
>>>>>> the one from virtualbox -tracefile
>>>>>> tcpdump -n -s0 -i eth0 -w /tmp/test.pcap -v
>>>>>> 
>>>>>> Then you have a second tcpdump capture file, translating the packets
>>>>>> and adding the buffer...
>>>>>> tail -n 1000 -f /tmp/test.pcap | tcpdump -n -s0 -r - -U -w /tmp/test.pcap2
>>>>>> 
>>>>>> This second pcap file is buffered, so now argus can read it without problems:
>>>>>> ./bin/argus -f -r /tmp/test.pcap2 -w /tmp/test.argus -P 2040
>>>>>> 
>>>>>> And you can see the argus data with ra continuously:
>>>>>> ra -n -S localhost:2040
>>>>>> 
>>>>>> 
>>>>>> With these commands I'm now able to read the argus data continuously
>>>>>> from a pcap file.
>>>>>> 
>>>>>> The only issue I had is this:
>>>>>> If I stop the first pcap, then the second pcap exits (the tail command
>>>>>> in fact), and the argus and ra commands keep running. However, if I
>>>>>> start the first pcap and second pcap again... the argus is NOT getting
>>>>>> the data, and the ra command shows nothing. If I restart the argus,
>>>>>> everything works again.
>>>>>> Not an issue for me, but I report it in case it helps.
>>>>>> 
>>>>>> Thanks a lot for your work on this topic!
>>>>>> cheers
>>>>>> sebas
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Mon, Oct 7, 2013 at 1:07 PM, Carter Bullard <carter at qosient.com> wrote:
>>>>>>> Hey sebas,
>>>>>>> You MUST run tcpdump with the -U option to guarantee that the file
>>>>>>> contains data on packet boundaries.
>>>>>>> 
>>>>>>> Carter
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>>> On Oct 7, 2013, at 5:25 AM, el draco <eldraco at gmail.com> wrote:
>>>>>>>> 
>>>>>>>> Verification of argus-3.0.7.5
>>>>>>>> 
>>>>>>>> 1st experiment
>>>>>>>> ----------------------
>>>>>>>> In one root console: tcpdump -n -s0 -i eth0 -v -w /tmp/test.pcap
>>>>>>>> 
>>>>>>>> In another root console:
>>>>>>>> ./bin/argus -h
>>>>>>>> Argus Version 3.0.7.5
>>>>>>>> ./bin/argus -f -r /tmp/test.pcap -w /tmp/test.argus
>>>>>>>> 
>>>>>>>> After some reading, It exits with this error:
>>>>>>>> ArgusError: 07 Oct 13 08:02:18.126142 ArgusGetPackets: pcap_dispatch()
>>>>>>>> returned bogus savefile header
>>>>>>>> 
>>>>>>>> The /tmp/test.argus file is created with the flows. And if I run it
>>>>>>>> again, the flows are updated.
>>>>>>>> However the argus process dies when it reaches the end of the file.
>>>>>>>> 
>>>>>>>> 2nd experiment
>>>>>>>> ----------------------
>>>>>>>> I deleted the previous files.
>>>>>>>> In one root console: tcpdump -n -s0 -i eth0 -v -w /tmp/test.pcap
>>>>>>>> Then I stopped the tcpdump.
>>>>>>>> 
>>>>>>>> In another root console: ./bin/argus -f -r /tmp/test.pcap -w /tmp/test.argus
>>>>>>>> The argus keeps running without dying.
>>>>>>>> The ra -r /tmp/test.argus reads the netfows and exits.
>>>>>>>> 
>>>>>>>> If I start the tcpdump again, the argus runs for 10 seconds, and then
>>>>>>>> exits with this error:
>>>>>>>> ArgusError: 07 Oct 13 09:08:07.562844 ArgusGetPackets:
>>>>>>>> pcap_dispatch() returned bogus savefile header
>>>>>>>> The /tmp/test.argus file was updated with the new information and I
>>>>>>>> could read it with ra.
>>>>>>>> 
>>>>>>>> 3rd experiment
>>>>>>>> ----------------------
>>>>>>>> I deleted the previous files.
>>>>>>>> In a root console: ./bin/argus -f -i eth0 -w /tmp/test.argus
>>>>>>>> I can read the file with ra.
>>>>>>>> This works fine.
>>>>>>>> 
>>>>>>>> 4th experiment
>>>>>>>> ----------------------
>>>>>>>> I deleted the previous files.
>>>>>>>> In one NON-ROOT console: tcpdump -n -s0 -i eth0 -v -w /tmp/test.pcap
>>>>>>>> In another NON-ROOT console: ./bin/argus -r /home/sebas/test.pcap -f -P 2040
>>>>>>>> 
>>>>>>>> After some reading, It exits with the same error
>>>>>>>> ArgusError: 07 Oct 13 09:14:45.628054 ArgusGetPackets: pcap_dispatch()
>>>>>>>> returned bogus savefile header
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Info about my setup:
>>>>>>>> ii  libpcap-dev       1.4.0-2                        all
>>>>>>>> development library for libpcap (transitional package)
>>>>>>>> ii  libpcap0.8:i386  1.4.0-2                        i386
>>>>>>>> system interface for user-level packet capture
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Tell me if you need me to test something else.
>>>>>>>> cheers
>>>>>>>> sebas
>>>>>>>> 
>>>>>>>>> On Sun, Oct 6, 2013 at 5:50 PM, Carter Bullard <carter at qosient.com> wrote:
>>>>>>>>> So, this works, but still needs some of the exceptions worked out,
>>>>>>>>> such as if you rename or delete the packet file, but it should work....
>>>>>>>>> Please give this version of argus a trial, and send any feedback,
>>>>>>>>> bugs, additional features needed, etc soon !!!
>>>>>>>>> 
>>>>>>>>> The man page for argus has been updated for this feature yet,
>>>>>>>>> so mostly done.
>>>>>>>>> 
>>>>>>>>> This version has some other changes, so this will serve as general
>>>>>>>>> testing as well.  The other changes are basically idle interface
>>>>>>>>> timer issues, and shouldn't be an issue.
>>>>>>>>> 
>>>>>>>>> Use the -f option, along with the -r packetfile option, just like tail.
>>>>>>>>> This may work with pipes as well, but I didn't test.
>>>>>>>>> 
>>>>>>>>> Carter
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> On Oct 6, 2013, at 1:29 PM, el draco <eldraco at gmail.com> wrote:
>>>>>>>>>> 
>>>>>>>>>> Hi Carter, We are waiting for it! Yes!!!
>>>>>>>>>> 
>>>>>>>>>> We are now using tshark and offline argus..., so if you manage to make it work,
>>>>>>>>>> we will be more than happy to test it.
>>>>>>>>>> 
>>>>>>>>>> Just tell me what you need from us.
>>>>>>>>>> 
>>>>>>>>>> Thanks a lot!
> 



More information about the argus mailing list