[บทความ] wmsAuthSign มันคืออัลไล

ตุลาคม 5, 2017 Views 138
Spread the love

บทความนี้ไม่ได้สอนวิธีการถอด แต่เพียงแค่อธิบายวิธีการทำงานของมันเฉยๆ ว่าข้างในมันประกอบด้วยอะไรบ้าง ซึ่งผมก็ถอดไม่เป็นเช่นกัน

เอาล่ะ ต้องมารู้ก่อนว่า wmsAuthSign มันคืออัลไล กันแน่

wmsAuthSign คือ วิธีการป้องกันลิ้ง เพื่อให้ลิ้งนั้นๆมีวันหมดอายุของมันเอง ซึ่งเป็นที่ยินยอมชมชอบกันหลายสำนัก หลักๆ คือ ฉันชอบเฮชดี, ipplay บลาๆ

wmsAuthSign นั้นมีลูกเล่นหลายๆอย่าง เช่น ลิ้งนี้สามารถดูได้เครื่องเดียว , IP เดียว , ช่องเดียว , บลาๆ

key ตัวอย่างนี้เป็น key แบบเดิมๆ ไม่มีฟังชั่นอะไรมากมาย เป็นรูปแบบ base64 ส่วนวิธีการเปลือยกายมันเข้าลิ้ง (http://www.base64decode.org/)

c2VydmVyX3RpbWU9NS80LzIwMTIgODozMzowNSBBTSZoYXNoX3ZhbHVlPXE3MjN6aEVmdGFUOUJoWjBQTmw1TVE9PSZ2YWxpZG1pbnV0ZXM9MjA=

เอาล่ะ ได้เวลาเปลือยกายน้องคีย์กันแล้ว

สิ่งที่ได้ออกมา

server_time=5/4/2012 8:33:05 AM&hash_value=q723zhEftaT9BhZ0PNl5MQ==&validminutes=20

สำหรับ key ตัวอย่างมีแค่ฟังชั่นการจำกัดเวลา คือ validminutes=20 หมายความว่า key นี้หรือลิ้งนี้ มีเวลาอยู่แค่ 20 นาที เท่านั้น

ขออธิบายเรื่อง validminutes เพิ่มเติม

validminutes คือเวลาที่ลิ้งนั้นๆ จะให้เปิดได้ พูดหลายๆ ถ้าเปิดลิ้งนี้ภายในเวลา 20 นาที ก็จะเปิดชมได้อยู่ แต่ถ้าผ่าน 20 นาทีแล้ว ก็ไม่สามารถชมได้

แต่ใช่ว่า กำลังดูอยู่พอครบ 20 นาทีแล้วอยู่ดีๆก็ดับไปเองนะ   ไม่ใช่แบบนั้น มันสามารถดูได้ยาวๆ ซึ่งไม่รู้กี่นาทีนะ… ถ้าคุณเปิดลิ้งก่อน 20 นาที

ต่อมาก็ถึงเวลาชำเเระเจ้า wmsAuthSign ว่าข้างในลึกๆมันทำงานอย่างไร

หลักการทำงานคือ php script

 

<?php
$today = gmdate(“n/j/Y g:i:s A”);
$ip = $_SERVER[“REMOTE_ADDR”];
$key = “defaultpassword”;
$validminutes = 20;
$str2hash = $ip . $key . $today . $validminutes;
$md5raw = md5($str2hash, true);
$base64hash = base64_encode($md5raw);
$urlsignature = “server_time=” . $today .”&hash_value=” . $base64hash. “&validminutes=$validminutes”;
$base64urlsignature = base64_encode($urlsignature);
?>
ขออธิบาย แต่ละ บรรทัดเลยล่ะกัน  อาจจะผิดพลาดหรือข้อมูลไม่ตรงก็ขออภัยไว้ก่อน ความรู้ผมเท่าห่างอึงเช่นกัน

<?php
1.$today = gmdate(“n/j/Y g:i:s A”); #ตัวนี้หมายถึงวันที่และเวลา เช่น 02/05/2014 10:42:15
2.$ip = $_SERVER[‘REMOTE_ADDR’]; #หมายถึง ip server
3.$key = “defaultpassword”; #ตัวนี้เป็นเช่นรหัสผ่าน ที่เจ้าของระบบตั้งไว้
4.$validminutes = 20; #ตรงนี้แหละที่เป็นตัวกำหนดเวลาของลิ้งนั้นๆ
5.$str2hash = $ip . $key . $today . $validminutes; #สำหรับ $str2hash เป็นการรวมเอาบรรทัดที่ 1,2,3,4 มันฟิวชั่นกัน
6.$md5raw = md5($str2hash, true); #และเอาข้อมูลบรรทัดที่ 5 ทั้งหมดมาแปลงเป็น md5
7.$base64hash = base64_encode($md5raw); #และเอาบรรทัดที่ 6 มาแปลงเป็น code base64
8.$urlsignature = “server_time=” . $today .”&hash_value=” . $base64hash. “&validminutes=$validminutes”; #ตรงนี้คือสิ่งที่เราถอดออกมาจาก base64 code ทั้งหมด
9.$base64urlsignature = base64_encode($urlsignature); #สุดท้้ายคือ wmsAuthSign=xx ที่เราพบกันนั้นแหละ
?>
เฮ้อเหนื่อย

ตัวนี้เป็นตัว player ของมันจะเขียนทำนองนี้

<div id='my-video'></div>
<script type='text/javascript'>
jwplayer("my-video").setup({
playlist: [{
sources: [{
file: "rtmp://streamserver.yourdomain.com/live?wmsAuthSign=<?php echo $base64urlsignature;?>/mp4:my-stream.sdp"
},{
file: "http://streamserver.yourdomain.com:1935/live/mp4:my-stream.sdp/playlist.m3u8?wmsAuthSign=<?php echo $base64urlsignature;?>"
}]
}],
height: 480,
width: 640,
autostart: 'true'
});
</script>

สุดท้ายบทความนี้เป็นความเข้าใจของผมล้วนๆ ข้อมูลอาจจะผิดพลาดประการใดขออภัยไว้ก่อนนะครับ

 

Categories

เว็บดูหนังออนไลน์ใหม่ 2018 | เน้นความปลอดภัยและอัปเดตหนังไวเป็นหลัก ไม่ต้องกังวลเรื่อง 'POP-UP' ไม่ต้องกังวลเรื่อง 'บอท Bitcoin' มั่นใจได้ 100% #เว็บดูหนังออนไลน์ เป็นเพียงการทำวิจัยเรื่อง API , Network Security เท่านั้น ไม่ได้มีความตั้งใจละเมิดและหวังผลประโยชน์เพียงอย่างใด #หากเจ้าของค่ายลิขสิทธิ์ค่ายใดไม่ยินยอม สามารถแจ้งมาได้ที่ ezplaybox@gmail.com