Python寫安全小工具之TCP全連接端口掃描器
前言:
通過端口掃描我們可以知道目標(biāo)主機(jī)都開放了哪些服務(wù),下面通過TCP connect來實(shí)現(xiàn)一個TCP全連接端口掃描器。
一個簡單的端口掃描器
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from socket import *
def portScanner(host,port):
try:
s = socket(AF_INET,SOCK_STREAM)
s.connect((host,port))
print('[+] %d open' % port)
s.close()
except:
print('[-] %d close' % port)
def main():
setdefaulttimeout(1)
for p in range(1,1024):
portScanner('192.168.0.100',p)
if __name__ == '__main__':
main()說明:
- 原理:對不同端口進(jìn)行TCP連接,根據(jù)是否連接成功來判斷端口是否打開
- AF_INET指定使用IPv4協(xié)議,SOCK_STREAM指定使用面向流的TCP協(xié)議
- connect((host, port)),向指定的IP:端口發(fā)起連接
- setdefaulttimeout(1),默認(rèn)超時時間為1秒
多線程版本
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from socket import *
import threading
lock = threading.Lock()
openNum = 0
threads = []
def portScanner(host,port):
global openNum
try:
s = socket(AF_INET,SOCK_STREAM)
s.connect((host,port))
lock.acquire()
openNum+=1
print('[+] %d open' % port)
lock.release()
s.close()
except:
pass
def main():
setdefaulttimeout(1)
for p in range(1,1024):
t = threading.Thread(target=portScanner,args=('192.168.0.100',p))
threads.append(t)
t.start()
for t in threads:
t.join()
print('[*] The scan is complete!')
print('[*] A total of %d open port ' % (openNum))
if __name__ == '__main__':
main()說明:
- 使用多線程,1、t = threading.Thread() 2、t.start() 3、t.join()
- 多線程要保證線程安全(共享變量的一致性)就要對處理共享變量的代碼段加鎖
到此這篇關(guān)于Python寫安全小工具之TCP全連接端口掃描器的文章就介紹到這了,更多相關(guān)Python TCP端口掃描器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+Pygame實(shí)現(xiàn)經(jīng)典魂斗羅游戲
《魂斗羅》(Contra)是由Konami于1987年推出的一系列卷軸射擊類單機(jī)游戲。本文將利用Python中的Pygame庫實(shí)現(xiàn)這一經(jīng)典游戲,感興趣的可以了解一下2022-05-05
Python unittest 簡單實(shí)現(xiàn)參數(shù)化的方法
今天小編就為大家分享一篇Python unittest 簡單實(shí)現(xiàn)參數(shù)化的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
利用Pycharm將python文件打包為exe文件的超詳細(xì)教程(附帶設(shè)置文件圖標(biāo))
在日常使用pycharm寫好程序后,如何將程序打包為exe文件呢,下面這篇文章主要給大家介紹了關(guān)于利用Pycharm將python文件打包為exe文件的超詳細(xì)教程,附帶設(shè)置文件圖標(biāo),需要的朋友可以參考下2022-08-08
Python操作Excel把數(shù)據(jù)分給sheet
這篇文章主要介紹了Python操作Excel把數(shù)據(jù)分給sheet,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
解決tf.keras.models.load_model加載模型報(bào)錯問題
這篇文章主要介紹了解決tf.keras.models.load_model加載模型報(bào)錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
Python實(shí)戰(zhàn)之自動發(fā)送郵件的實(shí)現(xiàn)
自動發(fā)送郵件能應(yīng)用于許多場景,下面本文就來和大家講講怎么用Python構(gòu)建一個自動發(fā)送郵件的腳本。感興趣的小伙伴可以動手嘗試一下2022-05-05
Python隨機(jī)數(shù)random模塊使用指南
本文給大家分享的是Python隨機(jī)數(shù)random模塊的幾個常用的方法,非常的簡單,小伙伴們喜歡的話,后續(xù)繼續(xù)深入探討2016-09-09
Python?logging日志模塊的概念與實(shí)踐講解
本文通過具體的代碼示例為大家解釋了如何高效地使用logging模塊進(jìn)行日志記錄,以及如何避免常見的陷阱,希望可以幫助大家更好地掌握這個強(qiáng)大的工具2023-07-07

