2016-08-13 1 views
1
#!/usr/bin/python3 
#Fazer arping da conexao 

import sys 
from datetime import datetime 
from scapy.all import * 

try: 
    interface = input ("\n[*] Set interface: ") 
    ips = input("[*] Set IP RANGE or Network: ") 
except KeyboardInterrupt: 
    print("\n user aborted") 
    sys.exit() 

print("Scanning...") 
start_time = datetime.now() 

conf.verb = 0 

ans,unans = srp(Ether(dst = "ff:ff:ff:ff:ff:ff")/ARP(pdst = ips), timeout = 2, iface = interface ,inter= 0.1) 

print("\n\tMAC\t\tIP\n") 

for snd,rcv in ans: 
    print(rcv.sprintf("%Ether.src% - %ARP.psrc%")) 

stop_time = datetime.now() 
total_time = stop_time - start_time 
print("\n[*] Scan Completed") 
print("[*] Scan Duration: %s" %(total_time)) 

인터넷에서이 코드를 발견했으며이를 이해하려고합니다. 이해가 didnt가 :ARP 스캐닝 프로그램

ans,unans = srp(Ether(dst = "ff:ff:ff:ff:ff:ff")/ARP(pdst = ips), timeout = 2, iface = interface ,inter= 0.1) 

을 튜플 ans,unans가있는 이유는 무엇입니까? 무엇을 inter= 0.1입니까?

for snd,rcv in ans: 
     print(rcv.sprintf("%Ether.src% - %ARP.psrc%")) 

나는 rcv.sprintf을 이해하지 못했습니다. 이게 뭐야? 인쇄 대신 rcv.sprintf를 사용하는 이유는 무엇입니까? conf.verb = 0은 무엇입니까?

누군가 설명 할 수 있습니까? 코드에 대해

+2

이 질문은 설명서를 찾는 것만으로 쉽게 해결할 수 있습니다. 여기 좀 봐 : http://www.secdev.org/projects/scapy/doc/usage.html – mweerden

+0

conf.verb를 찾지 못했습니다 ... –

+0

실제로 그 중 하나를 찾는 것이 더 힘들지만 그 이름은 큰 단서를 줘. "verb : 0 (거의 음소거)에서 3 (자세한 verbose)까지의 자세한 표시 수준"(https://fossies.org/dox/scapy-2.3.1/config_8py_source.html) – mweerden

답변

3

:이 코드는 무엇을

ans,unans = srp(Ether(dst = "ff:ff:ff:ff:ff:ff")/ARP(pdst = ips), timeout = 2, iface = interface ,inter= 0.1) 

은 매우 간단합니다. srp funtion을 사용하여 패킷을 보내고 응답을받습니다.이 경우 패킷은 프로토콜 (이더넷 및 ARP)에 의해 생성됩니다. 이러한 프로토콜이 무엇을하는지 이해하려면 최소한 기본적인 네트워킹 배경이 있어야합니다. 그러나 어쨌든이 코드는 pdst 매개 변수로 지정된 ip에 해당 mac 주소를 말하도록 요청합니다.

터플에서 ans,unans 매개 변수는 srp 함수의 응답으로 저장됩니다.

또한 inter 매개 변수를 사용하면 두 패킷 사이의 대기 시간 간격을 지정할 수 있습니다.

rcv.sprintf에 관해서도 나는 그것을 이해하지 못했습니다. 이 때 그래서 당신은 터미널에서 너무 많은 출력을 얻을하지 않는 0 scapy의 상세를 설정하는 것입니다 않습니다 무엇 conf.verb = 0 변수로

print rcv[ARP].psrc 
print rcv[Ether].src 

: 당신은 아마도 같은 매우 간단한 무언가를 쓸 수 프로그램을 실행하십시오.

+1

인터 = 0.1은 무엇입니까? @coder –

+1

, 어디에서 conf.verb = 0을 찾았습니까? 나는 그것을 많이 보았다. ... –

+1

@Paul Sigonoso, inter = 0.1은 패킷/시간의 비율이다. 0.1 초 만에 다음 패킷을 가질 것이다. 두 번째 주석의 경우 네트워크 프로그래밍에 대한 실용적인 책을 읽고 기본적으로 scapy. – coder

1
1, 왜 튜플 ans가 있습니까?

A : srp return answeredunanswered 패킷이므로 터플입니다. srp function

2, Whats is inter = 0.1?

대답 : inter은 응답이없는 패킷을 다시 보내거나 더 이상 패킷에 응답하지 않을 때 다시 시도하는 간격입니다. srp 함수 호출 sndrcvinter 인수는 내가 rcv.sprintf을 이해 didnt는, sndscv function

3을 참조하십시오. 이게 뭐야? 인쇄 대신 rcv.sprintf를 사용하는 이유는 무엇입니까?

A : directives.A 포맷 지시자를 포함 할 수있는 문자열로 시작 sprintf 출력 STR은 %로 끝나고 다음 형식 %[fmt[r],][cls[:nb].]field%있다. 세부 사항은 여기 sprintf function입니다.

4, conf.verb = 0은 무엇입니까?

A : 'conf.verb': 자세한 수준, 0 (거의 음소거)에서 3 (자세한)까지입니다. verb of Conf Class