DSM 7 破解Surveillance Station 9 后,关于时间炸弹的一种解决方法

查看 74|回复 4
作者:千人千面   
某NAS DSM7.X版本的Surveillance Station破解授权数量后,基本上每隔30分钟~1小时,摄像机就会显示正在停止。然后就不工作了,这个时候把套件停止后再启用基本上就可以恢复正常了,但是这个方法会导致客户端断开连接,不过,只要你手动去停止摄像头,然后再手动启用摄像头,这个时候它又恢复正常了{:301_1001:}
  


cam1.png (70.25 KB, 下载次数: 0)
下载附件
2023-6-7 09:46 上传

于是我就想,有没有一种方法能自动化这个,停用→启用的过程。
答案是有的,我通过Wireshark抓包,获取了这个操作的POST。然后通过Python脚本来执行这个过程{:301_986:}
由于抓包分析的过程灰常的简单,我这里就不复现这个过程了,下面直接放出Python脚本
脚本很简单,通过自动登录获取cookie,然后发送post请求,自动化禁用,启用这两个操作。
from datetime import datetime
import json
import requests
print('run task',datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3])
# 服务器地址和端口
host = "http://192.168.1.5:5000/webapi/entry.cgi"
params = {
    "api": "SYNO.API.Auth",
    "method": "login",
    "version": "6",
    "account": "你的NAS账号",
    "passwd": "你的NAS密码",
    "format": "sid",
    "session": "SurveillanceStation",
}
loginResult = requests.get(url=host, params=params)
loginLoads = json.loads(loginResult.content.decode("utf-8"))
loginJson = loginLoads.get("data")
logindid = loginJson.get("did")
loginsid = loginJson.get("sid")
# cookie
headers = {
    "Cookie": "id="
    + loginsid
    + "; did="
    + logindid
    + "; svs_dual_auth=; SscLanguage=chs"
}
print("login success...")
# 参数
body = {
    "cameraIds": "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16",#这里你有多少个摄像头就填到多少
    "blIncludeDeletedCam": "false",
    "api": "SYNO.SurveillanceStation.Camera",
    "method": "",
    "version": "7",
}
# 发送请求,先停止
body["method"] = "Disable"
result1 = requests.post(url=host, data=body, headers=headers)
# 输出返回
result1Loads = json.loads(loginResult.content.decode("utf-8"))
result1Json = loginLoads.get("success")
if result1Json:
    print("Disable success...")
# 发送请求,再启用
body["method"] = "Enable"
result2 = requests.post(url=host, data=body, headers=headers)
result2Loads = json.loads(loginResult.content.decode("utf-8"))
result2Json = loginLoads.get("success")
# 输出返回
if result2Json:
    print("Enable success...")
print('Task complate',datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3])
最后,我们配合NAS自带的任务计划,每隔半小时运行一次


cam2.png (53.64 KB, 下载次数: 0)
下载附件
2023-6-7 09:54 上传

最好是再配合这句,每隔6小时重启一次服务/usr/syno/bin/synopkg restart SurveillanceStation
收工~
对了,NAS上需要安装Python Pip,大家需要自行百度相关教程,当然,如果有大神可以写一个bash命令行版本的那就简直太棒了

每隔, 过程

千人千面
OP
  

写的比较简单,如果有大神改进一下那就简直太棒了
imcuer   

学到了!
高锰酸钾   

用的白裙,只有一个摄像头。还是谢谢分享。
qiu782461893   

这是chatgpt转换的代码,试试
[Bash shell] 纯文本查看 复制代码sudo apt-get install jq
[Bash shell] 纯文本查看 复制代码#!/bin/bash
echo "run task $(date +'%Y-%m-%d %H:%M:%S.%3N')"
# 服务器地址和端口
host="http://192.168.1.5:5000/webapi/entry.cgi"
# 登陆
loginResult=$(curl -s -G \
  -d "api=SYNO.API.Auth" \
  -d "method=login" \
  -d "version=6" \
  -d "account=你的NAS账号" \
  -d "passwd=你的NAS密码" \
  -d "format=sid" \
  -d "session=SurveillanceStation" \
  $host)
if [ $? -ne 0 ]; then
  echo "curl command failed"
  exit 1
fi
loginSuccess=$(echo $loginResult | jq -r '.success')
if [ "$loginSuccess" != "true" ]; then
  echo "Login failed"
  exit 1
fi
loginsid=$(echo $loginResult | jq -r '.data.sid')
logindid=$(echo $loginResult | jq -r '.data.did')
# cookie
cookie="id=$loginsid; did=$logindid; svs_dual_auth=; SscLanguage=chs"
echo "login success..."
# 参数
cameraIds="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16" #这里你有多少个摄像头就填到多少
# 发送请求,先停止
result1=$(curl -s -X POST -H "Cookie: $cookie" -d "cameraIds=$cameraIds" -d "blIncludeDeletedCam=false" -d "api=SYNO.SurveillanceStation.Camera" -d "method=Disable" -d "version=7" $host)
result1Success=$(echo $result1 | jq -r '.success')
if [ "$result1Success" != "true" ]; then
  echo "Disable failed"
  exit 1
else
  echo "Disable success..."
fi
# 发送请求,再启用
result2=$(curl -s -X POST -H "Cookie: $cookie" -d "cameraIds=$cameraIds" -d "blIncludeDeletedCam=false" -d "api=SYNO.SurveillanceStation.Camera" -d "method=Enable" -d "version=7" $host)
result2Success=$(echo $result2 | jq -r '.success')
if [ "$result2Success" != "true" ]; then
  echo "Enable failed"
  exit 1
else
  echo "Enable success..."
fi
echo "Task complete $(date +'%Y-%m-%d %H:%M:%S.%3N')"
您需要登录后才可以回帖 登录 | 立即注册

返回顶部