사전
- 목록 유사하지만, 대신 인덱스의 키를 사용합니다.
기울기
- 값 / 요소 목록은 모두 하나 개의 변수에 저장할 수 있습니다.
사전의 목록을 사용하여 프로그램을 개선 :
# !는 / usr / 빈 / ENV 파이썬 수입 scapy.all scapy 같이 데프 스캔 (IP) : arp_request = scapy.ARP (pdst = IP) 방송 = scapy.Ether (DST = " FF : FF : FF : FF : FF : FF " ) arp_request_broadcast = 브로드 캐스트 / arp_request answered_list = scapy.srp (arp_request_broadcast, 초과 = 1, = 상세 거짓) [0] clients_list = [] 를위한 소자 에 answered_list : clients_dict = { " IP " : 소자 [1] .psrc, " 맥" : 소자 [1 ]} .hwsrc clients_list.append (clients_dict) 반환 clients_list DEF print_result (results_list) 인쇄 ( " IP \ t \ t \ TMAC 주소 \ 없음 -------------- ---------------------------- " ) 에 대한 클라이언트 의 results_list : 인쇄 (클라이언트 [ " IP " ] + " \ t \ t " 클라이언트 + [ " MAC " ]) scan_result = 검사 ( " 10.0.0.1/24 " ) print_result (scan_result)
결과:
파이썬 코드를 작성합니다 :
# 는 / usr / 빈 / ENV 파이썬! 수입 scapy의 같은 scapy.all 수입 argparse 데프 get_arguments () : 파서 = argparse.ArgumentParser () parser.add_argument ( " -t " , " --target " , 이명 령 = " 대상 " , 도움말 = " 대상 IP / IP 범위. " ) 옵션 = parser.parse_args () 반환 옵션 데프 스캔 (IP) : arp_request = scapy.ARP (pdst = IP) 방송= scapy.Ether (DST = " FF : FF : FF : FF : FF : FF ' ) arp_request_broadcast = 브로드 캐스트 / arp_request answered_list = scapy.srp (arp_request_broadcast, 초과 = 1, 장황 = 거짓) [0] clients_list = [] 를위한 소자 의 answered_list : clients_dict = { " IP " : 소자 [1] .psrc는 " MAC " : 소자 [1 ]} .hwsrc clients_list.append (clients_dict)를 반환 clients_list DEF : print_result (results_list) 프린트( " IP \ t \ t \ TMAC 주소 \ n을 -------------------------------------- ---- " ) 에 대한 클라이언트 의 results_list : 인쇄 (클라이언트 [ " IP " ] + " \ t \ t ' + 클라이언트 [ " MAC " ]) 옵션 = get_arguments () scan_result = 주사 (options.target) print_result (scan_result )