【Python】scapyでEAPパケットを送る

IEEE802.1X認証の動作確認を多台数のサプリカントで行いたかった。実機を用意するのは難しかったので、scapyというpythonのツールを使って簡単なパケットジェネレーターを作ってみた。

100台のサプリカントからEAPOL-StartとEAP-Response/Identityを送る。

Authenticatorから送られてきたEAP-Response/Requestに対し、動的にEAP-Response/Identityを返したかったけれどやり方がよく分からなかったのでこれで妥協。このやり方でもAuthenticatorがRADIUSに問い合わせをするところまではやってくれたのでとりあえずOK。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from scapy.all import *
import time

# MAC address
src_mac = "00:a0:de:00:00:"
dst_mac = "01:80:c2:00:00:03"

def send_eapol_start (iface, src):
    eapol_start = Ether(src=src, dst=dst_mac)/EAPOL(type=1)
    sendp(eapol_start,iface=iface)

def send_response_identity (iface, src):
    response_identity = Ether(src=src, dst=dst_mac)/EAPOL(type=0)/EAP(code=2,len=10,type=1,identity=b'user')
    sendp(response_identity,iface=iface)

while True:
    for i in range (100):
        # MACアドレスの生成
        mac_addr = src_mac + format(i, '02x')

        # EAPOLを送信
        send_eapol_start("en4", mac_addr)

        # AuthenticatorからのEAP-request待ち
        time.sleep(3)

        # Response-Identityを送信
        send_response_identity("en4", mac_addr)
        time.sleep(2)

参考にしたのはこのあたり

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です