1.Flexnet和FLEXlm介绍
Flexlm 是由Globetrotter 公司发明的软件加密方法Flexible License Manager。Globetrotter 公司向软件厂商出售相关开发软件,软件厂商把此加密程序集成到自己的软件中。可以锁定机器的硬盘号,网卡号,使用日期,支持加密狗,以保护软件的知识产权。被80%以上的 EDA软件公司所采用,是目前最流行的EDA软件加密方法,保护着世界上价值几百亿美元的EDA软件。了解Flexlm可以使我们正确的安装,管理和使用多个EDA软件。
Flexlm所管理的是License文件,所以我们首先要了解License文件的结构,以便于运行Flexlm管理License文件。
做授权的,很多软件采用基于Flexnet技术做授权的,而Flexnet属于Flexerasoftware厂商。目前该产品线已经细化,Flexnet Publisher是专做做授权的,大家熟悉的可能是Flexlm。
FlexNet Publisher 是最佳的选择,它通过灵活的定价、打包和授权,很容易保护,强化和增加你软件的市场份额。 它也可以给你权力来保护你的产品和非授权软件的市场占有份额而不会疏远的你的客户。FlexNet Publisher(前身为FLEXlm) 是Flexera Software 公司的产权关系管理方案的核心组件,它实现了软件授权许可管理的目的,可以在企业环境中为计算机软件提供多达上千种类型的授权许可,比如浮动授权,单机授权,按时间授权,按用户名授权等等。它能通过简化客户关系来帮助你增加企业收入。
2.FLEXlm的license文件格式介绍
License文件由注释行,Server行,Demon行,以及Feature行构成, 另外有一个续行符'\'
用来表示一行的继续.
注释行
~~~~~~~~
当一行的开始是'#'符号时,该行被License Manager(lmgr32xx)认为是注释行,有时候
'|'也可以作为注释行的开始.
Server行
~~~~~~~~~~
Server行用来标识一台特定的主机,其格式是:
SERVER nodename id port-number
| | | |
| | | |___TCP端口号,如 1700
| | |
| | |___主机的ID号,Win95/98/NT平台下通常是网卡物理地址
| |
| |___主机的名称,win95/98/NT下可以用ipconfig命令看到
|
|____Server行开头的关键字,标识该行为Server行,不能更改.
例如:
SERVER hostname 000012345678 TCP:1700
Daemon(或Vendor)行
~~~~~~~~~~~~~~~~~~
Deamon行是用来标识不同的卖主(Vendor-中文里译做卖主怎么觉着老土老土象是卖菜的:P),
或者说是用来标识不同的软件商吧, 其常见格式是:
DAEMON daemon_name daemon_path
| | |
| | |___daemon的路径
| |
| |_______daemon的名字
|
|___Deamon行的关键字,Flexlm6.0以后的版本也支持用VENDOR
例如:
DAEMON cdslmd c:\cdslic\bin\cdslmd.exe
| |
| |___Cadence License Daemon的路径
|
|___Daemon的名字为cdslmd (Cadence License Manager Daemon 的简称)
Feature行
~~~~~~~~~~~~
Feature行是用来对软件特定的功能进行限制的,其常见的格式为:
FEATURE name vendor version expiration_date n Key "Vendor_String" hostID
| | | | | | | | |
| | | |_版本号 | | | | |__主机ID
| | | |_过期时间 | | | 可省略
| | |_厂商标识 | | |
| | | | |___厂商定义的字符串
| |__Feature名称 许可的终端用户个数| |
| (同时使用)
Flexlm license语法
下面是一个简单的浮动license文件
SERVER lulu 17007ea8
VENDOR sampled
FEATURE f1 sampled 1.00 1-jan-2005 2 SIGN=signature1
FEATURE f2 sampled 1.00 1-jan-2005 6 SIGN=signature2
FEATURE f3 sampled 1.00 1-jan-2005 1 SIGN=signature3
SERVER是代表使用FLEXlm的客户的server端,“lulu”是hostname,“17007ea8”是HOSTID,一般采用计算机的MAC地址。
VENDOR是类似供应商开发的软件的名称,因为有很多软件采用flexlm,VENDOR是区分不同软件提供商的,因为一个server上可以有多个采用flexlm的软件(VENDOR),“sampled”是vendor name。
FEATURE是license的核心,我们可以把feature理解为一个软件中的各个模块,f1,f2,f3代表不同的模块,“1.00”是软件版本。“1-jan-2005”是过期日期,而后面的一个字段是代表可以授权的count。最后“SIGN”是对HOSTID和FEATURE行的签名,用来防止HOSTID和FEATURE的各个字段被修改。另外有时候会有USER_SERVER行,这个是指定client的HOST的
以及INCRENMENT行,这个是将多个软件的FEATURE添加到一个license file中时使用的
Flexlm的组件分析
Flexlm包括client端和server端,client端上安装要使用的供应商的软件,server端控制此软件的license的分配和管理。
我们把client端上供应商的软件叫做FLEXenable应用程序
Server端包括许可证服务器管理器lmgrd和供应商守护进程vendor deamon
因此Flexlm的组件主要包括以下几个部分:
1.FLEXenable应用程序
针对节点锁定的方式,这部分需要license的解析模块,包括license的获取属性接口,license的签名算法。针对浮动许可的方式,需要与server端的获取license授权的通信的功能。
2.Lmgrd
由flexlm提供,处理与FLEXenable软件的初始连接,还用来启动vendor deamon,以及指定使用的license文件路径等。
3.Vendor deamon
处理license的分配管理以及与client端的通信,license的解析
4.License文件
以下是各个组件之间的关系
另外还有一些输出的日志文件,调试信息文件,lmutil工具等
Flexlm许可证的请求过程
1.FLEXenable应用程序的许可证模块根据LM_LICENSE_FILE环境变量查找许可证文件,
(LM_LICENSE_FILE可以是一个license文件的完整路径,也可能是包含多个license的目录。还可能是port@host,即在网络上。节点锁定许可证采用前两种,浮动许可证采用port@host。
着重讲解浮动许可证)。
2.FLEXenable应用程序通过port@host与lmgrd建立连接,并通知它需要与其对话的vendor deamon。
3.Lmgrd确定vendor与FLEXenable对话的TCP/IP端口,并将其发送给FLEXenable应用程序。(这个端口可能是license中VENDOR 字段的端口,如果wendor部分没有端口描述的话,可能lmgrd会指定一个合法端口)
4.FLEXenable与VENDOR建立连接,获取lisence请求
5.VENDOR检查是否有可用的license,授权或者拒绝FLEXenable
6.FLEXenable的许可证模块根据接受的授权或者拒绝来启动或者终止FLEXenable应用程序