使用C语言制作简单的IP扫描器
来源:互联网 发布:php试题库管理系统 编辑:程序博客网 时间:2024/05/07 00:03
上一篇帖我们讲过如何用C语言实现ping操作,下面我们讲解如何使用C制作一个简易的IP扫描器。
因为公网IP太多,所以我们只讲解如何制作一个内网的扫描器
制作前,我们要知道IP的分类,IPV4协议中有5类IP。这些IP中有些IP保留作为私网IP,也就是局域网IP,除去私网IP都是公网IP。以下为私网IP段
A:10.0.0.0~10.255.255.255
B:172.16.0.0~172.31.255.255
C:192.168.0.0~192.168.255.255
上次我们用system("ping 192.168.0.1")命令检测了IP是否能ping通,但是默认的ping命令会ping四次,加上超时的时执行时间太长,我们使用下面改良版的命令让他只ping一次,1000ms未相应就判定超时(具体超时时间可根据网络状况改变,例如内网普遍在100ms内即可设置成100)
ping 192.168.0.1 -n 1 -w 1000
然后我们要思考如何不断变换ip生成这个命令,我们可以使用for循环,每层循环都让一个人数字从1加到255,再对每层数字进行判断是否是一个内网IP,不是就continue进行下一次循环让数值加一
然后使用itoa将数字转换为字符串,再用strcat将字符串拼接起来
最后执行命令,如果成功就把ip地址以附加方式(a+)写到当前目录下的ping.txt文件中并清除ml中字符串准备下一次循环
以下是源码
#include#include #include int main(void){int i1, i2, i3, i4, ok;char c1[30], c2[30], c3[30], c4[30], ping[100] = "ping ", d[30] = ".", ml[30] = "", fj[100] = " -n 1 -w 1000";FILE *fp;for (i1 = 1; i1 <=255; i1++){if (i1 == 10 || i1 == 172 || i1 == 192){for (i2 = 0; i2 <=255; i2++){if (i1 == 172){if (i2 < 16 || i2 > 31){continue;}}if (i1 == 192){if (i2 != 168){continue;}}for (i3 = 0; i3 <=255; i3++){for (i4 = 0; i4 <=255; i4++){itoa(i1, c1, 10);itoa(i2, c2, 10);itoa(i3, c3, 10);itoa(i4, c4, 10);strcat(ml, ping);strcat(ml, c1);strcat(ml, d);strcat(ml, c2);strcat(ml, d);strcat(ml, c3);strcat(ml, d);strcat(ml, c4);strcat(ml, fj);ok = system(ml);if (0 == ok){memset(ml, 0, sizeof(ml));strcat(ml, c1);strcat(ml, d);strcat(ml, c2);strcat(ml, d);strcat(ml, c3);strcat(ml, d);strcat(ml, c4);fp = fopen("ping.txt", "a+");fprintf(fp, "\n%s", ml);fclose(fp);}memset(ml, 0, sizeof(ml));}system("cls");}}}} return 0;}
注意:源码的名字一定不能取成ping等系统关键程序名,否则编译成exe后执行会出现异常
写在后面的话
此程序还有很多地方需要完善,比如可以通过命令行让程序从指定IP开始扫描,可以使用pthread库让程序多线程同时执行。但事实上C语言只能算是一个入门级别的语言,很多操作都有局限,笔者只是希望通过这个程序给大家一个思路,因为使用Python等面向网络的语言能够方便的处理这种问题。如果后续有需要,我会再增加完善此帖。
零号地衣 2017-7-18
- 使用C语言制作简单的IP扫描器
- C# 制作简单的IP扫描器
- Linux C语言写的超级简单端口扫描器
- Linux C语言写的超级简单端口扫描器
- python-nmap模块的使用及制作一个简单的端口扫描器
- 局域网ip扫描器c语言多线程 linux版
- 简单C语言通讯录的制作
- 简单端口扫描器:批量IP, 特定端口
- Nmap扫描器的使用
- nmap扫描器的使用
- nmap扫描器的使用
- awvs扫描器的使用
- netsparker扫描器的使用
- 使用VC#制作多线程TCP connect扫描器
- 留念 C语言第一课简单的计算器制作
- 用c语言制作简单的成绩判断系统
- TCP扫描器的简单实现
- TCP扫描器的简单实现
- Ubuntu Docker安装及用户分组授权与Docker hub账号使用
- 8.数据库探测方法
- Android开发常见的第三方框架汇总
- zookeeper的watcher机制及其在集群管理(sheepdog)中的使用
- "&#"开头转中文
- 使用C语言制作简单的IP扫描器
- 9.搭建平台的探测方法
- HDU-2212 DFS
- Java 学习之IO类基础(一)
- 10.服务器系统探测
- BZOJ 1024-生日快乐(DFS)
- Oracle11g数据库Windows8.1系统安装配置图文教程
- unity 一些向量
- 记录一些kotlin的用法