在做以太网相关工作,抓包器抓来了一大堆东西,用MATLAB写了个小程序,剔除无效数据。记录分享一下。
适用与数据包的格式固定:包中有效数据长度、位置固定,包中无效数据长度、位置固定。
大多数通信协议都符合这个条件,比如以太网协议中的UDP/IP协议:除了蓝色框内的数据以外,全是报头,要剔除。
UDP IP 以太网协议.jpg
clc;
clear all;
len_invalid = 2;%无效数据的长度
len_valid = 3;%有效数据的长度
len_packet = len_valid + len_invalid;%数据包总长度
count = 3;%数据包数目
data = textread('test.txt')';%读数据为矩阵,并转置为“行存储”
[hang , lie] = size(data);%行列数
data = reshape(data,1,hang * lie);%变成一行,方便查数
z = [1:len_invalid];%无效数据的位置存储在z中
for i = 1 : count - 1
j = [1+ilen_packet : len_invalid+ilen_packet];
z = [z,j];
end
data(z) = [];%剔除位置为z的数据
data%干净的有效数据
网友评论