All pastes #2088363 Raw Edit

Mine

public text v1 · immutable
#2088363 ·published 2011-10-09 12:49 UTC
rendered paste body
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>

char *nameserver;
in_addr_t in_addr, in_addr_end;

in_addr_t maxclc(in_addr_t x)
{
  unsigned char octet[4];
  in_addr_t ret;

  memcpy(octet, &x, 4);
  octet[3] = 0xff;

  memcpy(&ret, octet, 4);
  return ret;
}

main(int c, char **v)
{
  int opt, delay = 0;
  char sysbuf[128];
  char *addr, *addr_end;

  if (c < 2)
    goto usage;

  while ((opt = getopt(c, v, "d:ns:")) != -1) switch (opt) {
     case 'd':
       delay = atoi(optarg);
     case 'n':
       /* desired syntax, e.g. -ns */

      break;
     case 's':
       nameserver = optarg;
       break;
  }

  if (c <= optind) {
usage:
    fprintf(stderr, "usage: %s [-d microsecond delay] -ns nameserver class_c\n"
            "ex: %s -ns 10.0.0.1 10.1.1.0 (scan 10.1.1.0-255 using 10.0.0.1 DNS)\n",
             v[0], v[0]);
    exit(1);
  }

  in_addr = inet_addr(v[optind]);
  in_addr_end = maxclc(in_addr);
  addr = strdup(inet_ntoa(in_addr));
  addr_end = strdup(inet_ntoa(in_addr_end));
  fprintf(stderr, "Starting address: %s\n", addr);
  fprintf(stderr, "Ending address: %s\n", addr_end);

int i=1;

// while (i < 3)  {
  while (strcmp(addr, addr_end) != 0) {
    unsigned char octet[4];
    sprintf(sysbuf, "/usr/bin/host -t a %.20s %.20s | /usr/bin/fgrep -v NXDOMAIN",
       addr, nameserver != NULL ? nameserver : "");
    system(sysbuf);
    free(addr);
    memcpy(octet, &in_addr, 4);
    octet[3]++;
    memcpy(&in_addr, octet, 4);
    addr = strdup(inet_ntoa(in_addr));
    if (delay)


      usleep(delay);
  }
/*octet[2]++;
i++;
} */
#if resolve_bcast
  sprintf(sysbuf, "/usr/bin/host -t %.20s %.20s | /usr/bin/fgrep -v NXDOMAIN", addr,
      nameserver != NULL ? nameserver : "");
  system(sysbuf);
#endif

  free(addr);
  free(addr_end);
  exit(0);
}