/**
* 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. cmd命令之set详解

    C:\Users\Administrator>set ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\Administrator\AppData\ ...

  2. SQL:1999基本语法(学习笔记)

    SQL:1999基本语法 SELECT [DISTINCT] * | 列名称 [AS]别名,........ FROM 表名称1 [别名1][CROSS JOIN表名称2 别名2]| [NATURAL ...

  3. 把Linux目录挂载到开发板、设置开发板从NFS启动、取消开发板从NFS启动

    声明:文中"PC虚拟机Linux"是指在PC上安装了虚拟机,然后在虚拟机中装的Linux. 关于NFS的详细介绍可参考:http://www.cnblogs.com/nufangr ...

  4. Emmet初探

    Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度,比如下面的演示: ...

  5. sonarqube 指定jdk

    D:\sonarqube-6.3\conf\wrapper.conf wrapper.java.command=D:/other/jdk1.8.0_25/bin/java

  6. MySQL优化之——权限管理

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46763767 在mysql数据库中,有mysql_install_db脚本初始化权 ...

  7. 〖Linux〗使用gsoap搭建web server(C)

    1. gsoap的好处就不用说了:百度百科 2. gsoap的下载地址:项目地址,目前我使用的是2.8.15版本 3. 开发环境:Ubuntu13.10 4. 具体操作步骤(以简单相加为例): 1) ...

  8. windows服务器开启openssl

    windows服务器默认是没有开启openss的php扩展支持,不过一般服务器里面默认都已经安装了这个功能.自己开启一下就好,今天在安装某程序的时候,需要用到openss的支持,才发现windows服 ...

  9. POJ 1836 Alignment (双向DP)

    Alignment Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10804   Accepted: 3464 Descri ...

  10. iOS - TouchLock 手势锁

    1.绘制手势锁 具体实现代码见 GitHub 源码 QExtension QTouchLockView.h @interface QTouchLockView : UIView /// 提示信息框 @ ...