Commit | Line | Data |
---|---|---|
dc0d77d7 CE |
1 | #include "buffer.h" |
2 | #include "exit.h" | |
3 | #include "fmt.h" | |
4 | #include "scan.h" | |
5 | #include "dns.h" | |
6 | ||
7 | char ip[4]; | |
8 | int ipfixed = 0; | |
9 | unsigned long loops = 10000; | |
10 | unsigned char tab[256]; | |
11 | ||
12 | char strnum[FMT_ULONG]; | |
13 | ||
14 | char seed[128]; | |
15 | ||
16 | int main(int argc,char **argv) | |
17 | { | |
18 | unsigned long u; | |
19 | int i; | |
20 | int j; | |
21 | unsigned char c; | |
22 | ||
23 | dns_random_init(seed); | |
24 | ||
25 | for (i = 0;i < 256;++i) tab[i] = i; | |
26 | for (j = 256;j > 0;--j) { | |
27 | i = dns_random(j); | |
28 | c = tab[j - 1]; | |
29 | tab[j - 1] = tab[i]; | |
30 | tab[i] = c; | |
31 | } | |
32 | ||
33 | if (*argv) ++argv; | |
34 | if (*argv) scan_ulong(*argv++,&loops); | |
35 | if (*argv) { scan_ulong(*argv++,&u); ip[0] = u; ipfixed = 1; } | |
36 | if (*argv) { scan_ulong(*argv++,&u); ip[1] = u; ipfixed = 2; } | |
37 | if (*argv) { scan_ulong(*argv++,&u); ip[2] = u; ipfixed = 3; } | |
38 | if (*argv) { scan_ulong(*argv++,&u); ip[3] = u; ipfixed = 4; } | |
39 | ||
40 | if (ipfixed >= 1) if (loops > 16777216) loops = 16777216; | |
41 | if (ipfixed >= 2) if (loops > 65536) loops = 65536; | |
42 | if (ipfixed >= 3) if (loops > 256) loops = 256; | |
43 | if (ipfixed >= 4) if (loops > 1) loops = 1; | |
44 | ||
45 | while (loops) { | |
46 | --loops; | |
47 | u = loops; | |
48 | for (i = ipfixed;i < 4;++i) { ip[i] = u & 255; u >>= 8; } | |
49 | if (ipfixed == 3) { | |
50 | c = ip[3]; | |
51 | ip[3] = tab[c]; | |
52 | } | |
53 | else if (ipfixed < 3) { | |
54 | c = 0; | |
55 | for (j = 0;j < 100;++j) { | |
56 | for (i = ipfixed;i < 4;++i) { | |
57 | c ^= (unsigned char) ip[i]; | |
58 | c = tab[c]; | |
59 | ip[i] = c; | |
60 | } | |
61 | } | |
62 | } | |
63 | ||
64 | u = (unsigned char) ip[0]; | |
65 | buffer_put(buffer_1,strnum,fmt_ulong(strnum,u)); | |
66 | buffer_puts(buffer_1,"."); | |
67 | u = (unsigned char) ip[1]; | |
68 | buffer_put(buffer_1,strnum,fmt_ulong(strnum,u)); | |
69 | buffer_puts(buffer_1,"."); | |
70 | u = (unsigned char) ip[2]; | |
71 | buffer_put(buffer_1,strnum,fmt_ulong(strnum,u)); | |
72 | buffer_puts(buffer_1,"."); | |
73 | u = (unsigned char) ip[3]; | |
74 | buffer_put(buffer_1,strnum,fmt_ulong(strnum,u)); | |
75 | buffer_puts(buffer_1,"\n"); | |
76 | } | |
77 | ||
78 | buffer_flush(buffer_1); | |
79 | _exit(0); | |
80 | } |