程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python帶你入門安全測試

編輯:Python

今天我們聊一聊網絡端口掃描那些事,以及Python如何助力於端口掃描。無論今後你是否從事網絡安全或者安全滲透測試一職,只要你在測試,測開領域行走著,奔跑著,“網絡端口掃描”將是你知識技能儲備中不可或缺的一角。

  1. 閒聊:端口掃描那些事

端口掃描可視為一種監控技術,用來依次定位某個指定主機上可用的,開放的端口。一般而言,這類技術常見於網絡管理員,滲透測試人員甚至黑客等人的日常工作實踐中。這類人員可以根據當前工作任務需求,配置端口掃描器,最大程度地獲取目標系統中的信息。

通常經過對目標主機端口掃描後,可以獲取的信息主要包括:

(1)目標主機上開放的所有端口

(2)在每個端口上運行的服務及其相關信息

(3)目標主機的操作系統和MAC地址信息

我們可以把端口掃描想象成一個小偷悄悄進入一間房子(目標主機可視為房子),檢查每個門窗是否關好(端口可視作門窗),看看哪些門窗是打開的(哪些端口是開放的)。

在互聯網中,用於通信的是TCP/IP協議,該協議套件由兩個協議組成,即TCP和UDP。這兩種協議都有0到65535個端口。這些端口按范圍可分為如下三類:

(1)系統或公認端口: 0 —— 1023

(2)用戶或注冊端口:1024 —— 49151

(3)動態或私有端口: 49151 —— 65535

可見系統服務器上的端口眾多,但實際上常用的端口才幾十個,由此可以看出未定義的端口相當多。為了安全起見,通常建議關閉系統中不必要的端口,不對外開放。如此一來,我們就有超過65000個端口需要關閉。

  1. 使用 Socket 進行端口掃描

在上一篇文章中《測試人必會 —— Python帶你上手 Web Socket》,介紹了套接字相關知識。現在,我們將使用套接字構建一個簡單的端口掃描器。

使用套接字進行端口掃描器的構建,通過 Python 腳本實現如下:

from socket import *

import time

startTime = time.time()

if name == ‘main’:

target = input('需要掃描的主機: ')

t_IP = gethostbyname(target)

print('開始掃描主機: ', t_IP)

for i in range(100, 450):

print(‘當前正掃描端口號:’+str(i))

創建 socket 對象

s = socket(AF_INET, SOCK_STREAM)

socket.connect_ex(IP,port),如果端口連接成功 則返回 0

conn = s.connect_ex((t_IP, i))

if (conn == 0):

print(‘端口 %d: 處於開放狀態’ % (i,))

s.close()

print(‘掃描共花費的

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved