"python":arp 스 크 립 트 의 두 가지 방법

4730 단어 python
"python":arp 스 크 립 트 의 두 가지 방법
첫 번 째 는 arping 도 구 를 사용 하 는 것 입 니 다.
#!/usr/bin/env python

import subprocess

import sys

import re



def arping(ipaddress = "192.168.1.1"):

    p = subprocess.Popen("/usr/sbin/arping -c 2 %s" % ipaddress, shell = True,

                            stdout = subprocess.PIPE)

    out = p.stdout.read()

    result = out.split()

    for item in result:

        if ":" in item:

            print item



if __name__ == "__main__":

    if len(sys.argv) > 1:

        for ip in sys.argv[1:]:

            print "arping", ip

            arping(ip)

    else:

        arping()

 
이런 방법 은 특정한 플랫폼 의 도구 에 의존 하 는데 전체적으로 시스템 호출 을 사용 한 것 이다.
두 번 째 는 scapy 를 사용 하 는데 이런 방법 은 플랫폼 의 무관 화 를 실현 할 수 있다.
#!/usr/bin/env python

from scapy import srp,Ether,ARP,conf

import sys



def arping(iprange="192.168.1.1/24"):

    conf.verb = 0

    ans,unans = srp(Enter(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()

좋은 웹페이지 즐겨찾기