質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1598閲覧

Pythonのsendがうまく使えない。

syamoji

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/06/14 05:15

python scapyでsendを使いたい。

参考書は「つくりながら学ぶ!Pythonセキュリティプログラミング(https://book.mynavi.jp/supportsite/detail/9784839968502.html)」を使っています。

そこでパケット生成とパケット送受信の項目があるのですが、
sendがSyntaxError: invalid syntaxで使えないようです。

Googleで色々調べてみましたが、よく分からなかったので教えてください。
よろしくお願いします!

発生している問題・エラーメッセージ

>>> send(tcp_pkt) Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/local/lib/python3.6/dist-packages/scapy/sendrecv.py", line 312, in send socket = conf.L3socket(*args, **kargs) File "/usr/local/lib/python3.6/dist-packages/scapy/arch/linux.py", line 445, in __init__ self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) # noqa: E501 File "/usr/lib/python3.6/socket.py", line 144, in __init__ _socket.socket.__init__(self, family, type, proto, fileno) PermissionError: [Errno 1] Operation not permitted >>> >>> sudo send(tcp_pkt) Exception ignored in: <bound method SuperSocket.__del__ of <scapy.arch.linux.L3PacketSocket object at 0x7f425ec98390>> Traceback (most recent call last): File "/usr/local/lib/python3.6/dist-packages/scapy/supersocket.py", line 123, in __del__ self.close() File "/usr/local/lib/python3.6/dist-packages/scapy/arch/linux.py", line 481, in close set_promisc(self.ins, self.iface, 0) AttributeError: 'L3PacketSocket' object has no attribute 'ins' File "<console>", line 1 sudo send(tcp_pkt) ^ SyntaxError: invalid syntax

該当のソースコード

Python

1>>> from scapy.all import * 2>>> 3>>> from scapy.all import Ether 4>>> from scapy.all import IP 5>>> from scapy.all import TCP 6>>> 7>>> tcp_pkt = Ether()/IP()/TCP() 8>>> 9>>> ip = IP(src='127.0.0.1', dst='xxx.xxx.xxx.xxx') 10>>> tcp = TCP(dport=8000, flags='S') 11>>> tcp_pkt = ip/tcp 12>>> tcp_pkt 13<IP frag=0 proto=tcp src=127.0.0.1 dst=Net('xxx.xxx.xxx.xxx') |<TCP dport=8000 flags=S |>> 14>>> 15>>> from scapy.all import send 16>>> send(tcp_pkt) 17Traceback (most recent call last): 18 File "<console>", line 1, in <module> 19 File "/usr/local/lib/python3.6/dist-packages/scapy/sendrecv.py", line 312, in send 20 socket = conf.L3socket(*args, **kargs) 21 File "/usr/local/lib/python3.6/dist-packages/scapy/arch/linux.py", line 445, in __init__ 22 self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type)) # noqa: E501 23 File "/usr/lib/python3.6/socket.py", line 144, in __init__ 24 _socket.socket.__init__(self, family, type, proto, fileno) 25PermissionError: [Errno 1] Operation not permitted 26>>> 27>>> sudo send(tcp_pkt) 28Exception ignored in: <bound method SuperSocket.__del__ of <scapy.arch.linux.L3PacketSocket object at 0x7f425ec98390>> 29Traceback (most recent call last): 30 File "/usr/local/lib/python3.6/dist-packages/scapy/supersocket.py", line 123, in __del__ 31 self.close() 32 File "/usr/local/lib/python3.6/dist-packages/scapy/arch/linux.py", line 481, in close 33 set_promisc(self.ins, self.iface, 0) 34AttributeError: 'L3PacketSocket' object has no attribute 'ins' 35 File "<console>", line 1 36 sudo send(tcp_pkt) 37 ^ 38SyntaxError: invalid syntax 39

試したこと

help()コマンドでsendを入力し、出力されたものを読んだのですが、
参考書と違いすぎてよく分かりませんでした。

補足情報(FW/ツールのバージョンなど)

sys.version

'3.6.7 (default, Oct 22 2018, 11:32:17) \n[GCC 8.2.0]'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mather

2019/06/14 05:25

なぜ "sudo" と書いたのですか?読んでいるテキストに sudo に関する記述があったんですか?
syamoji

2019/06/14 07:36

なかったですが、 >> PermissionError: [Errno 1] Operation not permitted とありましたので、管理者権限ならできるかと思い試した次第です。
mather

2019/06/14 08:50

なるほど。試すのはいいんですが、sudo はそもそもLinux等のコンソールでroot権限を付けてコマンドを実行するためのものなので、Pythonのコンソール(REPL)上では明らかにおかしな記述になりますね。
guest

回答1

0

ベストアンサー

こちらにまんま回答がありますね。
https://qiita.com/shoooooo/items/4080752d0d8c7a9ef2aa

scapyはroot権限がないと実行できないです

投稿2019/06/14 08:51

mather

総合スコア6753

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syamoji

2019/06/14 09:10

解決しました! scapyとだけ入力しても起動自体はできましたが、 sudo scary(Linuxの場合)と入力しないと 管理者権限が必要な諸々のコマンドを実行できないということですね。 これで先へ進めます。 ありがとうございましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問