2012-11-28 37 views
7

Vì vậy, tôi đã viết một kịch bản nhỏ trong Ubuntu cho scapy.Nhập khẩu Scapy.all * không hoạt động

#!/usr/bin/env python 
import sys 
#from scapy.all import * 
try 
    import scapy 
    except ImportError: 
    del scapy 
    from scapy import all as scapy 
i= IP() 
t= TCP() 
i.dst='192.168.56.100' 
t.dport=22 
pakket=i/t 
answered,unanswered=sr(pakket) 
answered.nsummary() 

tôi đã viết 'try' vì một chủ đề khác ở đây (đã thử làm giải pháp). sản lượng hiện tại của tôi với mã này như sau

Traceback (most recent call last): 
File "./scapy.py", line 5, in <module> 
import scapy 
File "/home/nicholas/scapy.py", line 9, in <module> 
i=IP() 
NameError: name 'IP' is not defined 

khi cố gắng nó chỉ với từ scapy.all nhập khẩu * withouth các 'thử'.

Traceback (most recent call last): 
File "./scapy.py", line 3, in <module> 
from scapy.all import * 
File "/home/nicholas/scapy.py", line 3, in <module> 
from scapy.all import * 
ImportError: No module named all 

Tôi đã thử các cách nhập khác nhau được tìm thấy trên Google nhưng vẫn không hoạt động. Bất cứ ai có thể vui lòng cho tôi biết những gì tôi đang làm sai? (không quan tâm đến sự thụt lề của bài đăng này)

+2

Hãy sửa indents, họ quan trọng. – Tadeck

+0

thử một cái gì đó như * từ scapy.all IP nhập khẩu, TCP, sr * nếu bạn không sử dụng bất cứ điều gì khác (không có thử-ngoại trừ) –

+0

Tôi vẫn nhận được 'Không có mô-đun đặt tên tất cả' khi cố gắng – Nicholas

Trả lời

2

Từ khi nhìn vào nguồn xà phòng, gói scapy không xuất hiện để import bất cứ điều gì hoặc xác định một __all__ trong __init__. Do đó, bạn cần rõ ràng import scapy.all (hoặc from scapy import all) trước khi bạn có thể from scapy.all import bất kỳ thứ gì khác từ nó, vì nó sẽ không ở trong số sys.modules. Lưu ý rằng điều này chỉ xảy ra một lần trong luồng chương trình của bạn, như sau khi trình thông dịch nhập khẩu mô-đun, nó sẽ có sẵn cho tất cả các mã thực hiện từ đó, bất kể nó ở đâu. Hãy xem Python docs on modules và cách import và nhập cụ thể gói, hoạt động để biết thêm chi tiết.

Chỉnh sửa: Tôi nghĩ rằng tôi thấy sự cố hiện tại, tôi chỉ chú ý đến phần sai của dấu vết ngăn xếp của bạn. Khá chắc chắn những gì bạn đang đối phó với ở đây là một va chạm tên. Tệp của bạn có tên là scapy.py, vì vậy khi bạn import scapy từ ngữ cảnh của tệp đó, bạn thực sự đang nhập tệp đó làm mô-đun. Vì tệp của bạn không có một mô-đun con có tên là all (nó không thể, vì nó không phải là một gói), bạn nhận được lỗi nhập bạn đang thấy. Hãy thử đổi tên tệp của bạn thành một thứ không xung đột với bất kỳ gói hoặc mô-đun nào bạn muốn nhập vào bên trong và xem liệu nó có hoạt động tốt hơn không.

Nhân tiện, lưu ý trong các dấu vết ngăn xếp của bạn mà thực tế việc nhập của bạn thực sự là đệ quy gọi một tệp của bạn. Đó sẽ là một đầu mối cho thấy một cái gì đó đã đi haywire trong quá trình nhập khẩu.

+1

Điều này không thực sự giúp tôi, vẫn nhận được một cái gì đó như 'Không có mô-đun tên tất cả' – Nicholas

+0

Chỉnh sửa câu trả lời của tôi, tôi nghĩ rằng nên khắc phục vấn đề của bạn. –

+0

Chúng ta đang đi đâu đó. Nhưng khi tôi đổi tên nó đã phàn nàn về một 'số ma thuật xấu'. Tôi đã xóa scapy.pyc như trong http://stackoverflow.com/questions/514371/whats-the-bad-magic-number-error. Nhưng làm thế nào để bạn nhận được nó trở lại với số ma thuật phải không? * CHỈNH SỬA, dường như hoạt động ngay bây giờ! Tôi đặt python3 ở phía trước của việc thực thi kịch bản nhưng điều đó dường như không cần thiết, cảm ơn! – Nicholas

0

Tôi thấy điều này khi tôi có một scapy.py trong thư mục hiện tại. scapy.all import * dường như tìm trong thư mục hiện tại trước tiên.

1

Bài đăng cũ hoàn toàn. Đối với những người vẫn tìm kiếm, nhập khẩu đúng với các phiên bản hiện tại sẽ là:

from scapy.all import *

Các vấn đề liên quan