VASP,F2MD的后续工作
install
OMNet++5.6.2 install
别人的教程
-
去官网https://omnetpp.org/download/old
下载linux版本的 -
解压
-
安装相关库与依赖
sudo apt-get update
sudo apt-get install build-essential gcc g++ bison flex perl \
python python3 qt5-default libqt5opengl5-dev tcl-dev tk-dev \
libxml2-dev zlib1g-dev default-jre doxygen graphviz libwebkitgtk-3.0-0
sudo apt-get install openscenegraph-plugin-osgearth libosgearth-dev
sudo apt-get install openmpi-bin libopenmpi-dev
sudo apt-get install libpcap-dev
这里我安装sudo apt-get install openmpi-bin libopenmpi-dev
出问题,经过排查发现是镜像源的问题
我的解决办法是方法
4. 配置环境并安装omnet++
进入omnetpp-5.6.2文件夹,在这里打开终端输入
. setenv
sudo gedit ~/.bashrc
去到这个文件夹bin输入pwd,查看路径
然后把它输入到
source ~/.bashrc
保存
5. make编译
./configure && make
6. 设置桌面图标
make install-menu-item
make install-desktop-icon
SUMO1.8.0 install
别人的教程
- install 相关依赖和库
sudo apt-get install cmake python g++ libxerces-c-dev libfox-1.6-dev libgdal-dev libproj-dev libgl2ps-dev swig
你可能会遇到一些问题,比如换源
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/这里有Ubuntu的换源
命令如下:
sudo gedit /etc/apt/sources.list
然后把上面网址查询到的内容复制到这个sources.list里,保存,然后
sudo apt-get update
还有一个问题:
有一个网址它,定位不到,这个时候,你去cd /etc/apt/sources.list.d
里,把那个定位不到的网址,删除,即可 - 去官网下:https://sourceforge.net/projects/sumo/files/sumo/
https://sourceforge.net/projects/sumo/files/sumo/version%201.8.0/
这个网址更快下 - 解压
tar xzf sumo-src-1.8.0.tar.gz
cd sumo-1.8.0
pwd
export SUMO_HOME="/home/<user>/sumo-src-1.8.0/sumo-1.8.0"
echo $SUMO_HOME
- 用cmake开始build
mkdir build/cmake-build
cd build/cmake-build
cmake ../..
- make
make -j $(nproc)
- 设置环境变量
sudo gedit ~/.bashrc
,在文件末尾加入,用户名需要需改我的是luo,看你的是什么就改成什么,上面的图有问题,路径问题
export PATH=$PATH:/home/luo/sumo-src-1.8.0/sumo-1.8.0/bin
export SUMO_HOME=/home/luo/sumo-src-1.8.0/sumo-1.8.0
保存一下source ~/.bashrc
安装完毕
VASP的intstall 工作
别人的教程
我说一下,我遇到的问题:./configure && make [-j6]
这一步中,
我的std::make_unique
有错误,而且都是在driver/CarApp.cc
文件中的
我看了一下,大概是说不是在std
这个namespace
中,是在veins
里的
所以解决方法
进入这里改
如果你怕改错了,你可以先备份一份,就是copy一份
还有一个问题:那个json.h的权限不够,去/usr/include里把它的权限改了就行了
sudo chmod 777 json.h
这个图是我最后改出来的样子,网上也有教你怎么改权限的,我这里没有用777这个命令
运行
- 跑到veins文件下
用bin/veins_launchd -vv
启动SUMO
- 下一步
VASP的快捷路径之我已经打包好文件
Veins
提取码看网址pwd=后面的
这一步是git clone
了Veins5.2
跟vasp
文件,省的去git clone
他们,接下来要下载的两个头文件放到/usr/include
,还有编译工作,都需要继续...
VASP使用文档
这里我必须要强调一下,需改了源文件一定要编译一下,不能只是保存,保存运行的还是上次的结果
解释
- Configuring your simulation
这个去vasp/scenario/omnetpp.ini
里面有
-
attackPolicy: 攻击策略(持续攻击或者零星攻击,0值为持续攻击,1值为零星攻击)
-
sporadicInsertionRate: 零星攻击的速率
-
maliciousProbability: 恶意概率(0.3就是30%的恶意车辆)
-
attackType: 攻击类型(可以扩展,<path/to/veins>/src/vasp/attack/Type.h)
-
nDosMessages: 每个拒绝服务攻击传输的消息数
-
posAttackOffset: 用于位置偏移类型攻击(随机和恒定) 来控制与实际位置的偏移
-
dimensionAttackOffset: 用于维度/长度/宽度偏移类型攻击(随机和常量),使用此选项来控制与实际位置的偏移
-
headingAttackOffset: 用于航向偏移类型攻击(随机和但定),使用此选项来控制与实际位置的偏移
-
yawRateAttackOffset: 用于偏航率偏移类型攻击(随机和恒定),使用此选项来控制与实际位置的偏移
-
accelerationAttackOffset: 用于加速度偏移类型攻击(随机和恒定), 来控制与实际位置的偏移
-
speedAttackOffset: 此选项用于速度偏移类型的攻击(随机和恒定),来控制与实际位置的偏移
-
- Trace file columns
column header | data type | description |
---|---|---|
rv_id | int | 发送者Id |
hv_id | int | 接收者Id |
target_id | int | 攻击目标车辆Id |
msg_generation_time | double | 发送方的发送时间time |
msg_rcv_time | double | 接收方的接收时间time |
rv_msg_count | int | 发送方的报文计数(0~127,每次发送前会重置为0) |
rv_wsm_data | string | 有关消息的其他数据 |
rv_pos_x | double | 发送者x |
rv_pos_y | double | 发送者y |
rv_pos_z | double | 发送者z |
rv_speed | double | 发送者速度 |
rv_accel | double | 发送者加速度 |
rv_heading | double | 发送者的方向/航向 |
rv_yaw_rate | double | 发送者的yaw-rate |
rv_length | double | 发送者的长 |
rv_width | double | 发送者的宽 |
rv_height | double | 发送者的高 |
hv_msg_count | int | 接收方的报文计数(0~127,每次发送前会重置为0) |
hv_wsm_data | string | 有关消息的其他数据 |
hv_pos_x | double | 接收者x |
hv_pos_y | double | 接收者y |
hv_pos_z | double | 接收者z |
hv_speed | double | 接收者速度 |
hv_accel | double | 接收者加速度 |
hv_heading | double | 接收者的方向/航向 |
hv_length | double | 接收者的长 |
hv_width | double | 接收者的宽 |
hv_height | double | 接收者的高 |
attack_type | string | 攻击类型,如果恶意/攻击车辆,否则默认为“好车” |
eebl_warn | boolean | EEBL发出警告,1为警告,0为不警告 |
ima_warn | boolean | IMA发出警告,1为警告,0为不警告 |
- Implementing your own attack
- 首先得搞明白作者写的攻击
- 基于虚节点:攻击者通过发送消息,在V2X网络中创建假节点。假节点用于发起攻击和触发不良行为。请注意,攻击者自己的消息是在没有攻击的情况下传输的,即是真实消息。这种攻击具有很高的可重复性,因为攻击者可以用他想要的任何信息创建新消息。就影响而言,这种攻击能够通过精心制作一系列bsm来执行攻击而产生高伤害。由于此攻击使用不同的BSM进行攻击,因此攻击者可以使用不同的证书对消息进行签名,从而显示出高隐蔽性。此外,每辆幽灵车都可以模拟合理的移动模式。这种攻击类型总体上具有较高的风险级别。
2.自我遥测改变:攻击者在传输的信息中改变自己的运动信息。通过报告虚假的运动学信息,攻击旨在对应用程序或预测算法产生负面影响。由于攻击者可以控制消息内容,因此这种攻击具有很高的可重复性。冲击方面,攻击具有中等风险水平,因为只有一些扰动被添加到原始的运动学场。在隐身方面,这种攻击对攻击和良性消息使用相同的证书,这将增加其在零星攻击策略的情况下的可检测性(参见第V-G节)。总的来说,这种类型的攻击具有中等的风险水平。 - 位置:攻击者要么创造一个假位置的幽灵车,要么修改自己的位置来发动基于位置的攻击。这些攻击的风险级别主要取决于它们与“Constant”、“Constant Offset”、“Random”、“Random Offset”、“High”和“Low”攻击类型的组合。除了Constant、Constant Offset、Random、Random Offset、High、Low类型攻击之外,还有以下攻击类型:
- 目标恒定位置:攻击者选择一个目标节点(在这种情况下是一辆移动的车辆),并传输其前方的位置。攻击者继续发送相同的位置,直到目标超出通信范围。这种攻击是适度可复制的,因为攻击者需要有足够快的资源来瞄准车辆,以引起它们的反应。此外,这种攻击在攻击前需要受害者的位置数据。影响方面,这种攻击具有中等风险水平,因为如果攻击者不考虑道路曲率,攻击可能无法在弯曲的道路上工作。此外,在交通密集的情况下,传输伪造的车辆位置可能不可行,因为它可能与另一辆车的位置重叠。对于这种攻击,可以考虑许多这样的边缘情况。这种攻击的隐蔽性很低,因为一旦攻击者发送攻击信息,受害者就可以识别并报告BSM声称没有车辆存在的地方。总体评价:中等。原因:这种攻击可能导致车辆突然刹车,并导致后面的车辆追尾。
- 突然出现:攻击者发送一个位置在目标节点正前方的幽灵车辆信息(在这种情况下,是一辆移动的车辆)。就再现性而言,这种攻击处于中等风险水平。原因类似于目标固定位置攻击。影响方面,如果时机正确,这种攻击具有高度破坏性的潜力。
- 突然消失:攻击者停止传输,进入无线电静默状态,以摆脱其他节点使用的任何跟踪机制。再现性:这种攻击具有很高的再现性,因为攻击者可以完全控制随时停止传输。影响:接收车辆只会停止跟踪该攻击者,如果无法跟踪则不会受到伤害。潜行:这种攻击是高度隐蔽的,但由于这种攻击的性质。总体评价:低。原因:没有问题,因为车辆会停止传输V2X信息。其他汽车的传感器仍然可以看到它。
- 基于虚节点:攻击者通过发送消息,在V2X网络中创建假节点。假节点用于发起攻击和触发不良行为。请注意,攻击者自己的消息是在没有攻击的情况下传输的,即是真实消息。这种攻击具有很高的可重复性,因为攻击者可以用他想要的任何信息创建新消息。就影响而言,这种攻击能够通过精心制作一系列bsm来执行攻击而产生高伤害。由于此攻击使用不同的BSM进行攻击,因此攻击者可以使用不同的证书对消息进行签名,从而显示出高隐蔽性。此外,每辆幽灵车都可以模拟合理的移动模式。这种攻击类型总体上具有较高的风险级别。
- 作者给的场景
- 基于幽灵节点的攻击————大规模的Sybil攻击:作为第一种方法,攻击者可以制造几辆幽灵车辆来制造交通堵塞的假象。因此,受害者的车需要刹车
- 自我遥测改变-位置重叠:作为第二种方法,攻击者可以通过通信将其真实位置的偏移量与目标车辆重叠。因此,自动驾驶系统或目标车辆的受害者可能会认为发生了碰撞而刹车。注意,除了位置偏移之外,攻击者还可以更改其类型来假装是行人。因此,目标车辆的驾驶系统可能认为它碾过了行人。
- 对V2X应用程序的攻击——伪造的EEBL:作为第三种方法,攻击者可以传输包含EEBL警告的V2X消息。因此,受害者的车辆将在接收到包含EEBL警告的V2X信息后制动。