私のテストケースでは、ランダムなIPv6送信元アドレスと固定プレフィックスを使用してNAを送信する必要があります。例えば:
プレフィックス2001::cafe:/64を修正しました。アドレスの残りの部分はランダムである必要があります。
PythonまたはScapyで達成する方法は?
import random
M = 16**4
"2001:cafe:" + ":".join(("%x" % random.randint(0, M) for i in range(6)))
住所のどの部分をランダムにしたいのか、質問からはわかりません。最後の2バイトを想定しています。
python netaddrライブラリの使用:
import random
from netaddr.ip import IPNetwork, IPAddress
random.seed()
ip_a = IPAddress('2001::cafe:0') + random.getrandbits(16)
ip_n = IPNetwork(ip_a)
ip_n.prefixlen = 64
print ip_a
print ip_n
サンプル出力:
2001::cafe:c935
2001::cafe:c935/64
単純な文字列フォーマットに対する利点は、開始アドレスであるランダムビット長を簡単にカスタマイズできることです。また、netaddrクラスには、ネットワークのブロードキャストアドレスなど、多くの有用な属性があります。
文字列フォーマットを使用するだけ:
import random
random.seed()
print '2001::cafe:%x/64' % random.getrandbits(16)
Scapyには、ランダムなipv6アドレスを生成する機能が組み込まれています。
source = RandIP6("2000::cafe:*:*")
print source
をいじりzero's回す場合は、286行目の前にscapy/volatile.pyのブロンコードに2行を追加する必要があることに注意してください。
if n == 0:
ip.append("0")