首页 > 其他分享 >can环境模拟+重放攻击+逆向分析

can环境模拟+重放攻击+逆向分析

时间:2024-07-25 13:40:18浏览次数:13  
标签:逆向 name shift sudo file 环境模拟 重放 data id

安装ICSim

sudo apt install libsdl2-dev libsdl2-image-dev can-utils maven autoconf -y
# 下载ICSim
git clone https://github.com/zombieCraig/ICSim.git
# 编译安装
cd ICSim/
sudo make

安装socketcand

# 下载socketcand
git clone https://github.com/linux-can/socketcand.git
cd socketcand

# 获取缺少的文件
wget https://raw.githubusercontent.com/dschanoeh/socketcand/master/config.h.in

# 编译安装
autoconf
./configure
make clean
make
sudo make install

安装Kayak

kayak我用ubuntu22监听不了vcan0网口,所以我换了kali用的

# 下载
git clone https://github.com/dschanoeh/Kayak.git
# 安装jdk
sudo apt-get install openjdk-8-jdk
# 安装
cd Kayak
mvn clean package

启动模拟器

设置vcan接口

sudo modprobe can
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

启动汽车

./setup_vcan.sh         #初始化,每次重启后都要重新运行
./icsim vcan0           #模拟器
./controls vcan0        #控制面

其控制器的按键说明如下:

功能 按键
加速 上方向键
左转向 左方向键
右转向 右方向键
开/关左车门(前)锁 右/左shift+A
开/关右车门(前)锁 右/左shift+B
开/关左车门(后)锁 右/左shift+X
开/关右车门(后)锁 右/左shift+Y
开启所有车门锁 右shift+左shift
关闭所有车门锁 左shift+右shift

# 二分法分析 这种方法很无脑但是太废人了。 ## 抓包
candump -l vcan0

分析

二分法通过把数据包分成几份然后分份重放测试,反复操作就能找到指令

这里我自己写了一些加快测试的脚本实际还是要自己慢慢操作

import sys

# 读取content文件中的所有内容
with open("index.log", "r") as content_file:
    data = content_file.readlines()

# 解析数据并根据ID进行排序
sorted_data = sorted(data, key=lambda x: int(x.split()[0].split("#")[1]))

# 将排序后的数据写入到index文件中
with open("indexid.log", "w") as index_file:
    for item in sorted_data:
        index_file.write(item)

这个脚本主要是用来去重的。(有时会误删)

wc -l 1 #这里主要是测量数据包行数
split -l 10000 1 cl#切分数据包
anplayer -I claa#然后就是反复重放,然后再切

统计法

这个方法轻松多了,实际操作就是统计每个id出现的次数然后根据id打印data数据。

这是我自己写的脚本,其实脚本很简单

import sys

def parse_can_messages(file_name):
    id_counts = {}
    with open(file_name, 'r') as file:
        for line in file:
            parts = line.strip().split()
            if len(parts) >= 3:
                timestamp = parts[0]
                interface = parts[1]
                data = parts[2]

                # 解析ID和数据
                id_data = data.split('#')
                if len(id_data) == 2:
                    can_id = id_data[0]
                    can_data = id_data[1]

                    # 计数统计
                    if can_id in id_counts:
                        id_counts[can_id] += 1
                    else:
                        id_counts[can_id] = 1

    return id_counts

def display_data_for_id(file_name, target_id):
    with open(file_name, 'r') as file:
        for line in file:
            parts = line.strip().split()
            if len(parts) >= 3:
                data = parts[2]
                id_data = data.split('#')
                if len(id_data) == 2:
                    can_id = id_data[0]
                    if can_id == target_id:
                        print(data)

if __name__ == "__main__":
    file_name = "candump.log"
    id_counts = parse_can_messages(file_name)

    print("ID Counts:")
    for can_id, count in id_counts.items():
        print(f"ID: {can_id}, Count: {count}")

    target_id = input("Enter ID to display data (leave empty to exit): ").strip()
    while target_id:
        print(f"Data for ID {target_id}:")
        display_data_for_id(file_name, target_id)
        target_id = input("Enter ID to display data (leave empty to exit): ").strip()



image.png
然后就可以根据自己执行的指令次数来测试了!

标签:逆向,name,shift,sudo,file,环境模拟,重放,data,id
From: https://www.cnblogs.com/blonet/p/18322824

相关文章

  • 抖音直播弹幕数据逆向:websocket和JS注入
    ......
  • Vn1c0rn的逆向之旅
    Study1、idashiftf12---跳转stringctrlx------交叉引用shifte-----数据导出a-----------转化为字符串数组\------------去除灰色的变量解释/------------添加注释N-----------重命名ctrlz------返回上一步,撤回原行为Y-----------重组数组(更改变量类型)*(shift+8)......
  • 逆向分析学习入门教程(非常详细)零基础入门到精通,看这一篇就够了!_逆向都要学啥
    前沿从本篇起,逆向工厂带大家从程序起源讲起,领略计算机程序逆向技术,了解程序的运行机制,逆向通用技术手段和软件保护技术,更加深入地去探索逆向的魅力。一、程序如何诞生?1951年4月开始在英国牛津郡哈维尔原子能研究基地正式投入使用的英国数字计算机“哈维尔·德卡特伦”,是......
  • 微信小程序 - 最新详细实现集成腾讯地图配置流程及使用教程,基于腾讯位置服务做地图标
    前言网上的教程代码太乱了,并且很少有真实请求的示例,本文提供优质配置教程及示例源码。在微信小程序开发中,详解实现接入腾讯地图教程,后台配置完整流程及使用教程,附带腾讯地图显示渲染和地图标记点,获取本机当前定位省市区或精确的经纬度,IP属地定位获取城市名称/市区名,将经......
  • 同花顺股票数据逆向:Cookie加密和Hook注入
    ......
  • [JS] 一次逆向
    开始此文章为个人学习研究,请勿用于非法用途。背景是我是小鹤音形用户,常常忘记一个字怎么打,就需要查形;而windows软件的查形太麻烦,网页查询更麻烦,所以我想写脚本,配合我的meow-tool工具快捷的查形。但是显然,网站的接口是加密的,需要添加sign参数的请求体中;所以首先需要逆向出sign......
  • 【安卓逆向】tx漫画实战
    免责声明免责声明本文内容仅供学习交流使用,严禁用于商业和非法用途。抓包数据、敏感网址以及数据接口已进行脱敏处理。注:如有引用,请标注文章地址!!!!!!!资源获取关注公众号: 安卓破晓者(回复:tx漫画)本文目标:逆向参数:参数:sc    响应:解密注:作者是个菜鸡,诸位大佬们看个......
  • 逆向案例二十六(续)——中国观鸟记录,返回数据解密
    在上一集中,我们已经获得了表单参数加密,请求头参数加密,现在需要对返回的数据进行解密。跟栈分析,直接进入第三个 在疑似断点位置打上断点,已然发现解密位置。function接收参数t是加密的密文,接着返回的a.parseData(t)是明文 所以解密函数是a.parseData()  进入这个函......
  • 逆向案例二十七——某妈妈返回值解密
    网址:蝉妈妈-内容营销与电商增长一站式服务平台有会员会返回所有数据,抓包分析,会发现返回的数据进行了加密。直接搜索找加密位置,因为这个参数太烂大街了,因此,直接搜索decrypt 找到疑似加密位置,断点分析,并打印参数 貌似是个AES解密,传入的e是加密的参数 r是最终加密的......
  • 【JS逆向课件:第八课:异常处理】
    异常处理首先我们要理解什么叫做**"异常”**?在程序运行过程中,总会遇到各种各样的问题和错误。有些错误是我们编写代码时自己造成的:比如语法错误、调用错误,甚至逻辑错误。还有一些错误,则是不可预料的错误,但是完全有可能发生的:比如文件不存在、磁盘空间不足、......