NXP 半导体厂商围绕汽车防盗这一领域推出各种新的产品与方案,推动汽车防盗系统向更高级阶段迈进。
PCF7953汽车遥控钥匙芯片程序编写复制提取等技术由深圳橙盒科技具体提供技术支持,有需求可与之联系
PCF7953芯片解密联系电话:0755-82173891。
PCF7953芯片解密联系QQ:573934005,209622965。
用于“钥匙”中的应答器的芯片有PCF7936/PCF7941/PCF7961/PCF7952,下面简单描述一下这几个芯片的应用:
PCF7936,可编程的安全应答器,利用加密数据的传输来达成相互验证,非常适合应用在汽车防盗系统中基站与转发器之间加密数据的传输;发送机熄火防盗控制芯片(IMMO)
PCF7941,兼容 PCF7936,内置采用RISC 构架的微控制器,在按钮动作发生时以跳码的方式工作,使每次开锁发送的信号不同,并且具有自动再校准功能,即使在电量不足的状态下仍具有完全的防盗功能;遥控开锁控制芯片(RKE+IMMO,集成芯片)
PCF7961,兼容 PCF7936,基于低功耗8位MRKII 构架RISC 处理器,集成UHF 发射机,可以在没有电池供电时完成收有认证 *** 作,支持FLASH 编程类似的编程过程,方便实现系统升级;遥控开锁控制芯片(RKE+IMMO,集成芯片)
PCF7952,专用的 PKE 芯片,基于低功耗8位MRKII构架RISC 处理器,包括安全认证芯片,具有高灵敏度的三位低频接口,支持接收信号强度指示(RSSI)以判断ID 设备的位置。芯片内遥控开锁码生成可以在硬件认证计算单元中实现。支持FLASH 编程类似的编程过程,方便系统升级;无钥匙开锁和启动控制芯片(PKE)
置于车身中的基站芯片型号有:PCF7991:
PCF7991:高度集成的先进基站芯片(ABIC),它集成了转发器读、写所必需的所有功能,利用独特的可自动调整取样时间 AM/PM解调技术,有效扩大系统的 *** 作范围。具有可编程的时钟分频、调制、接收增益与滤波器,快速的写后读出接收设置特性;应用于IMMO,RKE+IMMO,PKE。
高频收/发芯片型号有UAA3220/PCF7900/PCF7980:
UAA3220,高度集成的单芯片接收器,主要用于VHF和UHF 系统中,支持ASK 和FSK 解调技术,内置混频器,振荡器,倍频单元,ASK/FSK 开关,FM 解调器,数字滤波器;置于车身的高频接收芯片
PCF7900,高集成度的单芯片发射器,可以用于数据率高达40 kbps 的ASK 和FSK 调制。由于该器件的集成度非常高,所以只需很少的;钥匙中的高频发射芯片
PCF7980
外围元件就可建立一个完整的发射机。一款高集成度的双向收发芯片,十分适用于工作在ISM/SRD 频段的无钥匙进入和类似于遥测的应用。这些小型封装因素、低功耗和宽供电电压范围使得该器件适合于在电池供电、手持设备等类似的应用中使用;高频双向收发芯片。
PCF7931隶属于NXP恩智浦(与飞利浦合并)厂家,一般用于汽车发动机防盗锁上,例如用于IMMO发动机防盗锁止系统(Immobilizer),是在通用的VATS基础上发展起来的,在防盗原理上传承了VATS的思路,即利用钥匙中芯片的密码与起动电门中的密码进行匹配来控制发动机的起动,以达到防盗的目的。对于装有发动机防盗锁止系统的汽车,即使盗车者打开车门也不能启动发动机开走汽车。
对于芯片程序是如何被提取出来的,很多人都想知道,但这我肯定是不会说的,毕竟这是公司秘密。但是我可以稍微的给大家做一下介绍。程序的编写,首先是C语言编写,要写到芯片里面去的时候,会经过反汇编,反汇编过后的程序写到芯片里面,就会刻录在芯片的存储区里面,成了机器码,当我们去把最终的程序读取出来的时候,出来的,是最终的机器码。
一般的编程器是可以将芯片里面的程序read出来的,但这一般都是在芯片没有加密的情况下。但是类似于宏晶的编程器,是没有可读的功能,这就是解密的工作带来非常大的阻力。
如果程序在写进芯片的时候,设置了加密,那么这个芯片就被加密了,程序是读取不出来的。像这种情况,就需要利用一定的技术,将程序读取出来。
而像我们橙盒科技,我们一般都是采取最直接的方法。比如,一个房间,有四个门,我们会直接把四个门的锁都敲掉,让里面的程序全部出来。其实,这只是一个比喻。意思就是直接破其加密位,将其程序区的门全部破开,再把程序全部引导出来即可。
当然,说起来简单,做起来就非常难,这个必须具备非常多系统全面的知识才可以做到的。
参阅我的文章:http://wenku.baidu.com/view/d4ea2273650e52ea5418981d.html
#include "stdafx.h" //VS 预编译头文件,其他系统请删除
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
#include<math.h>
#include<time.h>
//VS 2013 否决了 scanf 等函数,为了使用,加上下句。
//其他系统请删除
#pragma warning(disable:4996)
int GaussJordanElimination(int n, const double *pCoef, double *pOut)
//VS 主函数签名格式。其他系统请改变签名,如:
//int main()
int _tmain(int argc, _TCHAR* argv[])
{
double cf[3][4] = { {-0.02, 2.0, 2.0, 0.4}, {1.0, 0.78125, 0.0, 1.3816}, {3.996, 5.526, 4.0, 7.4178} }
double rs[3]
int i
i = GaussJordanElimination(3, (double*)cf, rs)
printf("x1 = %lf, x2 = %lf, x3 = %lf\n", rs[0], rs[1], rs[2])
system("pause")//避免窗口一闪而退
return 0
}
//绝对值函数
__inline double _abs(double v)
{
return v <0 ? -v : v
}
//线性方程组列主元高斯消元法
//n 方程元数;pCoef 系数,必须以行主序方式存放的二维数组;
//pOut 长度为 n 的一维数组(调用者负责维护),用于输出数据
//返回值:0 成功,-1 无解,1 申请内存失败, 2 不定解。
int GaussJordanElimination(int n, const double *pCoef, double *pOut)
{
double *pcf
int rows = n, columns = n + 1
//pcf = new double[rows * columns]
pcf = (double*)malloc(rows * columns * sizeof(double))
if (pcf == 0) return 1//巧妇难为无米之炊,内存都申请不到,还能干嘛!
memcpy(pcf, pCoef, (rows * columns) * sizeof(double))//据说这个运行效率很高
int r, c, i//循环变量
int a, b
double x, y
//开始消元,将 pcf 方阵区处理成到直角三角形(直角在右上角)矩阵
for (r = 0r <rows - 1r++)
{
//选取主元
a = rx = _abs(pcf[r * columns + r])
for (i = r + 1i <rowsi++)
{ //查找主元在哪行
if (x <_abs(pcf[i * columns + r])) a = i
}
if (a >r)
{ //主元不是当前行(r),比较麻烦,需要将第 a 行与第 r 行兑换
//第 r 列前面的就不要对换了,因为这些项已经被消元,变成 0 了
for (c = rc <columnsc++)
{
x = pcf[r * columns + c]
pcf[r * columns + c] = pcf[a * columns + c]
pcf[a * columns + c] = x
}
}
//开始消元
a = r * columns//记住将主元的行地址偏移量,以提高程序运行效率
x = -pcf[a + r]//要多次使用,记下她,以提高程序运行效率
if (x == 0) //主元居然为 0,纯粹是想坑爹,岂能上当!
continue//继续后面的消元,以便最终判断是无解还是任意解
for (i = r + 1i <rowsi++)
{ //正在消元
b = i * columns//记住将要消元的行地址偏移量,以提高程序运行效率
y = pcf[b + r]//要多次使用,记下她,以提高程序运行效率
if (y != 0)
{ //y == 0,本行不需要消元
y /= x//要多次使用,记下她,以提高程序运行效率
pcf[b + r] = 0//肯定为 0,不用计算。
for (c = r + 1c <columnsc++)
pcf[b + c] += pcf[a + c] * y
}
}
}//至此,pcf 方阵区已经处理成到直角三角形(直角在右上角)矩阵
//回代,将 pcf 方阵区处理成主对角线为 1,其他为 0 的矩阵
int columns_1 = c = columns - 1//多次用到,提高效率
for (r = rows - 1r >= 1r--)
{
b = r * columns
if (pcf[b + r] == 0)
{ //经过前面的消元,除主元外,其他元应该都为 0
if (pcf[b + columns_1] == 0)
{ //常数项为 0,方程有不定解
free(pcf)
return 2
}
else
{ //常数项为 0,方程有无解
free(pcf)//释放内存
return -1
}
}
pcf[b + columns_1] /= pcf[b + r]
pcf[b + r] = 1//肯定为 1,不用计算。
y = -pcf[b + columns_1]
//回代
for (i = r - 1i >= 0i--)
{
pcf[i * columns + columns_1] += pcf[i * columns + r] * y
pcf[i * columns + r] = 0//已经回代,此项已消,置为 0。
}
}
//处理第一行数据
pcf[columns_1] /= pcf[0]
pcf[0] = 1
//至此,回代过程结束,pcf 矩阵的最后一列就是结果
//返回结果
for (r = 0r <rowsr++)
pOut[r] = pcf[r * columns + columns_1]
free(pcf)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)