首页 > 其他分享 >IMA的binary_runtime_measurement文件格式

IMA的binary_runtime_measurement文件格式

时间:2024-09-14 11:35:49浏览次数:1  
标签:IMA binary 00 读取 ...... 9d 文件格式 模板 字节

首先贴出一个 IMA 度量文件的实例:

binary_runtime_measurement:
00000000  00 0a 00 00 9d 4c 81 b9 db f2 b4 c5 27 17 7f 49  |.....L......'..I|
00000010  75 9d e9 8f dc 50 a2 f6 00 06 00 00 6d 69 2d 61  |u....P......mi-a|
00000020  67 6e 00 31 00 00 00 1a 00 00 68 73 31 61 00 3a  |gn.1......hs1a.:|
00000030  99 92 05 e7 2f 9f 3c 26 9a c8 61 55 cf e2 87 58  |..../.<&..aU...X|
00000040  98 cc 9b 30 00 0f 00 00 6f 62 74 6f 61 5f 67 67  |...0....obtoa_gg|
00000050  65 72 61 67 65 74 0a 00 00 00 97 00 62 2d 5b ff  |eraget......b-[.|
00000060  74 3a 99 e8 e0 52 0b 98 99 20 d4 ee f8 9b 06 f0  |t:...R... ......|
00000070  00 00 69 00 61 6d 6e 2d 28 67 00 00 1a 00 00 00  |..i.amn-(g......|

对应的ascii_runtime_measurement:
10 4c9db981f2dbc5b41727497f9d758fe950dcf6a2 ima-ng sha1:9299e7059f2f263cc89a5561e2cf5887cc98309b boot_aggregate
10 972d62ff5b3a74e89952e0980b2099eed49bf8f0 ima-ng sha1:e9002ba6c5a98f5b7a33dc6bbf9ac1863873b713 /init
10 db389c4b5590a7450cb7b20d6fa4a97bc901420d ima-ng sha1:3cdd378dde62d830349e4221591655229a757ae5 /usr/bin/sh

对应读取的结构体如下:

struct event {
    struct {
        u_int32_t pcr;
        u_int8_t digest[SHA_DIGEST_LENGTH];
        u_int32_t name_len;
    } header;
    char name[TCG_EVENT_NAME_LEN_MAX + 1];
    struct ima_template_desc *template_desc; /* template descriptor */
    u_int32_t template_data_len;
    u_int8_t *template_data; /* template related data */
};
  1. header

    读取时,首先填充 event 结构体中 header 结构体的内容,这部分长度是固定的。首先是4字节 PCR 索引,然后是哈希值,这里采用的是 SHA1,因此是20字节,接着是4字节的 IMA 模板名称长度。该部分对应下面的二进制内容:

    00000000  00 0a 00 00 9d 4c 81 b9 db f2 b4 c5 27 17 7f 49  |.....L......'..I|
    00000010  75 9d e9 8f dc 50 a2 f6 00 06 00 00              |u....P......    |
    
  2. name

    根据上一步读取的 IMA 模板名称长度读取模板名称,本处读取的名称为ima-ng,共6字节:

    00000000  00 0a 00 00 9d 4c 81 b9 db f2 b4 c5 27 17 7f 49  |.....L......'..I|
    00000010  75 9d e9 8f dc 50 a2 f6 00 06 00 00 6d 69 2d 61  |u....P......mi-a|
    00000020  67 6e                                            |gn              |
    
  3. 接下来会根据模板的不同采用不同的方案读取数据

    1. 对于模板名称为ima的类型,将首先读取模板哈希值,如果采用 SHA1 算法,将读取20字节的哈希值。然后读取4字节的field_len(?)和该数值相对应长度的数据。

    2. 对于非ima的其他类型模板,将首先读取4字节的模板数据长度值,对于本示例,读取的长度为49字节(0x31)。至此读取过的全部内容为:

      00000000  00 0a 00 00 9d 4c 81 b9 db f2 b4 c5 27 17 7f 49  |.....L......'..I|
      00000010  75 9d e9 8f dc 50 a2 f6 00 06 00 00 6d 69 2d 61  |u....P......mi-a|
      00000020  67 6e 00 31 00 00                                |gn.1..          |
      

      进一步,将根据该长度读取模板特定数据。至此读取完后的全部内容为:

      00000000  00 0a 00 00 9d 4c 81 b9 db f2 b4 c5 27 17 7f 49  |.....L......'..I|
      00000010  75 9d e9 8f dc 50 a2 f6 00 06 00 00 6d 69 2d 61  |u....P......mi-a|
      00000020  67 6e 00 31 00 00 00 1a 00 00 68 73 31 61 00 3a  |gn.1......hs1a.:|
      00000030  99 92 05 e7 2f 9f 3c 26 9a c8 61 55 cf e2 87 58  |..../.<&..aU...X|
      00000040  98 cc 9b 30 00 0f 00 00 6f 62 74 6f 61 5f 67 67  |...0....obtoa_gg|
      00000050  65 72 61 67 65 74 0a                             |eraget.         |
      

      该步骤读取的模板特定数据中,前四字节的 INT 值内容含义未知(00 1a 00 00),在实际解析时也未使用。而后面的内容可以对照本文章开头的ascii_runtime_measurement部分内容对照查看,分别为:

      • "sha1" || 0x00 || ":" || 模板哈希值 || 文件路径名称长度(包含1字节换行符) || 文件路径

标签:IMA,binary,00,读取,......,9d,文件格式,模板,字节
From: https://www.cnblogs.com/sethma423/p/18413642

相关文章

  • Monte Carlo Estimation of Area Inside a Curve
    Assignment2DueSep23by11:59pmPoints70SubmittingafileuploadAvailableSep13at10am-Dec24at11:59pmStartAssignmentAssignment2(70Points)DueMondaySep23at11:59PMInthisassignment,youneedtoparallelizesimpleprogramsusingC++11th......
  • WPF Datagrid DataGridTemplateColumn.CellTemplate local:ImageTextblock ImgUrl="{
    DataGridTemplate.CellTemplatecontainsonedatatemplaewilldisplaythecustomoizedcontrol,thekeylocatedatthecustomcontrol'sdependencypropertybindingandrelativesourceofx:typedatagridrow<local:ImageTextblockImgUrl="{Binding......
  • BigDecimal
    加减乘除计算首先对bigdecimal的初始化BigDecimalnum1=newBigDecimal(0.005);BigDecimalnum2=newBigDecimal(1000000);BigDecimalnum3=newBigDecimal(-1000000);//尽量用字符串的形式初始化BigDecimalnum12=newBi......
  • Adobe Animate(AN)软件下载win/mac安装及快捷键操作
    软件简介AdobeAnimate(简称AN)是Adobe公司推出的一款功能强大的电脑动画制作软件,前身是AdobeFlashProfessionalCC。它不仅能够支持设计游戏、应用程序的交互式矢量动画和位图动画,还兼容HTML5Canvas、WebGL等现代网页技术,为用户提供从2D动画制作到交互式内容设计的全方位解......
  • BigDecimal转换
    代码检测爆出代码质量:使用浮点数进行精确计算简单说就是不能用doule,不精确,要用BigDecimalBigDecimal是一个对象,它的加减乘除等都跟数字类型不一样,以下就是它的一些常用方法new一个BigDecimalBigDecimalnum1=newBigDecimal("0.12");输出结果add():相当于加a.add(b)相当于a+bBigDe......
  • PbootCMS增加可允许上传文件类型,例如webp、mov等文件格式扩展
    要在PbootCMS中增加允许上传的文件类型,比如 webp 或 mov 格式,您需要编辑系统的配置文件来添加这些文件扩展名。以下是具体的操作步骤:打开PbootCMS的配置文件 config.php,通常这个文件位于项目的 /config/ 目录下。在 config.php 文件中,找到上传配置的部分,这通常......
  • CDS540 Assignment 1 - Text Detection from Images
    CDS540Assignment1-TextDetectionfromImagesUsingOpenCVTaskobjectiveTheobjectiveofthisassignmentistouseGoogleColab,JupyterNotebook,oranyothersuitabletooltodetecttextfromimagesusingOpenCV.Thiswillhelpyouunderstandthecon......
  • PPM Image Transformations
    PPMImageTransformationsLearningObjectivesUponcompletionofthisassignment,youshouldbeable:Todevelop,compile,runandtestCprogramsinaLinuxenvironmentTonavigateLinuxcommandlinesreliablyThemechanismsyouwillpracticeusingincl......
  • ROS2 - Moveit2 - Planning with Approximated Constraint Manifolds(使用近似约束流
    使用近似约束流形进行规划OMPL支持自定义约束,以使规划轨迹遵循所需的行为。约束可以在关节空间和笛卡尔空间中定义,后者基于方向或位置。在规划轨迹时,每个关节状态都需要遵循所有设置的约束,默认情况下,这是通过拒绝采样来执行的。然而,这可能会导致非常长的规划时间,特别是当约束非......
  • 181 Animation Basics & CSS Transitions
    实现点击Animate,上面的方块移动示例步骤1、为Animate按钮添加@click方法animateBlock<button@click="animateBlock">Animate</button>2、添加animatedBlock变量控制是否可以移动data() {    return {      animatedBlock: false,      dialogIsV......