加载中...

VASP,F2MD的后续工作

install

OMNet++5.6.2 install

别人的教程

  1. 去官网https://omnetpp.org/download/old
    下载linux版本的

  2. 解压

  3. 安装相关库与依赖
    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

别人的教程

  1. 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里,把那个定位不到的网址,删除,即可
  2. 去官网下:https://sourceforge.net/projects/sumo/files/sumo/

    https://sourceforge.net/projects/sumo/files/sumo/version%201.8.0/
    这个网址更快下
  3. 解压
    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
  4. 用cmake开始build

    mkdir build/cmake-build
    cd build/cmake-build
    cmake ../..
  5. make
    make -j $(nproc)
  6. 设置环境变量

    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这个命令

运行

  1. 跑到veins文件下

bin/veins_launchd -vv启动SUMO

  1. 下一步

VASP的快捷路径之我已经打包好文件

Veins
提取码看网址pwd=后面的
这一步是git cloneVeins5.2vasp文件,省的去git clone他们,接下来要下载的两个头文件放到/usr/include,还有编译工作,都需要继续...

VASP使用文档

  1. Configuring your simulation
  2. Know your trace file
  3. Implementing your own attack

这里我必须要强调一下,需改了源文件一定要编译一下,不能只是保存,保存运行的还是上次的结果

解释

  1. 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: 此选项用于速度偏移类型的攻击(随机和恒定),来控制与实际位置的偏移

  2. 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为不警告
  1. Implementing your own attack
  • 首先得搞明白作者写的攻击
    1. 基于虚节点:攻击者通过发送消息,在V2X网络中创建假节点。假节点用于发起攻击和触发不良行为。请注意,攻击者自己的消息是在没有攻击的情况下传输的,即是真实消息。这种攻击具有很高的可重复性,因为攻击者可以用他想要的任何信息创建新消息。就影响而言,这种攻击能够通过精心制作一系列bsm来执行攻击而产生高伤害。由于此攻击使用不同的BSM进行攻击,因此攻击者可以使用不同的证书对消息进行签名,从而显示出高隐蔽性。此外,每辆幽灵车都可以模拟合理的移动模式。这种攻击类型总体上具有较高的风险级别。
      2.自我遥测改变:攻击者在传输的信息中改变自己的运动信息。通过报告虚假的运动学信息,攻击旨在对应用程序或预测算法产生负面影响。由于攻击者可以控制消息内容,因此这种攻击具有很高的可重复性。冲击方面,攻击具有中等风险水平,因为只有一些扰动被添加到原始的运动学场。在隐身方面,这种攻击对攻击和良性消息使用相同的证书,这将增加其在零星攻击策略的情况下的可检测性(参见第V-G节)。总的来说,这种类型的攻击具有中等的风险水平。
    2. 位置:攻击者要么创造一个假位置的幽灵车,要么修改自己的位置来发动基于位置的攻击。这些攻击的风险级别主要取决于它们与“Constant”、“Constant Offset”、“Random”、“Random Offset”、“High”和“Low”攻击类型的组合。除了Constant、Constant Offset、Random、Random Offset、High、Low类型攻击之外,还有以下攻击类型:
    3. 目标恒定位置:攻击者选择一个目标节点(在这种情况下是一辆移动的车辆),并传输其前方的位置。攻击者继续发送相同的位置,直到目标超出通信范围。这种攻击是适度可复制的,因为攻击者需要有足够快的资源来瞄准车辆,以引起它们的反应。此外,这种攻击在攻击前需要受害者的位置数据。影响方面,这种攻击具有中等风险水平,因为如果攻击者不考虑道路曲率,攻击可能无法在弯曲的道路上工作。此外,在交通密集的情况下,传输伪造的车辆位置可能不可行,因为它可能与另一辆车的位置重叠。对于这种攻击,可以考虑许多这样的边缘情况。这种攻击的隐蔽性很低,因为一旦攻击者发送攻击信息,受害者就可以识别并报告BSM声称没有车辆存在的地方。总体评价:中等。原因:这种攻击可能导致车辆突然刹车,并导致后面的车辆追尾。
    4. 突然出现:攻击者发送一个位置在目标节点正前方的幽灵车辆信息(在这种情况下,是一辆移动的车辆)。就再现性而言,这种攻击处于中等风险水平。原因类似于目标固定位置攻击。影响方面,如果时机正确,这种攻击具有高度破坏性的潜力。
    5. 突然消失:攻击者停止传输,进入无线电静默状态,以摆脱其他节点使用的任何跟踪机制。再现性:这种攻击具有很高的再现性,因为攻击者可以完全控制随时停止传输。影响:接收车辆只会停止跟踪该攻击者,如果无法跟踪则不会受到伤害。潜行:这种攻击是高度隐蔽的,但由于这种攻击的性质。总体评价:低。原因:没有问题,因为车辆会停止传输V2X信息。其他汽车的传感器仍然可以看到它。
  • 作者给的场景
    1. 基于幽灵节点的攻击————大规模的Sybil攻击:作为第一种方法,攻击者可以制造几辆幽灵车辆来制造交通堵塞的假象。因此,受害者的车需要刹车
    2. 自我遥测改变-位置重叠:作为第二种方法,攻击者可以通过通信将其真实位置的偏移量与目标车辆重叠。因此,自动驾驶系统或目标车辆的受害者可能会认为发生了碰撞而刹车。注意,除了位置偏移之外,攻击者还可以更改其类型来假装是行人。因此,目标车辆的驾驶系统可能认为它碾过了行人。
    3. 对V2X应用程序的攻击——伪造的EEBL:作为第三种方法,攻击者可以传输包含EEBL警告的V2X消息。因此,受害者的车辆将在接收到包含EEBL警告的V2X信息后制动。
posted @ 2023-10-26 15:05  一名博客  阅读(119)  评论(0编辑  收藏  举报