找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1661|回复: 11

[他山之石] 【转帖】FAS文件格式的研究及破解

[复制链接]

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-9-3 21:32:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
先看一个小程序gys.lsp
;改任何实体的颜色 (c)SYZ 1995.3.18
(defun c:gys ()
  (setq ss (ssget))
  (setq tcol (getstring
        "\n输入新颜色(回车为白色,也可以改为其他颜色):<W> "
      )
  )
  (IF (= tcol "")
    (setq tstyle "W")
  )
  (command "change" ss "" "p" "c" tcol "")
)
在AutoCAD2008下编译成fas文件,内容如下:
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000000   0D 0A 20 46 41 53 34 2D  46 49 4C 45 20 3B 20 44      FAS4-FILE ; D
00000010   6F 20 6E 6F 74 20 63 68  61 6E 67 65 20 69 74 21   o not change it!
00000020   0D 0A 31 32 31 0D 0A 31  34 20 24 14 00 00 00 00     121  14 $     
00000030   35 00 0D 00 03 06 0C 00  09 0B 00 35 01 0A 00 03   5          5   
00000040   06 09 00 03 09 00 09 08  00 35 02 07 00 03 67 0B            5    g
00000050   00 00 00 09 06 00 06 05  00 57 00 00 00 00 09 04            W      
00000060   00 51 01 03 00 01 00 0A  03 0C 00 51 01 03 00 01    Q         Q   
00000070   00 0A 09 08 00 51 01 03  00 01 00 0A 09 02 00 51        Q         Q
00000080   01 03 00 01 00 0A 09 01  00 51 01 03 00 01 00 0A            Q      
00000090   03 09 00 51 01 03 00 01  00 0A 09 08 00 51 01 03      Q         Q  
000000A0   00 01 00 16 24 0D 0A 32  35 30 20 35 20 24 32 E2       $  250 5 $2?
000000B0   25 F1 1E D6 E4 BE 6B 1B  64 06 12 11 62 2F 3C 46   %?咒緆 d   b/<F
000000C0   58 4C 4F 4F 55 9D 40 96  4A F0 1E BF A7 B6 0D 68   XLOOU @朖?咖?h
000000D0   0E 07 12 46 15 00 11 07  1F 0D 01 50 31 CA 5F C9      F       P1蔩?
000000E0   1D F1 1E B1 E6 8C 4B 31  3E 06 12 37 42 22 75 74    ?辨孠1>  7B"ut
000000F0   36 6E 66 06 31 F8 73 E2  24 F6 1E 87 8C ED 24 56   6nf 1鴖??噷?V
00000100   38 5C 46 14 40 1A 5D 42  1B 0D 5E 63 31 F9 26 B4   8\F @ ]B  ^c1??
00000110   7F CD 1E E4 B1 8D 4A 31  5D 5C 46 04 5B 0F 11 40    ?浔 J1]\F [  @
00000120   5E 59 58 36 63 B1 68 A4  24 F0 4B E5 E4 A3 4A 3B   ^YX6c県?餕邃?;
00000130   97 E3 DA AC C4 81 C0 D2  D2 A6 23 D9 E9 4B 93 2D   椼诂?酪姚#匍K?
00000140   8E 40 C9 2D 4F A0 98 83  E2 CE C0 93 AC 87 DF AD   嶡?O牁冣卫摤囘?
00000150   DD E9 C0 99 E0 2D EF 48  0D CA 22 B3 DA AC 11 62   蓍罊?颒 ?弛?b
00000160   0E 07 41 14 53 06 45 07  1B 51 0B 62 72 F8 26 ED     A S E  Q br??
00000170   24 FA 42 E4 E4 BE 4A 6A  1E 3D 55 1E 47 43 11 3D   $鶥滗綣j =U GC =
00000180   1A 4E 0F 62 30 F8 3A F7  25 F0 1E E4 ED 8F 4A 3B    N b0???漤 J;
00000190   0A 07 12 47 14 4A 15 07  1D 0F 0B 6B 33 F8 13 E2      G J     k3??
000001A0   25 F0 1F EE ED 8E 4A 27  18 C3 E5 06 22 D2 CC 28   %?铐嶫' 缅 "姨(
000001B0   CC 40 0A 3B 66 61 73 34  20 63 72 75 6E 63 68 0A   藹 ;fas4 crunch
000001C0   3B 24 3B 41 39 2F 33 2F  31 38                     ;$;A9/3/18
经过测试,注释部分对编译后的文件无任何影响,因此编译后注释会丢失。
00000000   0D 0A 20 46 41 53 34 2D  46 49 4C 45 20 3B 20 44      FAS4-FILE ; D
00000010   6F 20 6E 6F 74 20 63 68  61 6E 67 65 20 69 74 21   o not change it!
这两行是fas文件的文件头,任何程序编译的fas文件都不变,可以作为判断是否为fas文件
的依据。
00000020   0D 0A 31 32 31 0D 0A 31  34 20 24 14 00 00 00 00     121  14 $   
这一行有两个数字,121 和14,有些资料说是121是第一段的长度,14是字符串的个数。
表示从地址 2B开始到地址A4,共有121个字节。
                                             14 00 00 00 00   
00000030   35 00 0D 00 03 06 0C 00  09 0B 00 35 01 0A 00 03   5          5   
00000040   06 09 00 03 09 00 09 08  00 35 02 07 00 03 67 0B            5    g
00000050   00 00 00 09 06 00 06 05  00 57 00 00 00 00 09 04            W      
00000060   00 51 01 03 00 01 00 0A  03 0C 00 51 01 03 00 01    Q         Q   
00000070   00 0A 09 08 00 51 01 03  00 01 00 0A 09 02 00 51        Q         Q
00000080   01 03 00 01 00 0A 09 01  00 51 01 03 00 01 00 0A            Q      
00000090   03 09 00 51 01 03 00 01  00 0A 09 08 00 51 01 03      Q         Q  
000000A0   00 01 00 16 24
第二段的头从地址A5开始,长度是250,字符串个数是5?
第二段的内容开始地址是AE,结束地址是1A7,共有250个字节
                                                      32 E2      
000000B0   25 F1 1E D6 E4 BE 6B 1B  64 06 12 11 62 2F 3C 46   %?咒緆 d   b/<F
000000C0   58 4C 4F 4F 55 9D 40 96  4A F0 1E BF A7 B6 0D 68   XLOOU @朖?咖?h
000000D0   0E 07 12 46 15 00 11 07  1F 0D 01 50 31 CA 5F C9      F       P1蔩?
000000E0   1D F1 1E B1 E6 8C 4B 31  3E 06 12 37 42 22 75 74    ?辨孠1>  7B"ut
000000F0   36 6E 66 06 31 F8 73 E2  24 F6 1E 87 8C ED 24 56   6nf 1鴖??噷?V
00000100   38 5C 46 14 40 1A 5D 42  1B 0D 5E 63 31 F9 26 B4   8\F @ ]B  ^c1??
00000110   7F CD 1E E4 B1 8D 4A 31  5D 5C 46 04 5B 0F 11 40    ?浔 J1]\F [  @
00000120   5E 59 58 36 63 B1 68 A4  24 F0 4B E5 E4 A3 4A 3B   ^YX6c県?餕邃?;
00000130   97 E3 DA AC C4 81 C0 D2  D2 A6 23 D9 E9 4B 93 2D   椼诂?酪姚#匍K?
00000140   8E 40 C9 2D 4F A0 98 83  E2 CE C0 93 AC 87 DF AD   嶡?O牁冣卫摤囘?
00000150   DD E9 C0 99 E0 2D EF 48  0D CA 22 B3 DA AC 11 62   蓍罊?颒 ?弛?b
00000160   0E 07 41 14 53 06 45 07  1B 51 0B 62 72 F8 26 ED     A S E  Q br??
00000170   24 FA 42 E4 E4 BE 4A 6A  1E 3D 55 1E 47 43 11 3D   $鶥滗綣j =U GC =
00000180   1A 4E 0F 62 30 F8 3A F7  25 F0 1E E4 ED 8F 4A 3B    N b0???漤 J;
00000190   0A 07 12 47 14 4A 15 07  1D 0F 0B 6B 33 F8 13 E2      G J     k3??
000001A0   25 F0 1F EE ED 8E 4A 27
第三段的开头地址是1A8,是字节18,这个是16进制,也就是十进制的24,说明第三段的长度
是24个字节。
                                       C3 E5 06 22 D2 CC 28   
000001B0   CC 40 0A 3B 66 61 73 34  20 63 72 75 6E 63 68 0A   藹 ;fas4 crunch
000001C0   3B
第四段是从地址1C2开始,内容是:
000001C0   3B 24 3B 41 39 2F 33 2F  31 38                     ;A9/3/18
是文件的编译月、日、年,A9表示是9月,3是日,18是年,也就是今天。
查了很多资料,众说纷纭。
基本可以确定的是:
第一段跟是否定义了函数有关,没有defun的程序没有第一段。
第二段所有fas文件都有,是加密的。
第三段是解密第二段用的key,是随机变化的。但每个key后半部分都是“fas4 crunch”
第四段是编译日期,这是确定的。
第二段内容的加密算法非常简单,只是每个字节两次xor运算。
解密后可以看到被加密的字符串。

第二段内容的解密算法很简单,用汇编语言表示是这样的:
lodsb ;取第二段内容一个字节
mov bl,byte ptr [edx] ;取key第一个字节
mov bh,byte ptr [edx+1] ;取key第二个字节   
xor bl,bh               ;异或运算
xor al,bl               ;异或运算
stosb                   ;解密后的明文字节
编了一个小程序,用来解密这部分内容。
解密后的fas文件是这样的;
Offset      0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F
00000000   0D 0A 20 46 41 53 34 2D  46 49 4C 45 20 3B 20 44      FAS4-FILE ; D
00000010   6F 20 6E 6F 74 20 63 68  61 6E 67 65 20 69 74 21   o not change it!
00000020   0D 0A 31 32 31 0D 0A 31  34 20 24 14 00 00 00 00     121  14 $     
00000030   35 00 0D 00 03 06 0C 00  09 0B 00 35 01 0A 00 03   5          5   
00000040   06 09 00 03 09 00 09 08  00 35 02 07 00 03 67 0B            5    g
00000050   00 00 00 09 06 00 06 05  00 57 00 00 00 00 09 04            W      
00000060   00 51 01 03 00 01 00 0A  03 0C 00 51 01 03 00 01    Q         Q   
00000070   00 0A 09 08 00 51 01 03  00 01 00 0A 09 02 00 51        Q         Q
00000080   01 03 00 01 00 0A 09 01  00 51 01 03 00 01 00 0A            Q      
00000090   03 09 00 51 01 03 00 01  00 0A 09 08 00 51 01 03      Q         Q  
000000A0   00 01 00 16 24 0D 0A 32  35 30 20 35 20 24 14 01       $  250 5 $  
000000B0   01 01 00 32 00 32 21 2A  39 01 00 56 76 6C 2D 41      2 2!*9  Vvl-A
000000C0   43 41 44 2D 64 65 66 75  6E 00 00 5B 43 3A 47 59   CAD-defun  [C:GY
000000D0   53 00 00 01 01 43 00 00  04 00 0A 32 00 32 79 2A   S    C     2 2y*
000000E0   39 01 00 55 02 00 01 00  63 01 00 70 56 61 64 73   9  U    c  pVads
000000F0   2D 63 6D 64 00 00 55 01  00 06 00 63 68 61 6E 67   -cmd  U    chang
00000100   65 5B 54 53 54 59 4C 45  00 00 55 01 00 01 00 57   e[TSTYLE  U    W
00000110   5B 3D 00 00 55 01 00 00  00 5B 54 43 4F 4C 00 47   [=  U    [TCOL G
00000120   45 54 53 54 52 49 4E 47  00 00 55 01 00 2F 00 0A   ETSTRING  U  /  
00000130   CA E4 C8 EB D0 C2 D1 D5  C9 AB 28 BB D8 B3 B5 CE   输入新颜色(回车?
00000140   AA B0 D7 C9 AB 2C D2 B2  BF C9 D2 D4 B8 C4 CE AA   ?咨?也可以改为
00000150   C6 E4 CB FB D1 D5 C9 AB  29 3A 3C 57 3E 20 5B 53   其他颜色):<W> [S
00000160   53 00 53 53 47 45 54 00  00 5C 00 00 43 00 00 0E   S SSGET  \  C   
00000170   00 0A 5C 00 00 32 00 5B  43 3A 47 59 53 00 00 3A     \  2 [C:GYS  :
00000180   01 43 04 00 01 00 1C 14  01 00 00 00 09 03 00 0A    C              
00000190   57 00 00 00 00 09 04 00  06 02 00 09 02 00 35 01   W             5
000001A0   01 00 01 0A 09 02 00 16  18 C3 E5 06 22 D2 CC 28            缅 "姨(
000001B0   CC 40 0A 3B 66 61 73 34  20 63 72 75 6E 63 68 0A   藹 ;fas4 crunch
000001C0   3B 24 3B 41 39 2F 33 2F  31 38                     ;$;A9/3/18
可以看到字符串已经还原了。


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1667个

财富等级: 堆金积玉

发表于 2018-9-4 00:15:01 | 显示全部楼层
厉害呀,看来FAS也不保险了嘛
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2226个

财富等级: 金玉满堂

发表于 2018-9-4 07:52:01 | 显示全部楼层
两次xor运算 是什么意思!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5583个

财富等级: 富甲天下

发表于 2018-9-4 07:54:34 | 显示全部楼层
楼主伟大,支持楼主!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2018-9-5 00:06:07 | 显示全部楼层
还是看不懂。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 128个

财富等级: 日进斗金

发表于 2018-9-5 08:32:34 | 显示全部楼层
这些FF  00之类的  完全看不懂呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 38个

财富等级: 招财进宝

发表于 2018-9-6 07:01:38 | 显示全部楼层
看不懂,好好学习天天向上
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-9-11 10:13:16 | 显示全部楼层
能不能破解fas指日可待。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2020-11-13 19:09:08 | 显示全部楼层
支持楼主!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2022-3-14 21:52:19 | 显示全部楼层
看不到回复!!!!!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1094个

财富等级: 财源广进

发表于 2022-3-16 08:54:36 | 显示全部楼层
感谢楼主分享!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1094个

财富等级: 财源广进

发表于 2022-3-17 07:27:01 | 显示全部楼层
感谢楼主分享,回复看看!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-20 10:49 , Processed in 0.435421 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表