代码拉取完成,页面将自动刷新
本仓库作为xpkt软件的发布和维护仓库使用
Configure
进入配置界面
,如上图,点击左侧区域的Configuration
旁边的+
,添加全新的流,或者基于当前的流进行修改,以下是基本信息说明:
+
按钮添加新的字段,并对字段进行修改来实现快速构建报文Hex
旁边的笔形图标
进入,可以直接调整报文的Hex数据,调整完后点击同位置的确认按钮完成编辑Save
按钮将流保存下来,保存的流会存到配置文件中,即便软件关闭也不会丢失Summary
回到概览视图
,表格中可以看到所有保存的流,对流进行勾选,同时指定发送的网卡,点击播放图标
按钮,即可启动发包;点击停止图标
可以结束发包pnpm tsc
生成的,有部分修改。最终被软件读取的是protocol目录。Protocol Directory
的配置,软件会自动加载配置目录下的所有js文件,并尝试解析为协议处理文件// only core code snippets here
var initval = [0x00, 0x0e, 0xc6, 0xc1, 0x38, 0x41, 0x74, 0xa9, 0x12, 0x12, 0x03, 0x12, 0x08, 0x00];
const etypeOpts = [ { label: 'ipv4', value: '0x0800' }, { label: 'arp', value: '0x0806' } ];
function decode(arr, start) {
var config = {
key: 'eth',
pos: [start, start + 13],
children: [
{ key: 'dmac', value: array2mac(arr.slice(start, start + 6)), type: 'mac', pos: [start, start + 5], change: (arr, e) => mac_change(arr, e.pos, e.value) },
{ key: 'smac', value: array2mac(arr.slice(start + 6, start + 12)), type: 'mac', pos: [start + 6, start + 11], change: (arr, e) => mac_change(arr, e.pos, e.value) },
{ key: 'etype', value: num2hex(array2num(arr.slice(start + 12, start + 14))), options: etypeOpts, pos: [start + 12, start + 13], change: (arr, e) => num_change(arr, e.pos, e.value, 2) },
],
};
return config;
}
export default { name: 'eth', parents: 'none', initval: initval, decode: decode };
/protocol
目录下的内置协议处理脚本;各字段更多细节可以参考ts定义interface ProtocolDecodeFn {
(_arr: Array<number>, _start: number): ProtocolConfig;
}
interface ProtocolChangeFn {
(_arr: Array<number>, _e: ProtocolConfig): Array<number>;
}
interface ProtocolCheckFn {
(_arr: Array<number>, _e: ProtocolConfig): any;
}
interface ProtocolUpdateFn {
(_arr: Array<number>, _e: ProtocolConfig): Array<number>;
}
export interface ProtocolParentItem {
name: string;
pname: string;
pval: any;
}
export interface ProtocolConfig {
key: string;
pos: Array<number>;
children?: Array<ProtocolConfig>;
type?: 'number' | 'mac' | 'ipv4' | 'hex' | 'pkt';
value?: any;
options?: Array<any>;
status?: 'error';
change?: ProtocolChangeFn;
check?: ProtocolCheckFn;
update?: ProtocolUpdateFn;
}
export interface ProtocolItem {
name: string;
priority?: number;
parents: string | Array<ProtocolParentItem>;
initval: Array<number>;
decode: ProtocolDecodeFn;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。