- 博客(47)
- 收藏
- 关注
原创 迟到的告辞
void MESSAGE_Send(Node *node, Message *msg, clocktype delay, bool isMT){ msg->setSent(true); msg->relaySequenceNum = node->eventSequence++; msg->relayNodeId = node->nodeId; SCHED_InsertMessage(node, msg, delay);}/// In.
2021-07-19 21:16:21
348
1
原创 项目小记
又用到c++调用python,好久没用,居然生疏了,出了一点小纰漏。原本很简单的代码,运行始终报错。PyObject *pModule = NULL;pModule = PyImport_ImportModule("algorithms");报错如图,中断指向上面的代码第二行。以为是路径设置的问题,添加代码PyRun_SimpleString("import sys");PyRun_SimpleString("sys.path.append('./')");报错如图,终端指.
2021-04-03 00:42:21
212
1
原创 WinPcap网络分析原理
WinPcap是在windows平台访问网络数据链路层的开源库,允许应用程序绕开网络协议栈来捕获与发送网络数据包,并具备内核空间的数据包过滤、网络统计等其他有用特性。同时,WinPcap是众多网络分析工具使用的软件库,在网络分析中具有软件基石的作用。大多数网络应用程序是通过操作系统来访问网络的,操作系统已经处理了底层的细节问题(协议栈处理)。但有些时候需要直接使用网络中的“原始”数据包,WinPcap提供以下功能:(1)捕获原始数据包;(2)在数据包传递给应用程序之前,根据指定规则过滤数据包;
2021-03-30 14:52:21
1349
原创 EXata代码移植糗事之动态数组初始化
先说点题外话。把代码从QualNet移植到EXata的过程中,需要逐个函数、逐个数据结构的核对,因为两个软件有些位置会有细微的差别。如获取节点的网络层数据,在QualNet中是:NetworkDataIp* ip = node->networkData.networkVar; 在EXata中是:NetworkDataIp* ip = node->m_networkData->get_networkVar(); 因为在Node数据结构中,EXata把网络层数据m_n.
2021-03-25 20:30:40
369
原创 Winpcap抓包主要函数解析
pcap.h函数功能及示例介绍:1.pcap_findalldevs(&alldevs, errbuf),检索本机设备接口列表,存储至alldevs;2.pcap_freealldevs(alldevs),释放接口列表;3.adhandle=pcap_open_live(d->name, // name of the device 65536, // portion of the packe...
2021-03-20 18:47:59
2430
原创 wireshark抓包存储格式一览
手头项目需要获取抓包的IP地址和端口,并给出分析结果。最终是要在命令行的形式下进行的,目前还没找到完整的抓包、保存、读取、分析方法。本文先从图形化形式先了解wireshark抓包的主要保存形式。在wireshark软件界面上点击文件-->导出分组解析结果,可以看到wireshark支持的多种文件格式。1.纯文本与图形化界面上显示类似2.csv格式经过格式化整理,可以作为二维数组读取,但内容涵盖较少,有用信息只有IP地址和传输层协议,端口号没有。3.C语言数组格式
2021-03-19 13:49:09
5347
1
原创 EXata自定义应用层协议
一、新建协议库1.新建头文件和源文件app_myprotocol.h和源文件app_myprotocol.cpp,新协议命名"myprotocol",在头文件中声明并在源文件中写出空函数初始化函数AppMyprotocol_Init()、事件处理函数AppMyprotocol_Layer()、定型函数AppMyprotocol_Finalize。2.将协议包括在应用层协议和跟踪协议列表中,在application.h的enum AppType中倒数第二个位置添加新协议名称“APP_MYPROTOCO
2021-03-18 15:31:49
953
原创 EXata仿真(emulation)模式配置
在场景设计模式,可以在GUI中选择exata运行模式是simulation(模拟)还是emulation(仿真)。本文介绍emulation模式下的配置。一、外部节点映射外部节点映射,是在EXata某个节点上的网络接口与外部物理操作节点之间创建一个映射。映射到操作主机的EXata节点称为外部节点。来自操作主机的任何流量都被插入EXata外部节点,同样,在EXata外部节点接收到的任何流量都被转发到操作主机。外部节点映射可以使用连接管理器创建(参见博文https://blog.csdn.net/zha
2021-03-17 21:37:49
3907
3
原创 EXata通过连接管理器实现半实物仿真
若要连接循环中的硬件(hardware-in-the-loop)并在仿真节点上运行应用程序,包括基于互联网的应用程序和SNMP管理器,就需要将操作主机与仿真服务器上运行的EXata连接起来。本节介绍使用连接管理器在操作主机和仿真服务器之间建立这种连接所涉及的步骤。连接管理器应用程序在操作主机上运行,并负责管理操作主机的网络配置,是客户端;仿真服务器指运行EXata仿真的主机,是服务端。连接管理器用于建立操作主机和仿真服务器之间的连接。建立连接时,注意:连接管理器必须从根用户中运行,连接管理器将显示仿真网络节
2021-03-17 19:50:38
1308
4
原创 EXata编译出现fatal error C1001: 编译器中发生内部错误
根据上篇博客https://blog.csdn.net/zhang1806618/article/details/114890061?spm=1001.2014.3001.5501的步骤,不更改任何代码,试编译一次,结果出现多个错误。都是fatal error C1001: 编译器中发生内部错误,且都指向同一个位置:propagation_qualnet.h的第146行。class PropProfile_qualnet {public: ... D_Float64 propM
2021-03-17 17:34:58
350
原创 win10开启ping服务
今天试验用连接管理器连接两台终端,一台运行EXata仿真,一台运行连接管理器,连接失败。ping一下居然是不通的,两个IP地址在同一个网段,按理是很好ping通的。两个终端ping第三个终端都没有问题,好奇怪。实验室的师兄帮忙看了好一会,一开始也没找到问题所在,然后我ping他能通,他ping我不通,问题就应该出自我的电脑。网上查了一下,说可能是我的某个服务没有开通,很有道理。现在把这个服务开通过程写出来,方便以后避免这样的低级错误。控制面板-->Windows防火墙-->高级设置--&
2021-03-17 11:25:52
2840
2
原创 exata的特性与结构
EXata是一个网络仿真器,可以比其他模拟器更快、更真实地评估移动通信网络。它使用一个软件虚拟网络(SVN)来数字地表示整个网络、各种协议层、天线和设备。EXata可以在一个或多个协议层上与真实的无线电和设备互操作,以提供环路中的硬件(hardware-in-the-loop)功能。EXata还可以连接到具有真实应用程序的系统,这些应用程序可以在SVN上运行,就像它们可以在真实网络上运行一样。一、仿真与模拟(Emulation and Simulation)网络仿真器(emulator)模仿真实网络
2021-03-16 21:01:31
2841
2
原创 在Windows上编译EXata
重新编译EXata需要C/C编译器和一些第三方实用程序(包括CMake)和库(1)编译EXata6.2的C++编译器为vs2013(vc12)。(2)第三方工具和库:见https://blog.csdn.net/zhang1806618/article/details/114887026?spm=1001.2014.3001.5501一、编译EXata本节介绍如何使用Microsoft Visual Studio 2013编译EXata。(1)使用CMake生成Visual Studio
2021-03-16 17:55:33
1762
6
原创 由QualNet转战exata
因为要在仿真中添加实际网络设备,qualnet已不适用,需转战exata。两个产品是同一家公司的,可以理解为exata是高级型号。本人获取到的文件有:(1)安装包exata-6.2-windows-installer-64bit.exe;(2)源码包exata-6.2-source.zip;(3)证书文件exata-6.2-crk.zip;(4)第三方软件anchorage-windows.zip;使用步骤:(1)安装exata-6.2;(2)拷贝证书文件至指定位置;(3
2021-03-16 16:44:36
1654
2
原创 QualNet移植Exata的DOS攻击代码
D:\3网络评估项目\exata-7.0-source\libraries\cyber\advanced\srcvoidAPP_InitializeDosApplication( Node* firstNode, const char* cyberInput){ char appStr[MAX_STRING_LENGTH]; Node* node; IdToNodePtrMap* nodeHash; int numValues;.
2021-03-11 15:06:29
284
原创 windows+vs2010+boost配置
在代码移植过程中,出现错误:<boost/tokenizer.hpp>不存在这个文件或目录。查看代码如下:boost::char_separator<char> delimiter(" ", "", boost::drop_empty_tokens);typedef boost::tokenizer<boost::char_separator<char> > Tokenizer;Tokenizer tokens(cyberInput, delimi
2021-03-11 11:58:53
170
原创 QualNet路由协议配置
在场景.config文件中,有多处显示ROUTING-PROTOCOL字样。在可视化配置中,也有多处可以设置路由协议。到底哪个配置起作用,只能在代码中才能见分晓。一、路由协议显示位置在场景.config文件中有四处显示ROUTING-PROTOCOL位置1位置2位置3位置4二、路由协议设置位置1.Nodes/Groups->Node Configuration->Routing Protocol2.Nodes/Interfaces->
2021-03-05 12:39:45
579
3
原创 异常检测机器学习方法
一、孤立森林(Isolation Forest)算法算法见C:\Program Files\Anaconda3\Lib\site-packages\sklearn\ensemble\iforest.py:#n_estimators : int, optional (default=100) 森林中树的颗数#max_samples : int or float, optional (default=”auto”) 每棵树的样本个数或比例#contamination : float in (0..
2021-03-04 20:50:26
314
1
原创 Anaconda报错no qt platform plugin could be initialized
今天因为在anaconda中安装了一个新包,安装成功后运行python 程序报错:no qt platform plugin could be initialized。1.安装Anaconda3-4.2.0-Windows-x86_64,对应python版本为3.5.2,scikit learn版本是0.17。因为要用Isolation Forest算法,只有0.18以上版本scikit learn才包含此算法,所以想更新scikit learn。conda install scikit-lear
2021-03-04 16:52:51
12116
26
原创 Python笔记(随时更新)
1.python列表推导式格式:[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ],其中[if 条件表达式] 可选,for可嵌套使用。示例:a = [x * x for x in range(10)]b = [x * x for x in range(10) if x % 2 == 0]c = [(x, y) for x in range(5) for y in range(4)]d = [[x, y, z] for x in range(5) for y in ra
2021-02-25 16:41:48
240
原创 添加MAC帧首部的过程
因为要用到MAC帧首部,细细研究了仿真中帧首部的添加及使用环节。只写出结果,找到这个结果耗费了很长时间,过程就不写了。一、添加环节1.https://blog.csdn.net/zhang1806618/article/details/107753611中写到了调用QueueUpIpFragmentForMacLayer发送数据。在该函数中调用NetworkIpOutputQueueInsert()函数,将一个消息插入输出队列,然后调用MAC_NetworkLayerHasPacketToSend.
2021-02-24 20:54:03
805
原创 QualNet自定义移动模型
上一篇博客https://blog.csdn.net/zhang1806618/article/details/108033074已经就节点放置与移动模型进行了介绍。因为项目需要,qualnet自带模型并不能很好的实现目的,此篇博客将进一步研究移动模型的完整运行过程。一、节点放置与移动模型简要回顾1.MOBILITY_AllocateNodePositions()------>MOBILITY_PreInitialize(),初始化NodePositions和MobilityData数据结构。
2021-02-13 14:01:26
308
1
原创 QualNet编译
近三四个月都是用命令行形式调用QualNet,今天想看看节点的运动轨迹,打开GUI形式居然运行报错。一个莫名其妙的错误!!!网上的QualNet内容很少,搜不到原因。我以为是我自己动了什么源码的缘故,备份改动的源码后,重装了QualNet,再运行居然还是报错。没办法,只好按照记忆中的各种设置场景,一一试验。终于找到了原因:点击下图运行设置,进入下一图可以看到本地运行和远程运行设置。不知何故,我的运行设置是选择了远程运行,改回本地运行就不报错。因为重装了软件,我都忘了该怎么进入编译环境了。
2021-02-06 20:59:33
786
原创 Windows10+PyQt+pyinstaller+tensorflow+keras开发环境配置
前面已经介绍了本机开发环境,python3.5.2、keras2.2.3、tensorflow1.2.1,本来一切运转正常。可是在将python的脚本程序打包成.exe文件时,需要安装pyinstaller,执行安装命令pip install pyinstaller时报错:Exception:Traceback (most recent call last): File "C:\Program Files\Anaconda3\lib\site-packages\pip\basecommand.p
2021-01-25 01:34:31
250
原创 Qt5.12 creator使用笔记(随时更新)
1.图表的使用(1)使用准备在.pro文件中,添加:QT += charts在.h文件中,添加:#include <QtCharts>using namespace QtCharts;或者#include <QtCharts>QT_CHARTS_USE_NAMESPACE(2)图表添加坐标轴原版为:QValueAxis *axisX=new QValueAxis;QValueAxis *axisY=new QValueAxis;...
2021-01-01 18:58:41
953
原创 Qt使用笔记(随时更新)
项目需要设计一个软件,要用到Qt,由此开启了与Qt斗智斗勇的艰难道路。1.环境配置问题(1)最开始用的vs2017社区版,安装网上所说的安装配置步骤,先后安装了vs2017+qt5.12+qt vs tools插件。但在Qt VS Tools设置qt版本时,总是报错说无法识别版本(当时没有截屏,现在也不想复现这个错误了,没图)。重装qt,安装多个编译器,甚至更换了qt版本,都不行。无意中蒙到的解决办法:卸载vs2017社区版,安装专业版(professional),qt的多个编译器、多个版本都能
2020-11-17 15:22:06
1651
原创 QualNet外部接口
当需要QualNet与外部程序通信时,可以使用外部接口。QualNet自带的GUI接口用于可视化仿真,SOCKET接口用于传输数据,还提供了interfacetutorial接口演示接口的设计与实现。1 接口注册1.1 注册函数~/main/external.cpp中定义函数EXTERNAL_UserFunctionRegistration,由内核在仿真开始时调用。此函数用于注册外部接口(通过调用EXTERNAL_RegisterExternalInterface函数)和由接口实现的回调函数(.
2020-11-17 10:38:40
615
原创 本机开发环境及配置记录
本机开发软件及版本配置,记录留存。1.Python开发环境主要用于开发机器学习算法。(1)安装jdk-8u131-windows-x64。(2)安装java版eclipse-inst-win64。(3)安装Anaconda3-4.2.0-Windows-x86_64,对应python版本为3.5.2。(4)在anaconda命令行中,用conda install tensorflow;conda install keras命令安装深度学习库。用conda list显示各库版本,主要库
2020-11-10 10:37:56
523
1
原创 QualNet常用函数
1. mapping.h中关于节点指针、节点ID、节点接口地址的转换。每个节点有一个指针、一个ID,多个接口索引及多个接口地址。1.1 已知节点指针和节点接口地址,获取节点IDNodeAddressMAPPING_GetNodeIdFromInterfaceAddress( Node *node, NodeAddress interfaceAddress);NodeAddressMAPPING_GetNodeIdFromInterfaceAddress( Node
2020-10-23 17:06:46
342
1
原创 节点协议栈初始化概述
PARTITION_InitializeNodes:1.NETWORK_PreInit-->NetworkIpPreInit(网络层预先初始化)//初始化数据结构ip = (NetworkDataIp *) MEM_malloc(sizeof(NetworkDataIp));memset(ip, 0, sizeof(NetworkDataIp));node->networkData.networkVar = ip;//初始化转发表、多播转发表NetworkInitForwa
2020-10-15 17:19:45
269
原创 QualNet节点放置与移动
1 初始化节点位置struct NodePositions { NodeAddress nodeId; int partitionId; NodePlacementType nodePlacementType; MobilityData* mobilityData;};节点位置数据结构包含节点id、节点所在分区id、节点放置类型、节点移动数据。在main函数中调用MOBILITY_AllocateNodePosit.
2020-08-17 00:20:26
622
原创 QualNet收发包过程分析(五)
接上文https://blog.csdn.net/zhang1806618/article/details/1078567362.3 网络层NETWORK_ReceivePacketFromMacLayer函数区分网络层协议调用相应协议处理。对IPv4协议,调用NetworkIpReceivePacketFromMacLayer()函数,该函数又直接调用NetworkIpReceivePacket()函数。在NetworkIpReceivePacket()函数中,判断是否是发送给本节点的包,如果不是
2020-08-07 15:15:05
326
原创 QualNet收发包过程分析(四)
2. 接收端2.1 物理层发送断物理层有两个信号,一个是开始发送,一个是结束发送,两个信号成对出现,表示一个数据帧发送完成。接收端类似,一个开始接收,一个结束接收,两个信号成对出现,表示一个数据帧接收完成。在物理层分别由两个函数处理信号,PHY_SignalArrivalFromChannel()和PHY_SignalEndFromChannel()。前一个函数判断物理层当前状态,空闲或侦听中,则锁定信号,更改状态为接收中,开始接收;若当前状态为接收中,则丢弃准备接收的信号。第二个函数结束接收,将接
2020-08-07 14:16:20
463
原创 QualNet发包过程简要回顾
前几篇文章已经将发包过程进行了详细解读,此处进行概要回顾,浓缩都是精华。1.应用层APP_UdpSendNewHeaderData()函数分配消息,添加应用层数据、应用层首部(另有不添加应用层首部的接口函数如APP_UdpSendNewData),添加辅助信息AppToUdpSend,调度传输层UDP协议事件MSG_TRANSPORT_FromAppSend。msg = MESSAGE_Alloc( node, TRANSPORT_LAY
2020-08-04 12:53:57
340
原创 QualNet收发包过程分析(三)
接上文https://blog.csdn.net/zhang1806618/article/details/107753611MacDot11StationTransmitFrame()函数区分链路当前状态,或调用MacDot11StationTransmitDataFrame()发送数据帧,或调用MacDot11StationTransmitRTSFrame()发送RTS帧。以发送数据帧为例,由目的地址判断是广播还是单播,广播将不使用RTS-CTS机制,更改链路状态后调用MacDot11Station
2020-08-04 12:08:54
438
原创 QualNet收发包过程分析(二)
接上文:https://blog.csdn.net/zhang1806618/article/details/1072685981.3 网络层(续)在RoutePacketAndSendToMac函数对单播、广播、组播进行了分别处理。上文分析以单播为例,通过获取单播路由,然后调用NetworkIpSendPacketToMacLayer函数,再调用NetworkIpSendPacketOnInterface函数发送数据包。而广播、组播是直接调用NetworkIpSendPacketOnInterfa
2020-08-03 00:11:06
633
原创 QualNet6.1调用python
QualNet6.1在windows环境下,只能使用vs2008或vs2010编译。vs2008版本太低,与python联合编程缺少几个关键的头文件(排坑见https://blog.csdn.net/zhang1806618/article/details/104559414),只能用vs2010。以下为本人开发QualNet在线机器学习算法时所遇到的问题及解决办法,供参考。一、新建项目打开vs2010,新建->从现有代码创建项目,选择QualNet所在目录。报错1:未能正确加载“VSTS
2020-07-14 22:21:17
504
1
原创 QualNet收发包过程分析(一)
因项目需要,对QualNet仿真中节点间收发包行为进行了仔细研究,并不断添加一些输出以验证思路。应该说,大致是正确的,可能有些细节研究还不够透彻。对一般的应用协议开发已经够用了,如果想制作一个完整的组件添加进去,还需进一步深入。以下以发送端节点向接收端节点发送应用层消息为例,介绍QualNet收发包过程。1. 发送端1.1 应用层创建传输层UDP协议消息MSG_TRANSPORT_FromAppSend,添加了信息字段AppToUdpSend,发送(即调度传输层处理该消息)。函数见~/mai
2020-07-10 23:32:56
931
原创 QualNet事件和消息
本篇描述QualNet中离散事件仿真的实现细节:事件类型、实现事件的数据结构和类以及用于事件操作的API函数。1. 事件和消息在QualNet中,用于表示事件的类称为消息。消息保存有关事件的信息,例如事件的类型和相关的数据。在QualNet的文本中,术语事件和消息经常被交替使用。QualNet中有两种类型的事件:数据包事件和定时器事件。数据包事件被用来仿真层间或节点之间数据包的交换,也用于对同一层不同实体之间的通信进行建模。定时器事件用于发起或取消某项工作,使整个过程在时间线上完美呈现。在本节...
2020-07-10 21:10:26
804
原创 Qualnet完整初始化过程
Qualnet的GUI运行很简单,新建打开已有场景,添加节点,设置各层协议参数,保存运行即可。如果只是用作仿真工具,这样就足够了,但若想自己开发一个协议,或者想深入了解Qualnet底层是如何运行的,那就一定要研究源代码。以下是我在开发过程中,遇到困惑时,耐下心来一步一步学习的结果。在现在看来,这些东西好像很简单,顺理成章,但学习的过程还是很费时费脑的。我是从自己开发用到的几个常用函数,往回倒推,看哪个函数调用它,那个函数还有什么其他作用,找出整个运行过程的。我在此介绍的主要是与我的研究相关的内容,没有将所
2020-07-09 16:59:22
1139
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人