2014-05-16 8 views
0

openwrt에서 tcpdump를 사용하여 패킷을 캡처하고 netcat을 사용하여 라즈베리 파이에 보냅니다. 문제는 여러 라우터를 사용하여 요청을 포착하고 라스베리 파이로 전달하려는 것입니다.추가 문자열 보내기 netcat

tcpdump -i wlan0 -e -s 256 -l type mgt subtype probe-req |nc 192.168.0.230 22222 

그리고 난 파이썬 스크립트로 패킷 정보를받을 :

import socket 

HOST = 'localhost' # use '' to expose to all networks 
PORT = 12345 

def incoming(host, port): 
    """Open specified port and return file-like object""" 
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    # set SOL_SOCKET.SO_REUSEADDR=1 to reuse the socket if 
    # needed later without waiting for timeout (after it is 
    # closed, for example) 
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
    sock.bind((host, port)) 
    sock.listen(0) # do not queue connections 
    request, addr = sock.accept() 
    return request.makefile('r', 0) 
# /-- network --- 


for line in incoming(HOST, PORT): 
    print line, 

출력 :

15:17:57 801928 3933710786us tsft 1.0 Mb/s 2412 Mhz 11b -38dB signal antanna 1 BSSID: broadcast SA:xxxx .... 

원하는 출력 :

192.168.0.130 15:17:57 801928 3933710786us tsft 1.0 Mb/s 2412 Mhz 11b -38dB signal antanna 1 BSSID: broadcast SA:xxxx .... 

하지만 내가 어떻게 추가 할 수 명령에 대한 라우터의 IP 주소 ? 그래서 마녀 라우터가 패킷을받은 것을 볼 수 있습니다. 아니면 어떻게 라우터를 식별하기 위해 "router1"과 같은 여분의 문자열을 보낼 수 있습니까?

답변

0

당신은 아래의 스크립트를 사용하여 라우터에 추가 문자열을 보낼 수 있습니다

#! /bin/bash 

ip=$(ifconfig wlan0 | grep cast | awk -F: '{print $2}' | awk '{print $1}') 

tcpdump -i wlan0 -e -s 256 -l type mgt subtype probe-req |\ 
while read line; do 
    echo "$ip" "$(date +%T)" "$line" 
done | nc 192.168.0.230 22222 

이 netcat을로는 tcpdump의 출력과 파이프를 각 라인의 beggining에서 IP 주소와 타임 스탬프를 삽입합니다.