在做以太网相关工作,抓包器抓来了一大堆东西,用MATLAB写了个小程序,剔除无效数据。记录分享一下。
适用与数据包的格式固定:包中有效数据长度、位置固定,包中无效数据长度、位置固定。
大多数通信协议都符合这个条件,比如以太网协议中的UDP/IP协议:除了蓝色框内的数据以外,全是报头,要剔除。
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];
for i = 1 : count - 1
j = [1+i*len_packet : len_invalid+i*len_packet];
z = [z,j];
end
data(z) = [];
data
例: