本次代码只利于人员进行分析,没有啥用,小学期作业,被迫工作。

  1 import tkinter
2 from tkinter import *
3 import time
4 import nmap
5 import psutil
6 LOG_LINE_NUM = 0
7 import psutil
8 import datetime
9 import time
10 import socket
11 import uuid
12 #import geoip2.database
13 import dns.resolver
14 class MY_GUI():
15 def __init__(self, init_window_name):
16 self.init_window_name = init_window_name
17
18 def set_int_DS(self):
19 DS= Tk()
20 DS.geometry('400x400')
21 DS.title('域名')
22 DS_data_Text = Text(DS, width=150, height=49) # 处理结果展示
23 DS_data_Text.grid(row=1, column=12, rowspan=15, columnspan=10)
24 res = dns.resolver.query('testfire.net', 'NS')
25 DS_data_Text.insert(END,'本次解析域名为testfire.net')
26 for item in res.response.answer:
27 DS_data_Text.insert(END,item)
28 DS.mainloop()
29
30 def set_init_zisao(self):
31 show= Tk() # 实例化出一个父窗口
32 show.geometry('1400x700')
33 # 设置根窗口默认属性
34 show.title('页面')
35 #page=tkinter.Frame(show)
36 result_data_Text = Text(show, width=700, height=49) # 处理结果展示
37 result_data_Text.grid(row=1, column=12, rowspan=15, columnspan=10)
38 #result_data_Text.insert(END, 'a_' + str(i))
39 now_time = time.strftime('%Y-%m-%d-%H:%M:%S'+'\n', time.localtime(time.time()))
40 result_data_Text.insert(END,now_time)
41 # 系统启动时间
42 result_data_Text.insert(END,"系统启动时间: %s" % datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S"+'\n'))
43 # 系统用户
44 users_count = len(psutil.users())
45 users_list = ",".join([u.name for u in psutil.users()])
46 result_data_Text.insert(END,"当前有%s个用户,分别是 %s" % (users_count, users_list)+'\n')
47 #result_data_Text.insert(END,'-----------------------------cpu信息---------------------------------------')
48 # 查看cpu物理个数的信息
49 result_data_Text.insert(END,"物理CPU个数: %s" % psutil.cpu_count(logical=False)+'\n')
50 result_data_Text.insert(END,"逻辑CPU个数: %s" % psutil.cpu_count(logical=True)+'\n')
51 result_data_Text.insert(END,"CPU核心总数: %s" % psutil.cpu_count()+'\n')
52 # CPU的使用率
53 cpu = (str(psutil.cpu_percent(1))) + '%'
54 result_data_Text.insert(END,"cup使用率: %s" % cpu+'\n')
55 #result_data_Text.insert(END,'-----------------------------mem信息---------------------------------------')
56 # 查看内存信息,剩余内存.free 总共.total
57 # round()函数方法为返回浮点数x的四舍五入值。
58 free = str(round(psutil.virtual_memory().free / (1024.0 * 1024.0 * 1024.0), 2))
59 total = str(round(psutil.virtual_memory().total / (1024.0 * 1024.0 * 1024.0), 2))
60 memory = int(psutil.virtual_memory().total - psutil.virtual_memory().free) / float(
61 psutil.virtual_memory().total)
62 swap_free = str(round(psutil.swap_memory().free / (1024.0 * 1024.0 * 1024.0), 2))
63 swap_total = str(round(psutil.swap_memory().total / (1024.0 * 1024.0 * 1024.0), 2))
64 swap_memory = int(psutil.swap_memory().total - psutil.swap_memory().free) / float(psutil.swap_memory().total)
65 result_data_Text.insert(END,"物理内存: %s G" % total+'\n')
66 result_data_Text.insert(END,"剩余物理内存: %s G" % free+'\n')
67 result_data_Text.insert(END,"物理内存使用率: %s %%" % int(memory * 100)+'\n')
68 result_data_Text.insert(END,"交换内存: %s G" % swap_total+'\n')
69 result_data_Text.insert(END,"剩余交换内存: %s G" % swap_free+'\n')
70 result_data_Text.insert(END,"交换内存使用率: %s %%" % int(swap_memory * 100)+'\n')
71 #result_data_Text.insert(END,'-----------------------------网络信息---------------------------------------')
72 # 网卡,可以得到网卡属性,连接数,当前流量等信息
73 hostname = socket.gethostname() # 获取本机主机名
74 ip = socket.gethostbyname(hostname) # 获取本机ip地址
75 mac = uuid.UUID(int=uuid.getnode()).hex[-12:]
76 mac = ":".join([mac[e:e + 2] for e in range(0, 11, 2)])
77 net = psutil.net_io_counters()
78 bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024)
79 bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024)
80 result_data_Text.insert(END,"主机名称为:"+'\n', hostname)
81 result_data_Text.insert(END,"IP地址为:"+'\n', ip)
82 result_data_Text.insert(END,"MAC地址:"+'\n', mac)
83 result_data_Text.insert(END,"网卡接收流量 %s 网卡发送流量 %s" % (bytes_rcvd, bytes_sent)+'\n')
84
85 #result_data_Text.insert(END,'-----------------------------磁盘信息---------------------------------------')
86 io = psutil.disk_partitions()
87 # print("系统磁盘信息:" + str(io))
88 o = psutil.disk_usage("/")
89 ioo = psutil.disk_io_counters()
90 result_data_Text.insert(END,ioo)
91 result_data_Text.insert(END,"盘总容量:" + str(int(o.total / (1024.0 * 1024.0 * 1024.0))) + "G"+'\n')
92 result_data_Text.insert(END,"已用容量:" + str(int(o.used / (1024.0 * 1024.0 * 1024.0))) + "G"+'\n')
93 result_data_Text.insert(END,"可用容量:" + str(int(o.free / (1024.0 * 1024.0 * 1024.0))) + "G"+'\n')
94
95 #result_data_Text.insert(END,'-----------------------------进程信息-------------------------------------')
96 # 查看系统全部进程
97 for pnum in psutil.pids():
98 p = psutil.Process(pnum)
99 result_data_Text.insert(END,"进程名 %-20s 内存利用率 %-18s 进程状态 %-10s 创建时间 %-10s " \
100 % (p.name(), p.memory_percent(), p.status(), p.create_time())+'\n')
101 #page.pack()
102 show.mainloop()
103
104 def set_init_saomiao(self):
105 nm = nmap.PortScanner()
106 if not self.init_data_Text.get is NONE:
107 ret = nm.scan(self.init_data_Text.get(1.0, END).strip().replace("\n", ""), '20-1000') # 220.181.38.148/24
108 # self.result_data_Text.insert(1.0, ret)
109 for host in nm.all_hosts(): # 返回被扫描的主机列表给host
110 self.result_data_Text.insert(END,'Host : %s (%s)' % (host, nm[host].hostname())+'\n') # nm[host].hostname()获取目标主机的主机名
111 self.result_data_Text.insert(END,'State : %s' % nm[host].state()+'\n') # nm[host].state()获取主机的状态 |up|down|unknow|skipped|
112 for proto in nm[host].all_protocols(): # nm[host].all_protocols获取执行的协议['tcp','udp']
113 #print('-----------------------------------------------------')
114 self.result_data_Text.insert(END,'protocol : %s' % proto+'\n') # 输出执行的协议
115 lport = nm[host][proto].keys() # 获取目标主机所开放的端口赋值给lport
116 # lport.sort()
117 #print('')
118 for port in lport: # 将lport赋值给port并遍历
119 self.result_data_Text.insert(END,'port : %s\tstate : %s' % (port, nm[host][proto][port]['state']+'\n')) # 输出扫描结果
120 self.result_data_Text.insert(END, ret)
121 self.write_log_to_Text("INFO:str_trans_to_md5 success")
122
123 # 设置窗口
124 def set_init_window(self):
125 self.init_window_name.title("扫描器") # 窗口名
126 # self.init_window_name.geometry('320x160+10+10') #290 160为窗口大小,+10 +10 定义窗口弹出时的默认展示位置
127 self.init_window_name.geometry('1300x800')
128 # self.init_window_name["bg"] = "pink" #窗口背景色,其他背景色见:blog.csdn.net/chl0000/article/details/7657887
129 # self.init_window_name.attributes("-alpha",0.9) #虚化,值越小虚化程度越高
130 # 标签
131 self.init_data_label = Label(self.init_window_name, text="请输入IP")
132 self.init_data_label.grid(row=0, column=0)
133 self.result_data_label = Label(self.init_window_name, text="扫描结果")
134 self.result_data_label.grid(row=0, column=12)
135 self.log_label = Label(self.init_window_name, text="日志")
136 self.log_label.grid(row=12, column=0)
137 # 文本框
138 self.init_data_Text = Text(self.init_window_name, width=67, height=15) # 原始数据录入框
139 self.init_data_Text.grid(row=1, column=0, rowspan=10, columnspan=10)
140 self.result_data_Text = Text(self.init_window_name, width=70, height=49) # 处理结果展示
141 self.result_data_Text.grid(row=1, column=12, rowspan=15, columnspan=10)
142 self.log_data_Text = Text(self.init_window_name, width=66, height=9) # 日志框
143 self.log_data_Text.grid(row=13, column=0, columnspan=10)
144 # 按钮
145 self.str_trans_to_md5_button = Button(self.init_window_name, text="扫描开始", bg="lightblue", width=10,command=self.set_init_saomiao) # 调用内部方法 加()为直接调用
146 self.str_trans_to_md5_button.grid(row=1, column=11)
147 self.str_trans_to_md1_button = Button(self.init_window_name, text="自扫", bg="lightblue", width=10,command=self.set_init_zisao) # 调用内部方法 加()为直接调用
148 self.str_trans_to_md1_button.grid(row=10, column=11)
149 self.str_trans_to_md2_button = Button(self.init_window_name, text="域名", bg="lightblue", width=10,command=self.set_int_DS) # 调用内部方法 加()为直接调用
150 self.str_trans_to_md2_button.grid(row=5, column=11)
151
152 # 获取当前时间
153 def get_current_time(self):
154 current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
155 return current_time
156
157 # 日志动态打印
158 def write_log_to_Text(self, logmsg):
159 global LOG_LINE_NUM
160 current_time = self.get_current_time()
161 logmsg_in = str(current_time) + " " + str(logmsg) + "\n" # 换行
162 if LOG_LINE_NUM <= 7:
163 self.log_data_Text.insert(END, logmsg_in)
164 LOG_LINE_NUM = LOG_LINE_NUM + 1
165 else:
166 self.log_data_Text.delete(1.0, 2.0)
167 self.log_data_Text.insert(END, logmsg_in)
168
169
170 def gui_start():
171 init_window = Tk() # 实例化出一个父窗口
172 ZMJ_PORTAL = MY_GUI(init_window)
173 # 设置根窗口默认属性
174 ZMJ_PORTAL.set_init_window()
175
176 init_window.mainloop() # 父窗口进入事件循环,可以理解为保持窗口运行,否则界面不展示
177
178
179 gui_start()

自扫

有助思考,以及后面的参考。

基于python-nmap的扫描代码的更多相关文章

  1. 使用NMAP端口扫描代码实现

    Nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端.确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting).其基本功能有三个,一是探测一 ...

  2. 基于python的端口扫描

    前言 端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关).端口扫描是计算机解密高手喜欢的一种方式.攻击者可以通过它 ...

  3. 余弦相似度及基于python的三种代码实现、与欧氏距离的区别

    1.余弦相似度可用来计算两个向量的相似程度 对于如何计算两个向量的相似程度问题,可以把这它们想象成空间中的两条线段,都是从原点([0, 0, ...])出发,指向不同的方向.两条线段之间形成一个夹角, ...

  4. 基于python实现单链表代码

    1 """ 2 linklist.py 3 单链表的构建与功能操作 4 重点代码 5 """ 6 7 class Node: 8 " ...

  5. 基于python实现的DDoS

    目录 一个简单的网络僵尸程序 一个简单的DOS攻击程序 整合网络僵尸和DoS攻击--DDoS 代码地址如下:http://www.demodashi.com/demo/12002.html 本例子包含 ...

  6. Nmap目录扫描和漏洞扫描(9.27 第十三天)

    目录扫描:扫描站点的目录,寻找敏感文件(目录名.探针文件.后台.robots.txt[].备份文件等) 目录:站点结构,权限控制不严格 探针文件:服务器配置信息,phpinfo.php   readm ...

  7. python自动化运维四:nmap端口扫描

    p { margin-bottom: 0.25cm; line-height: 120% } a:link { } 端口扫描器: Python的第三方模块python-nmap可以实现高效的端口扫描. ...

  8. 基于Python使用SVM识别简单的字符验证码的完整代码开源分享

    关键字:Python,SVM,字符验证码,机器学习,验证码识别 1   概述 基于Python使用SVM识别简单的验证字符串的完整代码开源分享. 因为目前有了更厉害的新技术来解决这类问题了,但是本文作 ...

  9. Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现

    基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现   by:授客 QQ:1033553122 测试环境 功能需求 实现思路 代码实践(关键技术点实现) 代码模块组织 ...

  10. 代码编辑器[0] -> Vim/gVim[0] -> 基于 Python 的 gVim 环境配置(Windows)

     环境配置 / Environment Setup 基于Python开发的 gVim 环境配置(Windows) 使用方式参考 Vim 的使用. 1 基于vundle进行配置 Vim有多个扩展管理器, ...

随机推荐

  1. 小白之Python-基础中的基础03

    序列,目前看来很基础,东西比较多,难度开始加大...加油吧,骚年 Python之序列 1.数据结构:序列.容器(序列:索引.映射:键).集合2.列表.元组.字符串.Unicode字符串.buffer对 ...

  2. spark structured streaming (结构化流) join 操作( 官方文档翻译)

    spark 结构化流 join 连接 结构化流支持将流dataset/DataFrame与静态dataset/DataFrame,或者另一个流数据集-DataFrame连接起来.流式连接的结果是增量生 ...

  3. 性能测试-dstat以及sar(网络相关数据查看)

    1.dstat参数说明 # 安装 yum install dstat -y dstat命令不加任何参数时,会收集CPU.磁盘.网络.分页.系统的数据信息,每秒收集一次.缺省参数时相当于dstat -c ...

  4. 剑指 Offer II 堆

    059. 数据流的第 K 大数值 class KthLargest { public: priority_queue<int,vector<int>,greater<int&g ...

  5. 哲讯分享:sap软件多少钱一套

    SAP软件一般指SAP. SAP,为"System Applications and Products"的简称,是德国SAP公司的产品--企业管理解决方案的软件名称.至今世界500 ...

  6. Day22:数据库导入&分工&准备科研训练

    今日完成的任务: 1.与组员共同排查jar包中的问题,发现是由于未导入数据库. 网上查询后在MySQL workbench中完成了导入导出(图中user数据库). 2.完成实验报告分工,我负责结论部分 ...

  7. 浪潮QQ群成员提取器 V2022

    浪潮QQ群成员提取软件 V2021 最新升级版 使用扫描安全登录QQ,批量获取群列表,然后在读取指定群的群成员列表支持过滤群主.群管理员 支持按最后发言时间提取活跃用户 支持识别僵尸粉和过滤可以导出文 ...

  8. php 常用工具函数

    返回时间戳差值部分,年.月.日 function get_date_diff($startstamp, $endstamp, $return = 'm') { $y = date('Y', $ends ...

  9. 【笔记】Win7连接公司内网无法打开网页

    win7尝试使用VPN连接公司内网发现无法打开单点登录网页 DNS解析没问题 服务器也能ping通 查了半天才发现是MTU的问题 win7的默认值1400 公司的华为设备设置的比这个值小 要根据具体的 ...

  10. gitee部署

    1.安装git 下载地址:https://npm.taobao.org/mirrors/git-for-windows/,拉到最下方选最新版,点击进去后选择对应windows版本的exe文件,默认安装 ...