半自动化指纹提取。
扩充自Fofa-script
- 给定需要提取的文档,对于含有
metadata的文档,将metadata转化为可供FOFA查询的FOFA查询语句。 - 以此语句查询到的结果为基准数量,并获取结果的网址,称为样例网址。
- 利用这些网址提取特征,现在可以进行
header- 图标hash
- 首页源码中的文件
- 首页源码中以
#开头的颜色 - 首页源码中的函数
- 首页源码中的注释
<!-- -->//
- 若这些特征在这些样例网址中存在比例大于给定比例,则将特征转化为FOFA查询语句,并获取结果数量。
- 若数量与基准数量的比值在给定指纹特征可接受的范围内,则将其视为一个新的指纹。
-
修改
config.py中的cookie,folder_path,output_path。cookie设置详见该仓库 Fofa-scriptfolder_path需要提取文档的路径(路径中只有待提取文档)output_path为输出json指纹的路径- 以上两个路径不能相同
-
config.py中可以根据个人需求更改变量值StartPage:样例网址获取的起始页面,默认值为第一页StopPage:样例网址获取的终止页面,默认值为第二页TimeSleep:样例网址爬取之间的Sleep时间,默认值为5s。pro_first_lower:若特征在样例网址中存在比例该值,即比例,则将该特征转化为FOFA查询语句进一步验证,默认为0.25。pro_upper:确定为指纹的比例区间的上界,默认为1.5。pro_lower:确定为指纹的比例区间的下界,默认为0.9。
python .\FOFA_Extract_Fingerprint.py对于待提取文档名字 abcd.yaml,将输出文档格式 abcd_fingerprint.json
共有四种模式:
menu = """
1. Batch extraction (From config.folder_path).
2. Batch extraction (From config.deal_file_names).
3. Single extraction.
4. No metadata file extraction."""分别为:
-
批处理提取(文件名自动取自
config.folder_path 路径下)- 提取给定文件
-
批处理提取(文件名取自
config.deal_file_names)-
提取给定的文件
-
config.deal_file_names:以python列表格式,内容为字符串形式的文件名
-
-
单特征提取
-
手动输入
FOFA查询条件,获取查询结果数,以此为指纹提取的参照。 -
对于没有
metadata的文档,可以后续通过此选项,手动指定基准FOFA查询条件
-
-
对于没有
metadata的文件进行批处理提取
- 每次运行,都将提示每个文件的索引
- 若之前进行了提取操作但是中断了,可以通过输入索引,手动继续程序。
FOFA_Extract_Fingerprint.py:提取指纹主文件config.py:用户设置的配置文件Default_value.py:指纹提取模板信息文件,用户可根据需要进行增删修改,包括:json_tmp:输出json文件的模板(默认所有level为2);common_header:屏蔽的header信息(即对于这些header,默认不会视作指纹);common_header_value:屏蔽的header value:屏蔽的header内容;file_common_names:屏蔽的文件名字。
fofa.py:爬虫文件,修改自Fofa-scriptTools.py:相关函数文件
即输出文件路径中没有待提取文档的输出文件。
程序将根据输出文件路径中的文件,进行查询,如果输出文件中有待处理文件的输出文件(文件名按照上文格式规定进行判断):
- 则默认用户已经进行了
product_name,company,industry,level以及rules中的icon_hash的手动填写 - 程序则跳过需要用户手动输入的
product_name,company,industry以及rules中的icon_hash,实现自动化提取rules。





