本文实例讲述了python实现的ip端口扫描工具类。分享给大家供大家参考,具体如下:
去年服务器老是被攻击,每次上线之后,上线的人急急忙忙下班,忘记关闭一些端口。导致有次服务器被攻破。损失严重。
这段时间再做仪器对接,把医疗器械对接到我们saas平台,有些仪器是通过网线进行数据传输的。通过网线进行数据传输,无非就是通过端口号进行传输交互,但是找不到说明书,国内搞仪器对接开发的也很少,所以网上开源的或者介绍的东西很少,对于我们来说,仪器是个黑盒,想要拿到里面的东西,还要自己去摸索,去试验,比较浪费时间,脑子一转就想到了之前自己写的端口扫描工具,连到一个局域网,一键找到开放的端口,直接端口链接上,拿到数据,分分钟解决了拿数据的问题。
所以好东西要分享出来。
目前我发现的用处:
1,服务器上线之后的扫描工具,那些端口要开放那些不能开放,扫一扫就知道了。
2,当确定对方是通过端口传输的,但是不知道端口号,是人是妖,你也扫一扫(用端口号去传输数据比蓝牙什么的快多了,只要你的数据足够大,上传和下载带宽可以打满你的手机所支持的带宽)。
3,想看看自己的手机那些端口号被开放了,在设置中找到自己的ip 或者下载个命令行执行工具 ifconfig下就知道了。
注意的是 不同的电脑不同的cpu 每次最多创建的线程是不一样的,可能创建线程过多,会报错,所以如果报错,自己修改下,每次扫描的个数,再剪成更小的段就可以了,或者再把seelp的时间设置的更长一些,保证能把0-65536之间的端口扫描一遍就可以了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# -*- coding:utf8 -*-
import socket, time, thread
import os
from time import sleep
socket.setdefaulttimeout( 1 )
def socket_port(ip,port):
try :
if port> = 65535 :
return
s = socket.socket(socket.af_inet, socket.sock_stream)
result = s.connect_ex((ip,port))
if result = = 0 :
lock.acquire()
print ip,u ':' ,port,u '端口开放'
lock.release()
s.close()
except exception,e:
pass
def ip_scan(ip):
"""
输入ip,扫描ip的0-65534端口情况
"""
try :
print u '开始扫描 %s' % ip
start_time = time.time()
for j in range ( 0 , 660 ):
for i in range (j * 100 , 100 * (j + 1 )):
thread.start_new_thread(socket_port,(ip, int (i)))
sleep( 0.1 ) #休眠 防止线程创建的过多报错(can not create new start thread)
print u '扫描端口完成,总共用时 :%.2f' % (time.time() - start_time)
except exception,e :
print u '扫描ip出错'
if __name__ = = '__main__' :
lock = thread.allocate_lock()
ip_scan( '192.168.3.37' )
|
运行结果:
希望本文所述对大家python程序设计有所帮助。
原文链接:https://blog.csdn.net/u014510302/article/details/79837284