0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python RAWソケット データ送受信

Last updated at Posted at 2024-07-02

ファイルから読み込んでRAWデータ送信

単純にファイルから読んだデータをバイナリとして送信する。
WireSharkやtcpdumpでキャプチャしたデータを書き換えて送信など、テスト用途などに。

・Windowsはセキュリティの観点からか、socket.AF_PACKETが未定義で使用できない。
・MaxOSも使えないとの情報あり。
・Linux(Ubuntu)では動作を確認できている。
・Linux仮想マシン経由でWindowsからのデータ送出は可能。

import sys
import socket

ETH_P_ALL = 3

interface = sys.argv[2]

f = open(sys.argv[1], "rb") 
data = f.read();
f.close()

s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(ETH_P_ALL))
s.bind((interface, 0))
s.sendall(data)
s.close()

受信したRAWデータをファイルへ書き込む

狙ったパケットだけ受信するようにフィルタロジックを追加すれば使えるか。
MACアドレスでフィルタするなど。

import sys
import socket

ETH_P_ALL = 3

interface = sys.argv[2]

f = open(sys.argv[1], "wb") 

s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(ETH_P_ALL))
s.bind((interface, 0))
data = s.recv(1514)
f.write(data)
f.close()
s.close()

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?