Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $username = 'admin';
- $password = 'admin';
- $ip = '192.168.1.2';
- $url='http://'.$ip.'/onvif/device_service';
- $post_string='<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header><Security s:mustUnderstand="1" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><UsernameToken><Username>%%USERNAME%%</Username><Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">%%PASSWORD%%</Password><Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">%%NONCE%%</Nonce><Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">%%CREATED%%</Created></UsernameToken></Security></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSnapshotUri xmlns="http://www.onvif.org/ver10/media/wsdl"><ProfileToken>MainStreamToken</ProfileToken></GetSnapshotUri></s:Body></s:Envelope>';
- function passwordDigest( $username, $password, $timestamp = "default", $nonce = "default" ) {
- if ($timestamp=='default') $timestamp=date('Y-m-d\TH:i:s.000\Z');
- if ($nonce=='default') $nonce=mt_rand();
- $REQ=array();
- $passdigest = base64_encode(pack('H*', sha1(pack('H*', $nonce) . pack('a*',$timestamp).pack('a*',$password))));
- //$passdigest=base64_encode(sha1($nonce.$timestamp.$password,true)); // alternative
- $REQ['USERNAME']=$username;
- $REQ['PASSDIGEST']=$passdigest;
- $REQ['NONCE']=base64_encode(pack('H*', $nonce));
- //$REQ['NONCE']=base64_encode($nonce); // alternative
- $REQ['TIMESTAMP']=$timestamp;
- return $REQ;
- }
- function makeToken() {
- global $username, $password;
- $timestamp=time();
- return passwordDigest($username,$password,date('Y-m-d\TH:i:s.000\Z',$timestamp));
- }
- $REQ=makeToken();
- $post_string=str_replace(array("%%USERNAME%%",
- "%%PASSWORD%%",
- "%%NONCE%%",
- "%%CREATED%%"),
- array($REQ['USERNAME'],
- $REQ['PASSDIGEST'],
- $REQ['NONCE'],
- $REQ['TIMESTAMP']),
- $post_string);
- $soap_do = curl_init();
- curl_setopt($soap_do, CURLOPT_URL, $url );
- curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10);
- curl_setopt($soap_do, CURLOPT_TIMEOUT, 10);
- curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
- curl_setopt($soap_do, CURLOPT_POST, true );
- curl_setopt($soap_do, CURLOPT_POSTFIELDS, $post_string);
- curl_setopt($soap_do, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8', 'Content-Length: '.strlen($post_string) ));
- $result = curl_exec($soap_do);
- // curl_error($ch);
- var_dump($result);
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement