11/08/2018, 20:23

Coi phim từ hdonline.com thế nào

Sau khi đọc bài viết Tôi đã viết phim.clgt.vn như thế nào của bác @quocnguyen thì mình có giới thiệu cho em gái trang phim.clgt.vn . Nó coi được 5 phút thì bảo là cái này lấy nguồn phim từ phimmoi.net à? Sao không lấy từ HDOnline.vn ý ? Cũng đang rảnh nên mở trình duyệt lên và chôm link về ...

Sau khi đọc bài viết Tôi đã viết phim.clgt.vn như thế nào của bác @quocnguyen thì mình có giới thiệu cho em gái trang phim.clgt.vn . Nó coi được 5 phút thì bảo là cái này lấy nguồn phim từ phimmoi.net à? Sao không lấy từ HDOnline.vn ý ?

Cũng đang rảnh nên mở trình duyệt lên và chôm link về

Trong bài này mình sẽ demo với link này

http://hdonline.vn/phim-mom-me-season-4-13182.html#qP6RTzJYl7Buv9HF.97

Mở trang lên và view source thì mình thấy có ngay cái khúc eval này, chắc chắn đây chính là nguồn gốc của mọi tội lỗi.

alt text

Đoạn code trên đã bị obfuscated nên mình sẽ dùng jsnice.org để deobfuscated nó.

Kết quả ban đầu thế này

alt text

Mình đã up cái result lên gist vì mình biết mọi người đều lười

eval(function(str, n, name, pair, func, opt_attributes) {
/**
* @param {number} i
* @return {?}
*/
func = function(i) {
return(i < n ? "" : func(parseInt(i / n))) + ((i = i % n) > 35 ? String.fromCharCode(i + 29) : i.toString(36));
};
if (!"".replace(/^/, String)) {
for (;name--;) {
opt_attributes[func(name)] = pair[name] || func(name);
}
/** @type {Array} */
pair = [function(timeoutKey) {
return opt_attributes[timeoutKey];
}];
/**
* @return {?}
*/
func = function() {
return "w+";
};
/** @type {number} */
name = 1;
}
for (;name--;) {
if (pair[name]) {
/** @type {string} */
str = str.replace(new RegExp("b" + func(name) + "b", "g"), pair[name]);
}
}
return str;
}('2s('2y').2x({"2w":"2v","2t":[{"1K":"/1h/1f/1J?1L=1&1M=b&1N=1W-27&29=2a","a.1Y":"8://f.d","a.1X":j,"c":"1Z","1I":"21 22, 23 1H,1o 1n,1p 1q 1s, 1r 1m","1i":"T1l 1","1k":"8://1d.f.d/i/1t/1E/1B/1z/1y/10/28/1x-1v-1G-4.1D","1u":"1j.24.9.26","25":"1P","a.1U":1T},{"1K":"/1h/1f/1J?1L=2&1M=b&1N=1W-27&29=2a","a.1Y":"8://f.d","a.1X":j,"c":"1Z","1I":"21 22, 23 1H,1o 1n,1p 1q 1s, 1r 1m","1i":"T1l 2","1k":"8://1d.f.d/i/1t/1E/1B/1z/1y/10/28/1x-1v-1G-4.1D","1u":"1j.24.9.26","25":"1P","a.1U":1T},{"1K":"/1h/1f/1J?1L=3&1M=b&1N=1W-27&29=2a","a.1Y":"8://f.d","a.1X":j,"c":"1Z","1I":"21 22, 23 1H,1o 1n,1p 1q 1s, 1r 1m","1i":"T1l 3","1k":"8://1d.f.d/i/1t/1E/1B/1z/1y/10/28/1x-1v-1G-4.1D","1u":"1j.24.9.26","25":"1P","a.1U":1T},{"1K":"/1h/1f/1J?1L=4&1M=b&1N=1W-27&29=2a","a.1Y":"8://f.d","a.1X":j,"c":"1Z","1I":"21 22, 23 1H,1o 1n,1p 1q 1s, 1r 1m","1i":"T1l 4","1k":"8://1d.f.d/i/1t/1E/1B/1z/1y/10/28/1x-1v-1G-4.1D","1u":"1j.24.9.26","25":"1P","a.1U":1T},{"1K":"/1h/1f/1J?1L=5&1M=b&1N=1W-27&29=2a","a.1Y":"8://f.d","a.1X":j,"c":"1Z","1I":"21 22, 23 1H,1o 1n,1p 1q 1s, 1r 1m","1i":"T1l 5","1k":"8://1d.f.d/i/1t/1E/1B/1z/1y/10/28/1x-1v-1G-4.1D","1u":"1j.24.9.26","25":"1P","a.1U":1T},{"1K":"/1h/1f/1J?1L=6&1M=b&1N=1W-27&29=2a","a.1Y":"8://f.d","a.1X":j,"c":"1Z","1I":"21 22, 23 1H,1o 1n,1p 1q 1s, 1r 1m","1i":"T1l 6","1k":"8://1d.f.d/i/1t/1E/1B/1z/1y/10/28/1x-1v-1G-4.1D","1u":"1j.24.9.26","25":"1P","a.1U":1T}],"2o":"2n","2p":1e,"2q":{"8://1d.f.d/2e/2d/2.1.13/a.2j":{"2u":"b","2I":"3c","3b":1e,"2i":"","1f":"","3f":{"3h":"8://f.d/1h/1f/3g?h={h}&2b={2b}","3a":"8://1d.f.d/2e/2d/2.1.13/33.2z","34":1e,"36":1e,"37":1e,"2i":"","38":1e},"35":{"2Z":j,"31":1e},"32":j,"k":{"39":[{"c":"M","1w":"2b","1A":30,"N":0,"1F":5,"1C":"","1a":["8://R.11/E.O?1b=3i&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1","8://R.11/E.O?1b=2g&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1"]},{"c":"M","1w":"2b","1A":30,"N":0,"1F":5,"1C":"","1a":["8://R.11/E.O?1b=3e&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1","8://R.11/E.O?1b=2g&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1"]},{"c":"M","1w":"e","1A":30,"N":2f,"1F":5,"1C":"","1a":["8://R.11/E.O?1b=2h&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1","8://R.11/E.O?1b=2c&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1"]},{"c":"M","1w":"e","1A":30,"N":2f,"1F":5,"1C":"","1a":["8://R.11/E.O?1b=2k&2l=j&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1","8://R.11/E.O?1b=2c&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1"]},{"c":"M","1w":"e","1A":30,"N":2m,"1F":5,"1C":"","1a":["8://R.11/E.O?1b=2h&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1","8://R.11/E.O?1b=2c&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1"]},{"c":"M","1w":"e","1A":30,"N":2m,"1F":5,"1C":"","1a":["8://R.11/E.O?1b=2k&2l=j&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1","8://R.11/E.O?1b=2c&X=3.0&e=b&P=7-Q-L,7-K-F,7-H-J&U=15&17=18-19,14-12,W-V,Y-Z-16,S-I&G=1"]}],"2U":["8://x.g.w.v/y/k?z=2V&B=/u/2W&1g&A=s&C=1&t=o&n=m&p=1&h=[r]&l=[l]&D=[q]"],"2S":[{"c":"M","N":1,"1R":20,"1a":["1O://x.g.w.v/y/k?z=1c|1Q&B=/u/1S&A=s&C=1&t=o&n=m&p=1&h=[r]&l=[l]&D=[q]","8://x.g.w.v/y/k?z=1c&B=/u/1V&1g&A=s&C=1&t=o&n=m&p=1&h=[r]&D=[q]"]},{"c":"M","N":2R,"1R":20,"1a":["1O://x.g.w.v/y/k?z=1c|1Q&B=/u/1S&A=s&C=1&t=o&n=m&p=1&h=[r]&l=[l]&D=[q]","8://x.g.w.v/y/k?z=1c&B=/u/1V&1g&A=s&C=1&t=o&n=m&p=1&h=[r]&D=[q]"]},{"c":"M","N":2N,"1R":20,"1a":["1O://x.g.w.v/y/k?z=1c|1Q&B=/u/1S&A=s&C=1&t=o&n=m&p=1&h=[r]&l=[l]&D=[q]","8://x.g.w.v/y/k?z=1c&B=/u/1V&1g&A=s&C=1&t=o&n=m&p=1&h=[r]&D=[q]"]},{"c":"M","N":2O,"1R":20,"1a":["1O://x.g.w.v/y/k?z=1c|1Q&B=/u/1S&A=s&C=1&t=o&n=m&p=1&h=[r]&l=[l]&D=[q]","8://x.g.w.v/y/k?z=1c&B=/u/1V&1g&A=s&C=1&t=o&n=m&p=1&h=[r]&D=[q]"]},{"c":"M","N":2P,"1R":20,"1a":["1O://x.g.w.v/y/k?z=1c|1Q&B=/u/1S&A=s&C=1&t=o&n=m&p=1&h=[r]&l=[l]&D=[q]","8://x.g.w.v/y/k?z=1c&B=/u/1V&1g&A=s&C=1&t=o&n=m&p=1&h=[r]&D=[q]"]},{"c":"M","N":2Q,"1R":20,"1a":["1O://x.g.w.v/y/k?z=1c|1Q&B=/u/1S&A=s&C=1&t=o&n=m&p=1&h=[r]&l=[l]&D=[q]","8://x.g.w.v/y/k?z=1c&B=/u/1V&1g&A=s&C=1&t=o&n=m&p=1&h=[r]&D=[q]"]}]}},"8://1d.f.d/2e/2d/2.1.13/2T.2j":{"2M":"2L-2E-1","2D":j,"2C":j}},"2A":3,"2B":4,"2F":2G,"2K":j,"2J":0,"2Y":j,"2H":j,"2X":3d,"2r":1e});',
62, 205, "|||||||phim|http||vplugin|13182|type|vn|mid|hdonline||url||true|ads|description_url|xml_vast2|output|vp|unviewed_position_start|timestamp|referrer_url||env|29309823|net|doubleclick|pubads|gampad|sz|impl|iu|gdfp_req|correlator|vast|huoc|isdrama|gia|calvano|dinh|hai|cam|tags|position|xml|cat|tinh|blueserving|sadie||country|jones|matt|vastv|blake|garrett||com|janney||allison|my|rosenthal|actor|anna|faris|link|key|800x90|static|false|episode|ciu_szs|frontend|title|115|image|u1eadp|Calvano|Jones|Matt|Blake|Garrett|Sadie|Rosenthal|resources|myip|me|id|mom|2016|900x500|duration|film|click|jpg|new|skip|season|Janney|description|xmlplay|file|ep|fid|token|https|VN|600x90|time|HDO_Movie_Overlay|120|buffer|WM_Movie_Drop|NmY1MjY0NDQ0YTU1MzA2YzMzNTg1NDZkNjI1ODRlNDc1NTMyNWE0YjYxNTg2NTQ1MzIzMDcyMzg0Nzc5MzA2ZDM4NjczZDNk|itemplaylist|host|m3u8||Anna|Faris|Allison|74|mycountry|60|1484748045||mirand|94f598ff26d63e3e106cee32c541ee7f|pre|2d7e8dda0394388f1d12268c3d81d5c5|v2|player|1200|4d207eb8e1fc3b2773f69e7ac2626ac0|bb1975ec897dd7921a2c5384a479a2e3|userid|js|6f1e67c673168e0d70eba98aed5bbe65|no_imp_overlay|2400|520px|height|vhls_forcefragmenterror|plugins|vhls_autolevel|jwplayer|playlist|filmid|925px|awidth|setup|hdoplayer|swf|vhls_maxlevel|vhls_fragmentloadmaxretry|tracktime|trackstarts|35362268|vhls_hidelevelawidth|1300|vhls_autolevel404|vtimelimit|item|allowDune|UA|accountid|1800|2700|3700|4500|900|overlaydata|gapro|pausedata|800x450|HDO_Movie_Pause|vhls_maxawidth|vhls_usehardwarevideodecoder|allow||usega|vads|vastplay|showdune|trackads|checkvietnam|checkLogin|vipdune|videodata|swfVast|uvip|none|640|baa82cb17cc31206cbc184671b43593d|user|loadthumbnail|vttURL|4724f92620ddc3d70b6d5a75fc52914b".split("|"),
0, {}));
view raw index.js hosted with ❤ by GitHub

Ngó sơ qua thì mọi người đều dễ dàng nhận thấy đây là một kiểu mã hóa code, function sẽ chạy để cho ra code cuối cùng sau đó dùng eval để chạy trực tiếp đoạn code.

Đừng lo, mở Console lên, dán đoạn code đó vào, thêm dòng console.log(str) trước return str;

alt text

Bấm Enter và bùm. Chúng ta có đoạn code sạch đẹp có thể đọc được

alt text

Để ý mục playlist liệt kê hết toàn bộ phim trong cả season, việc còn lại bây giờ là gửi request tới link trên để feed cho trang xem phim của bác @quocnguyen

P/s: Sau một hồi thử với nhiều phim thì mình nhận thấy là có phim trang trên dùng host của Google còn có phim thì stream từ server của HDOnline dưới dạng HLS, cách giải mã cũng tương tự.

0