Python寫安全小工具之TCP全連接端口掃描器
前言:
通過端口掃描我們可以知道目標(biāo)主機(jī)都開放了哪些服務(wù),下面通過TCP connect來實(shí)現(xiàn)一個(gè)TCP全連接端口掃描器。
一個(gè)簡單的端口掃描器
#!/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)超時(shí)時(shí)間為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飛機(jī)大戰(zhàn)游戲?qū)嵗v解
在本篇文章里小編給大家整理的是一篇關(guān)于python飛機(jī)大戰(zhàn)游戲?qū)嵗v解,有興趣的朋友們可以參考下。2020-12-12
python中pyplot基礎(chǔ)圖標(biāo)函數(shù)整理
在本篇文章里小編給大家整理的是一篇關(guān)于python中pyplot基礎(chǔ)圖標(biāo)函數(shù)整理的相關(guān)知識(shí)點(diǎn),有興趣的朋友們可以參考下。2020-11-11
解決django的template中如果無法引用MEDIA_URL問題
這篇文章主要介紹了解決django的template中如果無法引用MEDIA_URL問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python Selenium操作Cookie的實(shí)例方法
在本篇文章里小編給大家整理的是一篇關(guān)于Python Selenium操作Cookie的實(shí)例方法,有需要的朋友們可以學(xué)習(xí)參考下。2021-02-02
Tensorflow限制CPU個(gè)數(shù)實(shí)例
今天小編就為大家分享一篇Tensorflow限制CPU個(gè)數(shù)實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
flask框架配置mysql數(shù)據(jù)庫操作詳解
這篇文章主要介紹了flask框架配置mysql數(shù)據(jù)庫操作,結(jié)合實(shí)例形式詳細(xì)分析了flask框架配置mysql數(shù)據(jù)庫及連接訪問等相關(guān)操作技巧,需要的朋友可以參考下2019-11-11

