R0 / DS-2CD2x32 BrickfixV2 brick recovery and full upgrade tool - enhanced.

alastairstevenson

Staff member
Oct 28, 2014
16,114
6,917
Scotland
The original 'brick-fix tool' and 'enhanced mtd hack' has proven pretty useful for those with R0 cameras that had been bricked by doing a firmware update.
It's been even more useful to deal with the fallout from the 'Hikvision backdoor' disclosure where so many people are finding their cameras are being messed with from the internet, mischievously or maliciously, and need to update to safer firmware.
However - the rather techy original method to make the changes, and probably my not-very-clear instructions have been a challenge for some people.
* And I only just noticed this - my original .txt attachments were in Linux format, not Windows format, making them hard to read without proper line breaks. And no-one let me know! Dohh! *

So here is 'Brick-fix tool V2' aimed at making the process less complex, a bit automated and easier to use, with the following changes:
  • After Brick-fix toolV2 has been installed using the Hikvision tftp updater, following the power cycle to activate and drop the payload, the camera will boot directly into 'min-system' mode with telnet and tftp access and a 'fixup' script ready and primed for use.
  • No web GUI access or Windows shares are needed to move files in and out of the camera.
  • The fixup script handles all the basics of extracting the original mtdblock6, importing and applying the user-modified mtdblock6 that has had the 'enhanced mtd hack', and initiating a firmware update.
  • The Brick-fix toolV2 automatically writes a valid template into mtdblock1 that stops cameras that originally had firmware 5.2.0 or 5.2.8 from otherwise going into a bricked state when newer firmware is applied.
  • Attached to this post are the resources required to convert your R0 / DS-2CD2x32 cameras into full English upgradeable devices.
  • The brick-fix tool V2 in both EN and CN header language versions (brick_fixv2.zip).
  • A required resource list and step-by-step guide to the fixup script.
  • A description of how to do the 'enhanced mtd hack' with screenshot with a list of devType codes for those cameras that have the masqueraded values.
  • A sample transcript of the fixup script going through all 3 stages - extract mtdblocks, import modded mtdblock6, apply firmware update.

*edit* 15Dec17 By popular request, a video worked example using a DS-2CD3332-I camera donated by a generous forum member.


*edit* 28Jan18 devType codes updated - thanks @hikcamuser

Resource List
Step By Step Guide:
Here are the steps to take when using the brick-fixV2 tool to recover a bricked camera, and running the fixup script to change the camera to English / upgradeable. The camera doesn't have to be bricked to run the brick-fix tool if all that's required is a helping hand doing the 'enhanced mtd hack'.
  1. Create a folder on the local drive of your Windows PC to hold the Hikvision tftp updater, the chosen tftp server program (e.g. jouinin.net version), the unzipped 'brick-fixV2' files, and the Hikvision firmware to use for updating. The HxD hex editor should be installed on the PC.
  2. With the PC and the camera each on a wired connection (not WiFi) set the PC IP address to 192.0.0.128, subnet mask to 255.255.255.0 The default gateway does not matter.
  3. Make a copy of brickfixV2EN and name it as digicap.dav If the EN version does not work, e.g. "System update completed" is not displayed in step 5 or you don't get the login prompt when trying to telnet in step 8, try the CN version.
  4. Start the Hikvision tftp updater tftpserve.exe and if a Windows firewall popup appears, click OK to accept what the program needs.
  5. Power on the camera and observe the status messages in the tftp updater. Hopefully you will see 'System update completed' after 2 or 3 minutes.
  6. Close the Hikvision tftp updater, delete the digicap.dev file from step 3 and make a copy of the Hikvision firmware to use for updating and name it digicap.dav.
  7. Power down the camera. At this point the brickfixV2 tool has been installed but not yet activated. Power on the camera to activate the tool, it will then drop the payload, fix up mtdblock1 and reboot into min-system mode for telnet access.
  8. Using PuTTY, start a telnet session to 192.0.0.64 and make sure the telnet radio button is selected. At the login prompt username=root password=12345. You should see a # prompt. The message "can't chdir to home directory '/root/'" isn't an error and can be ignored.
  9. Start the normal tftp server (not the Hikvision tftp updater). If it's the jouinin.net version, the program is tftpd32.exe

    At this point, Stage 1 of 3 is ready to be executed.
    At the telnet command prompt, type:
    /dav/fixup.sh
    and watch the on-screen messages.​

    • On success with Stage 1, check the PC folder that the tftp server is running in for the presence of the file 'mtd6ro_orig'. You may have to hit F5 to refresh. Make a copy of mtd6ro_orig rename to mtd6ro_mod. Do the 'enhanced mtd hack' on it, using the instructions in the spoiler below.
    These are the steps that are used to do the 'enhanced mtd hack' to mtdblock6 in an R0 IP camera.
    • Extract a copy of mtdblock6 from the camera. The 'Brick-fixV2 tool / fixup script' will conveniently do this for you, or it could be done manually by other methods.
    • Make a copy of the mtdblock6 file and name it mtd6ro_mod
    • Open it with the HxD hex editor.
    • Referring to this image
      mtd6_chksum_scope.jpg
    • Check / change as needed the language byte at location 0x10 to ensure it is 01
    • Check the devType value in locations 0x64 and 0x65
    If the value shown is FF98 - then the FF value needs to be replaced with the true numeric value. Ideally the true value is determined from the 'devType' line from the prtHardInfo shell command, but as that is going to be unavailable on a bricked camera use this (partial) cross-reference list, paying careful attention to the exact model number.

    There is some slight uncertainty here - it would be good if any forum members could confirm / supplement the content.

    devType - Model
    2698 - DS-2CD2032F-I
    2698 - DS-2CD2032F-IW
    0598 - DS-2CD2032-I
    0698 - DS-2CD2132-I
    1E98 - DS-2CD2132F-IS
    1E98 - DS-2CD2132F-IWS
    0798 - DS-2CD2232-I5
    0898 - DS-2CD2332-I
    1298 - DS-2CD2432F-IW
    1498 - DS-2CD2532F-IS
    1098 - DS-2CD2632F-IS
    0E98 - DS-2CD2732F-IS
    0698 - DS-2CD3132-I
    1C23 - DS-2DE2103-DE3/W
    2198 - DS-2CD2T32-I8​

    • Replace the FF in location 0x64 with the first 2 digits of the numeric devType value.
    • If location 0x64 already has a 2-digit numeric value, no change is needed.
    • Starting at location 0x09, drag to select and highlight a length of F4 bytes, as shown he the HxD bottom status bar.
    Using the Analysis / Checksum menu, double-click Checksum-16 to calculate the new checksum. This will show as a 2 byte value in the Checksums tab at the bottom of the screen. These need to be applied using the correct 'endian-ness', which is the reverse of how the values are presented on the screen.

    The left hand byte (0x0C in the screenshot) is the most significant byte and should be used in location 0x05

    The right hand byte (0x5F in the screenshot) is the least significant byte and should be used in location 0x04

    Use your own just-calculated values - not those from the screenshot.

    Click File | Save and the mtd6ro_mod file has had the 'enhanced mtd hack' and is ready to be applied to the camera.

    This is done during Stage 2 of the fixup script in the brick-fixV2 tool.​

    Good luck!​

    At this point, Stage 2 of 3 is ready to be executed.
    At the telnet command prompt, type:
    /dav/fixup.sh
    and watch the on-screen messages.

    This will bring in the modified mtd6ro_mod and apply it to the camera to convert it to English / upgradeable.

    At this point, Stage 3 of 3 is ready to be executed.
    At the telnet command prompt, type:
    /dav/fixup.sh
    and watch the on-screen messages.

    This will attempt a firmware update using the Hikvision firmware file digicap.dav that you placed in the same folder as the tftp server.​
  10. Assuming a successful result, shut down the tftp server and power cycle the camera. Interestingly, on testing I did find that a straight jump to the 5.4.5 firmware version worked OK. YMMV. But worth trying.
  11. Start SADP and check for the camera presence running the firmware version used for the update.
  12. If you used the 5.4.5 firmware, the camera will require 'activation' with your choice of strong password.
    If already active, if earlier firmware was used for the upgrade, log in with the admin password=12345
    Change the IP address to what you want the camera to use.
How To Upgrade
  1. Rename the firmware to digicap.dav
  2. Put the firmware under the same folder of this TFTP
  3. Set the IP of computer as 192.0.0.128
  4. Camera's IP can be anyone.
  5. Run the tftpserv.exe
  6. Power off and power on the DVR/DVS/IPC. The device will search the new firmware and upgrade it automatically.
  7. Please wait until TFTP shows "Device [192.0.0.64] system update completed!" It takes about 5 minutes.
  8. Close the TFTP before the camera reboots.
  9. DVR/DVS/IPC will restart automatically after upgrading.
 

Attachments

Last edited:
Thanks Alastair for your dedication and hard work on this.

Where shall I send the gallon of Marmite as a token of my appreciation? :p
 
  • Like
Reactions: tekem
Where shall I send the gallon of Marmite as a token of my appreciation
A virtual one will do nicely, thank you.
Do you have Vegemite in your part of the globe? As far as I know it's an Oz invention.
The same origin for the ingredients, but a bit behind in the taste stakes.
Thanks Alastair for your dedication and hard work on this.
And many thanks to the generous forum member who donated some cameras to become the experimental patients on the operating table - you know who you are! And they survived and grew stronger.
 
We have Vegemite too. Wife doesn’t care for the flavor though, says it is no substitute for the “real thing”. Both are readily available at our local Sainsbury’s-equivalent, along with Digestables and Heinz Beanz (the ‘regular’ variety, we still have to import the Curry and Chili versions periodically), other staples in our pantry. When I started dating my wife I had to locate a website dedicated to serving the nutritional needs of British ex-pats, of which there are many (sites, that is). Only thing I haven’t been able to import are actual Jersey Royals, we have to settle for the Waitrose variety. Our shipment of bon-bons for Christmas Eve are expected any day now, courtesy of Royal Post. (At least the English eat normal food us yanks can tolerate here in the colonies — my pre-wife girlfriend was a Swede from Vastervik... I do not want to re-live all the nasty crap I had to import and eat from that relationship — like pickled herring (blech!) — but the ginger cookies were good at least :D )

mijj9z.jpg
 
Lol the wife loves this stuff :puke: I prefer a bottle of iron brew if I have a hangover we get that in the uk section at the local super market :)
 

Attachments

  • F119A19D-738E-4B55-8306-7E8BC99DB624.jpeg
    F119A19D-738E-4B55-8306-7E8BC99DB624.jpeg
    670.8 KB · Views: 209
  • image.jpg
    image.jpg
    817.7 KB · Views: 197
  • Like
Reactions: sylvie
wooooohoooo!
This tool and the description ist great - it saved my bricked DS2-CD3332-I and i am able to update it to 5.4.5
I have upgraded it directly with the 5.4.5 firmware and it run perfectly.
THANK YOU!
 
Hi all,

I've given this tool a whirl on my camera, it wasn't bricked but was running an old firmware that I assume had been hacked to English on a Chinese camera. I'm getting stuck at the putty part. Initially I tried the EN.dav but that didn't work at all, it would find the camera, start transferring, complete transferring then just stop with no further notifications. I then tried the cn.dav and that one went further with the following log.


2017-12-06 10:15:38] TFTP server[192.0.0.128] initialized

[2017-12-06 10:15:43] Device[192.0.0.64] test tftpserver

[2017-12-06 10:15:53] Connect client[192.0.0.64] success

[2017-12-06 10:15:53] Start file[C:\hikvision\hack\tftp\digicap.dav] transmitting

[2017-12-06 10:16:12] Completed file[C:\hikvision\hack\tftp\digicap.dav] transmit

[2017-12-06 10:16:31] Device[192.0.0.64] system update completed!
I gave it a moment then powered down the camera. Connected the power back up and opened Putty, selected Telnet, entered the address 192.168.0.64 and this is where I'm stopped, putty will not connect to the camera, it just says Network error: network unreachable. Any tips on how to move forward here?



***EDIT***


Sorry! I just realised my own mistake! it should have been 192.0.0.64 muppet moment!
 
OK so I've got the file out and I've opened HXD to edit it, I made the edits and this is where I am, the 0x04 and 0x05 bit is where eI got a little confused.

Here's a screen shot, can you let me know if I've edited this correctly for a DS-2CD3132-I please before I attempt to put it back in to the camera. I'm assuming if I got it wrong I could really mess it up at this point?

uc


I added O inter first line at the first digit of 05 and I added F in the first line in the first digit of 04 is this correct please?
 
I added O inter first line at the first digit of 05 and I added F in the first line in the first digit of 04 is this correct please?
If the Checksum-16 value that's showing in the blue bar of the Checksums tab of your screenshot has been calculated from highlighting the area starting at location 09 until there is a length of F4 bytes shown in the HxD status bar, then :
The value 0BF9 should be used as follows - 0B (the most significant byte) applied to location 05, and F9 (the least significant byte) to location 04.
If that's not the proper calculated checksum, re-select the bytes from 09 downwards until the Length : xx value shows as F4, then use the Analysis | Checksums | Checksum-16 to calculate the required value, and apply as described above.
 
Did two cameras last night that were 5.1.2 and 5.1.6 (grey market english hacked), and the upgrade direct to 5.4.5 took fine. Just monitoring them before I do the remaining 2.
Thanks a lot for your work. Why is this not a sticky?