把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. 漫话Asp.net

    经过一段时间的接触,对asp.net这一块进行了很多其它的了解,漫话一下. Asp.net与Web : asp.net属于动态网页技术,属于web应用程序开发. Web应用程序通常是B/S模式. 和B ...

  2. Java从零开始学二十三(集合Map接口)

    一.Map接口 Collection.Set.List接口都属于单值的操作,即:每次只能操作一个对象,而Map与它们不同的是,每次操作的是一对对象,即二元偶对象,Map中的每个元素都使用key à v ...

  3. Spring boot发送邮件

    最近接到一个需求:分配任务给用户时,发送邮件提醒用户. 后端应该和Andorid一样有现成的api支持,浏览器里搜索了下,果不其然,很轻松就实现了这个功能,现在记录下. 首先添加Maven依赖 < ...

  4. 设计模式——门面模式(Facade)

    要想正确理解设计模式,首先必须明白它是为了解决什么问题而提出来的. 设计模式学习笔记 --Shulin 转载请注明出处:http://blog.csdn.net/zhshulin 1.概念 门面模式是 ...

  5. MySQL 忘记密码:skip-grant-tables

    1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也可以任意地登录 ...

  6. 【JS】怎样同一时候处理多个window.onload事件

    有时引用其他js时,其js却使用了window.onload事件,这种话,引入的页面的onload事件就有可能执行不了.如何才干两个都执行呢?除了将两个写到一块儿去的方法外,还有其他的方法 if(wi ...

  7. ocat 资源路径-时间控件

    http://www.htmleaf.com/jQuery/Calendar-Date-Time-picker/201504251737.html

  8. 【微信小程序】用户首次进入小程序拒绝授权,如何再次调用授权页面,获取用户信息userInfo

    前言:微信小程序的app.js里面,最少有2个接口,一个wx.login:一个是wx.getUserInfo: 前者得到腾讯给我们的微信用户唯一的code,通过code获取openid,这个不需要用户 ...

  9. 工具:SVN的Web客户端(ViewVC、SVNWebClient、sventon)和任务管理(Trac、Collaboa)

    http://www.blogjava.net/evanwhj/archive/2006/04/06/39498.aspx 在前面一篇文章中,痛诉了安装ViewVC for Subversion的种种 ...

  10. 使用免费ip代理进行投票

    只要是投票系统,必然要限制一个用户投多张票. 如何限制呢?限制ip是最直观最简单的思路,可是代理池可以解决限制ip的情况. 如果投票页面前面加上一个验证码,那程序就会有点困难了. 有些投票使用微信号, ...