打印机基带泄漏还原
------------------------------------------------------------
热敏打印机由电源、控制板与热敏打印头组成。控制板接收由主机发来的数据,然后将每一个字符的字形码从内存(ROM)中取出,并按照一定格式放入内存(RAM)中的打印点行缓冲区,最后将点行缓冲区的内容送到打印头的移位寄存器中,进行热敏打印。
整个打印过程处理了两种包含信息的数据信号,第一种是从主机发送到控制板的数据,一般通过并口、RS232串口或者USB发送,用ASCH编码英文字符,GB2312编码中文;另一种数据时控制板发送大打印头的字形数据,是没有编码的明文数据。所以,可以通过截获这两种数据信号的电磁辐射来再现打印信息。
设备的实验环境如下:
通过设备采集后,获得的采集的信号如下所示:
下面我们对这段采集到的信号进行解析。
第一部分:清晰数据的还原分析
我们设计的是一种较为通用的识别方法,即未知同步字头的情况下,进行二进制数据的识别。
这里我们首先对清晰数据或者滤波后的数据进行说明,这里我们只需要人工设定起始点位置,其余为自动识别。
这里,具体的操作步骤为:
需要设置代码中的如下参数:
其中start1和end1两个参数,是设置对原始信号的粗步截取,效果如下:
我们将截取后的信号端放大,如下所示:
这是第一个峰值坐标为1652,我们然后再设置
对于其他信号,我们也可以采用上面的方式,进行人工的选择,采用这种方法,我们不需要像你之前朋友的那种算法,进行字头检测和字符其实检测。
一旦设置好上面的参数之后,后面的二进制数据识别检测结果如下所示:
然后放大显示如下所示:
上面就是检测到的二进制数据。
这里检测原理为边沿检测算法,即当出现上边沿的时候,则连续为高电平,如果检测到下边沿,则会连续的低电平信号。
我们这里设置的信号还原算法比较简单,以上就是基本的操作流程。
下面重点介绍低信噪比下的滤波处理。
第二部分:模糊数据滤波及数据还原分析
以上是带噪声的测试信号,通过分析,由于带噪声的信号中,存在如下几种类型的噪声,工频噪声(即总体上的正弦类型的波动),白噪声(即波形上的各种抖动),以及其他电磁干扰。
我们这里首先滤波去工频滤波:
然后通过小波滤波,得到原始的有效信息:
放大效果如下所示:
然后对滤波后的数据进行识别:
这里,通过滤波之后,得到的信号进行门限的判决,这里由于每个符号有5个采样点,所以通过滑动窗口的办法,即每5个采样点进行判决,计算其中的最大值和最小值,最大值和最小的差值的0.3倍作为判决门限。
然后同时判断,如果最大值大于0.5,那么认为该点对应的符号为1,如果最小值小于<-0.5,那么认为该点为-1,然后如果最大值小于0.5同时最小值大于-0.5,那么认为这个值是和前面一个符号是相同的,另外一方面,如果同时满足最大值大于0.5,最小值小于-0.5,那么比较最大值和最小值的绝对值,如果最大值大,那么取1,如果最小值的绝对值大,那么取-1。
另外,从上面滤波后的效果可知,通过滤波,有效信号相对于噪声信号的能量增加了大概0.7~0.8左右,即有效增益增加了5db以上。
这里,对于信息还原部分的算法,已经差不多就是这样了,如果要进一步提高性能,只能对滤波模块进行提升。
这里,我们以连续发送的a数据为测试案例,将数据延迟50个采样点,然后重合部分就是相当于数据部分a。如下所示:
上述一个周期数据即为一个符号a。
上述二进制对应的是0-0101-0111-1,
将上面的数据取反:
那么可以看到一个周期中,有0-1000-0110-1
即A得assic码。即接收到A。
上面还原得到的数据就是对应的字母a。
整个软件系统的GUI界面如下所示:
通过对最后识别得到二进制编码信息,可以得到对应的中文文字信息。
-------------------------------------------------------------------------------------
专业,代做,代写,承接,MATLAB,SIMULINK,FPGA项目,博士,硕士,本科,毕业设计,课题设计,论文,
期刊,毕业论文,杂志,Coursework,Eassy,Assignment,ISE,QuartusII,Vivado,PlanAhead,
SystemGenerator,Verilog,VHDL,VRML,DSPBuilder,EDK,SDK,MaxplusII,PowerPC,Microblaze
专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、
论文,毕业论文,Coursework、Eassy、Assignment
QQ:122 4848 052