解码 HP T250 打印机固件

解码 HP T250 打印机固件

我最近买了一台 HP T250 Deskjet 24 英寸打印机,它使用 4 个墨盒,问题是,更换墨盒的价格是打印机价格的 1/3,这已经非常昂贵了。因此,我尝试识别并提取墨盒芯片上保存的数据,但没有成功。我打开了一个耗尽墨盒,发现里面的芯片无法识别,可能是 HP 制造的。

因此,第二个想法是编辑打印机的固件,使其跳过原装墨盒验证步骤。我拿到了打印机的固件更新,并解码了部分代码,但部分代码仍然无法识别,我不知道到底发生了什么。所以,你们有人能帮我吗?

固件可以在以下位置获取:

https://ftp.hp.com/pub/softlib/software13/printers/SPRK/Firmware/spark_dist_pr2_001.2123A_nonassert_appsigned_lbi_rootfs_secure_signed.zip

要查看部分代码,只需在 Pycharm 或类似的代码编辑器中将其作为简单文本文件打开即可。

编辑:

看起来有些人可能难以理解这一点,因此这里有一些信息:

固件更新

它以 .ful2 格式压缩,看起来它包含一些标识码后面的 PJL。该标识码由基本内容组成,例如,兼容更新的打印机及其版本,还有许多其他不相关的内容。请参阅下面的代码:

ESC%-12345X@PJL
@PJL COMMENT MODEL=HP DesignJet T250 24-in
@PJL COMMENT MODEL=HP DesignJet T230 24-in
@PJL COMMENT MODEL=HP DesignJet T210 24-in
@PJL COMMENT MODEL=HP DesignJet T650 24-in
@PJL COMMENT MODEL=HP DesignJet T650 36-in
@PJL COMMENT MODEL=HP DesignJet T630 24-in
@PJL COMMENT MODEL=HP DesignJet T630 36-in
@PJL COMMENT MODEL=HP DesignJet Studio 24-in
@PJL COMMENT MODEL=HP DesignJet Studio 36-in
@PJL COMMENT VERSION=SPRKLFPR2N001.2123A.00
@PJL COMMENT DATECODE=20210531
@PJL UPGRADE SIZE=197360667
ESC%-12345X@PJL COMMENT (null)
@PJL ENTER LANGUAGE=FWUPDATE2
744
<?xml version='1.0' encoding='UTF-8'?>
<manifest xsi:noNamespaceSchemaLocation='webfwupdate.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
    <version>0.9</version>
    <signature>
        <signature_template_id>49be5195-1daa-474a-a957-1aa4ae38d9b1</signature_template_id>
        <public_key_id>bdfcc564-a078-4112-a089-179e73831f27</public_key_id>
        <signature_value>AgIAAAFvABQBAFjIABvxUhy/Z9sT9eS/GQAQWYLMUjSTOStYmadBHAFgGZkUZ+tu54GmiXCN4YWcQbHL2qjWkftzXtW10kkHmgAqJ+A4hz9IH0N/7KmZAGAR4fp8sg3YfDIZSkEcBkDJqsC/9sVlZOUwxuWhSyW6PEI9aCJvG3NJoH2gdGeCre7W80qWNHf/uzxa+euN3mTtwjXbl0gTd37GlF283yLz2fPZqKAQp5ErxU/BizaCCJguome7trW05CMI64y4qmsSp0fr4yDD505/tfrlBFDe7NiM32Mjx/RG1/XtTJOXblaIM/MEUOjvrxDEN+Q0qYSyll8rfhh7T+E3j9Zfn4s9gdQ=</signature_value>
        <digest>9Iz3jGRlyX3cVqPpJPa5lEfIfMHnyDqglPc6VNbGZLk=</digest>
    </signature>
    <signedInfo>
        <update_type>optional</update_type>
        <current_revision>ANY</current_revision>
        <updated_revision>SPRKLFPR2N001.2123A.00</updated_revision>
        
        
        <LBI_blob>
            <blob_path>SPRKLFPR2N001.2123A.00/lbi_blob.SPRKLFPR2N001.2123A.00_from_ANY</blob_path>
            <size_compressed>16184472</size_compressed>
            <size_uncompressed>17096704</size_uncompressed>
            <blob_digest_compressed>SS8Yyasd1O6cCn1gebGwGGIgImUY7qfpSC15HW8gsMY=</blob_digest_compressed>
            <blob_digest_uncompressed>NiJvvKui71DNumergMxMnh/P56YoYKt92ll7i1/tdpE=</blob_digest_uncompressed>
        </LBI_blob>
        <rootfs_blob>
            <blob_path>SPRKLFPR2N001.2123A.00/rootfs.SPRKLFPR2N001.2123A.00_from_ANY</blob_path>
            <size_compressed>181174233</size_compressed>
            <size_uncompressed>402653184</size_uncompressed>
            <blob_digest_compressed>0Z8gY/L+gJmeJiQvwjke22Hc3iJVi2ara2dRNDywDRU=</blob_digest_compressed>
            <blob_digest_uncompressed>3W/P3jtxEmeYqG1ywzFTMAVNNUq2FkGG0ml4AnskR5Q=</blob_digest_uncompressed>
        </rootfs_blob>
        
        
        
        
        
        
        
    </signedInfo>
</manifest>

这部分是可识别的,%-12345X它代表 ASCII 中的转义码,因此,它看起来像我之前说过的“东西”,我不知道它是什么,可以用 Motorola S-Record 格式用 ASCII 写成。因此,数据存储在 EEPROM/Flash 中,这为我们提供了从我在此处链接的初始行下方的代码中提取“根”的优势。

但是,即使我可以获得一些有用的数据,我也不确定是否能够跳过或完全从固件中删除墨盒检查,首先我必须确定固件更新是否可以改变这种 PJL,但我对此并不完全确定。

关于墨盒

我的打印机使用的墨盒是 HP 712 型号,有黑色(80 毫升)、青色(29 毫升)、洋红色(29 毫升)和黄色(29 毫升)。这些墨盒内有一个芯片,存储一些有关墨水量的信息,可能是墨水重量和密度。这样,即使你做了轻微的改动,打印机也能知道。

转储墨盒芯片中的数据并重新编程以使其可识别为“新”墨盒是可行的,但我不确定哪种方法更简单。我无法确定墨盒内的芯片是 EEPROM/Flash、NAND 还是类似的东西,也无法验证芯片存储的数据量。

相关内容