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

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

?? frameparser.cpp

?? ARP協議獲得局域網內活動主機物理地址程序本程序需要安裝Winpcap
?? CPP
字號:
#include<fstream.h>			// 用于文件操作
#include<stdlib.h>			// 用于程序流程控制


////////////////////////////////////////////////////////////////////////////////
// CRC校驗,在上一輪校驗的基礎上繼續作8位CRC校驗
// 
//	輸入參數:
//		chCurrByte	低8位數據有效,記錄了上一次CRC校驗的余數
//		chNextByte	低8位數據有效,記錄了本次要繼續校驗的一個字節	
//
//	傳出參數:
//		chCurrByte	低8位數據有效,記錄了本次CRC校驗的余數
////////////////////////////////////////////////////////////////////////////////

void checkCRC(int &chCurrByte, int chNextByte)
{
	// CRC循環:每次調用進行8次循環,處理一個字節的數據。
	for (int nMask = 0x80; nMask > 0; nMask >>= 1)
	{
		if ((chCurrByte & 0x80) != 0)		// 首位為1:移位,并進行異或運算		
		{	
			chCurrByte <<= 1;				// 移一位
			if ( (chNextByte & nMask) != 0)	// 補一位
			{
				chCurrByte |= 1;
			}
			chCurrByte ^= 7;				// 首位已經移出,僅對低8位進行異或運算,7的二進制為0000,0111
		}
		else								// 首位為0,只移位,不進行異或運算
		{		
			chCurrByte <<= 1;				// 移一位
			if ( (chNextByte & nMask) != 0)	// 補一位
			{
				chCurrByte |= 1;
			}
		}
	}
}


void main(int argc, char* argv[])		
{
	// 檢測命令行參數的正確性
	if (argc != 2)
	{
		cout << "請以幀封裝包文件為參數重新執行程序" << endl;
		exit(0);
	}

	// 檢測輸入文件是否存在,并可以按所需的權限和方式打開
	ifstream file(argv[1], ios::in|ios::binary|ios::nocreate);
	if (!file.is_open())
	{
		cout << "無法打開幀封裝包文件,請檢查文件是否存在并且未損壞" << endl;
		exit(0);
	}
	

	// 變量聲明及初始化
	int nSN = 1;						// 幀序號
	int nCheck = 0;						// 校驗碼
	int nCurrDataOffset = 22;			// 幀頭偏移量
	int nCurrDataLength = 0;			// 數據字段長度
	bool bParseCont = true;				// 是否繼續對輸入文件進行解析
	int nFileEnd = 0;					// 輸入文件的長度
	
	// 計算輸入文件的長度
	file.seekg(0, ios::end);			// 把文件指針移到文件的末尾
	nFileEnd = file.tellg();			// 取得輸入文件的長度
	file.seekg(0, ios::beg);			// 文件指針位置初始化

	cout.fill('0');						// 顯示初始化
	cout.setf(ios::uppercase);			// 以大寫字母輸出

	// 定位到輸入文件中的第一個有效幀
	// 從文件頭開始,找到第一個連續的“AA-AA-AA-AA-AA-AA-AA-AB”
	while ( true )
	{		
		for (int j = 0; j < 7; j++)				// 找7個連續的0xaa
		{			
			if (file.tellg() >= nFileEnd)		// 安全性檢測
			{
				cout<<"沒有找到合法的幀"<<endl;
				file.close();
				exit(0);
			}
			// 看當前字符是不是0xaa,如果不是,則重新尋找7個連續的0xaa
			if (file.get() != 0xaa)				
			{
				j = -1;
			}
		}
		
		if (file.tellg() >= nFileEnd)			// 安全性檢測
		{
			cout<<"沒有找到合法的幀"<<endl;
			file.close();
			exit(0);
		}
		
		if (file.get() == 0xab)					// 判斷7個連續的0xaa之后是否為0xab
		{
			break;
		}
	}

	// 將數據字段偏移量定位在上述二進制串之后14字節處,并準備進入解析階段
	nCurrDataOffset = file.tellg() + 14;
	file.seekg(-8,ios::cur);


	// 主控循環
	while ( bParseCont ) // 當仍然可以繼續解析輸入文件時,繼續解析
	{

		// 檢測剩余文件是否可能包含完整幀頭
		if (file.tellg() + 14 > nFileEnd)
		{
			cout<<endl<<"沒有找到完整幀頭,解析終止"<<endl;
			file.close();
			exit(0);
		}

		int c;						// 讀入字節
		int i = 0;					// 循環控制變量					
		int EtherType = 0;			// 由幀中讀出的類型字段
		bool bAccept = true;		// 是否接受該幀


		// 輸出幀的序號
		cout << endl << "序號:\t\t" << nSN;
		
		// 輸出前導碼,只輸出,不校驗
		cout << endl << "前導碼:\t";			
		for (i = 0; i < 7; i++)					// 輸出格式為:AA AA AA AA AA AA AA
		{
			cout.width(2);
			cout << hex << file.get() << dec << " ";
		}
		// 輸出幀前定界符,只輸出,不校驗
		cout << endl << "幀前定界符:\t";		
		cout.width(2);							// 輸出格式為:AB
		cout << hex << file.get();

		// 輸出目的地址,并校驗
		cout << endl << "目的地址:\t";	
		for (i = 0; i < 6; i++)					// 輸出格式為:xx-xx-xx-xx-xx-xx
		{
			c = file.get();
			cout.width(2);
			cout<< hex << c << dec << (i==5 ? "" : "-");
			if (i == 0)							// 第一個字節,作為“余數”等待下一個bit
			{
				nCheck = c;
			}
			else								// 開始校驗
			{
				checkCRC(nCheck, c);
			}
		}
		
		// 輸出源地址,并校驗
		cout << endl << "源地址:\t";
		for (i = 0; i < 6; i++)					// 輸出格式為:xx-xx-xx-xx-xx-xx
		{
			c = file.get();
			cout.width(2);
			cout<< hex << c << dec << (i==5 ? "" : "-");
			checkCRC(nCheck, c);				// 繼續校驗
		}

		// 輸出類型字段,并校驗
		cout<<endl<<"類型字段:\t";
		cout.width(2);							
		// 輸出類型字段的高8位
		c = file.get();
		cout<< hex << c << dec << " ";
		checkCRC(nCheck, c);					// CRC校驗
		EtherType = c;
		// 輸出類型字段的低8位
		c = file.get();						
		cout.width(2);
		cout<< hex << c;
		checkCRC(nCheck,c);						// CRC校驗
		EtherType <<= 8;						// 轉換成主機格式
		EtherType |= c;

		// 定位下一個幀,以確定當前幀的結束位置
		while ( bParseCont )
		{

			for (int i = 0; i < 7; i++)					//找下一個連續的7個0xaa
			{				
				if (file.tellg() >= nFileEnd)			//到文件末尾,退出循環
				{
					bParseCont = false;
					break;
				}
				// 看當前字符是不是0xaa,如果不是,則重新尋找7個連續的0xaa
				if (file.get() != 0xaa)
				{
					i = -1;
				}
			}
			
			// 如果直到文件結束仍沒找到上述比特串,將終止主控循環的標記bParseCont置為true
			bParseCont = bParseCont && (file.tellg() < nFileEnd);													

			// 判斷7個連續的0xaa之后是否為0xab
			if (bParseCont && file.get() == 0xab)		
			{
				break;
			}
		}

		// 計算數據字段的長度
		nCurrDataLength =								
			bParseCont ?								// 是否到達文件末尾
			(file.tellg() - 8 - 1 - nCurrDataOffset) :	// 沒到文件末尾:下一幀頭位置 - 前導碼和定界符長度 - CRC校驗碼長度 - 數據字段起始位置
			(file.tellg() - 1 - nCurrDataOffset);		// 已到達文件末尾:文件末尾位置 - CRC校驗碼長度 - 數據字段起始位置

		
		// 以文本格式數據字段,并校驗
		cout << endl << "數據字段:\t";	
		unsigned char* pData = new unsigned char[nCurrDataLength];	// 創建緩沖區
		file.seekg(bParseCont ? (-8 - 1 -nCurrDataLength) : ( -1 - nCurrDataLength), ios::cur);
		file.read(pData, nCurrDataLength);				// 讀入數據字段
		
		int nCount = 50;								// 每行的基本字符數量
		for (i = 0; i < nCurrDataLength; i++)			// 輸出數據字段文本					
		{
			nCount--;
			cout << pData[i];							// 字符輸出
			checkCRC(nCheck, (int)pData[i]);			// CRC校驗
			
			if ( nCount < 0)							// 換行處理
			{
				// 將行尾的單詞寫完整
				if ( pData[i] == ' ' )					
				{
					cout << endl << "\t\t";
					nCount = 50;
				}
				// 處理過長的行尾單詞:換行并使用連字符
				if ( nCount < -10)						
				{
					cout<< "-" << endl << "\t\t";
					nCount = 50;
				}
			}
		}
		delete[] pData;									//釋放緩沖區空間

		
		// 輸出CRC校驗碼,如果CRC校驗有誤,則輸出正確的CRC校驗碼
		cout << endl <<"CRC校驗";
		c = file.get();								// 讀入CRC校驗碼
		int nTmpCRC = nCheck;
		checkCRC(nCheck, c);						// 最后一步校驗

		if ((nCheck & 0xff) == 0)					// CRC校驗無誤
		{
			cout.width(2);
			cout<<"(正確):\t"<< hex << c;
		}
		else										// CRC校驗有誤
		{
			cout.width(2);
			cout<< "(錯誤):\t" << hex << c;	
			checkCRC(nTmpCRC, 0);					// 計算正確的CRC校驗碼
			cout<< "\t應為:" << hex << (nTmpCRC & 0xff);
			bAccept = false;						// 將幀的接收標記置為false
		}
	
		//	如果數據字段長度不足46字節或數據字段長度超過1500字節,則將幀的接收標記置為false	
		if (nCurrDataLength < 46 ||	nCurrDataLength > 1500 )							
		{
			bAccept = false;
		}

		// 輸出幀的接收狀態
		cout<< endl << "狀態:\t\t" << (bAccept ? "Accept" : "Discard") << endl <<endl;

		nSN++;									// 幀序號加1
		nCurrDataOffset = file.tellg() + 22;	// 將數據字段偏移量更新為下一幀的幀頭結束位置

	}

	// 關閉輸入文件
	file.close();

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本大道久久a久久精品综合| 在线亚洲人成电影网站色www| jlzzjlzz国产精品久久| 欧美日韩一区中文字幕| 亚洲视频香蕉人妖| 国产一区激情在线| 日韩视频永久免费| 亚洲电影一区二区三区| 成人网在线播放| 日韩精品一区二区三区视频 | 成人永久看片免费视频天堂| 欧美日韩国产高清一区二区三区| 国产精品久久国产精麻豆99网站| 日韩国产一区二| 欧美在线影院一区二区| 自拍偷在线精品自拍偷无码专区| 国产精品一二三四| 精品久久国产老人久久综合| 日韩高清中文字幕一区| 欧美日韩免费电影| 亚洲综合999| 91丨九色丨蝌蚪丨老版| 亚洲国产精品成人综合色在线婷婷| 精品综合久久久久久8888| 欧美日韩精品欧美日韩精品一综合| 亚洲人成7777| 95精品视频在线| 综合av第一页| 91久久人澡人人添人人爽欧美| 日韩一区中文字幕| 日本伦理一区二区| 亚洲一区二区三区中文字幕| 色婷婷久久99综合精品jk白丝| 亚洲四区在线观看| 欧美一区二区三区白人| 亚洲国产精品人人做人人爽| 欧美日韩国产一级片| 日韩和欧美一区二区三区| 欧美高清激情brazzers| 免费在线观看成人| 欧美精品一区二区三区在线 | 精品国产一区二区三区久久影院| 老司机精品视频在线| 精品国产乱码久久久久久久| 韩国中文字幕2020精品| 国产欧美一区在线| caoporn国产精品| 亚洲一线二线三线久久久| 欧美日韩视频一区二区| 蜜桃视频在线一区| 久久精品亚洲乱码伦伦中文| 成人免费视频视频| 亚洲一区二区欧美| 欧美一区二区三区四区在线观看| 久久99精品国产麻豆婷婷| 国产亚洲一区二区在线观看| 一本色道a无线码一区v| 婷婷国产在线综合| 国产欧美va欧美不卡在线| 色婷婷亚洲一区二区三区| 秋霞电影网一区二区| 2021国产精品久久精品| 色诱视频网站一区| 麻豆91在线观看| 综合久久给合久久狠狠狠97色| 欧美日韩免费观看一区二区三区| 国产一区二区三区免费播放| 亚洲精品成人在线| 欧美大片顶级少妇| 91国偷自产一区二区使用方法| 麻豆91精品视频| 亚洲免费成人av| 欧美成人a视频| 欧洲一区在线电影| 国产精品456露脸| 天天色综合天天| 肉肉av福利一精品导航| 国产日产精品一区| 欧美日韩成人综合在线一区二区| 国产aⅴ精品一区二区三区色成熟| 亚洲国产视频网站| 国产精品天美传媒| 日韩三级伦理片妻子的秘密按摩| 成人自拍视频在线| 精品在线播放免费| 亚洲成人在线网站| 亚洲欧美视频一区| 国产视频一区二区在线| 日韩欧美在线不卡| 精品视频一区 二区 三区| 成人av小说网| 国产精品99久| 激情小说欧美图片| 日韩电影在线一区二区三区| 一区二区在线看| 国产精品免费观看视频| xfplay精品久久| 欧美疯狂做受xxxx富婆| 欧美伊人精品成人久久综合97| 成人av网址在线| 国产精一品亚洲二区在线视频| 蜜桃av一区二区| 日日噜噜夜夜狠狠视频欧美人| 亚洲影院久久精品| 亚洲女人****多毛耸耸8| 国产精品久久久久久久久搜平片 | 欧美日韩精品欧美日韩精品一综合| 成人黄页在线观看| 国产黑丝在线一区二区三区| 国产麻豆成人传媒免费观看| 久久精品99国产精品日本| 日韩国产高清影视| 日本成人在线看| 日韩高清在线电影| 麻豆国产精品视频| 久久国产精品免费| 国产呦精品一区二区三区网站 | 亚洲一区免费视频| 亚洲亚洲精品在线观看| 亚洲国产视频在线| 全国精品久久少妇| 免费成人在线观看视频| 成人精品gif动图一区| 成人免费不卡视频| av电影在线不卡| 欧美亚洲国产bt| 在线播放欧美女士性生活| 9191成人精品久久| 精品国产乱码久久久久久1区2区 | 极品美女销魂一区二区三区 | 日韩激情视频网站| 美国三级日本三级久久99| 国产综合一区二区| 国产白丝网站精品污在线入口| 成人一区二区三区| 在线精品视频小说1| 91.xcao| 久久久精品中文字幕麻豆发布| 中文字幕 久热精品 视频在线| 亚洲女女做受ⅹxx高潮| 日av在线不卡| 高清shemale亚洲人妖| 91理论电影在线观看| 欧美欧美午夜aⅴ在线观看| 欧美精品一区二区三区很污很色的| 国产亚洲女人久久久久毛片| 亚洲少妇30p| 免费的成人av| 91蜜桃婷婷狠狠久久综合9色| 欧美精品一卡两卡| 国产日韩欧美不卡| 香蕉久久一区二区不卡无毒影院 | 日韩综合一区二区| 成人美女视频在线观看18| 欧美精三区欧美精三区| 欧美激情在线观看视频免费| 亚洲国产成人av网| 国产精品自拍在线| 欧美视频一区在线| 国产日韩精品一区二区三区在线| 亚洲国产精品综合小说图片区| 国产精品综合久久| 制服丝袜成人动漫| 亚洲欧美激情插| 91在线免费播放| 久久人人爽爽爽人久久久| 亚洲一区自拍偷拍| 国产mv日韩mv欧美| 欧美一级生活片| 亚洲综合999| 不卡一二三区首页| 久久久一区二区| 免费成人美女在线观看.| 在线观看视频91| 亚洲国产精品二十页| 国产曰批免费观看久久久| 777xxx欧美| 亚洲一二三区在线观看| 99国产精品99久久久久久| 久久久青草青青国产亚洲免观| 视频一区视频二区中文| 91精品福利视频| 中文字幕综合网| 丁香婷婷综合五月| 久久青草国产手机看片福利盒子| 日韩中文字幕麻豆| 欧美日韩在线电影| 亚洲免费毛片网站| 99v久久综合狠狠综合久久| 中文字幕成人网| 国产在线播放一区| 精品国产一区二区三区久久久蜜月| 日本午夜一本久久久综合| 欧美日韩精品久久久| 亚洲成人在线免费| 777午夜精品免费视频| 午夜欧美在线一二页| 在线播放91灌醉迷j高跟美女 | 亚洲精品一二三四区| 91丨国产丨九色丨pron|