我们的运行环境是pycharm

目录

背景

随着网络技术的发展,越来越多的计算机接入互联网上,网络安全逐渐成
为一个潜在的巨大问题,如何保障自身的网络安全,其中一个主要的方法就是
自查自纠,而在这个过程中,对自己的网络活动主机扫描成为一种较为快捷,
直观,简单的方法。本次课程设计就是对网络主机扫描技术的研究以及实现,
其中技术包括 ARP,ICMP,TCP,UDP 网络协议的网络活动主机扫描。
利用 ARP 协议获取活动主机的 mac 地址,当获取的不为”00-00-00-00-00-00”
时,则是主机可达到,认为是活动主机;利用 ICMP 协议,使用系统自带的 ping
程序功能,当且 ping 通目标主机时,认为是活动主机;基于 TCP 的链接状态,
当判断连接成功,认为是主机活动主机;UDP 是不可靠传输,给目标主机发送
消息,能狗看得到返回的消息,则主机可达到,则认为是活动主机。通过四种
不同的协议,不同的方法都可以得到网络上的活动主机号;

需求分析

网络安全扫描技术是类 重要的网络安全技术。安全扫描技术与防火墙、入侵
检测系统互相配合,能够有效提高网络的安全性。安全扣描是一种主动的防范
措施,可以有效避免黑客攻击行为,做到防患于未然,网络安全扫描的首要任
务是发现网络中活动的主机。对活动主机扫描就是向主机发送特定的数据报,
若主机有响应消息返回则说明该主机处于活动状态,否则主机不存在或处于关
机状态。当主机安装的防火墙软件进行了访问控制时(例如禁用了 Ping 响应或者
禁用了所有的 ICMP 响应),这时使用常用的扫描方法就不起作用了,就需要使
用其它的方法进行探测。网络扫描的基础是互联网的协议,通过对协议的分析
找到适合网络扫描的协议类型和消息类型。根据互联网的协议标准构造特定类
型的数据报,把这些数据报发送到日的主机,从响应消息中提取信息。整个扫
描过程都是基于这种请求一应答-分析机制进行的

扫描技术

主机打描的目的是确定在口标网络上的主机是否可达,现行主要技术
有:ICMP Echo 扫描、TCP connect()扫描、UDP 回馈和 ARP 获取适配器编号扫
描,并日通计多线程,提向了扫描效率

基于 ICMP 协议的活动主机扫描

1.ICMP Echo 扫描精度相对较高。通过简单地向目标主机发送 ICMP
Echo
Request 数据包、并等待回复的 ICMP
Eche Reply 包,如 Ping.
2.ICMP
Sweep
扫描: Swepp 这个词的动作很像机枪扎射,ICMP 进行扣射式
的打描,就是并发性扫描,使用 ICMP
Echo
Request 一次探测多台主机,通
常这种探测包会并行发送,以提高探测效率,适用于人范围的评估
3.Broadcast
ICMP 扫措:广播型 ICMP 扫描,利用了一些主机在 ICMP 实现上的差
异,设置 ICMP 请求包的口标地址为广播地址或网络地址,则可以探测广播域或
整个网络范国内的主机,子网内所有有活主机都会给以回应。
4.Non-Echo ICMP 扫描:在 ICMP 协议中不仅只有 ICMP-ECHO 的 ICMP 查询信息类
型,在 ICMP 扫描技术中也用到 Non-ECIO-ICMP 技术(不仅仅能探测主机,也可
以探测网络设备如路山)。利用了 ICMP 的服务类型(Timestamp 和 Timestamp
Reply Information Request 和 Information-Reply,Address-Mask-Requesl 和
Address-Mask-Reply)。

程序功能流程图

函数的设计与程序

图形化界面库——tkinter 库
tkinter 库是 Python 里自带的图形化库,可以在大多数 Unix 平台以及 Windows
系统上使用。在 Tkinter 库中有着许多接口模块,而这些接口模块分别实现不
同的功能。
表格制作库——ttk.Treeview 库
在 ttk.Treeview 库是 Python GUI 里的一个基本表格输出库,它能够使开发人员
轻松构建表格,将数据以表格化的形式输出。
TreeView 组件是一个树状结构和表格的结合体。第一列是树状结构,后几列是列表。
每一行表示一个 item,树的 item 可以分级,每个 item 有子 item,名称对应 text 标签。
每一行的值用 values 元组里的值表示。
item 有 5 个标签,分别是:text,image,values,open,tags。
在该程序里,我使用 TreeView 组件构造了子网划分结果的表格,其主要代码如下所示:
table = ttk.Treeview(win, show="headings", ) # 定义表格
table['columns'] = ['序号', '主机活跃号', '主机活跃端口'] # 定义
表头
table.pack()
#下面代码为设计每一列的宽度
table.column('序号', width=100, anchor='center')
table.column('主机活跃号', width=500, anchor='center')
table.column('主机活跃端口', width=300, anchor='center')
table.column('花费总时间', width=100, anchor='center')
# 定义表头内容
table.heading('序号', text='序号')
table.heading('主机活跃号', text='主机活跃号')
table.heading('主机活跃端口', text='主机活跃端口')
#下面代码为设计每一列表格的表头显示的文字
# 定义文本输入框
bin1 = Button(win, text='开始检测', command=run)
bin2 = Button(win, text='数据库保存', command=run2)
bin3 = Button(win, text='数据库查询', command=run3)
bin4 = Button(win, text='清空数据库', command=run4)
4.1.2 Button 函数
7桂林航天工业学院本科课程设计报告
Button()函数常用于制作事件按钮,当用户点击 Button 按钮时,程序便
会根据预设来执行特定的事件,完成预期的事件。在此程序里,Button 按钮用
来触发 run()函数,以完成子网划分任务。其代码如下所示:
# 定义文本输入框
bin1 = Button(win, text='开始检测', command=run)
bin2 = Button(win, text='数据库保存', command=run2)
bin3 = Button(win, text='数据库查询', command=run3)
bin4 = Button(win, text='清空数据库', command=run4)
# 定义界面按钮,模块的位置及大小
bin1.place(relx=0.1, rely=0.8, relwidth=0.4, relheight=0.1)
bin2.place(relx=0.55, rely=0.8, relwidth=0.4, relheight=0.1)
bin3.place(relx=0.55, rely=0.6, relwidth=0.4, relheight=0.1)
bin4.place(relx=0.1, rely=0.6, relwidth=0.4, relheight=0.1)

数据库的应用和程序

SQLite 是一款轻量级的、基于文件的嵌入式数据库,实现自包容、零配置、
支持事务的 SQL 数据库引擎。与其他数据库管理系统不同,SQLite 的安装和运
行非常简单,在大多数情况下,只要确保 SQLite 的二进制文件存在即可开始创
建、连接和使用数据库。第一个 Alpha 版本诞生于 2000 年 5 月,直到今天已经
成为最流行的嵌入式数据库,包括 Google 在内的许多公司在其桌面软件中亦使
用 SQLite 存储用户数据,由此看来,其稳定性毋庸置疑。
实际应用中,SQLite 作为目前最为流行的开源嵌入式关系型数据库,在系
统的架构设计中正扮演着越来越重要的角色。和很多其它嵌入式 NoSQL 数据库
(如 BerkeleyDB、MemBASE 等)不同的是,SQLite 支持很多关系型数据库的基本
特征,如标准 SQL 语法、事务、数据表和索引等,这在数据移植、程序演示等
应用中有着不可替代的优势。从官方文档中我们可以获悉到,SQLite 支持的数
据量和运行效率都是非常骄人的,因此在海量数据的解决方案中,SQLite 可以
作为数据预计算的桥头堡,从而显著减少存储在关系型数据库服务器中的数据
数量,最终提高系统的查询效率和运行期效率,同时也可以显著的降低数据备
份的磁盘开销

#######################
###本程序只用于学习交流无用于其它用途
###有需要请联系博主QQ:2397746994
########################部分代码如下from tkinter import *
from tkinter import ttk
from multiprocessing.pool import ThreadPool
import subprocess
import socket
import sqlite3
import time
THREADING_NUM = 100 # 定义线程数pool = ThreadPool(THREADING_NUM) # 定义线程池
Activity_IP = []
filename = 'ip.txt'
def get_host()

运行界面如下:

python 计算机网络课程设计(网络主机扫描程序)相关推荐

  1. 计算机网络课程设计网络嗅探器

    一.题目 网络嗅探器 二.环境 Win10    codeblocks 三.代码实现 WinPcap的安装教程 winpcap要在CB中使用,还需配置一些.h文件,请自行百度,百度上有. 请熟悉教材I ...

  2. 计算机网络课程设计——简单Web Server程序的设计与实现

    上代码 运行完打开浏览器访问127.0.0.1:8000 #include <cstdio> #include <string> #include <fstream> ...

  3. 计算机网络课程设计之基于 IP 多播的网络会议程序

    前言 本实验难点在于环境的配置,尤其是多网卡配置,经过查阅资料和多次小伙伴们测试,最后终于找到问题的根源 问题分析和配置主要放在实验结果与分析栏中 结尾附上指导书的IP多播源码 白嫖容易,创作不易,本 ...

  4. python网络爬虫课程设计题目_山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》...

    山东建筑大学计算机网络课程设计<基于Python的网络爬虫设计> 山东建筑大学 课 程 设 计 成 果 报 告 题 目: 基于Python的网络爬虫设计 课 程: 计算机网络A 院 (部) ...

  5. 计算机网络课程设计--基于TCP协议网上聊天程序--python实现带图形界面--socket--多线程

                                              基于TCP协议网上聊天程序 引言 21世纪是一个以网络为核心的信息时代,要实现信息化,就必须依靠完善的网络.而随着计 ...

  6. 计算机网络课程设计之网络聊天程序的设计与实现

    前言 计算机网络课程设计开始,要求用C/C++,而且有些题目还要有图形界面,因此决定用Qt写图形界面,同时决定用一个程序完成所有的实验设计. 白嫖容易,创作不易,本文原创,转载请注明!!! 源码和可运 ...

  7. 计算机网络抓包参考文献,计算机网络课程设计二(网络抓包与分析)

    <计算机网络课程设计二(网络抓包与分析)>由会员分享,可在线阅读,更多相关<计算机网络课程设计二(网络抓包与分析)(9页珍藏版)>请在人人文库网上搜索. 1.课程设计课程名称: ...

  8. 计算机网络课程设计之网络嗅探器的设计与实现

    前言 本实验难点是在于Windows下的raw socket有太多的限制,因此用winpcap编程功能更加强大,但是根据指导书要求要用原始套接字,原始套接字在Linux系统下也十分强大,结尾附上Lin ...

  9. 计算机网络课程设计之简单 Web Server 程序的设计与实现

    前言 本实验是实现一个简易的webserver,我们一直在访问网站,甚至还做过Web课程设计,部署过Tomcat等等,所以说这次实验能更深入的了解其原理 白嫖容易,创作不易,本文原创,转载请注明!!! ...

最新文章

  1. linux ljie mysql_[Linux Mysql] Linux下Mysql的基本操作
  2. linux的备份命令及其参数,linux cpio命令参数及用法详解--linux备份文件命令
  3. linux进程作为服务,将一个监视进程做成linux系统服务
  4. 线程通信之多个线程循环执行,(A线程执行5次,B线程执行10次,C线程执行15次)...
  5. Leetcode 535.TinyURL的加密与解密
  6. 从零开始学习Sencha Touch MVC应用之十三
  7. JAVA后台管理系统
  8. 系统集成项目管理工程师思维导图
  9. MTK山寨机个性化DIY移植MRP初步探讨
  10. Git ssh fingerprint不一致
  11. 【计算机网络】---局域网
  12. LabVIEW开发FPGA参考框架
  13. 信号量和互斥锁的区别
  14. v-for 循环中数据更新子组件视图不更新解决方案
  15. python爬高德地图_利用Python爬取高德地图数据
  16. 简易五子棋游戏(控制台版)
  17. 金蝶K3开发-改造单据录入之快速录单
  18. 【arcgis天地图wmts加载显示空白】
  19. 使用林地可行性报告现状图要包含的内容清单
  20. 搜狗输入法皮肤中心等显示网络不给力的解决方法

热门文章

  1. 怎么用计算机要微信,电脑端要实现“微信双开”功能,三种方法,简单实用!...
  2. 网页代码扒ppt_在网页中在线浏览ppt文档
  3. 他励直流电动机的调速
  4. 斯伦贝谢宣布用债券交换斯伦贝谢控股公司的三种优先票据
  5. 计算机电源常见的认证有哪些,看清电源的各种认证
  6. Javascript 检测键盘按键
  7. JS数组Arry 操作方法速记
  8. html页面酒店日历插件,基于vue2.x的酒店日历选择插件
  9. 子网与超网的含义和区别
  10. 苹果公司的企业文化_企业文化到底有什么用?