Example #1
0
int main(int argc, char *argv[])
{
    (void)argc, (void)argv;

    unsigned char packet[MAX_PACKET_SIZE];
    struct interface_data iface_data;
    unsigned char dest_mac[ETH_ALEN] = {0x90, 0x2b, 0x34, 0x1a, 0x5f, 0x04};
    struct sockaddr_ll dest_address;
    const int packet_size = 64;
    unsigned char payload[4] = {0xde, 0xad, 0xbe, 0xef};

    int sockfd = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW);
    assert(sockfd > 2);

    get_src_mac(&iface_data, sockfd);
    fill_packet(packet, dest_mac, iface_data.if_mac.ifr_hwaddr.sa_data, packet_size, payload);

    dest_address.sll_ifindex = iface_data.index;
    dest_address.sll_halen = ETH_ALEN;
    memcpy(dest_address.sll_addr, dest_mac, ETH_ALEN);

    int result = sendto(sockfd, packet, packet_size, 0, (struct sockaddr*)&dest_address,
               sizeof(struct sockaddr_ll));
    assert(result == packet_size);

    return 0;
}
Example #2
0
File: wlan.c Project: observ3r/wobs
void wlan_proc(u_char *buf) {	
	/* TODO: Make time function */

	/************ Note ********************
	 * Was getting strange packets, could *
	 * not interpret them correctly. This *
	 * way of parsing (tree parsing?)     *
	 * probably isn't the best... Email me*
	 * with suggestions or ideas. Thanks! *
	 *************************************/
	if (buf[2]>50) {
		//printf("Strange! %02x\n",buf[2]);
		//g_printf("mac:%s\n",get_src_mac(buf));
		
		return;
	}
	//printf("Good! %02x\n",buf[2]);
	/**************************************
	 * Get the input mac, then send it to *
	 * the add_dev function so it can add *
	 * it and perform other processing.   *
	 * add_dev returns a pointer to the   *
	 * device struct that we can fill.    *
	 **************************************/

	gchar *input_mac = get_src_mac(buf);
	device *cdev = add_dev(input_mac);

	/* Now fill the device struct with    *
	 * more information from the packet   */

	/* Time */
	time_t btime;
	struct tm *time_s;
	time(&btime);
	time_s=localtime(&btime);

	cdev->time=asctime(time_s);
	cdev->time[24]=0x00;

	/* Probes (will be specific to packet types) */
	//g_scanf(cdev->probes,"none");
	cdev->probes[0]=0x00;

	return;
}
void
TRexPortAttr::to_json(Json::Value &output) {

    output["src_mac"]                = utl_macaddr_to_str(get_src_mac());
    output["promiscuous"]["enabled"] = get_promiscuous();
    output["link"]["up"]             = is_link_up();
    output["speed"]                  = get_link_speed() / 1000; // make sure we have no cards of less than 1 Gbps
    output["rx_filter_mode"]         = get_rx_filter_mode();

    if (get_src_ipv4() != 0) {
        output["src_ipv4"] = utl_uint32_to_ipv4(get_src_ipv4());
    } else {
        output["src_ipv4"] = Json::nullValue;
    }


    int mode;
    get_flow_ctrl(mode);
    output["fc"]["mode"] = mode;

    m_dest.to_json(output["dest"]);

}
void
TRexPortAttr::update_src_dst_mac(uint8_t *raw_pkt) const {
    memcpy(raw_pkt, m_dest.get_dest_mac(), 6);
    memcpy(raw_pkt + 6, get_src_mac(), 6);
}