xilinx-fpgas中bal框架的实现

bal-xilinx的Python项目详细描述


bal xilinx概述

bal xilinx包是 Binary Abstraction Layer (BAL)用于xilinx fpga的框架。 它支持大多数比特流的打包/解包、目标设备/加密检测和 引脚修改(强制引脚高/低)。 它应该是一个项目的依赖项,而不是要定制的样板项目。 它最初是在黑帽2019年推出的(presentationresearch paper)。

完整的api文档here可用。

贡献者:

  • Jatin Kataria(研究员)
  • 里克·霍斯利(研究员)
  • Alex Massonneau(开发人员)
  • Andrew O'Brien(开发人员)

安装

bal xilinx包可以使用以下命令从pypi安装:

pip install bal-xilinx

BAL-Xilinx包也可以从存储库中安装它需要bal包。请参阅installation instructions

要从源代码安装bal xilinx包,请运行:

git clone https://github.com/RedBalloonShenanigans/bal-xilinx.git
cd bal-xilinx
pip install .

要生成文档,请运行:

pip install .[docs]
make html-docs

工具

虽然此模块本应用作另一个项目的依赖项,但它当前提供了 一个叫做pin的工具它为现有的Xilinx FPGA比特流打开/关闭给定的PIN。它是 可通过运行访问:

python-mbal_xilinx.tools.pin

使用-h标志运行pin工具可以访问该工具的文档

方法论

xilinx转换器在很大程度上依赖于bal_xilinx/configs中包含的格式定义。用于创建这些json文件的方法不久将发布。

指南

本指南假设您熟悉BAL framework。 如项目名称所示,这是一个用于Xilinx FPGA位流的实现。 完整的示例可在./example下找到

分析仪

有3个分析仪可用:

  • bal_xilinx.analyzers.device_analyzer.XilinxDeviceAnalyzer确定设备的类型 以比特流为目标。
  • bal_xilinx.analyzers.encryption_analyzer.XilinxEncryptionAnalyzer确定fdri 数据包是加密的。
  • bal_xilinx.analyzers.visualizer_analyzer.XilinxVisualizerAnalyzer生成配置 BAL visualizer的数据。

修饰语

目前只有一台分析仪:

  • bal_xilinx.modifiers.pin_modifier.XilinxPinModifer强制管脚为低/高,而不管 由FPGA执行的逻辑

示例

下面是一个将所有可用的分析器和修饰符组合在一起的示例。

# Configure the default convertersxilinx_context_factory=default_xilinx_context(XilinxContextFactory(# Register the formats for the LX9 and LX45Tdefault_xilinx_formats(XilinxFormatBuilder()).build()))lx9_bin=wget.download('https://redballoonsecurity.com/files/JwfEU4veQSNFao8h/lx9.bin')withopen(lx9_bin,"rb")asf:data=f.read()bitstream_context=xilinx_context_factory.create(data)# Get the device type targeted by the bitstreamdevice_type=bitstream_context.create_analyzer(XilinxDeviceAnalyzer)\
    .analyze()print("Device info: {}".format(device_type))# Determine if the FDRI packets are encrypted.is_encrypted=bitstream_context.create_analyzer(XilinxEncryptionAnalyzer)\
    .analyze()print("Is encrypted: {}".format(is_encrypted))# Unpack the entire bitstream to make sure the visualization includes everythingbitstream_context.get_data().unpack_all()print("Writing the visualizer config to {}".format(os.path.abspath("data.json")))withopen("data.json","w")asf:# Generate the visualization config filevisualizer_config=bitstream_context.create_analyzer(VisualizerAnalyzer) \
        .analyze()json.dump(visualizer_config,f)print("Pulling the pins low")pin_modifier=bitstream_context.create_modifier(XilinxPinModifer)forpinin["P134","P133","P132","P131","P127","P126","P124","P123"]:pin_modifier.modify(pin,False)print("Analysis and modifications done!")

这是给导游的。玩得高兴!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java我需要做什么来解析bundle-org。日食说唱在eclipse helios中无法解析ui?   json Java JSONSimple解析器   java如何使Hibernate、JBoss和Eclipse在单元测试中协同工作?   java使输出在每个循环中打印一次,而不是每次迭代   Java ArrayList remove()意外结果?   java删除服务器。来自sun应用程序服务器的策略   java在Tycho项目中为非OSGi JUnit测试添加testonly依赖项   java Hibernate TypedQuery在升级到版本5后失败(如果以以下方式结束)   java Mockito ArgumentCaptor不在catch块中捕获argurment   java GWT CheckBoxCell:如何添加更改处理程序?   java如何在不更改hibernatemapping的情况下防止字段被更新   Java中的虚拟TCPsocket   java如何通过我的应用程序在新版本的Androids上以编程方式更改其他应用程序的权限?   java文件被哪个进程锁定(安卓)?   SeleniumWebDriverJava中的按钮单击   基于Java的多线程客户端socket   清除文本字段时出现问题。clear()*JAVA**ANDROID*   安卓为什么会发生JavaJSON异常?