2014-11-30 1 views
0

나는 파이썬 책을 읽고 있는데, scapy, Python 툴/모듈을 사용하는 스크립트가 있으며, 호스트에있는 서브넷을 스캔하여 IP를 다시보고합니다. 및 MAC 주소. 이 스크립트는 /usr/bin/arping을 호출했던 이전 스크립트의 기능 향상입니다. 이전 스크립트는 한 번에 하나의 IP 주소 만 허용했으며 플랫폼은 arping 도구를 사용할 수 있는지에 따라 다릅니다. 분명히,이 스크립트 (저를 위해 작동하지 않습니다)는 플랫폼 독립적입니다!Python Scapy Arp Scanning 서브넷 스크립트 책에서

누군가가 스크립트를 살펴보고 디버깅 할 수 있다면 멋질 것입니다. 다음은 스크립트입니다.

#! /usr/bin/env python 

from scapy.all import srp 
from scapy.all import Ether, ARP, conf 

import sys 

def arping(iprange="10.0.1.0/24"): 
    """Arping function takes IP Address or Network, returns nested mac/ip list""" 

    #conf, verb = 0 
    ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=iprange), timeout=2) 

    collection = [] 
    for snd, rcv in ans: 
     result = rcv.sprintf(r"%ARP.psrc% %Ether.src%").split() 
     collection.append(result) 
    return collection 

if __name__ == "__main__": 
    if len(sys.argv) > 1: 
     for ip in sys.argv[1:]: 
      print "arping", ip 
      print arping(ip) 

    else: 
     print arping() 

스크립트가 작동하지 않습니다. 그것은 단지 물건을 스캔하고 있지만 아무것도 발견되지 않았다는 것을 인쇄합니다.

이 웹 사이트를 살펴본 결과, 제대로 작동하지 않는 자습서를 발견했습니다. 관련 내용이 그 웹 사이트는 여기에 있습니다 :

[email protected]:~/Desktop/pyFun2$ gedit arp_scanz.py 
[email protected]:~/Desktop/pyFun2$ sudo python arp_scanz.py 
WARNING: No route found for IPv6 destination :: (no default route?) 
Begin emission: 
Finished to send 256 packets. 

Received 0 packets, got 0 answers, remaining 256 packets 
[] 

사람이 거기에 내가 놓친 거지 알고 있나요 : http://www.secdev.org/projects/scapy/doc/usage.html#arp-ping

하십시오,이 스크립트를 실행할 때 내가 얻을 출력 샘플은 아래를 참조?

UPDATE - 솔루션 변경 SRP 함수 나 메서드 호출과 같이에서 스캔 정확한 인터페이스를 지정합니다 :

ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=iprange),iface="en1", timeout=2) 

답변

1

사물의 모든 숫자가 될 수 없습니다. 유효한 IP 시작점을 사용하여 내 네트워크에서 제대로 실행되는 스크립트를 갖고있는 것 같습니다.

적절한 IP 범위를 설정하고 있습니까?

는 예를 들어 I가 사용

scapy의 arping() 함수에 내장 올바른 결과와 동일한 결과를 생성
def arping(iprange="192.168.1.*"): 

.

그래서 나는 아마도 코드가 아니라 시도하려는 범위라고 생각합니다.

+0

컴퓨터에서 이것을 테스트하고 유용한 조언을 제공해 주셔서 감사합니다. 스캔 할 인터페이스를 지정해야한다는 것을 알았습니다. 내 문제였습니다. 또한 대화 형 셸에서'arping()'메서드를 사용하면'sudo' 명령으로 파이썬 대화 형 셸을 연 후에도 동일한 결과를 반환한다는 것을 알았습니다. 어제 밤 왜 작동하지 않았는지 모르겠습니다. 어쩌면 내 컴퓨터를 재부팅해야 할 필요가 있었을 것입니다. 아니면 너무 피곤해서 작은 세부 사항을 놓친 것일 수도 있습니다. 위의'srp '에 대한 나의 호출은 이제 검사 할 인터페이스를 지정하는 것을 보아라. : D –

+0

내가 사용하고있는 범위가 아니었지만 실제로는 다른 사람을 위해 일한이 끔찍한 스크립트를 몰랐습니다. 이를 알아 내고 결과를보고 해 주셔서 감사합니다. 이것은 동기 부여 ... 나는 내가 'CIDR 표기법'이라고 불리는 것 (즉, '192.168.1.0/24')을 사용하여 범위를 지정할 수도 있음을 발견했습니다. 서브넷에서'192.168.1. * '과 같이 모든 것을 검색합니다. D –