AVM Fritz!Box 校验和计算器/覆盖器
项目描述
更新0.0.4
支持固件版本>7.12中的新 XXXXB64FILE 部分
简介
一个小的可pip安装的模块和Windows GUI(32位和64位)用于计算AVM的Fritz!Box配置文件的CRC。
命令行和GUI版本允许直接在读取的文件中覆盖CRC或将它保存到新文件中。
安装
GUI(在发布中查找最新zip文件)
zip文件包含不需要安装的独立版本。任何设置/路径都将保存在同一目录下的.ini文件中。
只需解压并运行
命令行和模块
只需运行
pip install fritzchecksum命令行工具也被称为fritzchecksum
命令行工具
用法如下
$ fritzchecksum --help usage: fritzchecksum-script.py [-h] [--change | --output OUTPUT] input FritzChecksum Calculator/Overwriter positional arguments: input Write input to output with new CRC optional arguments: -h, --help show this help message and exit --change, -c Change CRC directly in input file --output OUTPUT, -o OUTPUT Write input to output with new CRC
模块 fritzchecksum
在您的代码中做些像这样的事情
import fritzchecksum ... ... myexport = open('myexportdatei', 'r') oldcrc, newcrc = fritzchecksum.calc_crc32(myexport) ...
该模块包含两个Python一等公民
函数 calc_crc32(fin, fout=None, logcb=log_null)
计算Fritz!Box配置文件导出文件的CRC,并将新的CRC和写入新配置文件
接受
fin: 文件类似对象
错误:None或文件对象。如果是文件,则输入将使用新计算的CRC写入输出
logcb(默认:log_null,它是一个空占位符)一个必须接受*args的记录器(打印将工作)
返回
(oldcrc, newcrc) -> 元组
oldcrc和newcrc将是字符串,表示一个CRC32的十六进制格式,如果一切顺利
oldcrc可以是None,这意味着已引发IOError异常,操作未成功完成。在这种情况下,元组的第二个值包含引发的异常
注意:某些行中的转义字符‘'自身被转义。如果字符没有被取消转义,CRC计算将出错。
该文件由以下内容组成
全局“配置导出”部分
某些变量(a=b)可以在此级别定义。此定义通过连接a和b并在结果后添加空终止符来贡献CRC计算
子部分
子部分的名称(空终止)将贡献CRC计算
XXXBINFILE部分
行表示十六进制值。这些值(二进制转换)将直接用于CRC计算(在计算之前去除eol)
CFGFILE部分
它是一个嵌入在较大导出文件中的文本文件。包括‘n’在内的所有行都贡献CRC,除了最后一行,在包含在CRC计算之前必须去除EOL字符
class ExportFile
封装导出文件解析和CRC值覆盖的类
在加载文件后,它将加载的内容保留在内部fout
以下方法
load(self, fin, out=True)
从文件对象/字符串对象fin加载,并将更新内部status,error,oldcrc和newcrc
如果out为False,则不会对加载的输入进行内部缓冲
- 返回
tuple -> (status, error)
如果状态是ST_OK(True),则错误将是None。如果状态是ST_ERROR(False),则错误将是引发的异常
- load_file(self, fin, out=True)
从文件对象fin加载,并将更新内部status,error,oldcrc和newcrc
如果out为False,则不会对加载的输入进行内部缓冲
- 返回
tuple -> (status, error)
如果状态是ST_OK(True),则错误将是None。如果状态是ST_ERROR(False),则错误将是引发的异常
- save(self, fout)
将内部self.fout文件写入文件对象/字符串fout
- 返回
tuple -> (status, error)
如果状态是ST_OK(True),则错误将是None。如果状态是ST_ERROR(False),则错误将是引发的异常
- save_file(self, fout)
将内部self.fout文件写入文件对象fout
- 返回
tuple -> (status, error)
如果状态是ST_OK(True),则错误将是None。如果状态是ST_ERROR(False),则错误将是引发的异常