把Xilinx的IPCORE解密成源代码的方法

 
1.加密的文件格式
以can_v1_5/can_tl_bsp.vhd为例子
a)前8个字节XlxV38EB是加密的版本号,没研究过其他加密版本,不知道有什么不同
后面的fa00不知道做什么用
b)第二行前8字节是这段密文长度,表示过3230H字节后是下一个加密段
c)从18h开始是明文经过Zlib压缩后DES加密的
                    ----------------------    
00000000h: 58 6C 78 56 33 38 45 42 20 20 20 20 66 61 30 30 ; XlxV38EB    fa00
00000010h: 20 20 20 20 33 32 33 30 39 1E 5F B2 14 42 33 C1 ;     32309._?B3?
00000020h: 82 40 EA 28 A0 8D 8C E9 8B 75 8B 0E 7C C4 6E BA ; 侤?爫岄媢?|膎?
00000030h: B0 2F 08 7C 51 C0 B0 45 01 D5 BD B8 73 A1 A1 09 ; ?.|Q腊E.战竤 .
00000040h: 71 2A 81 FA A7 9E 99 CA 9C BE 15 7C 44 D1 E9 C1 ; q*侜櫴溇.|D验?
00000050h: D5 A8 81 9B 1E 3A 19 47 4A 49 AA 87 1C E2 E2 46 ; 炸仜.:.GJI獓.忖F
。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。
00003220h: 0F DD 81 68 7A B1 C5 92 FD 7C 77 FB 73 96 46 82 ; .輥hz迸掿|w鹲朏?
00003230h: A4 63 0B F1 64 17 1D D5 18 19 B2 E8 1D 23 DF 0F ; .馾..?.茶.#?
00003240h: 24 11 C2 D4 D0 90 38 7D 58 6C 78 56 33 38 45 42 ; $.略袗8}XlxV38EB
00003250h: 20 20 20 20 36 38 64 37 20 20 20 20 31 34 66 63 ;     68d7    14fc
00003260h: D5 F9 A3 5C F9 7D D7 4A 72 09 19 86 03 62 C4 2C ; 争鶀譐r..?b?
00003270h: FE DC 28 58 7E 1F 91 2F 0F CD A8 DB 8E A0 FF 37 ; (X~.?.通蹘?7
00003280h: 01 F4 62 07 CE BA 6E 3C BB 67 4C B0 D9 E8 AE E3 ; .鬮.魏n<籫L百璁

2.解密方法
1)先用DES还原被加密的文件,每8字节为一组。
如果密文长度不能被8整除,剩余的字节不处理。
2)Xilinx的IPCORE所用DES的Key是固定的8f c2 d3 a0 XX XX  XX XX,可以用下面这组值穷举出来。
39 1E 5F B2 14 42 33 C1 解密为75 41 73 32 dd 59 ea 0c
3)再与异或初始值0d 9b 9e 4f b6 2a f1 37异或
4)得到结果 78 73 32 dd xx xx xx xx
5)异或初始值替换为上8个字节39 1E 5F B2 14 42 33 C1,解密下8个字节,
6)重复第五步解密直到结束
7)将各个解密段拼成一个文件

3.从http://www.zlib.net/下载Zlib压缩库,调用其中的解压缩函数
1)假设解密后的文件是compfile调用这个函数inf(compfile,tfile);
2)这个tfile文件既是源码文件

-- $Id: can_tl_bsp.vhd,v 1.1.2.2 2007/05/28 13:39:29 snori Exp $
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- Copyright(C) 2007 by Xilinx, Inc. All rights reserved.
-- This text/file contains proprietary, confidential
-- information of Xilinx, Inc., is distributed under
-- license from Xilinx, Inc., and may be used, copied
-- and/or disclosed only pursuant to the terms of a valid
-- license agreement with Xilinx, Inc. Xilinx hereby

。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。

smcomb: process(state, RXE_COUNTER_I, SM_STUFFBIT_PD,SM_STUFFBIT,
       BSOFF_COUNTER_I,  TEC_INC8_I, EMU_TEC_BOFF_LT1,
       EMU_REC_ERRACT,BTL_RXBIT,IC_MSR_LBACK,IC_MSR_SLEEP,
       TX_HPB_EMPTY,TX_FIFO_EMPTY) 
  begin
    
    -- Enable Stuff Module when State = ID and after the 3rd bit 
    -- after SOF been received.
    if (state = ID and RXE_COUNTER_I = C3) then
      RXE_SM_EN <= '1';
    else
      RXE_SM_EN <= '0';
    end if;

-- Reset CRC when State = EOF 
    -- When RXE_CRC_RST = '1', the CRC register is reset.
    -- Reset when State = EOF and RXE_COUNTER_I = CO 
    -- (After ACK field) 
    -- Reset when in ERRACT and ERRPASS and RXE_COUNTER_I = C0. It is possible
    -- that Reset could be asserted for multiple cycles.
    
    if ((state = EOF and RXE_COUNTER_I = C0) or
       ((state = ERRACT or state = ERRPASS) and RXE_COUNTER_I = C1)
         or state = BOFF) then
      RXE_CRC_RST <= '1';
    else
      RXE_CRC_RST <= '0';
    end if;
    
    -- CRC Enable is '1' ID, CTL and DATA states
    if (state = ID or state = CTL or state = DATA) then
      RXE_CRC_EN <= '1';
    else
      RXE_CRC_EN <= '0';
    end if;           
    
    -- Stuff Module reset when Error or when State = CRC and the 15th bit has 
    -- been received and the next bit is not a stuff bit.
    if (( state = CRC and RXE_COUNTER_I = C15 and SM_STUFFBIT_PD = '0')
      or (( state = ERRACT or state = ERRPASS or state = BOFF)
       and RXE_COUNTER_I = C0 )) then
      RXE_SM_RST <= '1';
    else
      RXE_SM_RST <='0';
    end if;

转载:http://blog.csdn.net/pengwangguo/article/details/78993810

把Xilinx的IPCORE解密成源代码的方法的更多相关文章

  1. web.config/app.config敏感数据加/解密的二种方法

    一 建立虚拟目录  http://localhost/EncryptWebConfig,并添加web.config,其中包含数据库连接字符串: <connectionStrings>    ...

  2. ASP.Net中实现上传过程中将文本文件转换成PDF的方法

    iTextSharp是一个常用的PDF库,我们可以使用它来创建.修改PDF文件或对PDF文件进行一些其他额外的操作.本文讲述了如何在上传过程中将文本文件转换成PDF的方法. 基本工作 在开始之前,我们 ...

  3. C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...

  4. php查看网页源代码的方法

    这篇文章主要介绍了php查看网页源代码的方法,涉及php读取网页文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php查看网页源代码的方法.分享给大家供大家参考.具体实现 ...

  5. 将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)

    这篇文章主要介绍了将编码从GB2312转成UTF-8的方法汇总(从前台.程序.数据库),需要的朋友可以参考下 一个网站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意 ...

  6. 把C编译成javascript的方法

    把C编译成javascript的方法,便于嵌入到HTML5中 https://github.com/kripken/emscripten

  7. js面向过程改写成面向对象--通用方法

    响亮的标题:一个万能的,保底的.面向过程改写成面向对象的方法 前提朗读:很多刚接触js面向对象的时候都不知道如何能快速的写出一个面向对象的程序,这个是必然的现象,不是每一位学js的一上来就会写面向对象 ...

  8. Windows 程序注册成服务的方法

    Windows 程序注册成服务的方法 将windows 程序注册成服务这个是很多后台程序需要实现的功能,注册成服务后,你的程序就可以像windows 服务一样随系统启动,并且隐藏你的控制台界面.下面介 ...

  9. CAJ转换成PDF在线方法是什么

    做学术性的朋友经常会需要将CAJ文件转换成PDF文件,毕竟CAJ文件只能在CAJ阅读器上显示,但是有很多转换软件并不能很好的完成转换,小编今天就为大家讲解一下CAJ转换成PDF在线方法是什么,大家要认 ...

随机推荐

  1. 关于oracle redo log buffer 你所不知道的东西

    [ora11@lixora ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 8 09:57:50 ...

  2. IOS学习笔记44--ASIRequestHttp之BUG(一)

    其实这也是无意间看到的,大家看看是不是这么回事 BUG:当下载线程数超过2时,就会影响到主线程响应用户请求的速度了 看ASIRequestHttp.m--requestFinished代码 - (vo ...

  3. 使用第三方类、库需要注意的正则类RegexKitLite的使用

    一.到http://regexkit.sourceforge.net/下载RegexKitLite类,添加到项目中: 因为RegexKitLite使用ICU库,所以需要动态链接到/usr/lib/li ...

  4. Android网络:开发浏览器(二)——功能完善之书签功能

    经过上述的编写,基本的功能已经完成了,不过工具栏里面基本还是一片空白,只有一个刷新的功能,现在咱们就先完善这些功能(之前有朋友说来点图,那么这次我会截些图更好的来描述). 既然是浏览器,怎么能没有书签 ...

  5. Java从零开始学三十七(JAVA IO- 二进制文件读写)

    一.简述 二.使用步骤 DataInputStream: 引入相关的类 构造数据输入流的对象(如:FileInputStream,BufferedWriter包装后读取文件等) 读取二进制文件的数据 ...

  6. UML类图聚集与组合的区别

    http://blog.csdn.net/zwf0713/article/details/2025922 设计模式中组合和聚集好像挺相似,但有一定区别. 1-在图上的区别是,聚集用空心,组合用实心: ...

  7. Android自己定义控件:进度条的四种实现方式

    前三种实现方式代码出自: http://stormzhang.com/openandroid/2013/11/15/android-custom-loading/ (源代码下载)http://down ...

  8. 算法笔记_211:第七届蓝桥杯软件类决赛部分真题(Java语言A组)

    目录 1 阶乘位数 2 凑平方数 3 棋子换位 4 机器人塔 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 阶乘位数 阶乘位数 9的阶乘等于:362880 它的二进制表示为:10110001001 ...

  9. 虚拟机下linux迁移造成MAC地址异常处理办法

    虚拟机下linux迁移造成MAC地址异常处理办法 Linux无法启用网卡:Device eth0 has different MAC address than expected,ignoring解决 ...

  10. mysql 设置密码

    法一: 格式:mysqladmin -u用户名 -p旧密码 password 新密码 方法二:1.用root 进入mysql后mysql>set password =password('你的密码 ...