美文网首页
Pixhawk--加密和防提取

Pixhawk--加密和防提取

作者: WilsonGuo | 来源:发表于2024-03-15 15:38 被阅读0次

    当辛辛苦苦调试OK的参数,被别人连上飞地面站后轻松获取,是不是有点难受?本文针对四旋翼Copter4.0.7和(4.1.5)最新版本调试了两个加密方法。

    Ardupliot飞控PID等参数加密屏蔽方法

    4.0.7固件

    在对4.0.7版本的加密过程中,主要参考了MAVLINK消息在Ardupilot中的接收和发送过程并结合MAVLINK协议定位了源码的位置。

    调试原理:通过飞控与地面站之间的MAVLINK传输协议中的msgid进行代码的定位。

    调试方法:通过在源码中添加send_text函数在Mission Planner对关键信息进行打印。

    通过解析,有两种思路对参数进行屏蔽:

    1.改飞控的接受参数:在GCS_Param.cpp中,改存数据(handle_common_message()(GCS_Common.cpp)->handle_common_param_message() -> handle_param_request_list()函数中)

    2.改飞控的发送参数:在GCS_Common.cpp文件中,try_send_message()函数中通过对message_id进行switch-case判断跳转至在GCS_Param.cpp中的queued_param_send()函数中对改好的数据结构进行发送

    在源码中,飞控的接受函数的msg.msgid(MAVLINK_MSG_ID_PARAM_REQUEST_LIST)是通过memcpy函数将参数列表进行复制,如下图所示。

    而飞控的发送函数中,根据调试打印的messageId(MSG_NEXT_PARAM)定位到GCS_Param.cpp中的GCS_MAVLINK::queued_param_send()函数

    关键的发送参数信息定位到71~91行

    内联函数mavlink_msg_param_value_send()中的param_name即为MP中的参数名字;

    _queued_parameter->cast_to_float(_queued_parameter_type)为将参数强转为浮点型后输出。如果屏蔽所有参数只需将该参数改为float(0)即可,如下图所示。

    效果如下图所示。

    相关文章

      网友评论

          本文标题:Pixhawk--加密和防提取

          本文链接:https://www.haomeiwen.com/subject/fhugzdtx.html