Re: libnet_write
Mike Schiffman <[email protected]> Tue, 8 Jun 2004 09:22:58 -0700
| Newsgroups | gmane.comp.security.libnet |
|---|---|
| Message-ID | <[email protected]> |
FYI, this function will appear in the next official release.
On Jun 5, 2004, at 4:33 PM, Mustafa Abu Sedera wrote:
>
> You can capture the packets and modify whatever bytes you want then
> recompute checksums using libnet_do_checksum() and send the packet out
> to the wire using libnet_adv_write_link().
>
> if you want to save the headache of ARPing send the buffer via raw
> sock using this function i used in one of my programs:
>
> int
> libnet_adv_write_raw(libnet_t *l, u_int8_t *packet, u_int32_t len)
> {
> u_int c;
>
> if (l == NULL)
> {
> return (-1);
> }
>
> /* assume error */
> c = -1;
>
> switch (l->injection_type)
> {
> case LIBNET_RAW4_ADV:
> if (len > LIBNET_MAX_PACKET)
> {
> snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
> "%s(): packet is too large %d\n", __func__,
> len);
> return (c);
> }
> c = libnet_write_raw_ipv4(l, packet, len);
> break;
>
> case LIBNET_RAW6_ADV:
> c = libnet_write_raw_ipv6(l, packet, len);
> break;
>
> default:
> snprintf(l->err_buf, LIBNET_ERRBUF_SIZE,
> "%s(): advanced raw mode not enabled\n", __func__);
> return (-1);
> }
>
> /* do statistics */
> if (c == len)
> {
> l->stats.packets_sent++;
> l->stats.bytes_written += c;
> }
> else
> {
> l->stats.packet_errors++;
> /*
> * XXX - we probably should have a way to retrieve the number
> of
> * bytes actually written (since we might have written
> something).
> */
> if (c > 0)
> {
> l->stats.bytes_written += c;
> }
> }
>
> return (c);
> }
>
> This function is actually the same like adv_write_link (), it just
> sends a buffer "packet" with length "len" through handle "l" but you
> don't have to care about the ethernet header.The kernel will take care
> of this. Note that you must initialize the libnet handle to
> LIBNET_RAW4_ADV.
>
> I hope I could help you a little bit.
>
> Mustaffa Abu Sedira
>
>> From: "Jee J.Z." <[email protected]>
>> To: <[email protected]>
>> CC: <[email protected]>
>> Subject: Re: libnet_write
>> Date: Sat, 5 Jun 2004 14:08:54 +0100
>>
>> Hi Amit,
>>
>> I'm afraid, yes. At least this is what I'm doing, since I still don't
>> need a large bandwidth at the moment. Maybe in the future I'll get in
>> trouble. If you find a better way to do it, please let me know.
>> Thanks.
>>
>> Jee
>>
>> >
>> >
>> > Hi
>> >
>> > 1. can libnet_write write packets that were not built in the libnet
>> context
>> > ? i dont think so.
>> > 2. that means if i capture a TCP packet and inject it back using
>> libnet
>> > functions, say even without any changes at all(to headeror
>> payload), I need
>> > to reconstruct the tcp header using the call libnet_build_tcp() and
>> then
>> > build the ip_header using libnet_build_ip() and only then i can
>> write it
>> > using libnet_write() ?? !!, is there no way of passing a pointer to
>> a raw
>> > packet(one which we created, or caught and now want to reinject)
>> without
>> > going through these build functions, because as you can see calling
>> all
>> > these build functions for packets which were caught and are now
>> being
>> > reinjected after a delay involves a lot of overhead ??
>> >
>> > thanks
>> > Amit
>> >
>> >
>> > "DISCLAIMER: This message is proprietary to Hughes Software Systems
>> Limited
>> > (HSS) and is intended solely for the use of the individual to whom
>> it is
>> > addressed. It may contain privileged or confidential information
>> and
>> > should not be circulated or used for any purpose other than for
>> what it is
>> > intended. If you have received this message in error, please notify
>> the
>> > originator immediately. If you are not the intended recipient, you
>> are
>> > notified that you are strictly prohibited from using, copying,
>> altering, or
>> > disclosing the contents of this message. HSS accepts no
>> responsibility for
>> > loss or damage arising from the use of the information transmitted
>> by this
>> > email including damage from virus."
>> >
>> >
>
> _________________________________________________________________
> Tired of spam? Get advanced junk mail protection with MSN 8.
> http://join.msn.com/?page=features/junkmail
>
>
> !DSPAM:40c37268128976619914366!
>
>
--
Mike Schiffman, CISSP
http://www.packetfactory.net/schiffman
Doveryay No Proveryay