資源簡介
一個計算IP首部和TCP及UDP校驗和的驗證程序。使用方法:1.數(shù)據(jù)來源,用Wireshark抓包,復(fù)制...as a Hex Stream;2.右擊運行窗口的標(biāo)題欄-->編輯-->粘貼-->回車,即可。本程序在Windows下,采用C語言開發(fā),代碼里面注釋詳細。
代碼片段和文件信息
/***************************************************************************
?*?Copyright@caiyinwang@163.com.???????????????????????????????????????????*
?*?Author:Wang?Caiyin??????????????????????????????????????????????????????*
?*?Ver:0.1?????????????????????????????????????????????????????????????????*
?*?Date:2019-04-27?????????????????????????????????????????????????????????*
?*?Description:這是一個計算IP首部和TCP及UDP校驗和的驗證程序。??????????????*
?*?使用方法:1.數(shù)據(jù)來源,用Wireshark抓包,復(fù)制...as?a?Hex?Stream;?????????*
?*???????????2.右擊運行窗口的標(biāo)題欄-->編輯-->粘貼-->回車,即可。???????????*
?***************************************************************************/
#include?
#include?
unsigned?ipheader[10]t_data[759]t;??//ipheader存儲IP首部數(shù)據(jù),t_data存儲傳輸層數(shù)據(jù),t為傳輸層數(shù)據(jù)類型。
//注意:傳輸層data從開頭取16bit,當(dāng)結(jié)尾為8bit,將低8bit設(shè)為0x00;當(dāng)然0x00不能算為數(shù)據(jù)長度
int?main()
{
void?read_data();
void?ipCheckSum();
void?tCheckSum();
printf(“請輸入您用wireshark抓包獲取的數(shù)據(jù):“);
read_data();
printf(“\n********************************************************************************\n“);
if(t==6)
{
printf(“????您輸入的是TCP數(shù)據(jù)。\n“);
ipCheckSum();
tCheckSum();
}
else?if(t==17)
{
printf(“????您輸入的是UDP數(shù)據(jù)。\n“);
ipCheckSum();
tCheckSum();
}
else
printf(“????您輸入的數(shù)據(jù)有誤。\n“);
system(“pause“);
return?0;
}
void?ipCheckSum()
{
unsigned?sum=0;
int?i;
printf(“\n????IP首部:“);
for(i=0;i<10;i++)
{
printf(“%04x?“ipheader[i]);
sum=sum+~ipheader[i]%0x10000;
}
s
- 上一篇:四變量遺傳算法求最小值程序C++
- 下一篇:基于proteus的計算器
評論
共有 條評論