AlgoSec是防火墙规则审计的好工具。但是其license奇贵无比,一个防火墙的license动辄几万人民币。所以如果想试用的话,需要进行破解。

1. 查找关键文件

一开始我也不知道破解的入口在哪里。大胆猜测,在服务器上以关键字license和lic进行查找,发现了以下文件:/usr/share/fa/bin/install_lic_cli。运行一下,结果为:

[root@localhost afa]# /usr/share/fa/bin/install_lic_cli
Error: Please provide license file.
Usage: install_lic_cli -file

看来这个就是安装license的程序,查看一下,发现已经被加密了:

[root@localhost afa]# cat /usr/share/fa/bin/install_lic_cli
#!/usr/bin/perl
use algoenc;
b畞疙}Rb纄J屒忲v甗U慥皳eEu{侮卍慸线yG销I踹r龠睭榝3圲u熓曕龢碥[臙鷔蜹窾兞”敨翡迧bx砍[x潚’f雪in纍 [W瓘〉fb蹃!$襣羒z綅澋.瘱鏦闻B唼遫w齙iik鶤1……

是否加密了我们就无计可施了呢?并不是的,这是一个perl脚本,而perl具有调试功能,从而让我们看到解密后的程序。调试时,n为单步运行,s为步入函数内部,q为退出。
随便写一个文件作为license,单步运行到第52、53行时发现:

[root@localhost afa]# perl -d /usr/share/fa/bin/install_lic_cli -file test.lic
……
main::(/usr/share/fa/bin/install_lic_cli:52):
52: my $fa_server = FwaUtil::which_script(“fa_server”);
DB<1> n
main::(/usr/share/fa/bin/install_lic_cli:53):
53: my $sCMD = “$fa_server -f LICENSE install $lic_path”;

查找了一下,服务器上确实有fa_server这个文件。这还是一个加密了的perl脚本,单步运行一下就发现:

[root@localhost afa]# perl -d /usr/share/fa/bin/fa_server -f LICENSE install test.lic
……
FwaLic::CODE(0xa0dbab8)(/usr/share/fa/perl_lib/FwaLic.pm:78):

查看一下FwaLic.pm,这次没有加密。代码比较多就不贴了,关键有两点:

  • 这一行,校对fa_usage这个文件的MD5:

    %md5sig = ( fa_usage => ‘1ef898e850586874af2d37405b5561b9’,

  • 这几行,说明fa_usage就是用来验证和安装license的:

    # check if defined a license file name (= it was sent)
    # then we will send it to fa_usage with -v to check
    # that given license file name is valid
    if (defined $license_file_name)
    {
    $lic_param = “-v $license_file_name”;
    }

再查看一下,发现fa_usage是一个二进制文件,因此关键在于如何破解该文件。

2. 反编译寻找绕过方式

反编译Linux文件可以用objdump,我们把概要信息和完整的反编译结果都生成出来:

objdump -x /usr/share/fa/bin/fa_usage > fa_usage_info.txt
objdump -D /usr/share/fa/bin/fa_usage > fa_usage.txt

注意fa_usage_info.txt中的SYMBOL TABLE,摘选如下:

80502e9 g F .text 00000177 lic_sign_file_internal
0804fe86 g F .text 000000ce lic_load_file_to_ctx
0804b82d g F .text 000000ff allow_init_license
0804fd0e g F .text 00000178 lic_parse_file_stream
0804dcef g F .text 00000091 lic_print_error
08050460 g F .text 00000029 lic_sign_file
0804ff54 g F .text 00000294 copy_and_sign_file
0804db83 g F .text 00000095 lic_free_ctx
0804d078 g F .text 0000004d lfalic
0804de40 g F .text 000001ae lic_check
0804c48d g F .text 00000564 write_lic_ids
0804f6ca g F .text 0000022a lic_parse_key_value
0804dde4 g F .text 0000005a lic_perror
0804dac0 g F .text 000000c3 lic_alloc_ctx
0804bdf9 g F .text 00000385 check_ids_validity
0804e52a g F .text 0000020d lic_print_ctx
0804dd80 g F .text 00000064 lic_println_error
0804bc42 g F .text 00000119 install_license
0804dfee g F .text 0000011b lic_check_basic
0804f55d g F .text 0000016d parse_license_info
0804dc18 g F .text 000000d7 lic_strerror_r
0804ef16 g F .text 000001bf parse_sign
0805258c g O .bss 00000004 full_license_name
08050489 g F .text 00000029 lic_sign_file_forced
0804bb9f g F .text 000000a3 get_lic_path
0804d0c5 g F .text 000002c6 lfalic_lic
0804c17e g F .text 0000030f read_lic_ids
0804f8f4 g F .text 0000035a lic_parse_line
0804b92c g F .text 00000273 check_license_date
0804993f g F .text 0000039a print_license
0804f28e g F .text 000000c5 parse_issued
0804e109 g F .text 000000ab lic_check_mac_address
080504b2 g F .text 000000cf lic_validate_signature

这里就是fa_usage中的各个子函数及其入口地址,带lic字样的就是和license相关的。我们在fa_usage.txt中查看这些函数的反编译结果,就能找到破解方法。
假如你看过我之前的一篇文章X-Pack破解试用就知道,一般license文件都会带签名,我们只要能绕过验签环节,就能以最小的改动进行破解。于是,lic_validate_signature这个函数吸引了我的注意力。我猜测这个函数就是比对license签名和根据license计算出的签名的函数。根据反编译结果,一个返回值是$0x0,另一个是$0x16。我们不妨假设$0x0表示一致,使其始终返回$0x0。如果猜错了,使其始终返回$0x16即可。

3. 破解

这部分涉及的汇编语句为:

8050562: c7 45 ec 16 00 00 00 movl $0x16,0xffffffec
8050569: eb 11 jmp 805057c
805056b: 83 45 fc 01 addl $0x1,0xfffffffc
805056f: 83 7d fc 01 cmpl $0x1,0xfffffffc
8050573: 7e d5 jle 805054a
8050575: c7 45 ec 00 00 00 00 movl $0x0,0xffffffec
805057c: 8b 45 ec mov 0xffffffec,%eax
805057f: c9 leave
8050580: c3 ret

注意8050562和8050575两行,对应的十六进制值为c7 45 ec 16 00 00 00c7 45 ec 00 00 00 00。我们将fa_usage用十六进制编辑器打开,例如Notepad++的插件HexEditor。然后查找c7 45 ec 16 00 00 00,通过上下文确认无误,将其改为c7 45 ec 00 00 00 00,保存即可。
用破解后的fa_usage替换原文件,用破解后fa_usage的新MD5值替换FwaLic.pm中的旧MD5值。然后再准备一个狂拽酷炫吊炸天的license文件:

LICENSE_VER=7.0
EXP_DATE=15-sep-2017
HOSTID=E505250101F7
ISSUER=root
ISSUED=01-May-2017
LICENSE_INFO1=PerFW;3;mvpboss1004;88888888
LICENSE_INFO2=Core;Optimization;Risk
SIGN=1234567890abcdef

这就是一个licenseID为88888888、可用于3个防火墙、于2017年9月1日到期、授予mvpboss1004的license。注意这里HOSTID要改为服务器的MAC地址,ISSUED不要离当前日期超过5天。

5. 升级注意事项

显然,升级后需要重新破解。除此之外还需要以下操作:

  • 破解完后要重启服务,或直接重启系统;
  • 要重新导入license,其中licenseID和SIGN要改的和原来不一样,ISSUED要改成当天时间

AlgoSec破解license相关推荐

  1. CodeWarrior V5.1破解license+教程

    解除CodeWarrior V5.1 特别版 编译代码32K限制,仅供学习使用:如若商用,请使用付费版本,谢谢! CodeWarrior for S12(X) V5.1是用来编写飞思卡尔系列单片机程序 ...

  2. Cadence License破解失败解决办法

    问题1:Unable to restart Cadence License Server with the new license file 这个问题是在运行License Server Config ...

  3. ArcGIS License Manager 相关总结

    LicensenManager10.2启动失败解决方法 今天安装ArcGIS 10.2 时,刚按照百度经验装完ArcGIS LicenseManager时,就出现了众多网友都出现的问题,License ...

  4. IAR EW8051-8.10.4安装及破解方法

    第一步:获取破解license 1: 点击桌面左下角"開始"button,找到cmd.exe,右键创建cmd.exe 快捷方式到桌面: ----假设是windows7 .请右键点击 ...

  5. 开发环境搭建:Python(x,y) + Wing IDE4.0.3以及破解

    http://blog.sina.com.cn/s/blog_905ed10101019uqk.html Python语言是一门完全面向对象的编程语言,在很多领域有成功的应用,为Google公司三大编 ...

  6. 渗透测试之破解详细演示

    简介 该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西. 请注意: 本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端 ...

  7. 软件License认证设计思路

    需求 软件可以创建并验证license License基于硬件特征进行绑定 软件和License都要防止用户随意拷贝 License可以是永久性的或者临时性的 License要进行加密和解密 Lice ...

  8. 遇见BUG(4)不要默认电平标准!

    纠错是一个很考验耐心与运气的事情,有时候真的让你怀疑人生. 最近,我再做一个SRIO以及Auraro 通信的事情,使用了Xilinx提供的例程,可是就是这个看似权威的例程,出现了一些让我感觉" ...

  9. IDEA配置 及 快捷键

    出处: https://www.cnblogs.com/hero123/p/10120552.html 快捷键: 格式化代码 Ctrl+alt+L 后退Ctrl+alt+ <- 格式化代码快捷键 ...

  10. loadrunner11 录制手机

    环境准备 笔记本一台,或者安装有无线网卡的台式机 第一步:安装LR11录制手机脚本补丁包,qfelr11patch4.msp.安装完成后需要重新破解license. 如果在新建脚本页面,看到Mobil ...

最新文章

  1. torch量化的流程
  2. (C++)1029 旧键盘
  3. java集合的加减_在JAVA中,对List集合的加减操作
  4. java kafka 设置分区_Java kafka如何实现自定义分区类和拦截器
  5. vue状态管理存取数据_vue状态管理vuex从浅入深详细讲解
  6. android 实现打开相册
  7. 牛客网 【每日一题】5月13日 加分二叉树
  8. 前端学习(1494):表格案例--axios-搜索功能
  9. 桌面快捷方式计算机打不开,桌面快捷方式打不开,详细教您桌面快捷方式打不开怎么解决...
  10. 884.两句话中的不常见单词
  11. 字节跳动的产品经理是怎么工作的?
  12. ctypes调用海康威视人脸抓拍机并将抓拍的人脸上传到指定地址
  13. 中国书法名词解释大全
  14. android sdk官网帮助文档
  15. PPT2016制作一个封面页实例教程
  16. 计算机视觉算法岗 面试经验 (转载)
  17. fetion飞信登录异常,错误码10033201、10033202
  18. ETL 部署和简单的例子
  19. h1283命令行下刷机法
  20. WiFi共享精灵与路由器

热门文章

  1. linux系统下查所有驱动信息,Linux系统查看驱动信息
  2. 资源下载南方cass视频教程,包括文档,数据,很全的
  3. stm32固件库文件
  4. vue 显示日期只显示年月_Vue编写可显示周和月模式的日历 Vue自定义日历内容的显示...
  5. [网络通信协议]websocket
  6. 2010年软件评测师真题精选
  7. 偏微分方程数值解法pdf_数值模拟偏微分方程的三种方法:FDM、FEM及FVM
  8. Samba瞎折腾一下
  9. 高速公路坐标高程计算程序开发之后记
  10. exescope使用