前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 扫描IP段 指定端口是否开放

Python 扫描IP段 指定端口是否开放

原创
作者头像
大师级码师
修改于 2021-11-02 05:35:52
修改于 2021-11-02 05:35:52
74300
代码可运行
举报
文章被收录于专栏:大师级码师大师级码师
运行总次数:0
代码可运行

Python 扫描IP段 指定端口是否开放

TCP21.py 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/local/bin/python
-- coding: UTF-8 --
#
#
qq:316118740
BLOG:http://hi.baidu.com/alalmn
Python 扫描IP段  指定端口是否开放
刚学写的不好请大家见谅
#
import socket
import threading,time
socket.setdefaulttimeout(10)  #设置了全局默认超时时间
查看IP端口是否开放
class socket_port(threading.Thread):
    def init(self,cond, name):
        super(socket_port, self).init()
        self.cond = cond
        self.cond.set()#将标识位设为Ture
        self.HOST = name
    def run(self):

    #time.sleep(1) #确保先运行Seeker中的方法
    try:
        PORT=21
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect((self.HOST,PORT))
        print""
        print self.HOST,u":",PORT,u"端口开放"
        #self.cond.wait()#堵塞线程,直到Event对象内部标识位被设为True或超时(如果提供了参数timeout)。
        self.cond.set()#将标识位设为Ture
        return 1
    except:
        print ".",
        #print self.HOST,u":",PORT,u"端口未开放"
        #self.cond.wait()#堵塞线程,直到Event对象内部标识位被设为True或超时(如果提供了参数timeout)。
        self.cond.set()#将标识位设为Ture
    return 0

#
socket_port("192.168.2.1")
if socket_port("192.168.2.100"):
print "开放"
else:
print "未开放"
def ip2num(ip):
    ip = [int(x) for x in ip.split('.')]
    return ip[0]<<24 | ip[1]<<16 | ip[2]<<8 | ip[3]
def num2ip(num):

#time.sleep(0.05) #50ms
#time.sleep(0.1) #s

data='%s.%s.%s.%s' % (  (num & 0xff000000) >> 24,
(num & 0x00ff0000) >> 16,
(num & 0x0000ff00) >> 8,
num & 0x000000ff  )
#socket_port(data)  #查看IP端口是否开放

if num>=IPend:
    print u"IP导入数组完成"
return '%s.%s.%s.%s' % (  (num & 0xff000000) >> 24,
                          (num & 0x00ff0000) >> 16,
                          (num & 0x0000ff00) >> 8,
                          num & 0x000000ff  )


def gen_ip(ip1,ip2):  #返回数组
ip
global IPend
start, IPend = [ip2num(x) for x in ip.split('-')]

global IPend
IPend=ip2
return [num2ip(num) for num in range(ip1,ip2+1) if num & 0xff]


import ini
if name=='main':
    ini.ini_get()  #读取INI
    list_ip=gen_ip(ip2num(ini.IP1),ip2num(ini.IP2))
    I1 = 0 #得到list的第一个元素
    print u"开始扫描IP"
    ip=0
    while I1 < len(list_ip):

    #print list_ip[I1]
    time.sleep(0.3) #确保先运行Seeker中的方法
    cond = threading.Event()
    hider = socket_port(cond,list_ip[I1])
    hider.start()
    if ip>=255:
        ini.ini_write(list_ip[I1],ini.IP2)  #修改INI
        print ip
        ip=0
    ip=ip+1
    I1 = I1 + 1   #一层



</pre> 

   ini.py 
#!/usr/local/bin/python
-- coding: UTF-8 --
#
qq:316118740
BLOG:http://hi.baidu.com/alalmn
Python 操作ini文件
刚学写的不好请大家见谅
#
IP1=""  #扫描IP
IP2=""   #当前已经扫到的IP
INITXT="IP.ini"  #INI文件名字
import ConfigParser
def ini_get():  #读取INI
    try:
        global IP1
        global IP2
        global INITXT
        config = ConfigParser.ConfigParser()
        config.readfp(open(INITXT))
        IP1 = config.get("ipdata","ip1")
        IP2 = config.get("ipdata","ip2")
    except:
        print "读取INI错误"
        ini_add("","")  #写入INI
def ini_add(ip1,ip2):  #写入INI
    try:
        global INITXT
        config = ConfigParser.ConfigParser()
        config.add_section("ipdata")# 设置section段及对应的值
        config.set("ipdata","ip1",ip1)
        config.set("ipdata","ip2",ip2)
        config.write(open(INITXT, "w"))# 写入文件
    except:
       print "写入INI错误"
def ini_write(ip1,ip2):  #修改INI
    try:
        global INITXT
        config = ConfigParser.ConfigParser()
        config.read(INITXT)
        if not config.has_section("ipdata"):#看是否存在该Section,不存在则创建
            temp = config.add_section("")
        config.set("ipdata","ip1",ip1)
        config.set("ipdata","ip2",ip2)
        config.write(open(INITXT, "r+"))
    except:
        print "修改INI错误"
        ini_add("","")  #写入INI
if name=='main':
ini_get()  #读取INI
print IP1
print IP2
#
ini_add("222222222","3333333333333")  #写入INI
ini_get()  #读取INI
print IP1
print IP2
#
ini_write("999999999","0000000000")  #修改INI
ini_get()  #读取INI
print IP1
print IP2</pre>

 运行python TCP21.py

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
GO语言实现的端口扫描器分享
//GO语言 实现端口扫描 //缺陷 //port 无法设置成全局变量不知道怎么设置的 //var l = list.New() 这个是数组操作并不是消息队列 跟消息队列功能类似 //实现功能 //实现生成 IP段 //实现端口扫描 //实现参数传入 //写入文件到本地 //main.go 58.215.20.30 58.215.201.30 80 //文件名 开始IP 结束IP 扫描端口 //QQ2929
李海彬
2018/03/19
2K0
python3--模块configparser,logging,collections
该模块适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值)
py3study
2018/08/02
5970
Python构建私有代理IP库
至此我们就利用Python构建了一个属于自己的私有代理库,在进行爬去的时候可方便从数据库中获取使用。
KaliArch
2018/04/21
2.9K5
Python构建私有代理IP库
python的ftp功能程序
# -*- coding: utf-8 -*- from ftplib import FTP import sys import datetime import os.path import ConfigParser time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') class Ftp:   def  __init__ (self,IP,USERNAME,PASSWD,URL,FILENAME):        """初始化ip和端口"""        self.IP=IP        self.USERNAME=USERNAME        self.PASSWD=PASSWD        self.URL=URL        self.FILENAME=FILENAME   def ftp_down(self):        try:             ftp=FTP(self.IP)        except Exception:             print "连接服务器失败"        try:             ftp.login(self.USERNAME,self.PASSWD)        except Exception:             print "登陆服务器失败"        ftp.cwd(self.URL)        ftp.voidcmd("TYPE I")        if  len(ftp.nlst(self.URL+os.sep+self.FILENAME)) != 0:             Datasock,estsize = ftp.ntransfercmd("RETR %s" % self.FILENAME )             Transbytes=0             FO=open(self.FILENAME,'wb')             while True:                 buf=Datasock.recv(2048)                 if not len(buf):                      break                 FO.write(buf)                 Transbytes+=len(buf)                 sys.stdout.write("Received %d" %Transbytes)                 if estsize:                      sys.stdout.write("of %d bytes (%.2f%%)\r\n"  % \                         (estsize,100.0 * float(Transbytes) / float(estsize)))                 else:                     sys.stdout.write("bytes\r")                 sys.stdout.flush()             sys.stdout.write("bytes\r")             FO.close()             Datasock.close()             ftp.voidresp()             ftp.quit()        else:             print "下载文件不存在!--%s" % self.FILENAME   def ftp_up(self):       """上传"""       try:             ftp=FTP(self.IP)       except Exception:             print "连接服务器失败"       try:             ftp.login(self.USERNAME,self.PASSWD)       except Exception:             print "登陆服务器失败"       ftp.cwd(self.URL)       ftp.voidcmd("TYPE I")       if os.path.isfile(self.FILENAME):            FO=open(self.FILENAME,'rb')      
py3study
2020/01/09
8400
python 配置文件读写
将代码中的配置项抽取到配置文件中,修改配置时不需要涉及到代码修改,避免面对一堆令人抓狂的 magic number,极大的方便后期软件的维护。
orientlu
2018/09/13
1.9K0
python基础学习16----模块
这种方式引入会相当于将模块中代码执行一遍,所以如果引入的模块中有输出语句,那么只写import 模块名,运行也会显示输出。
py3study
2020/01/19
4530
面向对象相关模块
大家好,又见面了,我是你们的朋友全栈君。 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等。 那么什么是摘要算法呢?摘要算法又称为哈希算法、散列算法。它通过一个函数,把任
全栈程序员站长
2022/07/21
2770
MYSQL 从项目经理的一次查询, 到PYTHON 解决问题(2) --传统企业使用MYSQL的问题
上一期的读者这个话题的读者浏览量不是太多,有点可惜了, 实际上这就是传统企业在使用MYSQL时的问题. 解决方案很多,作为上一期的续集,我想从几点来阐述一下传统企业使用MYSQL的一些问题. 1 不少传统企业的软件开发是外包性质的,外包企业都是有一些成熟的架构的,大部分企业支持的数据库的列表都包含MYSQL ,并且MYSQL也是大部分企业使用的开源数据库之一. 那问题在哪里
AustinDatabases
2021/04/22
5980
python开发_configparser_解析.ini配置文件工具_完整版_博主推荐
====================================================
Hongten
2018/09/13
5640
python开发_configparser_解析.ini配置文件工具_完整版_博主推荐
python 常用库使用(1)
写这篇文章的原因是 ddcw-ei-v1.1更完了,虽然后面不想写了. 但功能基本上都实现了. 把里面用到的一些技术和常用库分享记录下.
大大刺猬
2023/02/02
4010
Python_Nginx
利用 Python 实现 Nginx 启动/重启等一些操作 程序主文件 Nginx.py #!/usr/bin/python # _*_coding:utf-8_*_ # __author__ = 'yulong' # Good memory than rotten written import subprocess import sys import os import ConfigParser class Nginx(object):     conf = ConfigParser.ConfigPa
py3study
2020/01/13
8280
Python 常用模块续
在程序运行时保存数据的一种方法是把所有数据以格式化的方式写入一个简单的文本文件中,只要保存和装载的工具在所选格式上达成一致,我们就可以随心所欲地使用任何自定义格式。 1、pickle pickle模块将内存中的Python对象转化为序列化的字节流,这是一种可以写入任何类似文件对象的字节串,同时,pickle模块也可以根据序列化的字节流重新构建原来内存中的对象。 转换并写入文件:
py3study
2020/01/13
6150
Python 基于Python实现邮件发送
注:需要修改mimetypes.py文件(该文件可通过文章底部的网盘分享连接获取),否则会报错,类似如下
授客
2019/09/11
6360
Python 基于Python实现邮件发送
Python 实现批量查询IP并解析为归
    我接触Python时间也不是很久,实现方法可能会有疏漏。如果有什么疑问和见解,欢迎评论区交流。
py3study
2020/01/17
1.8K0
配置文件的选择_Cisco备份配置文件
file 对象方法 f.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()将整个文件内容作为一个字符串,读到文件尾时返回””(空字串)。 f.readline():返回一行。 f.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。 for line in f: print line :通过迭代器访问。
全栈程序员站长
2022/09/20
1.4K0
Python量化数据仓库搭建系列3:数据落库代码封装
本系列教程为量化开发者,提供本地量化金融数据仓库的搭建教程与全套源代码。我们以恒有数(UDATA)金融数据社区为数据源,将金融基础数据落到本地数据库。教程提供全套源代码,包括历史数据下载与增量数据更新,数据更新任务部署与日常监控等操作。
算法爱好者
2021/10/27
1K0
[Python黑帽] 三.编程实现IP及端口扫描器、实现多线程C段扫描器
声明:本人坚决反对利用教学方法进行恶意攻击的行为,一切错误的行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解技术背后的原理,更好地进行安全防护。虽然作者是一名安全小白,但会保证每一篇文章都会很用心地撰写,希望这些基础性文章对你有所帮助,在安全路上一起前行。
Eastmount
2021/12/02
1.5K0
[Python黑帽] 三.编程实现IP及端口扫描器、实现多线程C段扫描器
内网主机资产扫描那些事
本项目仅进行内网主机资产整理,无漏洞利用、攻击性行为,请使用者遵守当地相关法律,勿用于非授权测试,勿用于未授权扫描,如作他用所承受的法律责任一概与作者无关,下载使用即代表使用者同意上述观点。
释然IT杂谈
2020/05/11
2.4K0
Python自动化部署
# -*- coding: utf-8 -*- #!/bin/env python ''' #Auth: karl #Function: released version #Date:2017/6/27 #Version:V1.0 ''' import  sys,re,os,time,datetime import  paramiko import logging import socket import ConfigParser import traceback from progressbar impo
py3study
2020/01/07
8160
Python IP切换
        最近在笔记本重新安装了虚拟机,由于在家在公司经常需要切换IP,修改IP配置文件,觉得挺繁琐的,所以就索性的写了一个自动切换IP的脚本,主要是读配置文件修改,详情如下:
py3study
2020/01/06
1.4K0
相关推荐
GO语言实现的端口扫描器分享
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验