Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110323100357.GB28906@albatros>
Date: Wed, 23 Mar 2011 13:03:57 +0300
From: Vasiliy Kulikov <segoon@...nwall.com>
To: owl-dev@...ts.openwall.com
Subject: Re: iputils s20101006

Solar,

On Wed, Mar 23, 2011 at 10:51 +0300, Solar Designer wrote:
> > http://linux-diag.sourceforge.net/Sysfsutils.html
> 
> I went to this link, but I can't quickly identify the Source tarball
> you'd be using in the package.  Can you please provide more info?

It is the link "Download sysfsutils" to sourceforge:

http://sourceforge.net/projects/linux-diag/files/

The last link is "sysfsutils" dated 2006-08-23.  I didn't try to compile
it on Owl, though.


> How do we verify its authenticity and integrity?..

As it is rather old tarball, we may compare checksums with checksums of
the same tarball in RHEL/Debian/other distros.

The AUTHORS file contains these line:

    Ananth Mavinakayanahalli <ananth AT in.ibm.com>
    Daniel Stekloff <dsteklof AT us.ibm.com>
    Mohan Kumar <mohan AT in.ibm.com>
    Nitin Vashisth <vnitin AT in.ibm.com>

So, we are to contact these people to get GPG signatures.


I've taken a look at arping's libsysfs usage, it's pretty simple:

void set_device_broadcast(char *device, unsigned char *ba, size_t balen)
{
    struct sysfs_class_device *dev;
    struct sysfs_attribute *brdcast;
    unsigned char *p;
    int ch;

    dev = sysfs_open_class_device("net", device);
    if (!dev) {
        perror("sysfs_open_class_device(net)");
        exit(2);
    }

    brdcast = sysfs_get_classdev_attr(dev, "broadcast");
    if (!brdcast) {
        perror("sysfs_get_classdev_attr(broadcast)");
        exit(2);
    }

    if (sysfs_read_attribute(brdcast)) {
        perror("sysfs_read_attribute");
        exit(2);
    }

    for (p = ba, ch = 0; p < ba + balen; p++, ch += 3)
        *p = strtoul(brdcast->value + ch, NULL, 16);

    return;
}


int main()
{
...
#if 1
	set_device_broadcast(device, ((struct sockaddr_ll *)&he)->sll_addr,
			     ((struct sockaddr_ll *)&he)->sll_halen);
#else
	memset(((struct sockaddr_ll *)&he)->sll_addr, -1, ((struct sockaddr_ll *)&he)->sll_halen);
#endif
...
}

Arping tries to optimize recvfrom() by catching not all broadcasts, but
only broadcasts that current netdevice is setup to receive.  So, we may
simply comment set_device_broadcast() out and change "#if" argument to 0.

Thanks,

-- 
Vasiliy Kulikov
http://www.openwall.com - bringing security into open computing environments

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.