小白第一次发博客,请各路大神不要喷,有错的地方还请不吝啬指教,谢谢。。。。。。。

因为注释基本上已经说清楚啦,在这里就不多说什么啦,知识不够怕误人子弟

# -*- coding:utf-8 -*-
import socket
import time
import threading def Scan(IpAddr,port,thread_num,i): number = 254 / thread_num #f每个线程将要处理的IP数
# 通过变量i来判断线程处理的哪个IP段,然后循环处理
for p in range(number * (i + 1),number * i,-1):
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 通过 IPV4协议 数据流 形式创建socket对象
addr = IpAddr + '.' + str(p) # IP地址
try:
s.connect((addr,int(port))) # 通过对端口进行连接来判断的开关
s.close()
print(addr) # 输出开该端口的IP地址
except socket.error:
pass
#如果该端口没有打开,是会抛出[10061] Connection refused等异常 def main(IpAddr,port,thread_num):
threads = [] # 线程列表
number = 254 / thread_num # 每个线程的处理的IP数
number_end = 254 % thread_num # 剩下的IP地址
num = range(thread_num) # 将创建的所有线程加入线程列表中
for i in num:
t = threading.Thread(target=Scan,args=(IpAddr,port,thread_num,i))
threads.append(t) # 启动所有线程
for i in num:
threads[i].start() # 挂起程序,等待所有线程结束
for i in num:
threads[i].join() # 这里是为了当在函数Scan传入的thread_num线程数不能整除254时,
# 会导致后面的IP地址漏扫描
if number_end > 0:
for i in range(255,number * thread_num):
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
addr_e = IpAddr + '.' + str(i)
try:
s.connect((addr_e,int(port)))
s.close()
print(addr_e)
except socket.error:
pass 测试代码:
if __name__=='__main__':

    IpAddr = raw_input('please input the IP segement:')
port = raw_input('please input the port:')
threadNum = raw_input('please input the number of threads:')
start_time = time.time()
main(IpAddr,port,int(threadNum))
end_time = time.time()
print('total time is : %s' %(end_time-start_time)) 效果:

please input the IP segement:172.16.135
please input the port:3389
please input the number of threads:20
172.16.135.12
172.16.135.11
172.16.135.48
172.16.135.60

....

指定端口号,多线程扫描局域网内IP地址的更多相关文章

  1. 使用Python检测局域网内IP地址使用情况

    来源:https://www.cnblogs.com/donlin-zhang/p/6812675.html 在测试环境搭建的过程中,经常需要给服务器分配静态IP地址,由于不清楚当前局域网内部哪些IP ...

  2. 局域网内ping [局域网内ip地址]命令详解

    一.工作过程 主机A向主机B发送一个ICMP请求报文[类型字段为8,代码字段为0],若收到ICMP回复报 文[类型字段为0,代码字段为0]则说明主机B处于活动状态:若超时未收到回复,则可能是 因为(1 ...

  3. 在windows命令行批量ping局域网内IP

    参考了博客园Alfred Zhao的文章<Windows平台ping测试局域网所有在用IP> 在cmd命令行运行如下命令即可: ,,) -w .%i | find "回复&quo ...

  4. Snmp协议应用-扫描局域网内打印机

    .h2cls { background: #6fa833 none repeat scroll 0 0 !important; color: #fff; font-family: "微软雅黑 ...

  5. MongoDB官方下载安装设置配置文件指定端口号

    1.)下载 官网(https://www.mongodb.com/)右上角try free  进入下载中心,下载指定版本 ZIP和MSI随便 如果浏览器下载的慢,可以直接使用下载地址,然后迅雷下 操作 ...

  6. Linux 开放指定端口号

    1.开启防火墙 [root@localhost opt]# systemctl start firewalld 2.查看当前防火墙状态 [root@localhost opt]# systemctl ...

  7. wifi智能插座 一键扫描局域网内插座Ip及其它信息 Python源代码API

    转载请保留原地址. http://www.cnblogs.com/lsqandzy 最近买了几个智能插座玩,插座安装在家里,连接好wifi,不管你人在哪里,通过手机,一键开启或关闭插座电源,想象一下, ...

  8. 扫描局域网内的ip和主机名

    1. 目的 今天发现我配置的一台电脑ip被人占用了,所以准备写个程序扫描一下局域网内所有正在使用的ip和主机名 2. 实现--直接上代码 import time import threading im ...

  9. 局域网内IP冲突怎么办

      对于在Internet和Intranet网络上,使用TCP/IP协议时每台主机必须具有独立的IP地址,有了IP地址的主机才能与网络上的其它主机进行通讯.但IP地址冲突会造成网络客户不能正常工作,只 ...

随机推荐

  1. vs2012配置opencv及简单测试

    为visual studio2012搭建openCV平台,实现打开图片. 实现步骤: 1.1.配置环境变量 基于win7操作系统的环境配置步骤: 1.1.1 计算机—>属性—>更改设置—& ...

  2. Java并发编程小记

    1. Semaphore 信号量是一种计数器,用来保护一个或者多个共享资源的访问.如果线程要访问一个共享资源,必须先获得信号量.若内部计数器大于0,则减1,若等于0,则线程进入休眠直至计数器大于等于0 ...

  3. CENTOS 挂载硬盘

    查看物理卷:pvs 查看卷组:vgs 列出分区:lvs 查看磁盘:ll /dev/disk/by-path/ 扫描 LVM 找到 VG vgscan centos 下 mount: unknown f ...

  4. PHP学习笔记,自己动手写个MVC的框架

    最新在大家自己的博客的过程中,发现各种开源的博客系统都或多或少的用起来别扭.于是想动手自己写个博客系统.既然写,就想好好写.那就先写个MVC框架.一点一点来.写的过程中有很多想法.还希望大家能够多多指 ...

  5. 命名空间 - PHP手册笔记

    概述 命名空间是一种封装事物的方法.在很多地方都可以见到这种抽象概念,比如在操作系统中,目录用来将相关文件分组,对于目录中的文件来说,目录就扮演了命名空间的角色.这个原理应用到程序设计领域就是命名空间 ...

  6. codeforces 518C. Anya and Smartphone

    C. Anya and Smartphone time limit per test 1 second memory limit per test 256 megabytes input standa ...

  7. MYSQL auto_increment 、default 关键字

    1. auto_increment: innoDB 中 表中只可以有一个列是auto_increment的,这个列还一定要是索引. create table T(X int auto_incremen ...

  8. 混合使用Azure LB和ILB访问相同web服务(1)

    在经典的使用场景中,我们一般使用AzureLoadBalancer来面向公网提供负载均衡服务,而使用Azure Internal Load Balancer提供内部那些不愿意将服务暴露给公网的服务,比 ...

  9. 蜂鸟A20开发板刷 cubietruck 的 SD 卡固件

    美睿视讯 为蜂鸟A20准备的 MerriiLinux 功能非常简陋.所以能用上主流的 debian 或者 LUbuntu 就可以说是非常迫切的需求了.蜂鸟A20(Merrii Hummingbird ...

  10. java反射 实例

    首先介绍几个概念: 1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时对象所属的类 2)可以判断运行时对象所具有的成员变量和方法 3)通过反 ...