找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 30514|回复: 35

hs8546V的恢复出厂命令(restorehwmode.sh)分析

[复制链接]
发表于 2018-4-4 22:39:49 | 显示全部楼层 |阅读模式
hs8546V的恢复出厂命令(restorehwmode.sh)分析

如下restorehwmode.sh这个命令的全部内容
  1. #! /bin/sh

  2. #set hw parameters
  3. #copy etc/wap/hw_default_ctree.xml to /mnt/jffs2/hw_ctree.xml
  4. #set the spec para

  5. var_default_ctree=/mnt/jffs2/hw_default_ctree.xml;
  6. var_ctree=/mnt/jffs2/hw_ctree.xml
  7. var_customize=/mnt/jffs2/customizepara.txt
  8. var_bms_prevxml_temp="/mnt/jffs2/hw_bms_prev.xml"
  9. var_bms_oldcrc_temp="/mnt/jffs2/oldcrc"
  10. var_bms_oltoldcrc_temp="/mnt/jffs2/oltoldcrc"
  11. var_bms_prevcrc_temp="/mnt/jffs2/prevcrc"
  12. var_bms_oltprevcrc_temp="/mnt/jffs2/oltprevcrc"
  13. var_bms_oskvoice_temp="/mnt/jffs2/hw_osk_voip_prev.xml"
  14. var_rebootsave="/mnt/jffs2/cwmp_rebootsave"
  15. var_recovername_temp="/mnt/jffs2/recovername"
  16. var_usr_device_temp="/mnt/jffs2/usr_device.bin"
  17. var_ftcrc_temp="/mnt/jffs2/FTCRC"
  18. var_ftvoip_temp="/mnt/jffs2/ftvoipcfgstate"
  19. var_dhcp_temp="/mnt/jffs2/dhcpc"
  20. var_dhcp6_temp="/mnt/jffs2/dhcp6c"
  21. var_DHCPlasterrwan1_temp="/mnt/jffs2/DHCPlasterrwan1"
  22. var_DHCPlasterrwan2_temp="/mnt/jffs2/DHCPlasterrwan2"
  23. var_DHCPlasterrwan3_temp="/mnt/jffs2/DHCPlasterrwan3"
  24. var_DHCPlasterrwan4_temp="/mnt/jffs2/DHCPlasterrwan4"
  25. var_DHCPstatewan1_temp="/mnt/jffs2/DHCPstatewan1"
  26. var_DHCPstatewan2_temp="/mnt/jffs2/DHCPstatewan2"
  27. var_DHCPstatewan3_temp="/mnt/jffs2/DHCPstatewan3"
  28. var_DHCPstatewan4_temp="/mnt/jffs2/DHCPstatewan4"
  29. var_DHCPoutputwan1_temp="/mnt/jffs2/DHCPoutputwan1"
  30. var_boardinfo_file="/mnt/jffs2/hw_boardinfo"
  31. var_boardinfo_bakfile="/mnt/jffs2/hw_boardinfo.bak"
  32. var_boardinfo_temp="/mnt/jffs2/hw_boardinfo.temp"
  33. var_jffs2_customize_txt_file="/mnt/jffs2/customize.txt"
  34. var_jffs2_choose_xml_dir="/mnt/jffs2/choose_xml"
  35. var_jffs2_choose_xml_tar="/mnt/jffs2/choose_xml.tar.gz"
  36. var_jffs2_spec_file="/mnt/jffs2/hw_hardinfo_spec"
  37. var_jffs2_spec_bak_file="/mnt/jffs2/hw_hardinfo_spec.bak"
  38. var_jffs2_feature_file="/mnt/jffs2/hw_hardinfo_feature"
  39. var_jffs2_feature_bak_file="/mnt/jffs2/hw_hardinfo_feature.bak"
  40. var_jffs2_hardinfo_para_file="/mnt/jffs2/hw_equip_hardinfo"
  41. var_ontfirstonline_temp="/mnt/jffs2/ontfirstonlinefile"
  42. var_dublecore="/mnt/jffs2/doublecore"
  43. var_customize_telmex=/mnt/jffs2/TelmexCusomizePara
  44. var_customize_dir="/mnt/jffs2/customize"
  45. var_smartshowbssguide="/mnt/jffs2/smartshowbssguide"
  46. var_smartshowuserguide="/mnt/jffs2/smartshowuserguide"
  47. var_old_ctree="/mnt/jffs2/hw_old_ctree.xml"
  48. var_ctree_bak="/mnt/jffs2/hw_ctree_bak.xml"
  49. var_cfgbackup="/mnt/jffs2/CfgFile_Backup"
  50. var_PrimaryDir="/mnt/jffs2/PrimaryDir"
  51. var_p2p_dhcp_file="/mnt/jffs2/p2pdhcpboot_prev.ini"
  52. var_jffs2_hardversion_bak_file="/mnt/jffs2/hw_boardinfo.bak"
  53. var_jffs2_specsn_file="/mnt/jffs2/customize_specsn"

  54. var_plat_root="/mnt/jffs2/platroot.crt"
  55. var_plat_pub="/mnt/jffs2/platpub.crt"
  56. var_plat_prvt="/mnt/jffs2/platprvt.key"

  57. # remove plugin files
  58. HW_Script_RemovePluginFile()
  59. {
  60.         #通过特性开关来决定删除哪些插件
  61.         var_feature_enble=`GetFeature HW_FT_OSGI_JVM_FROM_VAR`
  62.         if [ $var_feature_enble = 1 ];then
  63.                 rm  -rf /mnt/jffs2/app/osgi/felix-cache;
  64.         rm  -f /mnt/jffs2/app/osgi/prebundlestatus.info;
  65.         rm  -f /mnt/jffs2/app/osgi/dlna.jar;
  66.         rm  -f /mnt/jffs2/app/osgi/samba.jar;
  67.         else
  68.                 rm  -rf /mnt/jffs2/app/osgi/* ;
  69.         fi
  70.         rm -rf  /mnt/jffs2/app/cplugin/* /var/cplugin/*;
  71. }

  72. # remove files
  73. HW_Script_RemoveFile()
  74. {
  75.         rm -f $var_default_ctree
  76.         rm -f $var_ctree
  77.         rm -f $var_customize
  78.         rm -f $var_bms_prevxml_temp
  79.         rm -f $var_bms_oldcrc_temp
  80.         rm -f $var_bms_oltoldcrc_temp
  81.         rm -f $var_bms_prevcrc_temp
  82.         rm -f $var_bms_oltprevcrc_temp
  83.         rm -f $var_bms_oskvoice_temp
  84.         rm -f $var_rebootsave
  85.         rm -f $var_recovername_temp
  86.         rm -f $var_usr_device_temp
  87.         rm -rf $var_ftcrc_temp
  88.         rm -rf $var_ftvoip_temp
  89.         rm -rf $var_dhcp_temp
  90.         rm -rf $var_dhcp6_temp
  91.         rm -rf $var_DHCPlasterrwan1_temp
  92.         rm -rf $var_DHCPlasterrwan2_temp
  93.         rm -rf $var_DHCPlasterrwan3_temp
  94.         rm -rf $var_DHCPlasterrwan4_temp
  95.         rm -rf $var_DHCPstatewan1_temp
  96.         rm -rf $var_DHCPstatewan2_temp
  97.         rm -rf $var_DHCPstatewan3_temp
  98.         rm -rf $var_DHCPstatewan4_temp
  99.         rm -rf $var_DHCPoutputwan1_temp
  100.         rm -rf $var_jffs2_customize_txt_file
  101.         rm -rf $var_jffs2_choose_xml_dir
  102.         rm -f $var_jffs2_choose_xml_tar
  103.         rm -fr $var_jffs2_spec_file
  104.         rm -fr $var_jffs2_spec_bak_file
  105.         rm -fr $var_jffs2_feature_file
  106.         rm -fr $var_jffs2_feature_bak_file
  107.         rm -fr $var_jffs2_hardinfo_para_file
  108.         rm -fr $var_ontfirstonline_temp
  109.         rm -f $var_dublecore
  110.         rm -f /mnt/jffs2/simcard_flowflag
  111.         rm -f /mnt/jffs2/simcardreadflag
  112.         rm -f /mnt/jffs2/typeword
  113.         rm -f $var_customize_telmex
  114.         rm -rf $var_customize_dir
  115.         rm -f $var_smartshowbssguide
  116.         rm -rf $var_smartshowuserguide
  117.         rm -fr $var_old_ctree
  118.         rm -fr $var_ctree_bak
  119.         rm -fr $var_cfgbackup
  120.         rm -f $var_jffs2_hardversion_bak_file
  121.         rm -rf $var_PrimaryDir
  122.         rm -rf /mnt/jffs2/p2ploadcfgdone
  123.         rm -rf /mnt/jffs2/dhcp6c
  124.     rm -rf /mnt/jffs2/dhcpc
  125.         rm -rf /mnt/jffs2/onlinecounter
  126.         rm -rf $var_jffs2_specsn_file
  127.         rm -rf /mnt/jffs2/reboot_bind_tag
  128.         rm -rf $var_p2p_dhcp_file
  129.                
  130.         rm  -rf /mnt/jffs2/app/osgi/*
  131.         rm  -rf /mnt/jffs2/app/cplugin/*
  132.        
  133.         rm -f /mnt/jffs2/smooth_finsh
  134.         rm -f /mnt/jffs2/gdstbmac.bin
  135.        
  136.         rm -f $var_plat_root
  137.         rm -f $var_plat_pub
  138.         rm -f $var_plat_prvt

  139.         HW_Script_RemovePluginFile
  140.         return
  141. }

  142. #creat files
  143. HW_Script_CreateFile()
  144. {
  145.         var_telnet_flag=/mnt/jffs2/ProductLineMode

  146.         echo "" > $var_telnet_flag
  147.         if [ 0 -ne $? ]
  148.         then
  149.         {
  150.                 echo "ERROR::Failed to create telnet flag!"
  151.         return 1
  152.         }
  153.         fi

  154.         return 0
  155. }

  156. # copy files
  157. HW_Script_CopyFile()
  158. {
  159.         var_etc_def=/etc/wap/hw_default_ctree.xml
  160.        
  161.         #增加延时,确保DB不保存
  162.         echo > /var/notsavedata
  163.         sleep 1

  164.         cp -f $var_etc_def $var_ctree
  165.         if [ 0 -ne $? ]
  166.         then
  167.                 rm -rf /var/notsavedata
  168.                 echo "ERROR::Failed to cp hw_default_ctree.xml to hw_ctree.xml!"
  169.                 return 1
  170.         fi

  171.         return
  172. }

  173. # set spec data
  174. HW_Script_SetData()
  175. {
  176.         cat $var_boardinfo_file | while read -r line;
  177.         do
  178.                 obj_id_temp=`echo $line | sed 's/\(.*\)obj.value\(.*\)/\1/g'`
  179.                 obj_id=`echo $obj_id_temp | sed 's/\(.*\)"\(.*\)"\(.*\)/\2/g'`

  180.                 if [ "0x00000003" == $obj_id ];then
  181.                         echo "obj.id = "0x00000003" ; obj.value = "";"
  182.                 elif [ "0x00000004" == $obj_id ];then
  183.                         echo "obj.id = "0x00000004" ; obj.value = "";"
  184.                 elif [ "0x00000005" == $obj_id ];then
  185.                         echo "obj.id = "0x00000005" ; obj.value = "";"
  186.                 elif [ "0x00000006" == $obj_id ];then
  187.                         echo "obj.id = "0x00000006" ; obj.value = "";"
  188.                 elif [ "0x00000016" == $obj_id ];then
  189.                         echo "obj.id = "0x00000016" ; obj.value = "";"
  190.                 elif [ "0x0000001a" == $obj_id ];then
  191.                         echo "obj.id = "0x0000001a" ; obj.value = "COMMON";"
  192.                 elif [ "0x0000001b" == $obj_id ];then
  193.                         echo "obj.id = "0x0000001b" ; obj.value = "COMMON";"
  194.                 elif [ "0x00000019" == $obj_id ];then
  195.                         echo "obj.id = "0x00000019" ; obj.value = "";"
  196.                 elif [ "0x00000020" == $obj_id ];then
  197.                         echo "obj.id = "0x00000020" ; obj.value = "";"
  198.                 elif [ "0x00000031" == $obj_id ];then
  199.                         echo "obj.id = "0x00000031" ; obj.value = "NOCHOOSE";"
  200.                 elif [ "0x00000035" == $obj_id ];then
  201.                         echo "obj.id = "0x00000035" ; obj.value = "";"
  202.                 elif [ "0x0000003a" == $obj_id ];then
  203.                         echo "obj.id = "0x0000003a" ; obj.value = "";"
  204.                 else
  205.                         echo -E $line
  206.                 fi
  207.         done  > $var_boardinfo_temp

  208.         mv -f $var_boardinfo_temp $var_boardinfo_file

  209.         return
  210. }

  211. # 刷新boardinfo文件的crc行
  212. HW_Customize_ValidateBoardinfoCRC()
  213. {
  214.         if [ -z $1 ]; then
  215.                 return 0
  216.         fi
  217.         if [ -x /bin/factparam ]; then
  218.                 /bin/factparam -v $1
  219.                 if [ 0 -ne $? ]; then
  220.                         echo "ERROR::Failed to validate boardinfo crc on $1!"
  221.                         return 1
  222.                 fi
  223.         fi
  224. }

  225. # 清除出厂参数备份
  226. HW_Customize_ClearFactoryParamsBackup()
  227. {
  228.         if [ -x /bin/factparam ]; then
  229.                 /bin/factparam -e reserved
  230.                 if [ 0 -ne $? ]; then
  231.                         echo "ERROR::Failed to clear factory parameter backup area!"
  232.                         return 1
  233.                 fi
  234.         fi
  235. }

  236. if [ 0 -ne $# ]; then
  237.         echo "ERROR::input para is not right!";
  238.         exit 1;
  239. else
  240. HW_Script_CreateFile
  241. [ ! $? == 0 ] && exit 1

  242. HW_Script_RemoveFile
  243. [ ! $? == 0 ] && exit 1

  244. HW_Script_CopyFile
  245. [ ! $? == 0 ] && exit 1

  246. HW_Script_SetData
  247. [ ! $? == 0 ] && exit 1

  248. rm -rf $var_boardinfo_bakfile

  249. ctrg_support=`GetFeature HW_SSMP_FEATURE_CTRG`
  250. if [ $ctrg_support = 1 ] ;then
  251.         dbus-send --system --print-reply --dest=com.ctc.saf1 /com/ctc/saf1 com.ctc.saf1.framework.Restore > /dev/null
  252. fi

  253. # 必须刷新boardinfo文件的crc行,并且清除reserved分区的出厂参数备份
  254. HW_Customize_ValidateBoardinfoCRC $var_boardinfo_file
  255. [ ! $? == 0 ] && exit 1
  256. HW_Customize_ClearFactoryParamsBackup
  257. [ ! $? == 0 ] && exit 1

  258. echo "success!"

  259. exit 0
  260. fi
复制代码
第一部分的etc/wap/hw_default_ctree.xml ,文件附后,

hw_default_ctree.xml这个文件也就是恢复命令后jffs2下的hw_ctree.xml文件,内容大家可以参考下


中间部分的含义见https://www.chinadsl.net/thread-131336-1-2.html,也就是hw_boardinfo文件内容

至于jffs2/app的内容,恢复命令后删除,直接删除app数据

这也就是为什么使用命令后,大家手机上使用天翼网关app不能连接光猫的原因


至于其他内容,欢迎各位继续探讨   



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| 发表于 2018-4-4 22:41:11 | 显示全部楼层
本帖最后由 happyhack 于 2018-4-4 22:58 编辑

restorehwmode.sh打包附后,


大家看下,个人猜测这个应该是跟手机app控制光猫的一些文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2018-4-5 15:16:10 | 显示全部楼层
这个是不是要破解才能用的?
发表于 2018-4-8 22:28:23 | 显示全部楼层
技术贴,谢谢,学习了
发表于 2018-4-10 18:19:21 | 显示全部楼层
技术学习了
发表于 2018-4-13 20:57:06 | 显示全部楼层
专门学习的,楼主辛苦!
发表于 2018-5-6 22:32:33 | 显示全部楼层
谢谢,楼主无私的分享你宝贵的经验,顺便来赚个猫粮
发表于 2018-5-7 22:25:42 | 显示全部楼层
专门学习的,楼主辛苦!
发表于 2018-5-10 11:17:22 | 显示全部楼层
感谢lz的分享
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-9-21 09:59 , Processed in 0.030394 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表