문제

저는 Python을 처음 접했으며 Python Network 조작 도구 인 SCAPY에 프로그래밍 문제가 있습니다. 그러나, 그것이 파이 스톤 뉴 비비 문제인 것만 큼 SCAPY 문제인지 알 수 없습니다. 에 SCAPY 사이트, 그들은 내 컴퓨터에서 실행할 수없는 샘플 프로그램을 제공합니다.

#! /usr/bin/env python

import sys
from scapy import sr1,IP,ICMP

p=sr1(IP(dst=sys.argv[1])/ICMP())
if p:
    p.show()

내가 얻는다 :

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    from scapy import sr1,IP,ICMP
ImportError: cannot import name sr1

그래서 내 질문은 : 파이썬 라이브러리를 설치할 때 경로 나 비슷한 것을 변경해야합니까? 또한 SCAPY 패키지의 내용을 알려주기 위해 통역사에서 실행할 수있는 것이 있습니까? 나는 뛸 수 있습니다 from scapy import * 괜찮지 만 내부에 무엇이 있는지 전혀 모르기 때문에 사용하기가 어렵습니다.

도움이 되었습니까?

해결책

Federico Ramponi의 경고를 통해 "SCAPY를 라이브러리가 아닌 자체 통역사로 사용해야합니다."

큐: Python 라이브러리를 설치할 때 경로 나 비슷한 것을 변경해야합니까?

ㅏ: 나는 당신이 변화에 대해 이야기하고 있다고 생각합니다 PYTHONPATH 시스템 전체. 이것은 일반적으로 필요하지 않거나 좋은 생각입니다.

타사 파이썬 라이브러리는 다음과 같은 시스템 디렉토리에 설치해야합니다. /usr/lib/python2.5/site-packages, 로컬로 설치되거나이 경우 설정할 수 있습니다. PYTHONPATH Makefile 또는 Driver Shell 스크립트에서.

큐: 또한 SCAPY 패키지의 내용을 알려주기 위해 통역사에서 실행할 수있는 것이 있습니까?

ㅏ: 당신은 다음과 같은 일을 할 수 있습니다 :

>>> import scapy
>>> dir(scapy)

또는 더 나은 :

>>> import scapy
>>> help(scapy)

보너스 질문은 의견으로 묻습니다.

큐: 'Scapy import *의'Import Scapy '가 동일합니까?

ㅏ: import scapy 로컬 네임 스페이스의 SCAPY 이름을 SCAPY 모듈 객체에 바인딩합니다. 오토, from scapy import * 모듈 이름을 바인딩하지는 않지만 SCAPY 모듈에 정의 된 모든 공개 이름은 로컬 네임 스페이스에 바인딩됩니다.

Python Reference 매뉴얼의 단락 6 및 7을 참조하십시오. 6.12 가져 오기 명세서.

다른 팁

SCAPY V2.X 사용에서도 같은 문제가있었습니다.

 from scapy.all import * 

대신 v1.x

 from scapy import *

서면으로 여기

즐기십시오 =)

SCAPY에서 SR1을 찾을 수 없다는 것을 알려줍니다. 당신이 얼마나 새로운 지 확실하지 않지만 통역사는 항상 당신의 친구입니다. 통역사를 발사하고 (명령 선에 "파이썬"을 입력), 프롬프트 (>>>) 유형 (그러나>를 입력하지 않으면 스스로 나타납니다).

>>> import scapy
>>> from pprint import pformat
>>> pformat(dir(scapy))

마지막 줄은 많은 것을 인쇄해야합니다. 'SR1', 'IP'및 'ICMP'가 어디에서나 보십니까? 그렇지 않은 경우 예제는 잘못입니다.

도움도 시도 (SCAPY)

그것은 SCAPY를 설치하지 않고 실제 소스 파일을 직접 보지 않고 당신을 도울 수있는 양에 관한 것입니다.

그만큼 Scapy 패키지는 네트워크 조작 및 모니터링을위한 도구입니다. 나는 당신이 그것으로 무엇을하려고하는지 궁금합니다. 친구들을 감시하는 것은 무례합니다. :-)

coventry@metta:~/src$ wget -q http://www.secdev.org/projects/scapy/files/scapy-latest.zip
coventry@metta:~/src$ unzip -qq scapy-latest.zip 
warning [scapy-latest.zip]:  61 extra bytes at beginning or within zipfile
  (attempting to process anyway)
coventry@metta:~/src$ find scapy-2.0.0.10 -name \*.py | xargs grep sr1
scapy-2.0.0.10/scapy/layers/dns.py:    r=sr1(IP(dst=nameserver)/UDP()/DNS(opcode=5,
scapy-2.0.0.10/scapy/layers/dns.py:    r=sr1(IP(dst=nameserver)/UDP()/DNS(opcode=5,
scapy-2.0.0.10/scapy/layers/inet6.py:from scapy.sendrecv import sr,sr1,srp1
scapy-2.0.0.10/scapy/layers/snmp.py:            r = sr1(IP(dst=dst)/UDP(sport=RandShort())/SNMP(community=community, PDU=SNMPnext(varbindlist=[SNMPvarbind(oid=oid)])),timeout=2, chainCC=1, verbose=0, retry=2)
scapy-2.0.0.10/scapy/layers/inet.py:from scapy.sendrecv import sr,sr1,srp1
scapy-2.0.0.10/scapy/layers/inet.py:            p = sr1(IP(dst=target, options="\x00"*40, proto=200)/"XXXXYYYYYYYYYYYY",timeout=timeout,verbose=0)
scapy-2.0.0.10/scapy/sendrecv.py:def sr1(x,filter=None,iface=None, nofilter=0, *args,**kargs):

마지막 줄에 따르면 sr1 정의 된 함수입니다 scapy.sendrecv. 누군가는 저자에게 문서 버그를 제출해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top