打印

51+SD卡+znFAT+XMODEM用串口把文件从PC里"盗"出来,窃取

[复制链接]
8193|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
znmcu|  楼主 | 2012-8-20 08:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 znmcu 于 2012-8-20 11:25 编辑

请关注 振南的znFAT 单片机上的FAT32文件系统   
QQ 987582714
===================================
源代码下载: xmodem.zip (362.76 KB)
znFAT应用手册: znFAT移植与使用手册.pdf (285.28 KB)
XMODEM文件传输协议文档资料: 用 UART 做文件传输(采用 Xmodem协议).pdf (921.16 KB)
================================================
“串口文件传输”这一实验起初其实是源于一个不良的思想----“盗取文件”。一次和朋友的聊天中,聊到了“如何从一台涉密计算机中盗取文件?”的问题。要知道在一些机要单位,办公电脑是绝对封锁的,不管是从软件上,还是硬件上。可能USB口或网口直接被堵上或拆掉了,机箱也加上了锁,阻断了一切文件被非法拷出的途径。如何从这样一台守卫森严的电脑中把文件搞出来,是个挑战!其实这一“盗取文件”的行为并不一定就是不良行为,有时候为了维权,也许我们也需要一些特殊手段,比如从封锁的电脑中搞到一些证据等。
经过思考,我们最终敲定了一个方案----“串口文件传输”。这一方案大致可以分为以下几个部分:
    1)电脑端的串口通信和文件发送软件;
    2)用于接收串口数据的外部设备;
    3)用于将接收到的数据进行存储的存储介质,并将数据存为文件;
4)用于控制数据传输与通信的通信协议。

通过下图可以明确方案的实现:



电脑端使用什么软件来发送文件数据呢?有人说:“用串口助手就可以了!”不错,但你有没有考虑到对于一个封锁的电脑,串口助手如何放到电脑里去?有人说:“那只能现编了?”他的意思是说如果电脑上有VCVB等软件开发环境,我们可以自己去实现一个简易的串口通信软件。但是如果没有任何软件开发环境呢?又或者没有那么多时间去让你写这样一个软件呢?那应该如何是好呢?其实我们可以使用Windows自带的一个串口通信软件----超级终端。



光有串口通信功能还不行,还要有文件数据发送功能,以及遵循一定的通信协议(用于控制数据的传输)。其实在超级终端中都有(菜单:传送-->发送文件):



点击发送文件之后,可以看到上面的对话框,用于选择要发送的文件,以及使用的数据传输协议。我们在这里选择Xmodem。什么是Xmodem?估计很多人对这种通信协议不太了解。其实它是一种古老、经典而广泛应用的文件传输协议(Xmodem其实是FTP文件传输协议中所使用的一种协议,用于完成文件数据的传输),其过程也是很简单的。
Xmodem协议将一个文件的数据分割为若干个128字节的数据块,依次发送。为了便于数据的收发、处理以及正确性的校验。将每一个数据块都封装为如下的格式:


Xmodem支持两种对数据的校验方法:校验和与CRC冗余校验。我们使用校验和(CheckSum)。至于具体使用哪种校验方法,有专门的方法进行设置。其次,Xmodem还是一种基于等待-应答-错误重发机制的协议。通过以下实例来说明数据通信的具体过程:



1)首先,接收方(即外部设备或下位机)发送NAKNAKXmodem应答机制中定
   义的“无应答控制字”,其值为0X15。一开始,如果接收方发送给主机的是NAK
   则告诉主机采用校验和方式。如果发送的是C,则是CRC方式。如果在三秒钟内
   没有收到主机的回应,则重复发送NAK(这一方面是对校验方式的设置,另一方面
   其实是一个通讯握手的过程)。
2)在成功接收到主机发来的数据后,并经过数据检验无误后,即可进行存储或处理,
   随后发送ACK(应答,值为0X06)。主机成功接收到应答之后,会继续发送下一个
   数据块。1)与2)依次往复,直到全部数据块发送完毕。
3)最后一个数据块可能不足128字节,此时,用0X1A进行补齐。
4)在最后一个数据块发送完之后,主机在接到应答信号后,将发送EOT控制字(即传
   输结束,值为0X04)。接收方收到EOT之后,发送ACK,至此全部数据传输过程
   完成。
好,电脑端的串口发送文件数据的软件,以及通信协议都已经没什么问题。接下来的问题是:接收方接收到的数据存在哪里?实际传输的文件体积可能会比较大,因此我们应该选用大容量的存储器来存储文件数据,SD卡现在很流行,也很方便,就选它了。
数据在SD卡上具体应该如何存储?我们知道SD卡的最小存储单元是扇区(每个扇区有512个字节)。我们可以将接收到的数据直接依次顺序写入扇区(比如从0扇区开始,一直往后写)。这样最大的问题是,把SD卡放到电脑上,不能直接看一数据,而要借助于一些专用的软件,如Winhex。因此,一个很好的设想被提出:如果写入到SD卡的数据,直接是文件的形式该有多好?!(这或许,更像是一种文件从串口拷出的感觉。)这里我们使用振南的znFAT,来达到将数据以文件的形式进行存储的目的。这个过程,看下图:


znFAT是由振南研发的一套功能完备、高率精简的嵌入式FAT32文件系统的解决方案。它可以在SD卡、U盘等存储设备上轻松实现各种文件操作,如文件数据读写、文件或目录的创建等等。它与WindowsLinux等操作系统上的FAT32文件系统高度兼容。
应该说,这个实验中的两大重点就是
   1Xmodem通信协议   2znFAT文件系统方案
关于znFAT文件系统方案的内容比较多,请参见本实验源代码以及znFAT的配套应用手册。
下图是文件数据传输过程,超级终端文件传送对话框的界面:


使用的单片机为51,具体型号为 STC12C5A60S2,硬件平台如下:


代码的实现如下图:

相关帖子

沙发
lkcumt| | 2012-8-20 08:58 | 只看该作者
不错!

使用特权

评论回复
板凳
coody| | 2012-8-20 09:17 | 只看该作者
很好,很强大!

使用特权

评论回复
地板
ken_zq| | 2012-8-20 09:44 | 只看该作者
手提电脑没有串口,求解决方案

使用特权

评论回复
5
znmcu|  楼主 | 2012-8-20 09:48 | 只看该作者
我在制作大量的应用实例,围绕文件系统这个核心,主要在于推广 文件系统在嵌入式产品和开发中的作用。
振南的znFAT

使用特权

评论回复
6
elec921| | 2012-8-20 12:43 | 只看该作者
支持振男

使用特权

评论回复
7
qiujiahongde| | 2012-8-20 13:13 | 只看该作者
支持!

使用特权

评论回复
8
悠然科技| | 2012-8-20 13:39 | 只看该作者
我们公司的加密机,貌似把超级终端都封掉了

使用特权

评论回复
9
delin17| | 2012-8-20 13:45 | 只看该作者
直接用串口下发数据,也可以发文件啊,自己定义好命令格式就KO了

使用特权

评论回复
10
mohanwei| | 2012-8-20 13:52 | 只看该作者
手机自动拍屏幕+OCR

使用特权

评论回复
11
znmcu|  楼主 | 2012-8-20 13:58 | 只看该作者
本帖最后由 znmcu 于 2012-8-20 14:01 编辑

呵,谢谢大家的关注。
其实主要还是对XMODEM文件传输协议进行一些研究和应用,同时还有文件系统的应用。
XMODEM协议其实应用非常广。有些芯片的程序下载协议就是用XMODEM。
其实可以给AVR或ARM写个bootloader,直接用超级终端发送文件的方式来烧写程序,呵。。。

使用特权

评论回复
12
古道热肠| | 2012-8-20 17:17 | 只看该作者
呵呵,这标题起得有意思,不过内容还比较充实。

使用特权

评论回复
13
杜专| | 2012-8-20 21:02 | 只看该作者
学习了

使用特权

评论回复
14
程序匠人| | 2012-8-20 21:58 | 只看该作者
这个想法很有趣,不过,如果串口也被封了呢?

使用特权

评论回复
15
古道热肠| | 2012-8-20 22:45 | 只看该作者
除了显示器,键盘口也是可以用来传数据的,只是速度慢,把一字节的数据变换成8次亮和灭键盘上的大小写切换指示灯,然后用单片机捕获后将串和数据流还原成1字节。
总不能不给用键盘吧。

使用特权

评论回复
16
znmcu|  楼主 | 2012-8-20 22:48 | 只看该作者
哈哈哈,其实只只要你想**,就一定有办法。耳机音频接口通过控制,也是可以模拟出数字信号的。

使用特权

评论回复
17
古道热肠| | 2012-8-20 22:52 | 只看该作者
呵呵,音频传数据最为简单的就是DTMF编解码,一次可以半个字节,这个思路已经有人做成成品,就是电脑远程电话控制器。不过这东西正在慢慢被以太网络取代。

使用特权

评论回复
18
chenlubin1988| | 2012-8-26 00:59 | 只看该作者
支持,znFAT!

使用特权

评论回复
19
vachile| | 2012-8-26 10:53 | 只看该作者
支持ZN

使用特权

评论回复
20
ztb| | 2012-8-28 16:38 | 只看该作者
修改要导出的文件为图像文件(例如黑白BMP文件),显示图片,拍照,回家解码即可。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:振南的znFAT -- 单片机上上的FAT32文件系统 www.znmcu.cn

4474

主题

5195

帖子

33

粉丝