예제 #1
0
파일: main.cpp 프로젝트: timaa2k/phonescan
void process(Packet p) {
	Timestamp t = p.timestamp();
	if (p.pdu()->find_pdu<Dot11ProbeRequest>(PDU::DOT11_PROBE_REQ)) {
		Dot11ProbeRequest request = p.pdu()->rfind_pdu<Dot11ProbeRequest>(PDU::DOT11_PROBE_REQ);
		std::string src_addr = vendor_string(request.addr2());
		{
			std::lock_guard<std::mutex> lock(map_mutex);
			if (devices.count(src_addr) == 0)
				std::cout << "New device [" << src_addr << "] found at " << t.seconds() << std::endl;
			devices[src_addr] = t;
		}
	}
	else if (p.pdu()->find_pdu<Dot11Data>(PDU::DOT11_DATA)) {
		Dot11Data frame = p.pdu()->rfind_pdu<Dot11Data>(PDU::DOT11_DATA);
		std::string src_addr = vendor_string(frame.addr2());
		{
			std::lock_guard<std::mutex> lock(map_mutex);
			if (devices.count(src_addr) == 1)
				devices[src_addr] = t;
		}
	}
}