/**
* Notice: The program is not debug on internet and not use thread supervene.
* date : 6-26
* author: jker
**/
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#define LINE 1024
#define dict "dict.txt"
#define result "manager.txt" void itos(int num,char *str){
int a=num;
int x,y,z;
x=a/;
y=a%/;
z=a%;
if(x==){
if(y==){
str[]+=z;
str[]='\0';
}else{
str[]+=y;
str[]+=z;
str[]='\0';
}
}else{
str[]+=x;
str[]+=y;
str[]+=z;
str[]='\0';
}
return;
}
char *nip(char *oip){
char *str[]={""},*rtn;
char *delim = ".";
char * tmp;
int i=;
char arr[]={,,,'\0'};
rtn = malloc();
memset(rtn,'\0',);
tmp = strtok(oip,delim);
str[i++]=tmp;
while(tmp=strtok(NULL,delim)){
str[i++]=tmp;
} for(i=;i>=;i--){
if(atoi(str[i])<){
itos(atoi(str[i])+,arr);
str[i]=arr;
break;
}
} for(i=;i<;i++){
strcat(rtn,str[i]);
if(i<)strcat(rtn,delim);
} return rtn;
}
int main(int argc,char *argv[]){
int sc,fd;
unsigned short port = ;
struct sockaddr_in add;
char *ip,*sip,*eip;
struct hostent *host;
char rheader[LINE],dictbuf[LINE],resbuf[LINE];
char *dir,path[LINE]="",*arr[LINE],*tmp,state[],manager[LINE];
int i=,n=,bytes;
if(argc != ){
printf("please input startIp and endIp.\r\n");
return -;
}
dir = get_current_dir_name();
strcat(path,dir);
strcat(path,"/");
strcat(path,dict);
fd = open(path,O_RDONLY);
read(fd,dictbuf,sizeof(dictbuf));
close(fd);
arr[n++]=strtok(dictbuf,"\r\n");
while(tmp=strtok(NULL,"\r\n"))arr[n++]=tmp; ip = malloc();
memset(ip,'\0',);
sip = argv[];
eip = argv[];
strcpy(ip,sip); memset(manager,'\0',LINE);
memset(rheader,'\0',LINE); sc = socket(AF_INET,SOCK_STREAM,);
if(sc == -){
printf("create socket fail!\r\n");
return -;
}
printf("create socket ok.\r\n");
bzero(&add,sizeof(add));
add.sin_family=AF_INET;
add.sin_port=htons(port);
bzero(&path,sizeof(path));
strcat(path,dir);
strcat(path,"/");
strcat(path,result);
fd = open(path,O_WRONLY|O_CREAT); do{
host = gethostbyaddr(ip,strlen(ip),AF_INET);
if(host == (struct hostent *)NULL) {
printf("can`t get host from %s\r\n",ip);
if(strcmp(ip,eip)<)ip=nip(ip);
continue;
}else{
printf("host name:%s\n",host->h_name);
} add.sin_addr.s_addr=inet_addr(ip);
if(connect(sc,(struct sockaddr *)(&add),sizeof(struct sockaddr))==-){
printf("conn fail!\r\n");
return -;
}
for(;i<n;i++){
strcat(rheader,"HEAD ");
strcat(rheader,arr[i]);
strcat(rheader," HTTP/1.1");
strcat(rheader,"\r\n");
strcat(rheader,"Host:");
strcat(rheader,host->h_name);
strcat(rheader,"\r\n"); //strcat(rheader,"Accept:*\/*");
//strcat(rheader,"\r\n");
strcat(rheader,"Connection:Keep-Alive");
strcat(rheader,"\r\n");
write(sc, rheader, strlen(rheader));usleep();
bytes = read(sc, resbuf, LINE);
printf("Response from %s:\n",ip);
write(STDOUT_FILENO, resbuf, bytes);
for(i=;i<;i++){
state[i]=resbuf[i+];
}
if(!((state>="" && state<="")||state=="")){
strcat(manager,"http://");
strcat(manager,host->h_name);
strcat(manager,arr[i]);
strcat(manager,"\r\n");
write(fd,manager,sizeof(manager));
}
}
close(sc);
ip = nip(ip);
}while(strcmp(ip,eip)<); close(fd);
return ;
}

用c写了个后台扫描的更多相关文章

  1. Python 网站后台扫描脚本

    Python  网站后台扫描脚本 #!/usr/bin/python #coding=utf-8 import sys import urllib import time url = "ht ...

  2. 网站后台扫描工具dirbuster、御剑的用法

    dirbuster DirBuster是Owasp(Open Web Application Security Project )开发的一款专门用于探测网站目录和文件(包括隐藏文件)的工具.由于使用J ...

  3. Python 网站后台扫描

    title date layout tags Python 网站后台扫描 2018-05-08 post Python #!/usr/bin/python # This was written for ...

  4. Vue2.0 + ElementUI 手写权限管理系统后台模板(一)——简述

    挤一下: 一开始以为没有多少人用就没建群,但是加我的人太多了,好多问题都是重复的,所以建个群大家互相沟通交流方便点,但是建的有点晚,错过了好多人所以群里人有点少,QQ群: 157216616 小提示 ...

  5. python 写的http后台弱口令爆破工具

    今天来弄一个后台破解的Python小程序,哈哈,直接上代码吧,都有注释~~ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

  6. [开源]如何使用goapp写你的后台管理系统_golang

    简析 基于 Gin + GORM + Casbin + vue-element-admin 实现的权限管理系统. 基于Casbin 实现RBAC权限管理. 前端实现: vue-element-admi ...

  7. c#写一个网站后台扫描器

    主要分成了那么几个步骤: 1.HTTP状态码 2.字典的导入 3.显示在listview控件当中 第一步: 先来实现HTTP状态码200的判断 try { req = (HttpWebRequest) ...

  8. 第一个Asp.net小项目,主页写了下后台代码

    一个比较完善的登录模块,就目前的知识范围来说应该算是完美的. 涉及到:cookies,Session,验证码等知识面 Cookies存放一组值: HttpCookie cook = new HttpC ...

  9. vue elementui 写的一个后台管理页面模板

    https://github.com/PanJiaChen/vue-element-admin

随机推荐

  1. HTML一(简介)

    什么是 HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (ma ...

  2. [SQL]查询某一个字段在某一段时期数据库中使用到的记录

    有些时候我们常常须要哪里用到了一些表,又或者什么时候运行了某一个存储过程.整理出了在某段时期内数据库运行的sql查询.也能够查询到数据库中某些字段的存放处.非常好非常强大.希望能帮到大家~ SELEC ...

  3. uploadify上传带参数及接收参数的方法

    function uploadify() { $("#uploadify").uploadify({ method:'post', uploader: '/Manage/Order ...

  4. jsp&html页面知识点集锦

      CreateTime--2016年12月16日16:08:03Author:Marydonjsp&html页面知识点集锦1.标签的class属性 标签同时拥有多个class时,要写在同一个 ...

  5. webservice系统学习笔记10-使用jax-ws创建基于tomcat类型的容器的ws服务

    1.在web-info目录下新建目录wsdl 2.在1步的目录下 新建文件user.wsdl <?xml version="1.0" encoding="UTF-8 ...

  6. 变量名解析:LEGB原则

    # -*- coding: cp936 -*- #python 27 #xiaodeng #变量名解析:LEGB原则 ''' L-----local 局部名字空间 E-----enclosing 直接 ...

  7. Python画图matplotlib展示图中中文乱码

    在用python的 matplotlib 画图的时候,在图表上面有中文乱码问题,如下的: 解决过程: 平台:windows,python2.7步骤一:打开设置文件 import matplotlib ...

  8. 【转载】@RequestMapping的分类

    @RequestMapping的分类 类级别的和方法级别的@RequestMapping的几种形式: @RequestMapping(method = RequestMethod.GET)  @Req ...

  9. cxf之生成客户端代码

    wsdl2java –d . http://192.168.1.100:1234/weather?wsdl

  10. Java中堆内存和栈内存详解【转】

    Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间 ...