python安全攻防---信息收集---ICMP主机探测 以及optionparser的使用
生活随笔
收集整理的這篇文章主要介紹了
python安全攻防---信息收集---ICMP主机探测 以及optionparser的使用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
0x01 基礎(chǔ)概念
ICMP(Internet control Message Protocal)Internet報(bào)文協(xié)議,是TCP/IP的一種子協(xié)議,屬于網(wǎng)絡(luò)層協(xié)議,其目的是用于在IP主機(jī)、路由器之間傳遞控制信息
0x02 程序
程序
# -*- coding:utf-8 -*- from scapy.all import * from random import randint from optparse import OptionParserdef Scan(ip):'''Scan函數(shù)通過調(diào)用ICMP,將構(gòu)造好的請(qǐng)求包發(fā)送到目的地址,并根據(jù)目的地址的應(yīng)答數(shù)據(jù)判斷目標(biāo)主機(jī)是否存活。存活的IP地址打印出“xx.xx.xx.xx--->Host is up",不存活的主機(jī)打印出"xx.xx.xx.xx--->Host is down"::param ip::return:'''ip_id = randint(1,65535)icmp_id = randint(1,65535)icmp_seq = randint(1,65535)packet = IP(dst=ip,ttl=64,id=ip_id)/ICMP(id=icmp_id,seq = icmp_seq)/b'rootkit'result = sr1(packet,timeout=1,verbose=False)if result:for rcv in result:scan_ip = rcv[IP].srcprint(scan_ip+'--->''Host is up')else:pass# print(ip+'---> host is down')def main():parser = OptionParser("usage:%prog -i <target host>")#輸出幫助信息parser.add_option("-i",type='string',dest='IP',help='specify target host')#獲取IP地址參數(shù)options,args = parser.parse_args()print("Scan report for"+options.IP+"\n")#判斷是單臺(tái)主機(jī)還是多臺(tái)主機(jī)#IP中存在-,說明是要掃描多臺(tái)主機(jī)if '-' in options.IP:#代碼舉例:192.168.1.1-120#通過'-'進(jìn)行分割,把192.168.1.1和120分開#把192.168.1.1通過','進(jìn)行分割,取最后一個(gè)數(shù)作為range函數(shù)的start,然后把120+1作為range函數(shù)的stop#這樣循環(huán)遍歷出需要掃描的IP地址for i in range(int(options.IP.split('-')[0].split('.')[3]),int(options.IP.split('-')[1])+1):Scan(options.IP.split('.')[0]+'.'+options.IP.split('.')[1]+'.'+options.IP.split('.')[2]+'.'+str(i))time.sleep(0.2)else:Scan(options.IP)print("\nScan finished!...\n")if __name__ == '__main__':try:main()except KeyboardInterrupt:print("interrupted by user,killing all threads...")結(jié)果:
0x03 分析
關(guān)于optionparser的使用
- OptionParser()不要求一定要傳遞參數(shù)
- add_option添加命令行參數(shù)
- 最后調(diào)用parse_args()解析命令行形參
這里要特別注意options和args,options訪問值是options.參數(shù)名,args是一個(gè)列表
例如:
我們命令行輸入:
python test.py -s 192.168.142.145 -P 80 -u name -p 123456 111 22 333輸出結(jié)果:
這里重點(diǎn)看懂:
- options獲取的是哪些值?就是我們dest值以及參數(shù)值,比如-p 80,options里的值是'port':80
- args獲取的是哪些值?就是除了參數(shù)和參數(shù)值以外的,這里是['111', '22', '333'],這個(gè)是列表類型
- 如何獲取特定參數(shù)值?使用options.dest值
- 使用OptionParser的三步驟,創(chuàng)建對(duì)象—》添加參數(shù)----》獲取輸入值
雖然我們沒有添加-h,我們依然可以使用-h獲取幫助文檔
這里看明白,main函數(shù)基本就能看懂了,對(duì)于Scan函數(shù),使用的是scapy模塊的一些知識(shí),可以這篇文章:
https://blog.csdn.net/qq_41683305/article/details/117436197
main主要用來獲取IP地址的,并將IP地址依次傳入Scan函數(shù)進(jìn)行就行判斷,是否存在該主機(jī)
0x04 參看文章
https://www.cnblogs.com/blacksunny/p/5315545.html
總結(jié)
以上是生活随笔為你收集整理的python安全攻防---信息收集---ICMP主机探测 以及optionparser的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天猫魔屏M2如何强刷机更改系统界面?
- 下一篇: 第一章 基础知识---1.4Crack小