#include <iostream>
#include <cstdio>
#include <string>
#include <cstdlib>
using namespace std;
int main(int argc, char** argv) {
int t;
scanf("%d", &t);
getchar();
for (int i = 1; i <= t; ++i) {
printf("Case #%d\n", i);
string data;
getline(cin, data);
// 0 3 ..
string lenStr = data.substr(6, 2) + data.substr(9, 2);
int len = (int)strtol(lenStr.c_str(), NULL, 16);
printf("Total length = %d bytes\n", len);
string srcStr = data.substr(36, 2);
printf("Source = %d.", (int)strtol(srcStr.c_str(), NULL, 16));
srcStr = data.substr(39, 2);
printf("%d.", (int)strtol(srcStr.c_str(), NULL, 16));
srcStr = data.substr(42, 2);
printf("%d.", (int)strtol(srcStr.c_str(), NULL, 16));
srcStr = data.substr(45, 2);
printf("%d\n", (int)strtol(srcStr.c_str(), NULL, 16));
string dstStr = data.substr(48, 2);
printf("Destination = %d.", (int)strtol(dstStr.c_str(), NULL, 16));
dstStr = data.substr(51, 2);
printf("%d.", (int)strtol(dstStr.c_str(), NULL, 16));
dstStr = data.substr(54, 2);
printf("%d.", (int)strtol(dstStr.c_str(), NULL, 16));
dstStr = data.substr(57, 2);
printf("%d\n", (int)strtol(dstStr.c_str(), NULL, 16));
srcStr = data.substr(60, 2) + data.substr(63, 2);
printf("Source Port = %d\n", (int)strtol(srcStr.c_str(), NULL, 16));
dstStr = data.substr(66, 2) + data.substr(69, 2);
printf("Destination Port = %d\n", (int)strtol(dstStr.c_str(), NULL, 16));
printf("\n");
}
return 0;
}
2012计算机D IP数据包解析
最新推荐文章于 2018-03-22 21:35:38 发布