用Python编写一个简单的主机端口扫描程序

效果图:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASVTliJjlkYA=,size_20,color_FFFFFF,t_70,g_se,x_16

 代码:

# 实验六主机端口扫描程序

import socket

import tkinter.messagebox

from tkinter import *

from socket import *

 

class Scan:

    def __init__(self):

        self.fu = Tk()

        self.fu.title("端口扫描序")

 

        # 使用容器小组件

        frame = Frame(self.fu)

        frame.pack()

        # 定义一个标签

        self.label1 = Label(frame, text=" IP地址、域名:",)

        self.label2 = Label(frame,text=" 起始端口(最小为1):")

        self.label3 = Label(frame, text="结束端口(最大为65535):")

        # 定义单行文本框

        self.strs1 = StringVar()

        self.entryip1 = Entry(frame, selectbackground="red", selectforeground="green", bd="3", relief='groove',

                             textvariable=self.strs1)

        self.strs2 = StringVar()

        self.entryip2 = Entry(frame, selectbackground="red", selectforeground="green", bd="3", relief='groove',

                              textvariable=self.strs2)

        self.strs3 = StringVar()

        self.entryip3 = Entry(frame, selectbackground="red", selectforeground="green", bd="3", relief='groove',

                              textvariable=self.strs3)

        # 定义一个按钮

        self.button = Button(self.fu, text="扫描",command=self.saomiao)

        self.button.pack()

 

 

 

        # 规划位置

        self.label1.grid(row=1, column=1)

        self.label2.grid(row=2, column=1)

        self.label3.grid(row=3, column=1)

 

        self.entryip1.grid(row=1, column=2)

        self.entryip2.grid(row=2, column=2)

        self.entryip3.grid(row=3, column=2)

 

        self.fu.geometry("500x300+100+200")

        # 设置多行文本框

        self.text1 = Text(self.fu)

        self.text1.pack()

 

 

        self.fu.mainloop()

    def saomiao(self):

        self.text1.delete("1.0", "end")

        try:

            if int(self.strs2.get())<int(self.strs3.get()):

                for port in range(int(self.strs2.get()), int(self.strs3.get())+1):

                    try:

                        s = socket()

                        s.connect((self.strs1.get(), port))

 

                        f1 = self.strs1.get()+":"+("%d")%port+"端口已开放"

self.text1.insert(END, f1+"\n")

                        s.close()

                    except Exception as e:

                        f2 = self.strs1.get()+":"+"%d"%port+"端口未开放"

                        self.text1.insert(END,f2+"\n")

 

                self.text1.insert("end", "扫描完成!\n")

            else:

                tkinter.messagebox.showerror("error", "请输入正确范围内的端口号")

        except Exception as e:

            tkinter.messagebox.showerror("error", "请输入正确的端口号")

 

Scan()

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT刘呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值