python使用scapy掃描內(nèi)網(wǎng)IP或端口的方法實(shí)現(xiàn)
地址信息在IP層, 可以利用 ICMP 或 ARP 協(xié)議數(shù)據(jù)包探測IP信息.
ICMP協(xié)議可以利用ping工具發(fā)送數(shù)據(jù)包, 但是防火墻有可能禁止ICMP, 無法有效探測, 可以考慮使用ARP探測.
利用ICMP協(xié)議探測內(nèi)網(wǎng)IP
def ping_ip(ip_fex):
# 掃描范圍: 128~254
for i in range(128, 255):
ip = f'{ip_fex}.{i}'
print(f'\r{ip}', end='')
output = os.popen(f'ping -n 1 -w 100 {ip} | findstr TTL=').read()
if len(output) > 0:
print(f"\n{ip} online")
if __name__ == '__main__':
ping_ip('192.168.110')
利用ARP協(xié)議探測內(nèi)網(wǎng)IP
def ip_thread(start, ip_fex):
for i in range(start, start + 20):
ip = f'{ip_fex}.{i}' # 目標(biāo)ip
try:
pkg = ARP(psrc=f'{ip_fex}.1', pdst=ip) # 偽造ARP廣播
reply = sr1(pkg, timeout=1, verbose=False) # 發(fā)送ARP并獲取響應(yīng)包
if reply:
print(f'\n{ip}->{reply[ARP].hwsrc}') # 顯示MAC地址
else:
print(f'\r{ip} ...', end='')
except Exception as e:
print(e)
def ip_scan(ip_fex):
# 關(guān)閉警告
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
# 端口范圍 1~254
for i in range(1, 255, 20):
threading.Thread(target=ip_thread, args=(i, ip_fex)).start()
利用TCP協(xié)議探測端口
端口信息在TCP層, 可以使用TCP協(xié)議數(shù)據(jù)包探測端口是否開放
偽造 SYN 數(shù)據(jù)包, 根據(jù)響應(yīng)數(shù)據(jù)中的標(biāo)志位 flags 來判斷端口是否正常響應(yīng).
SYN: 0x002
ACK: 0x010
SYN-ACK: 0x012
def scan_port(ip):
for port in range(22, 100):
try:
pkg = IP(src='192.168.112.123', dst=ip) / TCP(dport=port, flags='S')
reply = sr1(pkg, timeout=1, verbose=False)
if reply:
if reply[TCP].flags == 0x12: # SYN-ACK
print(f'port->[{port}]')
except Exception as e:
print(e)到此這篇關(guān)于python使用scapy掃描內(nèi)網(wǎng)IP或端口的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python scapy掃描內(nèi)網(wǎng)IP或端口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中利用all()來優(yōu)化減少判斷的實(shí)例分析
在本篇文章里小編給大家整理的是一篇關(guān)于Python中利用all()來優(yōu)化減少判斷的實(shí)例分析內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2021-06-06
Python實(shí)現(xiàn)的文本簡單可逆加密算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的文本簡單可逆加密算法,結(jié)合完整實(shí)例形式分析了Python自定義加密與解密算法具體實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2017-05-05
Python實(shí)現(xiàn)霍夫圓和橢圓變換代碼詳解
這篇文章主要介紹了Python實(shí)現(xiàn)霍夫圓和橢圓變換代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
執(zhí)行python腳本并傳入json數(shù)據(jù)格式參數(shù)方式
這篇文章主要介紹了執(zhí)行python腳本并傳入json數(shù)據(jù)格式參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
Django數(shù)據(jù)庫類庫MySQLdb使用詳解
Django項(xiàng)目要操作數(shù)據(jù)庫,首先要和數(shù)據(jù)庫建立連接,才能讓程序中的數(shù)據(jù)和數(shù)據(jù)庫關(guān)聯(lián)起來進(jìn)行數(shù)據(jù)的增刪改查操作。這篇文章主要介紹了Django數(shù)據(jù)庫類庫MySQLdb使用詳解,感興趣的小伙伴們可以參考一下2019-04-04
如何優(yōu)雅地改進(jìn)Django中的模板碎片緩存詳解
這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅地改進(jìn)Django中的模板碎片緩存的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
python調(diào)用jenkinsAPI構(gòu)建jenkins,并傳遞參數(shù)的示例
這篇文章主要介紹了python調(diào)用jenkinsAPI構(gòu)建jenkins,并傳遞參數(shù)的示例,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-12-12

