亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bpasniff.c

?? bluetooth 開發程序bluez-hcidump-1.28
?? C
字號:
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2004-2005  Marcel Holtmann <marcel@holtmann.org> * * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA * */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <stdio.h>#include <errno.h>#include <ctype.h>#include <unistd.h>#include <stdlib.h>#include <malloc.h>#include <getopt.h>#include <signal.h>#include <sys/ioctl.h>#include <sys/socket.h>#include <bluetooth/bluetooth.h>#include <bluetooth/hci.h>#include <bluetooth/hci_lib.h>#include <netinet/in.h>#include "parser/parser.h"static volatile sig_atomic_t __io_canceled = 0;static void sig_hup(int sig){}static void sig_term(int sig){	__io_canceled = 1;}static int read_revision(int dd, char *revision, int size){	struct hci_request rq;	unsigned char req[] = { 0x07 };	unsigned char buf[46];	memset(&rq, 0, sizeof(rq));	rq.ogf    = OGF_VENDOR_CMD;	rq.ocf    = 0x000e;	rq.cparam = req;	rq.clen   = sizeof(req);	rq.rparam = &buf;	rq.rlen   = sizeof(buf);	if (hci_send_req(dd, &rq, 1000) < 0)		return -1;	if (buf[0] > 0) {		errno = EIO;		return -1;	}	if (revision)		strncpy(revision, (char *) (buf + 1), size);	return 0;}static int enable_sniffer(int dd, uint8_t enable){	struct hci_request rq;	unsigned char req[] = { 0x00, enable };	unsigned char buf[1];	memset(&rq, 0, sizeof(rq));	rq.ogf    = OGF_VENDOR_CMD;	rq.ocf    = 0x000e;	rq.cparam = req;	rq.clen   = sizeof(req);	rq.rparam = &buf;	rq.rlen   = sizeof(buf);	if (hci_send_req(dd, &rq, 1000) < 0)		return -1;	if (buf[0] > 0) {		errno = EIO;		return -1;	}	return 0;}static int enable_sync(int dd, uint8_t enable, bdaddr_t *bdaddr){	struct hci_request rq;	unsigned char req[] = { 0x01, enable,				0x00, 0x00, 0x00, 0x00, 0x00, 0x00,				0x00, 0xfa, 0x00 };	memcpy(req + 2, bdaddr, 6);	memset(&rq, 0, sizeof(rq));	rq.ogf    = OGF_VENDOR_CMD;	rq.ocf    = 0x000e;	rq.cparam = req;	rq.clen   = sizeof(req);	hci_send_req(dd, &rq, 1000);	return 0;}static char *type2str(uint8_t type){	switch (type) {	case 0x00:		return "NULL";	case 0x01:		return "POLL";	case 0x02:		return "FHS";	case 0x03:		return "DM1";	case 0x04:		return "DH1";	case 0x05:		return "HV1";	case 0x06:		return "HV2";	case 0x07:		return "HV3";	case 0x08:		return "DV";	case 0x09:		return "AUX1";	case 0x0a:		return "DM3";	case 0x0b:		return "DH3";	case 0x0c:		return "EV4";	case 0x0d:		return "EV5";	case 0x0e:		return "DM5";	case 0x0f:		return "DH5";	case 0xff:		return "ID";	default:		return "UNK";	}}static void decode(unsigned char *buf, int count){	struct frame frm;	uint8_t id, status, channel;	uint16_t num, len;	uint32_t time;	uint8_t type, addr, temp, hdr;	uint8_t flow, arqn, seqn, hec, llid, pflow;	uint16_t plen;	if (count < 7)		return;	id = buf[0];	num = ntohs(bt_get_unaligned((uint16_t *) (buf + 1)));	len = btohs(bt_get_unaligned((uint16_t *) (buf + 3)));	status  = buf[5];	time    = ntohl(bt_get_unaligned((uint32_t *) (buf + 6)));	channel = buf[10];	if (len < 8)		return;	type = (len < 7) ? 0xff : bt_get_unaligned((uint8_t *) (buf + 11));	if (type < 2)		return;	p_indent(-1, NULL);	memset(&frm, 0, sizeof(frm));	frm.data     = buf + 12;	frm.data_len = count - 12;	frm.ptr      = frm.data;	frm.len      = frm.data_len;	frm.in       = 0;	frm.master   = 0;	frm.handle   = 0;	frm.flags    = 0;	p_indent(0, &frm);	printf("BPA: id %d num %d status 0x%02x time %d channel %2d len %d\n",		id, num, status, time, channel, len - 6);	if (type < 3) {		printf("  %s\n", type2str(type));		raw_dump(1, &frm);		return;	}	addr = bt_get_unaligned((uint8_t *) (buf + 12));	temp = bt_get_unaligned((uint8_t *) (buf + 13));	flow = (temp & 0x04) >> 2;	arqn = (temp & 0x02) >> 1;	seqn = (temp & 0x01);	hec  = bt_get_unaligned((uint8_t *) (buf + 14));	hdr = bt_get_unaligned((uint8_t *) (buf + 20));	plen  = ((hdr & 0x10) >> 4) | ((hdr & 0x08) >> 2) | (hdr & 0x04) | ((hdr & 0x02) << 2) | ((hdr & 0x01) << 4);	pflow = ((hdr & 0x20) >> 5);	llid = ((hdr & 0x80) >> 7) | ((hdr & 0x40) >> 5);	hdr = bt_get_unaligned((uint8_t *) (buf + 21));	plen = plen | ((hdr & 0x80) >> 2) | (hdr & 0x40) | ((hdr & 0x20) << 2) | ((hdr & 0x08) << 4);	p_indent(0, &frm);	printf("%s: addr 0x%02x flow %d arqn %d seqn %d hec 0x%02x llid %d pflow %d plen %d\n",		type2str(type), addr, flow, arqn, seqn, hec, llid, pflow, plen);	if (type == 0x03 && llid == 3) {		memset(&frm, 0, sizeof(frm));		frm.data     = buf + 22;		frm.data_len = plen;		frm.ptr      = frm.data;		frm.len      = frm.data_len;		frm.in       = 0;		frm.master   = 1;		frm.handle   = 0;		frm.flags    = llid;		lmp_dump(1, &frm);		return;	}	raw_dump(1, &frm);}static void process_frames(int dev){	struct sigaction sa;	struct hci_filter flt;	unsigned char *buf;	int dd, size = 2048;	buf = malloc(size);	if (!buf) {		fprintf(stderr, "Can't allocate buffer for hci%d: %s (%d)\n",						dev, strerror(errno), errno);		return;	}	dd = hci_open_dev(dev);	if (dd < 0) {		fprintf(stderr, "Can't open device hci%d: %s (%d)\n",						dev, strerror(errno), errno);		free(buf);		return;	}	hci_filter_clear(&flt);	hci_filter_set_ptype(HCI_VENDOR_PKT, &flt);	hci_filter_set_ptype(HCI_EVENT_PKT, &flt);	hci_filter_set_event(EVT_VENDOR, &flt);	if (setsockopt(dd, SOL_HCI, HCI_FILTER, &flt, sizeof(flt)) < 0) {		fprintf(stderr, "Can't set filter for hci%d: %s (%d)\n",						dev, strerror(errno), errno);		hci_close_dev(dd);		free(buf);		return;	}	memset(&sa, 0, sizeof(sa));	sa.sa_flags   = SA_NOCLDSTOP;	sa.sa_handler = SIG_IGN;	sigaction(SIGCHLD, &sa, NULL);	sigaction(SIGPIPE, &sa, NULL);	sa.sa_handler = sig_term;	sigaction(SIGTERM, &sa, NULL);	sigaction(SIGINT,  &sa, NULL);	sa.sa_handler = sig_hup;	sigaction(SIGHUP, &sa, NULL);	while (!__io_canceled) {		int len;		len = read(dd, buf, size);		if (len < 0)			break;		if (len < 2)			continue;		if (buf[0] == 0x04 && buf[1] == 0xff) {			if (buf[3] == 0x02) {				switch (buf[4]) {				case 0x00:					printf("Waiting for synchronization...\n");					break;				case 0x08:					printf("Synchronization lost\n");					__io_canceled = 1;					break;				default:					printf("Unknown event 0x%02x\n", buf[4]);					break;				}			}		}		if (buf[0] != 0xff)			continue;		decode(buf + 1, len - 1);	}	hci_close_dev(dd);	free(buf);}static void usage(void){	printf("bpasniff - Utility for the BPA 100/105 sniffers\n\n");	printf("Usage:\n"		"\tbpasniff [-i <dev>] <master-bdaddr>\n");}static struct option main_options[] = {	{ "help",	0, 0, 'h' },	{ "device",	1, 0, 'i' },	{ 0, 0, 0, 0}};int main(int argc, char *argv[]){	struct hci_dev_info di;	struct hci_version ver;	char rev[46];	bdaddr_t bdaddr;	int dd, opt, dev = 0;	bacpy(&bdaddr, BDADDR_ANY);	while ((opt=getopt_long(argc, argv, "+i:h", main_options, NULL)) != -1) {		switch (opt) {		case 'i':			dev = hci_devid(optarg);			if (dev < 0) {				perror("Invalid device");				exit(1);			}			break;		case 'h':		default:			usage();			exit(0);		}	}	argc -= optind;	argv += optind;	optind = 0;	argc -= optind;	argv += optind;	optind = 0;	if (argc < 1) {		usage();		exit(1);	}	str2ba(argv[0], &bdaddr);	dd = hci_open_dev(dev);	if (dd < 0) {		fprintf(stderr, "Can't open device hci%d: %s (%d)\n",						dev, strerror(errno), errno);		exit(1);	}	if (hci_devinfo(dev, &di) < 0) {		fprintf(stderr, "Can't get device info for hci%d: %s (%d)\n",						dev, strerror(errno), errno);		hci_close_dev(dd);		exit(1);	}	if (hci_read_local_version(dd, &ver, 1000) < 0) {		fprintf(stderr, "Can't read version info for hci%d: %s (%d)\n",						dev, strerror(errno), errno);		hci_close_dev(dd);		exit(1);	}	if (ver.manufacturer != 12) {		fprintf(stderr, "Can't find sniffer at hci%d: %s (%d)\n",						dev, strerror(ENOSYS), ENOSYS);		hci_close_dev(dd);		exit(1);	}	if (read_revision(dd, rev, sizeof(rev)) < 0) {		fprintf(stderr, "Can't read revision info for hci%d: %s (%d)\n",						dev, strerror(errno), errno);		hci_close_dev(dd);		exit(1);	}	printf("%s\n", rev);	if (enable_sniffer(dd, 0x01) < 0) {		fprintf(stderr, "Can't enable sniffer for hci%d: %s (%d)\n",						dev, strerror(errno), errno);		hci_close_dev(dd);		exit(1);	}	if (enable_sync(dd, 0x01, &bdaddr) < 0) {		fprintf(stderr, "Can't enable sync for hci%d: %s (%d)\n",						dev, strerror(errno), errno);		enable_sniffer(dd, 0x00);		hci_close_dev(dd);		exit(1);	}	init_parser(DUMP_EXT | DUMP_VERBOSE, ~0L, 0, DEFAULT_COMPID, -1);	process_frames(dev);	if (enable_sync(dd, 0x00, &bdaddr) < 0) {		fprintf(stderr, "Can't disable sync for hci%d: %s (%d)\n",						dev, strerror(errno), errno);		enable_sniffer(dd, 0x00);		hci_close_dev(dd);		exit(1);	}	if (enable_sniffer(dd, 0x00) < 0) {		fprintf(stderr, "Can't disable sniffer for hci%d: %s (%d)\n",						dev, strerror(errno), errno);		hci_close_dev(dd);		exit(1);	}	hci_close_dev(dd);	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆精品国产自产在线| 国产欧美一区二区三区在线看蜜臀 | 欧美一区二区三区影视| 精品成人a区在线观看| 一区二区三区日韩欧美精品| 精品一区在线看| 欧美羞羞免费网站| 中文av一区特黄| 老司机午夜精品99久久| 欧美性大战xxxxx久久久| 久久久国产精品午夜一区ai换脸| 亚洲午夜激情av| 国产成人欧美日韩在线电影| 日韩欧美一区在线| 亚洲伊人色欲综合网| 成人av免费在线观看| 久久午夜色播影院免费高清| 日韩和的一区二区| 欧美日韩成人高清| 亚洲一区二区三区激情| 日本高清免费不卡视频| 中文字幕一区二区三区av| 国产福利一区二区三区| 欧美电视剧免费观看| 青娱乐精品视频| 欧美一区二区三级| 日韩高清不卡一区二区| 69久久99精品久久久久婷婷| 亚洲午夜久久久久久久久电影网| 97久久人人超碰| 亚洲欧美中日韩| 99精品久久免费看蜜臀剧情介绍| 国产精品久久久久久妇女6080| 国产成人av电影在线观看| 久久日韩精品一区二区五区| 久久国产三级精品| 亚洲精品在线免费播放| 精东粉嫩av免费一区二区三区| 日韩精品一区二区在线| 国产综合久久久久影院| 久久久久久久久久久黄色| 国产精品影视在线观看| 国产欧美精品国产国产专区| 成人激情电影免费在线观看| 亚洲欧美在线视频观看| 欧亚一区二区三区| 亚洲123区在线观看| 日韩一级二级三级| 精彩视频一区二区| 国产精品毛片无遮挡高清| 91麻豆产精品久久久久久| 亚洲一区av在线| 欧美一级在线观看| 国产成人鲁色资源国产91色综| 中文在线资源观看网站视频免费不卡| 成人一区二区三区中文字幕| 亚洲欧美国产毛片在线| 欧美日韩成人一区| 国产精品一区三区| 一区二区三区免费网站| 678五月天丁香亚洲综合网| 国产剧情一区二区| 亚洲视频一区二区免费在线观看| 欧美日韩中文另类| 韩国女主播成人在线| 亚洲精品乱码久久久久久久久 | 欧美精选午夜久久久乱码6080| 麻豆精品视频在线观看免费| 中文字幕av免费专区久久| 欧美吻胸吃奶大尺度电影| 另类中文字幕网| 亚洲人成亚洲人成在线观看图片| 欧美三区免费完整视频在线观看| 精品亚洲欧美一区| 亚洲线精品一区二区三区| 精品国产乱码久久久久久老虎| 91日韩精品一区| 黄色日韩网站视频| 亚洲国产精品欧美一二99| 国产网站一区二区| 欧美一级欧美三级| 99久久国产综合精品女不卡| 捆绑变态av一区二区三区| 亚洲精品免费在线观看| 久久婷婷国产综合精品青草| 欧美日韩午夜精品| aaa欧美日韩| 国产一区二区不卡老阿姨| 午夜不卡在线视频| 一区二区不卡在线播放| 中文字幕欧美日本乱码一线二线| 91精品国产综合久久婷婷香蕉| 成人福利视频在线看| 免费成人美女在线观看.| 亚洲夂夂婷婷色拍ww47| 国产精品久久久久久福利一牛影视 | 99久久伊人网影院| 极品少妇一区二区三区精品视频| 亚洲最新视频在线观看| 国产精品青草久久| 久久看人人爽人人| 精品免费日韩av| 欧美一卡二卡在线| 91精品国产综合久久香蕉麻豆| 色呦呦日韩精品| 91亚洲国产成人精品一区二区三 | 国产欧美一区二区精品性色 | 狠狠久久亚洲欧美| 午夜精品影院在线观看| 一级精品视频在线观看宜春院| 中文幕一区二区三区久久蜜桃| 久久亚洲影视婷婷| 久久综合色8888| 日韩精品一区二区三区在线 | 亚洲人成小说网站色在线| 国产精品丝袜在线| 欧美韩国日本一区| 中文在线资源观看网站视频免费不卡| 久久综合国产精品| 26uuu成人网一区二区三区| 欧美精品一区二区久久婷婷| 精品sm在线观看| 国产欧美一区二区在线观看| 国产日韩欧美不卡在线| 国产精品丝袜久久久久久app| 亚洲国产精品成人久久综合一区| 国产精品午夜春色av| 亚洲欧美偷拍另类a∨色屁股| 亚洲精品视频自拍| 亚洲福利一区二区三区| 毛片基地黄久久久久久天堂| 九九九久久久精品| 成年人午夜久久久| 在线看一区二区| 91麻豆精品国产无毒不卡在线观看| 欧美一二三四在线| 亚洲国产精品二十页| 亚洲激情五月婷婷| 欧美a级理论片| 成人久久视频在线观看| 欧美最新大片在线看| 欧美一区二区久久| 欧美激情一区三区| 亚洲香蕉伊在人在线观| 精品亚洲porn| 91久久精品一区二区三| 日韩午夜av一区| 国产精品国产自产拍高清av王其| 一区二区三区精品视频| 久久99在线观看| 色综合天天综合| 91精品国产综合久久久久久漫画 | 国产精品综合一区二区| 色综合久久天天| 日韩欧美高清一区| 亚洲天堂福利av| 国产一区二区三区不卡在线观看 | 国产河南妇女毛片精品久久久| 不卡免费追剧大全电视剧网站| 欧美日韩一区国产| 国产日本欧美一区二区| 亚洲电影视频在线| 不卡影院免费观看| 精品国产sm最大网站| 一区二区三区成人在线视频| 国产一区中文字幕| 91精品国产欧美一区二区18| 成人欧美一区二区三区黑人麻豆| 天天操天天综合网| 在线区一区二视频| 国产精品―色哟哟| 精品夜夜嗨av一区二区三区| 欧美私模裸体表演在线观看| 国产欧美综合在线| 乱一区二区av| 69av一区二区三区| 亚洲一本大道在线| 色偷偷久久人人79超碰人人澡 | 欧美精品日日鲁夜夜添| 亚洲欧美激情小说另类| 国产东北露脸精品视频| 欧美一区二区三区色| 午夜电影网亚洲视频| 欧美性生活久久| 亚洲婷婷在线视频| 99re免费视频精品全部| 中文字幕的久久| 成人在线综合网| 久久精品亚洲国产奇米99| 精品一区二区在线看| 在线不卡欧美精品一区二区三区| 亚洲一区二区在线视频| 色综合网站在线| 亚洲激情综合网| 欧美亚洲尤物久久| 亚洲小说欧美激情另类| 欧美网站一区二区| 日韩精品成人一区二区在线| 欧美剧情电影在线观看完整版免费励志电影 | 99热99精品|