Coi phim từ hdonline.com thế nào
nodejs
65
Javascript
200
White

Khoa Nguyen viết ngày 18/01/2017

Động lực

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ề

Thực hiện

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":"T\\1l 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":"T\\1l 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":"T\\1l 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":"T\\1l 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":"T\\1l 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":"T\\1l 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|width|setup|hdoplayer|swf|vhls_maxlevel|vhls_fragmentloadmaxretry|tracktime|trackstarts|35362268|vhls_hidelevelwidth|1300|vhls_autolevel404|vtimelimit|item|allowDune|UA|accountid|1800|2700|3700|4500|900|overlaydata|gapro|pausedata|800x450|HDO_Movie_Pause|vhls_maxwidth|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ự.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Khoa Nguyen

14 bài viết.
60 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
37 3
Nếu bạn là thành viên của (Link) thì các bạn có thể đã biết đến khóa học của (Link) Khóa học này (có phí) gồm các (Link) kèm với đó là (Link). (Ả...
Khoa Nguyen viết hơn 1 năm trước
37 3
White
29 3
(Ảnh) Giới thiệu Đi câu cá hay mấy anh Tây hay gọi Phishing có nghĩa là lừa đảo nhằm đánh cắp tài khoản, mật khẩu, thẻ tín dụng của người dùng. ...
Khoa Nguyen viết hơn 1 năm trước
29 3
White
13 11
Chắc chắn là ai đã từng làm việc với npm thì đều biết một điều rằng npm nó siêu chậm. Vì vậy mình hay hạn chế chạy npm install đến mức tối thiểu và...
Khoa Nguyen viết gần 2 năm trước
13 11
Bài viết liên quan
White
39 7
Tăng sức mạnh cho javascript với lodash Lần này mình sẽ giới thiệu 1 thư viện javascript vô cùng bá đạo có tên là "lodash]1]", có thể nói nó là LI...
Huy Hoàng Phạm viết hơn 2 năm trước
39 7
White
21 8
Lâu không post gì muốn viết một bài dài dài về js cơ mà đau đầu quá viết mãi không xong, thôi post bài ngắn vậy :smiley: Lấy screen size ở đây tôi...
Hoàng Duy viết hơn 2 năm trước
21 8
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
14 bài viết.
60 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!