我在python中有这个脚本:
LOGIN_TEMPLATE = b'\xa0\x00\x00\x60%b\x00\x00\x00%b%b%b%b\x04\x01\x00\x00\x00\x00\xa1\xaa%b&&%b\x00Random:%b\r\n\r\n'
GET_SERIAL = b'\xa4\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00'
GET_CHANNELS = b'\xa8\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00'
GET_SNAPSHOT = b'\x11\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\n\x00\x00\x00%b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00%b\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
TIMEOUT = 10
self.serial = ''
self.channels_count = -1
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.settimeout(TIMEOUT)
self.socket.connect((ip, port))
self.socket.send(LOGIN_TEMPLATE % (struct.pack('b', 24 + len(login) + len(password)), login.encode('ascii'),
(8 - len(login)) * b'\x00', password.encode('ascii'),
(8 - len(password)) * b'\x00', login.encode('ascii'),
password.encode('ascii'), str(int(time.time())).encode('ascii')))
data = self.socket.recv(128)
有一种方法可以在php中转换?
我创建了一个我尝试的例子。
$login = 'admin';
$password ='admin';
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
define('LOGIN_TEMPLATE', '\xa0\x00\x00\x60%b\x00\x00\x00%b%b%b%b\x04\x01\x00\x00\x00\x00\xa1\xaa%b&&%b\x00Random:%b\r\n\r\n');
if (!is_resource($socket)) {
echo 'Unable to create socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}
我试图了解如何生成LOGIN_TEMPLATE。但是我不明白如何解释Python代码如何生成它。任何人都可以帮助我了解如何创建它吗?
原始的python脚本在这里:https://gitlab.com/camshift/dahua-scanner/blob/master/utils/dahua.py
一只甜甜圈