changed dns to dns-projects to divide scripts and projects
This commit is contained in:
parent
3d48acb497
commit
3b3722425e
125 changed files with 40001 additions and 0 deletions
318
dns-projects/zodiac/src/common.c
Normal file
318
dns-projects/zodiac/src/common.c
Normal file
|
@ -0,0 +1,318 @@
|
|||
|
||||
#include <sys/time.h>
|
||||
#include <netinet/in.h>
|
||||
#include <time.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "common.h"
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
void
|
||||
debugp (char *filename, const char *str, ...)
|
||||
{
|
||||
FILE *fp; /* temporary file pointer */
|
||||
va_list vl;
|
||||
|
||||
fp = fopen (filename, "a");
|
||||
if (fp == NULL)
|
||||
return;
|
||||
|
||||
va_start (vl, str);
|
||||
vfprintf (fp, str, vl);
|
||||
va_end (vl);
|
||||
|
||||
fclose (fp);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
hexdump (char *filename, unsigned char *data, unsigned int amount)
|
||||
{
|
||||
FILE *fp; /* temporary file pointer */
|
||||
unsigned int dp, p; /* data pointer */
|
||||
const char trans[] =
|
||||
"................................ !\"#$%&'()*+,-./0123456789"
|
||||
":;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklm"
|
||||
"nopqrstuvwxyz{|}~...................................."
|
||||
"....................................................."
|
||||
"........................................";
|
||||
|
||||
fp = fopen (filename, "a");
|
||||
if (fp == NULL)
|
||||
return;
|
||||
|
||||
fprintf (fp, "\n-packet-\n");
|
||||
|
||||
for (dp = 1; dp <= amount; dp++) {
|
||||
fprintf (fp, "%02x ", data[dp-1]);
|
||||
if ((dp % 8) == 0)
|
||||
fprintf (fp, " ");
|
||||
if ((dp % 16) == 0) {
|
||||
fprintf (fp, "| ");
|
||||
p = dp;
|
||||
for (dp -= 16; dp < p; dp++)
|
||||
fprintf (fp, "%c", trans[data[dp]]);
|
||||
fflush (fp);
|
||||
fprintf (fp, "\n");
|
||||
}
|
||||
fflush (fp);
|
||||
}
|
||||
if ((amount % 16) != 0) {
|
||||
p = dp = 16 - (amount % 16);
|
||||
for (dp = p; dp > 0; dp--) {
|
||||
fprintf (fp, " ");
|
||||
if (((dp % 8) == 0) && (p != 8))
|
||||
fprintf (fp, " ");
|
||||
fflush (fp);
|
||||
}
|
||||
fprintf (fp, " | ");
|
||||
for (dp = (amount - (16 - p)); dp < amount; dp++)
|
||||
fprintf (fp, "%c", trans[data[dp]]);
|
||||
fflush (fp);
|
||||
}
|
||||
fprintf (fp, "\n");
|
||||
|
||||
fclose (fp);
|
||||
return;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* m_random
|
||||
*
|
||||
* return a random number between `lowmark' and `highmark'
|
||||
*/
|
||||
|
||||
int
|
||||
m_random (int lowmark, int highmark)
|
||||
{
|
||||
long int rnd;
|
||||
|
||||
/* flip/swap them in case user messed up
|
||||
*/
|
||||
if (lowmark > highmark) {
|
||||
lowmark ^= highmark;
|
||||
highmark ^= lowmark;
|
||||
lowmark ^= highmark;
|
||||
}
|
||||
rnd = lowmark;
|
||||
|
||||
rnd += (random () % (highmark - lowmark));
|
||||
|
||||
/* this is lame, i know :)
|
||||
*/
|
||||
return (rnd);
|
||||
}
|
||||
|
||||
|
||||
/* set_tv
|
||||
*
|
||||
* initializes a struct timeval pointed to by `tv' to a second value of
|
||||
* `seconds'
|
||||
*
|
||||
* return in any case
|
||||
*/
|
||||
|
||||
void
|
||||
set_tv (struct timeval *tv, int seconds)
|
||||
{
|
||||
tv->tv_sec = seconds;
|
||||
tv->tv_usec = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* xstrupper
|
||||
*
|
||||
* uppercase a string `str'
|
||||
*
|
||||
* return in any case
|
||||
*/
|
||||
|
||||
void
|
||||
xstrupper (char *str)
|
||||
{
|
||||
for (; *str != '\0'; ++str) {
|
||||
if (*str >= 'a' && *str <= 'z') {
|
||||
*str -= ('a' - 'A');
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* concating snprintf
|
||||
*
|
||||
* determines the length of the string pointed to by `os', appending formatted
|
||||
* string to a maximium length of `len'.
|
||||
*
|
||||
*/
|
||||
|
||||
void
|
||||
scnprintf (char *os, size_t len, const char *str, ...)
|
||||
{
|
||||
va_list vl;
|
||||
char *ostmp = os + strlen (os);
|
||||
|
||||
va_start (vl, str);
|
||||
vsnprintf (ostmp, len - strlen (os) - 1, str, vl);
|
||||
va_end (vl);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
unsigned long int
|
||||
tdiff (struct timeval *old, struct timeval *new)
|
||||
{
|
||||
unsigned long int time1;
|
||||
|
||||
if (new->tv_sec >= old->tv_sec) {
|
||||
time1 = new->tv_sec - old->tv_sec;
|
||||
if ((new->tv_usec - 500000) >= old->tv_usec)
|
||||
time1++;
|
||||
} else {
|
||||
time1 = old->tv_sec - new->tv_sec;
|
||||
if ((old->tv_usec - 500000) >= new->tv_usec)
|
||||
time1++;
|
||||
}
|
||||
|
||||
return (time1);
|
||||
}
|
||||
|
||||
|
||||
/* ipv4_print
|
||||
*
|
||||
* padding = 0 -> don't padd
|
||||
* padding = 1 -> padd with zeros
|
||||
* padding = 2 -> padd with spaces
|
||||
*/
|
||||
|
||||
char *
|
||||
ipv4_print (char *dest, struct in_addr in, int padding)
|
||||
{
|
||||
unsigned char *ipp;
|
||||
|
||||
ipp = (unsigned char *) &in.s_addr;
|
||||
|
||||
strcpy (dest, "");
|
||||
|
||||
switch (padding) {
|
||||
case (0):
|
||||
sprintf (dest, "%d.%d.%d.%d", ipp[0], ipp[1], ipp[2], ipp[3]);
|
||||
break;
|
||||
case (1):
|
||||
sprintf (dest, "%03d.%03d.%03d.%03d", ipp[0], ipp[1], ipp[2], ipp[3]);
|
||||
break;
|
||||
case (2):
|
||||
sprintf (dest, "%3d.%3d.%3d.%3d", ipp[0], ipp[1], ipp[2], ipp[3]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return (dest);
|
||||
}
|
||||
|
||||
|
||||
void *
|
||||
xrealloc (void *m_ptr, size_t newsize)
|
||||
{
|
||||
void *n_ptr;
|
||||
|
||||
n_ptr = realloc (m_ptr, newsize);
|
||||
if (n_ptr == NULL) {
|
||||
fprintf (stderr, "realloc failed\n");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return (n_ptr);
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
xstrdup (char *str)
|
||||
{
|
||||
char *b;
|
||||
|
||||
b = strdup (str);
|
||||
if (b == NULL) {
|
||||
fprintf (stderr, "strdup failed\n");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return (b);
|
||||
}
|
||||
|
||||
|
||||
void *
|
||||
xcalloc (int factor, size_t size)
|
||||
{
|
||||
void *bla;
|
||||
|
||||
bla = calloc (factor, size);
|
||||
|
||||
if (bla == NULL) {
|
||||
fprintf (stderr, "no memory left\n");
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
return (bla);
|
||||
}
|
||||
|
||||
|
||||
/* source by dk
|
||||
*/
|
||||
|
||||
char *
|
||||
allocncat (char **to, char *from, size_t len)
|
||||
{
|
||||
int rlen = strlen (from);
|
||||
int null = *to == NULL;
|
||||
|
||||
len = rlen < len ? rlen : len;
|
||||
*to = realloc (*to, (null ? 0 : strlen (*to)) + len + 1);
|
||||
if (null)
|
||||
**to = '\0';
|
||||
|
||||
if (*to == NULL)
|
||||
perror ("no memory: ");
|
||||
|
||||
return (strncat (*to, from, len));
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
alloccat (char **to, char *from)
|
||||
{
|
||||
return (allocncat (to, from, strlen (from)));
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
ip_get_random (void)
|
||||
{
|
||||
char *ip = xcalloc (1, 17);
|
||||
int i[4];
|
||||
|
||||
for (;;) {
|
||||
i[0] = m_random (1, 239);
|
||||
if (i[0] != 10 && i[0] != 127 && i[0] != 192)
|
||||
break;
|
||||
}
|
||||
i[1] = m_random (1, 254);
|
||||
i[2] = m_random (1, 254);
|
||||
i[3] = m_random (1, 254);
|
||||
|
||||
sprintf (ip, "%d.%d.%d.%d", i[0], i[1], i[2], i[3]);
|
||||
|
||||
return (ip);
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue