Vượt qua password file để download tại tenlua.vn
hacking
17
PHP
76
tricks
6
White

Phạm Quốc Thắng viết ngày 11/07/2017

Disclaimer: Mình đã thông báo bug này cho support tenlua.vn 2 lần, và họ đã fix bằng cách upgrade 1 bản api ver 2, tuy nhiên api ver 1 vẫn hoạt động song song trên server và vì thế ta lại nghịch ngợm :smile:

Lý do

Cách đây hơn 1 năm, mình có viết tool get link hàng loạt từ mediafire, tenlua.vn. Hỗ trợ cả folder lẫn link lẻ tẻ tại đây Direct Downloader
Tình cờ hôm đó mình bắt request để lấy link tải từ tenlua.vn và nảy ra ý tưởng nghịch thử xem với file có password thì nó sẽ ra sao, không ngờ là tenlua.vn chơi quá lầy :smile:. Chuỗi json họ trả về có thông báo là file có pass và yêu cầu đăng nhập

["reqlink"]=>
string(27) "http://www.tenlua.vn/#login"

Nhưng nó vẫn đi kèm 1 direct link để tải file, từ đó mình bắt đầu khai thác.

Nghịch ngợm

Ngay cả bây giờ, bạn cũng có thể bắt lấy link download tại tenlua.vn một cách dễ dàng nếu bắt request và đọc code javascript của họ thì cũng ra thôi. Tuy nhiên nó là API ver 2, nên không còn bypass password được nữa. Vì thế mình sẽ cung cấp luôn request demo API ver 1.

URL

http://api.tenlua.vn/

POST DATA:

[{"a":"filemanager_builddownload_getinfo","n":"ID_FILE","r":0.376080396333181}]

Với ID_FILE được lấy từ link file như sau:

https://www.tenlua.vn/download/1337ef2ae20d6d001c/themeforest-11452732-maxshop-responsive-wordpress-woocommerce-theme

=> ID: 1337ef2ae20d6d001c
Bạn giả lập lại request trên là có thể lấy được direct link download rồi :smile:

Viết Code

Ở đây mình tiếp tục dùng PHP cho lẹ :smile: thừa hưởng những gì mà mình đã làm từ năm ngoái luôn.

Đầu tiên là viết cái class để cURL đến nó

class tenlua
{
    function json_parse($data)
    {
        return json_decode($data,true);
    }
    function get($url,$post = false, $cookie = false)
    {
        $ch = curl_init();
        if($post)
        {
            curl_setopt($ch, CURLOPT_POST ,1);
            curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);
        }
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $result = curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);
        return $result;
    }
}

Xong, tiếp theo là nhận link từ GET Request và tách lấy ID.

$linkfile = explode("/",$_GET['link']);
$id = $linkfile[count($linkfile) - 2];

Các bạn đọc chắc hiểu cách mà mình lấy ID file nhỉ :smile: chắc không cần giải thích thêm đâu.
Sau đó là việc giả lập request đến, và lấy link download.

$py = new tenlua();
$link = "http://api.tenlua.vn/";
$post = '[{"a":"filemanager_builddownload_getinfo","n":"'.$id.'","r":0.376080396333181}]';
$page = $py->get($link,$post);
$array = $py->json_parse($page);
if($array[0]['type'] == "none")
{
    die("Link Die");
}
echo $array[0]['url'];

Và đây là full code

<?php
$linkfile = explode("/",$_GET['link']);
$id = $linkfile[count($linkfile) - 2];
$py = new tenlua();
$link = "http://api.tenlua.vn/";
$post = '[{"a":"filemanager_builddownload_getinfo","n":"'.$id.'","r":0.376080396333181}]';
$page = $py->get($link,$post);
$array = $py->json_parse($page);
if($array[0]['type'] == "none")
{
    die("Link Die");
}
echo $array[0]['url'];
class tenlua
{
    function json_parse($data)
    {
        return json_decode($data,true);
    }
    function get($url,$post = false, $cookie = false)
    {
        $ch = curl_init();
        if($post)
        {
            curl_setopt($ch, CURLOPT_POST ,1);
            curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);
        }
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $result = curl_exec($ch);
        $info = curl_getinfo($ch);
        curl_close($ch);
        return $result;
    }
}

Code bên trên chỉ là code đơn giản nhất thôi, bạn có thể tùy biến thêm chức năng và giao diện nếu cần thiết. Hoặc cũng có thể viết lại bằng javascript rồi tạo bookmark hay extension chrome / firefox cũng được :smile:

Bonus thêm cách get link file in folder:

    $link = "http://api.tenlua.vn/";
    $post = '[{"a":"filemanager_builddownload_getinfo","n":"'.$id.'","r":0.376080396333181}]';
    $page = $py->get($link,$post);
    $array = $py->json_parse($page);
    $array = $array[0]['content'];
    foreach ($array as $key) {
        echo $key['link'];
    }
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

Phạm Quốc Thắng

15 bài viết.
45 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
22 33
Chuẩn bị Một link bài hát / video từ mp3.zing.vn Nghịch ngợm Cũng vì dạo này mình hơi rảnh rỗi với có một chút phiền phức khi đang thưởng thức ...
Phạm Quốc Thắng viết gần 3 năm trước
22 33
White
10 1
Bài viết này mình sẽ trình bày những thứ cơ bản về cú pháp với Swift. Bài viết sẽ gồm các phần Phần 1 Hằng và Biến Ghi chú Dấu chấm phẩy S...
Phạm Quốc Thắng viết gần 3 năm trước
10 1
White
7 2
Vì tính chất công việc, nên đôi khi mình phải setup khá nhiều VPS để dùng. Đặc biệt là các VPS linux, tuy nhiên chỉ cần setup Apache + PHP + mysql ...
Phạm Quốc Thắng viết hơn 2 năm trước
7 2
Bài viết liên quan
White
2 2
Bash script to fast serve Laravel project Lười gõ dòng lệnh quá nên tạo ra cái script để gõ nhanh :D laravelstart.sh /bin/bash if z "$1" ] ...
Vũ Hoàng Chung viết hơn 1 năm trước
2 2
Male avatar
9 1
Để bắt đầu làm thêm của riêng bạn thì ban đầu bạn phải có một theme trắng ( Blank theme ) để bắt đầu Theme trắng là gồm có các thư mục và file cơ b...
Doan Van Manh viết 3 năm trước
9 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
15 bài viết.
45 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á!