سؤال

أنا جديدة نسبيا الثعبان و أواجه مشاكل البرمجة مع Scapy ، بيثون الشبكة أداة التلاعب.ومع ذلك لا أستطيع أن أقول إذا كان قدر Scapy المشكلة كما هو كائن-a-الثعبان-مبتدئ المشكلة.على 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 * على ما يرام, ولكن منذ ليس لدي أي فكرة ما هو داخل في ذلك ، من الصعب استخدامه.

هل كانت مفيدة؟

المحلول

مع التحذير من فيديريكو Ramponi "يجب استخدام scapy كمترجم بها ، ليست مكتبة" أريد أن الجواب غير scapy-أجزاء محددة من السؤال.

Q: عند تثبيت بيثون المكتبات ، هل أنا بحاجة إلى تغيير مسار أو أي شيء مشابه ؟

A: أعتقد أنك تتحدث عن تغيير PYTHONPATH على نطاق المنظومة.هذا هو عادة غير مطلوب أو فكرة جيدة.

طرف ثالث المكتبات بيثون إما أن يكون مثبتا في دلائل النظام ، مثل /usr/lib/python2.5/site-packages, أو المثبتة محليا ، وفي هذه الحالة قد ترغب في تعيين PYTHONPATH في Makefile أو في برنامج تشغيل شيل.

Q: أيضا, هل هناك شيء يمكنني تشغيل في المترجم أن تخبرني محتويات scapy الطرد ؟

A: يمكنك أن تفعل شيئا مثل هذا:

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

أو حتى أفضل:

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

مكافأة سؤال في تعليق.

Q: هو 'استيراد scapy' نفس 'من scapy استيراد *'?

A: import scapy يربط scapy اسم في مساحة الاسم إلى scapy وحدة الكائن.OTOH, from scapy import * لا ربط اسم الوحدة النمطية ، ولكن العامة كافة الأسماء المعرفة في scapy وحدة بد في مساحة الاسم.

انظر الفقرتين 6 و 7 من بيثون مرجع دليل ، 6.12 بيان الاستيراد.

نصائح أخرى

وكان لي نفس المشكلة، في استخدام الإصدار 2.x scapy

 from scapy.all import * 

وبدلا من ذلك الإصدار 1.x

 from scapy import *

وكما هو مكتوب هنا

واستمتع بها =)

ويقول لك أنه لا يمكن العثور على SR1 في scapy. غير متأكد من مدى newbite أنت، ولكن المترجم دائما صديقك. اطلاق النار حتى المترجم (فقط اكتب "الثعبان" على فلكس)، وفي موجه (>>>) اكتب (ولكن لا تكتب> الصورة، وأنها سوف تظهر من تلقاء نفسها):

>>> 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