把Xilinx的IPCORE解密成源代码的方法
把Xilinx的IPCORE解密成源代码的方法
以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;
把Xilinx的IPCORE解密成源代码的方法的更多相关文章
- web.config/app.config敏感数据加/解密的二种方法
一 建立虚拟目录 http://localhost/EncryptWebConfig,并添加web.config,其中包含数据库连接字符串: <connectionStrings> ...
- ASP.Net中实现上传过程中将文本文件转换成PDF的方法
iTextSharp是一个常用的PDF库,我们可以使用它来创建.修改PDF文件或对PDF文件进行一些其他额外的操作.本文讲述了如何在上传过程中将文本文件转换成PDF的方法. 基本工作 在开始之前,我们 ...
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...
- php查看网页源代码的方法
这篇文章主要介绍了php查看网页源代码的方法,涉及php读取网页文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php查看网页源代码的方法.分享给大家供大家参考.具体实现 ...
- 将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)
这篇文章主要介绍了将编码从GB2312转成UTF-8的方法汇总(从前台.程序.数据库),需要的朋友可以参考下 一个网站如果需要国际化,就需要将编码从GB2312转成UTF-8,其中有很多的问题需要注意 ...
- 把C编译成javascript的方法
把C编译成javascript的方法,便于嵌入到HTML5中 https://github.com/kripken/emscripten
- js面向过程改写成面向对象--通用方法
响亮的标题:一个万能的,保底的.面向过程改写成面向对象的方法 前提朗读:很多刚接触js面向对象的时候都不知道如何能快速的写出一个面向对象的程序,这个是必然的现象,不是每一位学js的一上来就会写面向对象 ...
- Windows 程序注册成服务的方法
Windows 程序注册成服务的方法 将windows 程序注册成服务这个是很多后台程序需要实现的功能,注册成服务后,你的程序就可以像windows 服务一样随系统启动,并且隐藏你的控制台界面.下面介 ...
- CAJ转换成PDF在线方法是什么
做学术性的朋友经常会需要将CAJ文件转换成PDF文件,毕竟CAJ文件只能在CAJ阅读器上显示,但是有很多转换软件并不能很好的完成转换,小编今天就为大家讲解一下CAJ转换成PDF在线方法是什么,大家要认 ...
随机推荐
- utc时间转换成标准时间
把这个时间 /Date(1484884647943+0800)/ 转成标准时间 String str = String.format("%tF %<tT", 14848846 ...
- ZH奶酪:JavaScript清空数组的三种方法
参考链接:http://snandy.iteye.com/blog/893955 方式1,length赋值为0 目前 Prototype中数组的 clear 方法和mootools库中数组的 empt ...
- PHP MySQL -处理语句
PHP MySQL 预处理语句 预处理语句对于防止 MySQL 注入是非常有用的. 预处理语句及绑定参数 预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高. 预处理语句的工作原理如下: 预 ...
- Electron 入门案例1
1:package.json 通过npm init生成package.json文件,内容如下: { "name": "t02", "version&q ...
- 2019年所有人必须要掌握的一个技能 - “AI思维”
或许很多人认为AI只是那些直接从事AI相关岗位的人必须要掌握的技能,但实际上,不分岗位所有人都需要一种能力,那就是“AI思维”.如果没能在合适的时机把自己的认知提升到一定程度,被替代是很自然的事情.在 ...
- netsh学习
show allowedprogram –显示被允许的程序配置 show config - 显示防火墙的配置 show currentprofile -显示 Windows 防火墙的当前配置文件. s ...
- Memcached安装与配置
memcached是danga.com的一个项目.它是一款开源的高性能的分布式内存对象缓存系统.最早是给LiveJournal提供服务的.后来逐渐被越来越多的大型站点所採用.用于在应用中减少对数据库 ...
- ORACLE-SQL(二)
CreateTime--2017年6月1日14:36:37 Author:Marydon 一.SQL语句 (二)提升篇 1.2.3 分页,分组,计数,排序 /** * 返回数据 * FORGID ...
- C#:Use Form as Subform
static class SubFormExtensions { internal static bool AttachTo(this Form subForm, Panel panel) { if ...
- C++编写简单的俄罗斯方块游戏
代码地址如下:http://www.demodashi.com/demo/14593.html C++编写简单的俄罗斯方块游戏 使用C++编写一个简单的俄罗斯方块游戏. 1 环境要求 使用C++图形库 ...