*.xlsx 文件何时以及为何包含 *.bin 文件?

mai*_*290 4 security excel vba

我目前正在开发一个项目,以评估上传的*.xlsx文件是否真的*.xlsx只是一个文件,而不是*.xlsm扩展名已更改的文件。

由于*.xlsx文件或多或少是一个*.zip文件,因此我提取了内容并注意到有些文件包含文件*.bin,而其他文件则不包含。尽管 Excel 文件可能是合法文件,但不会尝试通过欺骗用户重命名它来注入另一个扩展名。

因此我的问题是:文件什么时候xlsx包含*.bin文件?这种方法适合检测xlsx文件是否包含宏吗?

我还检查文件的内容[content_types].xml以包含以下字符串之一:application/vnd.ms-office.vbaprojectapplication/vnd.ms-excel.sheet.macroenabled

Sid*_*out 5

xlsx 文件何时包含 *.bin 文件?

好吧,bin 文件不仅是为具有宏的工作簿创建的,而且也是为嵌入了 OLE 对象的工作簿创建的。

尝试这个。创建一个新工作簿并单击Developer Tab | Insert ActiveX control - Say Commandbutton。将文件保存并关闭为.xlsx. 重命名.Zip并检查 zip 文件

在此输入图像描述

编辑

是的,有时也可以存储打印机设置。快速搜索并发现了这个链接

摘自上述链接,以防链接失效。

除了 VBA 项目和嵌入的 OLE 对象之外,我们还在 Excel 2007 .XLSB 文件中发现了 BIN 部分,原因如下:

  1. 工作簿部分 workbook.bin(MIME 类型:application/vnd.ms-excel.workbook)
  2. 样式字典部分 styles.bin(MIME 类型:application/vnd.ms-excel.styles)
  3. 对于每个工作表,

    A。索引部分 worksheets/binaryIndexxx.bin(MIME 类型:application/vnd.ms-excel.binIndexWs)

    b. 工作表部分 worksheets/sheetxxx.bin (MIME 类型:application/vnd.ms-excel.worksheet)

    C。可选的打印机设置部分printerSettings/printerSettingsxxx.bin(MIME类型:application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings)

  4. 可选计算链部分calcChain.bin(MIME类型:application/vnd.ms-excel.calcChain)

  5. 可选注释部分 commentsxxx.bin(MIME 类型:application/vnd.ms-office.legacyDrawing)
  6. 可选表partstables/tablexxx.bin(MIME类型:application/vnd.ms-excel.table)
  7. 可选连接部分connections.bin(MIME类型:application/vnd.ms-excel.connections)
  8. 可选的 Chartsheet、Dialogsheet、Macrosheet 部件(chartsheets/sheetxxx.bin、dialogsheets/sheetxxx.bin、macrosheets/sheetxxx.bin)(MIME 类型:application/vnd.ms-excel.chartsheet、application/vnd.ms-excel.dialogsheet、应用程序/vnd.ms-excel.macrosheet)
  9. 可选数据透视表部分 (pivotTables/pivotTablexxx.bin)(MIME 类型:application/vnd.ms-excel.pivotTable)
  10. 可选的数据透视表缓存定义和记录部分(pivotCache/pivotCacheDefinitionxxx.bin、pivotCache/pivotCacheRecordsxxx.bin)(MIME 类型:application/vnd.ms-excel.pivotCacheDefinition、application/vnd.ms-excel.pivotCacheRecords)
  11. 可选查询表 (queryTables/queryTablexxx.bin)(MIME 类型:application/vnd.ms-excel.queryTable)