辞書
- リストに似ていますが、代わりにインデックスのキーを使用します。
LISTS
- 値/要素のリスト、すべて1つの変数に格納することができます。
辞書のリストを使用してプログラムを改善します:
#!は/ usr / binに/ envをPythonの インポート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アドレスを\ n -------------- ---------------------------- " ) のために、クライアントでのresults_list: プリント(クライアント[ " IP " ] + " \ T \ T " +クライアント[ " MAC " ]) scan_result =スキャン(" 10.0.0.1/24 " ) print_result(scan_result)
結果:
Pythonコードを実行します。
#!は/ usr / binに/のenv Pythonの インポートscapyのようscapy.all インポートargparse デフget_arguments(): パーサ = argparse.ArgumentParser() parser.add_argument(" -t "、" --target "、DEST = " ターゲット"、ヘルプ= " ターゲット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 " +クライアント[ " マック" ]) オプション = get_arguments() scan_result = スキャン(options.target) print_result(scan_result )