在网上的一些资料的基础上自己又添了些新内容,算是Python socket编程练手吧。
#coding=utf-8
import socket
import time
import sys
import struct
import threading
from threading import Thread,activeCount
results=[]
def portScanner(ip,port):
server = (ip,port)
sockfd = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sockfd.settimeout(0.1) #设置阻塞模式下socket的超时时间
ret = sockfd.connect_ex(server) #成功返回0,失败返回error的值。
if not ret:
sockfd.close()
results.append([ip,port])
#print '%s:%s is opened...' % (ip,port)
else:
sockfd.close()
pass
return ''
def ip2num(ip): #将ip地址转换成数字
lp = [int(x) for x in ip.split('.')]
return lp[0] << 24 | lp[1] << 16 | lp[2] << 8 |lp[3]
def num2ip(num):
ip = ['','','','']
ip[3] = (num & 0xff)
ip[2] = (num & 0xff00) >> 8
ip[1] = (num & 0xff0000) >> 16
ip[0] = (num & 0xff000000) >> 24
return '%s.%s.%s.%s' % (ip[0],ip[1],ip[2],ip[3])
def iprange(ip1,ip2):
num1 =socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip1)))[0])
num2 =socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip2)))[0])
tmp = num2 - num1
if tmp < 0:
return None
else:
return num1,num2,tmp
if __name__ == '__main__':
if((len(sys.argv)!= 4)&(len(sys.argv)!= 2)): #用法说明
print 'Usage:\n\tscanner.py startip endip port'
print '\tscanner.py ip'
sys.exit()
if len(sys.argv)==4: #对某一IP段的扫描
time_start=time.time() #起始时间
startip = sys.argv[1] #起始IP
endip = sys.argv[2] #结束IP
port = int(sys.argv[3]) #端口号
res = iprange(startip,endip)
if not res:
print 'endip must be bigger than startone'
sys.exit()
elif res[2] == 0:
portScanner(startip,port)
else:
for x in xrange(int(res[2])+1): #IP地址依次递增
startipnum = ip2num(startip)
startipnum = startipnum + x
if activeCount() <=1000:
Thread(target=portScanner,args=(num2ip(startipnum),port)).start()
print "There are %d hosts." %len(results)
results.sort()
for ip,port in results:
print "%s:%d is opened..." %(ip,port)
times=time.time()-time_start #用时
print 'use time : %s' % times
if len(sys.argv)==2:
time_start=time.time()
port=0
ip=sys.argv[1]
while(port<2000):
if activeCount() <= 40: #设置40线程扫描
Thread(target = portScanner, args = (ip, port)).start()
port=port+1
results.sort()
for ip,port in results:
print "%s:%d is opened..." %(ip,port)
times=time.time()-time_start
print 'use time : %s' % times
使用效果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# python端口扫描器
# python
# 扫描器
# python实现端口扫描
# 使用Python编写简单的端口扫描器的实例分享
# python nmap实现端口扫描器教程
# 用Python编写一个高效的端口扫描器的方法
# 使用Python3制作TCP端口扫描器
# 实例探究Python以并发方式编写高性能端口扫描器的方法
# python编写简单端口扫描器
# Python3多线程版TCP端口扫描器
# python 3.6.7实现端口扫描器
# 利用Python实现端口扫描器的全过程
# 基础上
# 转换成
# 大家多多
# 又添
# 端口号
# 在网上
# 模式下
# settimeout
# ret
# connect_ex
# SOCK_STREAM
# port
# ip
# server
# AF_INET
# sockfd
# ip2num
# return
# times
# int
相关文章:
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
常州自助建站费用包含哪些项目?
建站之星后台管理如何实现高效配置?
海南网站制作公司有哪些,海口网是哪家的?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
建站之星如何保障用户数据免受黑客入侵?
三星网站视频制作教程下载,三星w23网页如何全屏?
如何在VPS电脑上快速搭建网站?
建站之星如何快速解决建站难题?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
高防服务器如何保障网站安全无虞?
如何在Windows虚拟主机上快速搭建网站?
如何用5美元大硬盘VPS安全高效搭建个人网站?
如何在搬瓦工VPS快速搭建网站?
动图在线制作网站有哪些,滑动动图图集怎么做?
如何在阿里云通过域名搭建网站?
如何快速搭建高效香港服务器网站?
制作营销网站公司,淘特是干什么用的?
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何制作算命网站,怎么注册算命网站?
深圳网站制作案例,网页的相关名词有哪些?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
香港网站服务器数量如何影响SEO优化效果?
Android滚轮选择时间控件使用详解
如何选择高性价比服务器搭建个人网站?
平台云上自主建站:模板化设计与智能工具打造高效网站
如何快速生成橙子建站落地页链接?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
已有域名和空间,如何快速搭建网站?
如何在IIS7中新建站点?详细步骤解析
南平网站制作公司,2025年南平市事业单位报名时间?
如何快速上传建站程序避免常见错误?
网站制作的步骤包括,正确网址格式怎么写?
制作企业网站建设方案,怎样建设一个公司网站?
学校建站服务器如何选型才能满足性能需求?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
外贸公司网站制作哪家好,maersk船公司官网?
制作电商网页,电商供应链怎么做?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
建站主机与服务器功能差异如何区分?
如何快速搭建FTP站点实现文件共享?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
建站之星免费模板:自助建站系统与智能响应式一键生成
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
教程网站设计制作软件,怎么创建自己的一个网站?
建站之星如何配置系统实现高效建站?
如何在万网开始建站?分步指南解析
网站专业制作公司有哪些,做一个公司网站要多少钱?
*请认真填写需求信息,我们会在24小时内与您取得联系。