![](http://dingyue.ws.126.net/2023/0919/9d287e9dj00s17t2a000sd200u0004ug00it0031.jpg)
0x00 前言
在之前的文章介绍了Fortigate识别与版本探测的方法,在提取出页面特征后,可根据特征对应到具体版本。为了找到特征与具体版本的对应关系,这里首要解决的问题是下载固件。
本文将要介绍通过程序实现自动下载固件的方法,分享脚本开发细节。
![0x01 简介](http://dingyue.ws.126.net/2023/0919/9d287e9dj00s17t2a000sd200u0004ug00it0031.jpg)
本文将要介绍以下内容:
实现原理
实现细节
开源代码
![0x02 实现原理](http://dingyue.ws.126.net/2023/0919/9d287e9dj00s17t2a000sd200u0004ug00it0031.jpg)
通过Burp Suite分析下载固件的数据格式,进而编写程序实现自动下载。
1.用户认证
使用Cookie作为凭据,格式示例:
2.下载流程
访问固件下载页面,如下图
![](http://dingyue.ws.126.net/2023/0919/9bc6babaj00s17t2c008nd200u000jlg00it00c9.jpg)
点击固件对应的HTTPS即可下载固件。
通过Burp Suite分析数据包内容,具体流程如下:
访问页面https://support.fortinet.com/Download/FirmwareImages.aspx,发送的数据包如下图:
![](http://dingyue.ws.126.net/2023/0919/3fd5e117j00s17t2d002hd200d700hsg00d700hs.jpg)
其中,ctl04作为变量,不同固件对应的值不同。
返回结果实例如下图:
![](http://dingyue.ws.126.net/2023/0919/7a0f2813j00s17t2d000td200dh007zg00dh007z.jpg)
返回结果中为实际的下载文件地址。
![0x03 实现细节](http://dingyue.ws.126.net/2023/0919/9d287e9dj00s17t2a000sd200u0004ug00it0031.jpg)
这里以7.2.4的下载为例,在程序实现上需要额外考虑以下细节:
1.文件下载
对于返回结果需要作简单的处理,解析后并下载的代码实例:
![](http://dingyue.ws.126.net/2023/0919/e6e51c73j00s17t2i0048d200u0008ig00it005b.jpg)
2.需要获得文件名与下载链接的对应关系
实际上为文件名同变量ctl的对应关系。
访问上级页面,抓包如下图:
![](http://dingyue.ws.126.net/2023/0919/1e1adf3dj00s17t2i002gd200d600hug00d600hu.jpg)
返回结果如下图:
![](http://dingyue.ws.126.net/2023/0919/f65acdd0j00s17t2j000yd200qy007vg00it005h.jpg)
从页面中能够获得文件名同变量ctl的对应关系。
这里使用正则匹配,格式化输出的代码实例:
![](http://dingyue.ws.126.net/2023/0919/677ca794j00s17t2k001yd200u0004yg00it0033.jpg)
注:在使用print函数时,\r指定回到行起始位置,flush=True表示刷新输出。
3.加入下载进度条
为了便于掌握下载进度,需要加入下载的进度条。
参考代码:https://www.cnblogs.com/Old-Kang/articles/15271067.html
实例代码:
![](http://dingyue.ws.126.net/2023/0919/70674c0cj00s17t2l0038d200u000a9g00it006f.jpg)
输出实例:
4.下载判断
当下载很多文件时,如果网络中断,需要从中断处的文件名重新下载。
这里加入指定下载位置作为用户输入,实例代码:
![](http://dingyue.ws.126.net/2023/0919/d9869f9ej00s17t2l0019d200u0005vg00it003o.jpg)
![0x04 小结](http://dingyue.ws.126.net/2023/0919/9d287e9dj00s17t2a000sd200u0004ug00it0031.jpg)
本文介绍了通过程序下载Fortigate固件的方法,后续可对特征进行提取。
热门跟贴