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

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

?? packetmac.cpp

?? 基于MAC網卡物理地址的通信類
?? CPP
字號:
// PacketMAC.cpp: implementation of the PacketMAC class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "PacketMAC.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


#include "WINSOCK2.H"
#include "Packet32.h"
#include "Ntddndis.h"
#include "string.h"

#pragma comment(lib, "Packet.lib")
#pragma comment(lib, "wpcap.lib")
#pragma comment(lib, "ws2_32.lib")

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

UINT GetPacket(LPVOID pParam);
void GetData(PacketMAC *dlg);		
UINT GetMine( LPVOID pParam );

PacketMAC::PacketMAC()
:Buffer(BUFMAX),gatewayBuffer(BUFMAX)
{
	ErrorText = "";
	AdapterList = "";
	AdapterName = "";
	AdapterNameCount = 0;
	lpPacket = PacketAllocatePacket();//建立數據緩存
	lpadapter = NULL;
	start = false;
	myip = "";
	for(int i=0;i<6;i++)
	{
		mmac[i] = 0;
	}
	GetWKNameList();
}

PacketMAC::~PacketMAC()
{
	start = false;
	Sleep(200);
	
	PacketFreePacket(lpPacket);		
	if(lpadapter !=NULL)
	{
		PacketCloseAdapter( lpadapter);
	}
}
//初始化
bool PacketMAC::init()
{
	//獲得本機IP
	HKEY hKey;
	CString strKeyName = 
		"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\";
	
	strKeyName += AdapterName.Mid(12);
	
	if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
		(LPCSTR)strKeyName,
		0,
		KEY_READ,
		&hKey) != ERROR_SUCCESS)
	{
		
		return FALSE;
	}
	
	unsigned char szData[256];
	DWORD dwDataType, dwBufSize;
	
	CString temp;
	
	dwBufSize = 256;
	if(RegQueryValueEx(hKey, "IPAddress", 0, &dwDataType, szData, &dwBufSize) == ERROR_SUCCESS)
	{	
		myip = (CString)szData;
	}

	//打開網卡
	lpadapter=PacketOpenAdapter(AdapterName.GetBuffer(100));
	
	if(NULL == lpadapter)
	{
		ErrorText = "Open Adapter Error";
		return false;
	}


	//過慮--只有目的地為本地主機網絡適配器的數據報才會被接收
	PacketSetHwFilter(lpadapter,NDIS_PACKET_TYPE_PROMISCUOUS);
	
	// 設置driver有512KB字節的緩沖區	
	PacketSetBuff(lpadapter,512000) ;
	
	// 設置讀操作超時時間0.5秒
	PacketSetReadTimeout(lpadapter,5000) ; 
	
	//即將packet結構中的buffer設置為傳遞的buffer指針。
	PacketInitPacket(lpPacket,(char*)buffer,256000);
	
	//設置調用PacketSendPacket()函數發送一個數據報副本所重復的次數。
	PacketSetNumWrites(lpadapter,1);

	ErrorText ="";
	return true;
}
//取網卡名列表
bool PacketMAC::GetWKNameList()
{
	
		char Name[8192],*name1,adapterlist[10][1024] = {{0}};
		ULONG    AdapterLength;
		int i,n,AdapterNum;
		
		if( PacketGetAdapterNames(Name,&AdapterLength) == FALSE )
		{	
			ErrorText.Format("不存在網卡!");
			return false;
	 	}
		
		if(strcmp(Name,"") == 0)
		{
			ErrorText = "不存在網卡!";
			return false;
		}
		name1 = Name;
	 	i = 0;
		n = 0;
	 	while((*name1!='\0') || (*(name1+2)!='\0'))
	 	{
			adapterlist[i][n]=*name1;
	 		name1 = name1 + 2;
	 		if(*name1 == '\0' && *(name1+1) == '\0' 
	 			&& *(name1+2)!='\0')
			{
				adapterlist[i][n]=*name1;
	 			i++;
				n=0;
					name1 = name1 + 2;
			}
			else
			{
					n++;
			}
		}
		 	
		AdapterNum = i+1;
		CString temp;
		for(i=0; i<AdapterNum ;i++)
		{
			temp.Format("%s",adapterlist[i]);
			AdapterList += temp+"&";
		}

		AdapterNameCount = AdapterNum;
	return true;
}

//獲取網卡個數
int PacketMAC::GetAdapterNameCount()
{
	return AdapterNameCount;
}

//從列表中取網卡名
CString PacketMAC::GetAdapterNameForList(int index)
{

	if(index > AdapterNameCount)
	{
		ErrorText.Format("Index Error");
		return "Error";
	}
	CString name = AdapterList;
	for(int i=0;i<index;i++)
	{

		name = name.Mid(name.Find("&",0)+1);
	}

	ErrorText = "";
	int ind = name.Find("&",0);
	if(ind<0)
	{
		return name;
	}
	else
	{
		return name.Left(ind);
	}
	
}

//設置網卡名
bool PacketMAC::SetAdapterName(int index)
{
	if(index > AdapterNameCount)
	{
		ErrorText = "index Error";
		return false;
	}
	AdapterName = GetAdapterNameForList(index);
	ErrorText = "";
	return true;
}

bool PacketMAC::SetAdapterName(CString name)
{
	for(int i=0 ;i<AdapterNameCount;i++)
	{
		if(name.Compare(GetAdapterNameForList(i)) == 0)
		{
			AdapterName = name;
			ErrorText = "";
			return true;
		}
	}

	ErrorText = "name Error";
	return false;
}

//取當前網卡名
CString PacketMAC::GetAdapterName()
{
	return AdapterName;
}

//取錯誤信息
CString PacketMAC::GetErrorText()
{

	return ErrorText;
}

//開始接收服務
bool PacketMAC::Open()
{
	if(start)
	{
		return false;
	}
	start = true;
	AfxBeginThread(GetPacket, this);
	Sleep(300);
/*

	int i;
	for(i=0;i<10;i++)
	{
		int t;
		for(t=0;t<6;t++)
		{
			if(mmac[i] != 0)
			{
				break;
			}
		}
		if(t<6)
		{
			break;
		}
		Sleep(500);
	}
	if(i<10)
	{
		return true;
	}
	start = false;
	return false;
*/
	return true;
}

//關閉接收服務
bool PacketMAC::Close()
{
	this->start = false;
	Sleep(300);
	return true;
}

//讀緩存
MAC PacketMAC::ReadBuffer()
{
	return Buffer.Get();
}

//
bool PacketMAC::IsNull()
{
	return Buffer.IsNull();
}
//發送數據
bool PacketMAC::Send(CString data,unsigned char tmac[])
{
	LPPACKET lppackets;
	lppackets = PacketAllocatePacket();
	
	MAC mac;
	char   sendbuf[sizeof(mac)];
	mac.head = MAC_HEAD;

	memcpy(mac.tha,tmac,6);
	memcpy(mac.sha,mmac,6);
	
	short int len = 1000;
	memcpy(mac.len,&len,2);
	int crc = 100;
	memcpy(mac.crc,&crc,4);
	MACDATA macdata;
	macdata.head = DATA_HEAD;
	
	memcpy(macdata.data,data.GetBuffer(999),sizeof(macdata.data));
	
	memcpy(mac.data,&macdata,sizeof(macdata));
	
	memset(sendbuf,0,sizeof(sendbuf));
	memcpy(sendbuf,&mac,sizeof(mac));
	PacketInitPacket(lppackets,sendbuf,sizeof(mac));
	if(PacketSendPacket(lpadapter,lppackets,TRUE)==FALSE)
	{
		PacketFreePacket(lppackets);		
		return false;
	}
	PacketFreePacket(lppackets);			
	return true;
}

bool PacketMAC::Send(CString data)
{
	LPPACKET lppackets;
	lppackets = PacketAllocatePacket();
	
	MAC mac;
	char   sendbuf[sizeof(mac)];
	mac.head = MAC_HEAD;
	
	for (int i = 0;i<6;i++)
	{
		mac.tha[i] = 0xff; 
	}
	
	memcpy(mac.sha,mmac,6);
	
	short int len = 1000;
	memcpy(mac.len,&len,2);
	int crc = 100;
	memcpy(mac.crc,&crc,4);
	MACDATA macdata;
	macdata.head = DATA_HEAD_ALL;
	
	memcpy(macdata.data,data.GetBuffer(999),sizeof(macdata.data));
	
	memcpy(mac.data,&macdata,sizeof(macdata));

	memset(sendbuf,0,sizeof(sendbuf));
	memcpy(sendbuf,&mac,sizeof(mac));
	PacketInitPacket(lppackets,sendbuf,sizeof(mac));
	if(PacketSendPacket(lpadapter,lppackets,TRUE)==FALSE)
	{
		PacketFreePacket(lppackets);				
		return false;
	}
	PacketFreePacket(lppackets);			
	return true;

}


//===================================================================
//全局函數

UINT GetPacket(LPVOID pParam)
{
	PacketMAC *dlg = (PacketMAC *)pParam;
	while(dlg->start)
	{
		
		if( PacketReceivePacket(dlg->lpadapter,dlg->lpPacket,TRUE) )
		{
			GetData(dlg) ;		
		}
		
	}
	
	return 0;
}

void GetData(PacketMAC *dlg)
{
	ULONG  ulbytesreceived,off;
	ETHDR  *eth;
	ARPHDR *arp;
	IPHDR *ip;
//	MAC* mac;
	char   *buf,*pChar;
	struct bpf_hdr      *hdr;
	struct sockaddr_in  sin;

	ulbytesreceived = dlg->lpPacket->ulBytesReceived;
	buf = (char *)dlg->lpPacket->Buffer;

	off=0;
	while( off < ulbytesreceived )
	{
		
		hdr = (struct bpf_hdr *)(buf + off);
		off += hdr->bh_hdrlen;
		
		pChar = (char *)(buf + off);
		off = Packet_WORDALIGN(off + hdr->bh_caplen);
		
		eth = (ETHDR *)pChar;                
		arp = (ARPHDR *)(pChar + sizeof(ETHDR)); 
//		mac = (MAC *)pChar;
//		CString CS_ip;
		
		if( htons(ETH_IP) == eth->eh_type)				//當數據包為IP數據包時進入
		{
			unsigned char tmac[6] = {0x01,0x00,0x5e,0x7f,0xff,0xfa};
			int i;
			for(i=0;i<6;i++)
			{
				if(eth->eh_dst[i]!=tmac[i])
				{
					break;
				}
			}
			if(i>=6)
			{
				Gateway gateway;
				ip = (IPHDR *)(pChar + sizeof(ETHDR));
				sin.sin_addr.S_un.S_addr = ip->sourceip;
				CString ips = inet_ntoa(sin.sin_addr);
				memcpy(gateway.ip,ips.GetBuffer(20),ips.GetAllocLength()+1);

				dlg->gatewayBuffer.Put(gateway);
			}
		
		}
/*
		else if(eth->eh_type==htons(ETH_ARP))			//當數據包為ARP數據包時進入
		{
			
			sin.sin_addr.S_un.S_addr=*((unsigned long *)(((char *)arp)+14));
			CS_ip = inet_ntoa(sin.sin_addr);			//取發送方IP地址
			
			if(CS_ip == dlg->myip)				//若此IP為本機IP則將MAC地址存入主窗口對象
			{
				memcpy(dlg->mmac,eth->eh_src,6);
			}
		
			
		}
		else if(mac->head==MAC_HEAD)
		{
			int i;
			for(i=0;i<6;i++)
			{
				if(mac->tha[i]!=0xff)
				{
					break;
				}
			}
			if(i>=6)
			{
				dlg->Buffer.Put(*mac);
			}
			else
			{
				for(i=0;i<6;i++)
				{
					if(mac->tha[i]!=dlg->mmac[i])
					{
						break;
					}
				}
				if(i>=6)
				{
					dlg->Buffer.Put(*mac);
				}
			}
		}
		
*/		
		
	}

	return ;
	
}


UINT GetMine( LPVOID pParam )
{
	PacketMAC *dlg = (PacketMAC *)pParam;
	LPPACKET lppacket;		//數據包
	lppacket = PacketAllocatePacket();
	char   sendbuf[1024]={0};
	int    k;
	ETHDR  eth;
	ARPHDR arp;
	
	for(k=0;k<6;k++)
	{
		eth.eh_dst[k]  = 0xff;
		eth.eh_src[k]  = 0x82;
		arp.arp_sha[k] = 0x82;
		arp.arp_tha[k] = 0x00;
	}
	
	eth.eh_type = htons(ETH_ARP);
	arp.arp_hdr = htons(ARP_HARDWARE);
	arp.arp_pro = htons(ETH_IP);
	arp.arp_hln = 6;
	arp.arp_pln = 4;
	arp.arp_opt = htons(ARP_REQUEST);
	
	char *p;
	p = (char*)&arp;
	
	*((unsigned long *)(p + 14)) = inet_addr( "112.112.112.112" );
	*((unsigned long *)(p + 24)) = inet_addr( dlg->myip );
	memcpy( sendbuf, &eth, sizeof(eth) );
	memcpy( sendbuf + sizeof(eth), &arp, sizeof( arp ) );
	
	PacketInitPacket(lppacket,sendbuf,sizeof(eth)+sizeof(arp));
	if(PacketSendPacket(dlg->lpadapter,lppacket,TRUE)==FALSE)
	{
		PacketFreePacket(lppacket);				
		return -1;             
	}
	PacketFreePacket(lppacket);		
	return 0;
}


Gateway PacketMAC::ReadBufferIP()
{
	return gatewayBuffer.Get();
}

bool PacketMAC::IsNullIP()
{
	return gatewayBuffer.IsNull();
}

void PacketMAC::write()
{
	Gateway buffer;
	buffer.ip[0]='A';
	buffer.ip[1]=0;
	this->gatewayBuffer.Put(buffer);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合视频| 欧美日韩免费在线视频| 91啪九色porn原创视频在线观看| 91丨九色porny丨蝌蚪| 日韩一区二区免费在线观看| 中文字幕不卡在线| 青青国产91久久久久久| 成人精品视频一区二区三区尤物| 欧美酷刑日本凌虐凌虐| 国产精品嫩草久久久久| 久久精品国产成人一区二区三区| 99久久久精品| 国产女主播视频一区二区| 麻豆91在线看| 欧美男女性生活在线直播观看| 国产精品免费av| 极品少妇一区二区三区精品视频| 欧美日韩国产成人在线91| 中文字幕色av一区二区三区| 久久精品999| 欧美日韩精品免费观看视频| 中文字幕欧美三区| 成人午夜看片网址| 日韩午夜激情电影| 水蜜桃久久夜色精品一区的特点| caoporm超碰国产精品| 国产欧美一区二区在线观看| 麻豆精品在线播放| 91麻豆精品久久久久蜜臀| 亚洲午夜日本在线观看| 97久久精品人人澡人人爽| 国产精品美女久久久久久久久久久| 久久er精品视频| 欧美一级片免费看| 奇米精品一区二区三区四区 | 国产一区 二区| 日韩欧美一二三区| 久久成人久久鬼色| 欧美大片国产精品| 激情六月婷婷久久| 精品国产精品网麻豆系列| 久久99日本精品| 精品国产乱码久久久久久1区2区| 美国十次了思思久久精品导航| 欧美美女视频在线观看| 日韩影院精彩在线| 91麻豆精品国产91久久久使用方法| 亚洲一卡二卡三卡四卡 | 国产精品午夜在线观看| 国产超碰在线一区| 成人免费在线播放视频| 91在线小视频| 亚洲成av人综合在线观看| 欧美视频在线一区| 麻豆91精品91久久久的内涵| 精品国产伦一区二区三区免费 | 国产福利91精品一区二区三区| 精品久久一二三区| 国产成人午夜99999| 综合电影一区二区三区| 欧美性受极品xxxx喷水| 看电视剧不卡顿的网站| 国产欧美日韩在线| 91精品福利视频| 秋霞成人午夜伦在线观看| 国产亚洲精久久久久久| 一本色道久久综合精品竹菊| 亚洲 欧美综合在线网络| 日韩欧美国产1| 成人高清免费观看| 午夜久久久久久电影| 久久婷婷国产综合精品青草| 97久久人人超碰| 亚洲国产日产av| 2023国产精华国产精品| 色屁屁一区二区| 九九热在线视频观看这里只有精品| 国产调教视频一区| 在线观看视频一区二区 | 一区二区三区中文字幕精品精品| 欧美男人的天堂一二区| 国产aⅴ综合色| 偷窥少妇高潮呻吟av久久免费| 久久久久久久综合日本| 欧美影院精品一区| 国产a久久麻豆| 男人的天堂久久精品| 亚洲视频综合在线| 久久久久久免费网| 欧美精品久久久久久久久老牛影院| 国产91精品一区二区麻豆亚洲| 亚洲成人av中文| 亚洲欧洲日韩女同| 久久综合网色—综合色88| 欧美日韩成人高清| 99re6这里只有精品视频在线观看| 久久99精品国产| 午夜a成v人精品| 亚洲视频一二三| 国产区在线观看成人精品| 8x福利精品第一导航| 在线免费观看成人短视频| 成人深夜在线观看| 国产在线国偷精品免费看| 亚洲第一会所有码转帖| 亚洲私人影院在线观看| 国产精品美女一区二区在线观看| 欧美一区二区三区四区久久| 欧美性生活影院| 一本高清dvd不卡在线观看| 成人性生交大片免费看视频在线 | 色综合色狠狠综合色| 成人国产精品免费观看视频| 国产一区欧美日韩| 精品一区二区三区免费观看| 日本三级亚洲精品| 午夜精品久久久久影视| 亚洲成人一区二区在线观看| 一区二区三区精品在线| 亚洲精品免费在线观看| 亚洲三级理论片| 中文字幕一区二区三区不卡 | 成人国产免费视频| www.欧美色图| 91性感美女视频| 91小视频在线| 91蜜桃网址入口| 91国产视频在线观看| 欧美唯美清纯偷拍| 欧美日韩一本到| 91麻豆精品国产91久久久久久| 欧美精品vⅰdeose4hd| 91精品国产一区二区三区| 88在线观看91蜜桃国自产| 欧美一卡二卡三卡四卡| 精品国产乱码久久久久久蜜臀 | 国产成人av电影在线观看| 国产一区二区中文字幕| 粗大黑人巨茎大战欧美成人| 成人激情av网| 欧美性猛交xxxxxxxx| 日韩视频免费观看高清完整版| 久久综合九色综合97婷婷女人| 国产三级一区二区| 亚洲三级小视频| 免费久久99精品国产| 国产精品亚洲一区二区三区妖精| 成人白浆超碰人人人人| 91国产福利在线| 26uuu亚洲综合色欧美| 中文字幕一区二区三区视频| 亚洲永久精品国产| 国内精品嫩模私拍在线| www.欧美亚洲| 日韩免费一区二区三区在线播放| 国产日韩精品一区二区三区在线| 亚洲免费伊人电影| 男女男精品视频| 不卡的av在线| 日韩欧美一级精品久久| 国产精品久久久久久亚洲毛片| 亚洲成av人片一区二区| 国产一区不卡在线| 欧美影院午夜播放| 久久精品人人做人人综合| 亚洲一区二区三区影院| 国产在线国偷精品产拍免费yy| 91丨九色丨尤物| 久久久精品综合| 亚洲高清久久久| www.日韩精品| 久久久久久久电影| 午夜电影网亚洲视频| 成人成人成人在线视频| 日韩欧美国产一区二区在线播放| 亚洲欧美另类图片小说| 国内外成人在线视频| 欧美日韩高清影院| 中文字幕一区二区三| 精品一区二区三区香蕉蜜桃| 91福利在线播放| 中文字幕免费不卡| 久久国产欧美日韩精品| 欧美日韩一级二级| 亚洲男同1069视频| 福利一区二区在线| 精品国产乱子伦一区| 日本欧美一区二区在线观看| 色噜噜狠狠一区二区三区果冻| 久久久久久久av麻豆果冻| 蜜臀av性久久久久蜜臀av麻豆| 欧美午夜精品免费| 亚洲欧美一区二区在线观看| 国产乱色国产精品免费视频| 欧美一级免费大片| 午夜国产精品影院在线观看| 在线观看一区二区精品视频| 亚洲女子a中天字幕| 93久久精品日日躁夜夜躁欧美| 欧美激情在线一区二区三区|