djbdnscurve6 45
djbdnscurve6
Loading...
Searching...
No Matches
random-ip.c
Go to the documentation of this file.
1#include "buffer.h"
2#include "exit.h"
3#include "fmt.h"
4#include "scan.h"
5#include "dns.h"
6#include "query.h"
7
8/* Generates random IPv4 numbers for tests only */
9
10char ip[4];
11int ipfixed = 0;
12unsigned long loops = 10000;
13unsigned char tab[256];
14
15char strnum[FMT_ULONG];
16
17char seed[128];
18
19int main(int argc,char **argv)
20{
21 unsigned long u;
22 int i;
23 int j;
24 unsigned char c;
25
27
28 for (i = 0; i < 256; ++i) tab[i] = i;
29 for (j = 256; j > 0 ;--j) {
30 i = dns_random(j);
31 c = tab[j - 1];
32 tab[j - 1] = tab[i];
33 tab[i] = c;
34 }
35
36 if (*argv) ++argv;
37 if (*argv) scan_ulong(*argv++,&loops);
38 if (*argv) { scan_ulong(*argv++,&u); ip[0] = u; ipfixed = 1; }
39 if (*argv) { scan_ulong(*argv++,&u); ip[1] = u; ipfixed = 2; }
40 if (*argv) { scan_ulong(*argv++,&u); ip[2] = u; ipfixed = 3; }
41 if (*argv) { scan_ulong(*argv++,&u); ip[3] = u; ipfixed = 4; }
42
43 if (ipfixed >= 1) if (loops > 16777216) loops = 16777216;
44 if (ipfixed >= 2) if (loops > 65536) loops = 65536;
45 if (ipfixed >= 3) if (loops > 256) loops = 256;
46 if (ipfixed >= 4) if (loops > 1) loops = 1;
47
48 while (loops) {
49 --loops;
50 u = loops;
51 for (i = ipfixed; i < 4; ++i) { ip[i] = u & 255; u >>= 8; }
52 if (ipfixed == 3) {
53 c = ip[3];
54 ip[3] = tab[c];
55 }
56 else if (ipfixed < 3) {
57 c = 0;
58 for (j = 0; j < QUERY_MAXLOOP; ++j) {
59 for (i = ipfixed;i < 4;++i) {
60 c ^= (unsigned char) ip[i];
61 c = tab[c];
62 ip[i] = c;
63 }
64 }
65 }
66
67 u = (unsigned char) ip[0];
68 buffer_put(buffer_1,strnum,fmt_ulong(strnum,u));
69 buffer_puts(buffer_1,".");
70 u = (unsigned char) ip[1];
71 buffer_put(buffer_1,strnum,fmt_ulong(strnum,u));
72 buffer_puts(buffer_1,".");
73 u = (unsigned char) ip[2];
74 buffer_put(buffer_1,strnum,fmt_ulong(strnum,u));
75 buffer_puts(buffer_1,".");
76 u = (unsigned char) ip[3];
77 buffer_put(buffer_1,strnum,fmt_ulong(strnum,u));
78 buffer_puts(buffer_1,"\n");
79 }
80
81 buffer_flush(buffer_1);
82 _exit(0);
83}
int main()
Definition: axfrdns.c:323
unsigned int dns_random(unsigned int n)
Definition: dns_random.c:56
void dns_random_init(const char data[128])
Definition: dns_random.c:37
void c(const char *home, const char *subdir, const char *file, int uid, int gid, int mode)
#define QUERY_MAXLOOP
Definition: query.h:11
int ipfixed
Definition: random-ip.c:11
char strnum[FMT_ULONG]
Definition: random-ip.c:15
unsigned long loops
Definition: random-ip.c:12
unsigned char tab[256]
Definition: random-ip.c:13
char ip[4]
Definition: random-ip.c:10
char seed[128]
Definition: random-ip.c:17
unsigned long u
Definition: utime.c:10