Exemple #1
0
int main(int argc, char **argv)
{
	message_init();
	
	lift_pid = fork();
	if(!lift_pid) {
		lift_process();
	}
	liftmove_pid = fork();
	if(!liftmove_pid){
		liftmove_process();
	}
	
	int current_person_id = 0;
	int j;
	for(j = 0; j < MAX_N_PERSONS; j++){
	  pid_t tmp_pid = fork();
	  if (tmp_pid == 0){
	    person_process(current_person_id);
	  } else{
	    person_pid[current_person_id] = tmp_pid;
	    current_person_id ++;
	  }
	}
	
	result_process();
	
	return 0;
}
Exemple #2
0
static void search_process(u_char *user, const struct pcap_pkthdr *h, const u_char *bytes) {
    struct search_context *ctx = (struct search_context *)user;
    struct radiotap_header *rt;
    struct IEEE_802_11_header *wifi;
    struct ssid_param *ssid_p;
    (void)h;

    rt = (struct radiotap_header *)bytes;
    wifi = (struct IEEE_802_11_header *)((uint8_t *)bytes + rt->len);

    if (wifi->type == BEACON_TYPE) {
        ssid_p = (struct ssid_param *)((uint8_t *)wifi + sizeof(struct IEEE_802_11_header) + MGMT_SSID_OFFSET);

        if (strlen(ctx->ssid) != ssid_p->ssid_len) // check SSID length
            return;

        if (strncmp(ctx->ssid, (char *)&ssid_p->ssid, ssid_p->ssid_len)) // check SSID contents
            return;

        memcpy(ctx->bssid, wifi->bssid, MAC_ADDRESS_LENGTH); // capture BSSID of access-point
    }

    if (wifi->type == DATA_TYPE) {
        if ( (!memcmp(wifi->dest_addr, ctx->bssid, MAC_ADDRESS_LENGTH)) ||
             (!memcmp(wifi->src_addr,  ctx->bssid, MAC_ADDRESS_LENGTH)) ||
             (!memcmp(wifi->bssid,     ctx->bssid, MAC_ADDRESS_LENGTH)) ) {

            if      (memcmp(wifi->dest_addr, ctx->bssid, MAC_ADDRESS_LENGTH))
                result_process(ctx->results, wifi->dest_addr);

            else if (memcmp(wifi->src_addr,  ctx->bssid, MAC_ADDRESS_LENGTH))
                result_process(ctx->results, wifi->src_addr );

            else
                result_process(ctx->results, wifi->bssid    );

        }
    }
}