3가지 단계로 packet relay를 할 수 있습니다. 패킷 캡쳐 - 패킷 수정 - 패킷 재전송
패킷 캡쳐
1분마다 tcpdump로 pcap파일 생성.
#!/bin/bash
while [ 1 ]
do
r_date=`date +%Y%m%d%H%M` --> 현재시간 년월일시분 으로 표기
echo $r_date
tcpdump -nn -i eth0 dst port 162 -w $r_date.pcap & --> 패킷 캡쳐 시작(r_date를 이름으로 가진다.)
ex_tcpdump=`echo $!` --> 백그라운드로 돌아가는 tcpdump의 pid 얻기
while [ 1 ]
do
tmp_date=`date +%Y%m%d%H%M` --> 반복문에서 현재시간 년월일시분 으로 표기
if [ $r_date -lt $tmp_date ]; --> r_date와 tmp_date를 비교하여 r_date가 작으면 tcpdump 중지.
then
kill $ex_tcpdump --> kill -9로 강제 종료 시킬경우 패킷이 캡쳐가 안된다.
break
else
continue
sleep 1
fi
done
done
패킷 수정
#!/bin/bash
r_date=`date +%Y%m%d%H%M` --> 현재시간 년월일시분
echo $r_date
for fhs in `ls /root/relay_test | grep pcap | grep -v rewrite | awk -F . '{print $1}'`;do --> 반복문 이용
if [ $fhs -lt $r_date ]; --> 캡쳐중인 파일을 수정할 수는 없으므로 1분전 파일 수정
then
tcprewrite -i /root/relay_test/$fhs.pcap -o /root/relay_test/$fhs\_rewrite.pcap --dstipmap [수정할 IP]:[변경된 IP] --enet-dmac=[목적지 mac주소] -C
rm -rf /root/relay_test/$fhs.pcap
fi
done
패킷 재전송
!/bin/bash
r_date=`date +%Y%m%d%H%M`
echo $r_date
for fhs in `ls /root/relay_test | grep rewrite | grep -v sh | awk -F _ '{print $1}'`;do
if [ $fhs -lt $((r_date - 1)) ]; --> 수정중인 파일을 전송할 수는 없으므로 1분전에 수정된 파일 전송
then
tcpreplay --topspeed --intf1=eth0 /root/relay_test/$fhs\_rewrite.pcap
rm -rf /root/relay_test/$fhs\_rewrite.pcap
fi
done
댓글 없음:
댓글 쓰기