26. Packet Capture (Ruby)
抜粋
sock = TCPSocket.open(config['server'], config['port'])
packet_dump = Pcaplet.new("-i #{options[:tap]}")
filter = Pcap::Filter.new("dst #{options[:ip]}", packet_dump.capture)
packet_dump.add_filter(filter)
packet_dump.each_packet do |pkt|
if pkt.ip? && pkt.ip_dst.to_s == options[:ip]
sock.puts("#{options[:instance_name]}")
end
end
packet_dump.close
イベント配布⽤用TCP Serverへの接続
TAPデバイスのキャプチャ
必要なパケットのフィルタリング
イベント配布⽤用TCP Serverへ送信
27. イベント配布TCP Server (Ruby)
抜粋
server = TCPServer.open(config.port)
unity_socket = nil
while true
s = server.accept
if not config.accept_addr_list.include?(s.remote_address.ip_address)
unity_socket = s
p "unity connected."
else
Thread.start(s, unity_socket) do |socket, unity_socket|
while buffer = socket.gets
unity_socket.puts(buffer)
end
socket.close
end
end
end
各Packet Captureクライアントから
送られてきたメッセージを
Unityのソケットへ届けるスレッド