国产精品久av福利在线观看_亚洲一区国产精品_亚洲黄色一区二区三区_欧美成人xxxx_国产精品www_xxxxx欧美_国产精品久久婷婷六月丁香_国产特级毛片

錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
Chrome CDM框架重大缺陷,DRM視頻輕易復制

作者: 佚名  日期:2017-05-19 07:46:52   來源: 本站整理

我的工作領域和視頻相關,保護視頻內容非常重要,主流的瀏覽器和移動設備都支持DRM。近日我偶然發現Google Chrome瀏覽器的CDM(Content Decryption Module-內容解密模塊)框架存在重大的設計缺陷,通過一些手段就可以輕松繞過DRM保護機制,非常容易的獲取解密后的數據,從而把視頻重新封裝為未壓縮的MP4等格式文件,還可以做到在觀看的過程中直接進行無加密的視頻直播。

發現問題后,我花了一點時間,寫了一個測試程序,驗證了我的想法。由于DRM的保護機制非常的重要,如果可以輕松被攻破,將對整個視頻領域是一個威脅,所以我當時就向Google Chromium提交了bug,說明了CDM的框架的重大缺陷,并描述了實現細節。
這是的issue url(一般人沒有權限查看,僅內部可見):
https://bugs.chromium.org/p/chromium/issues/detail?id=721639

Google有漏洞獎勵規則,這是規則描述地址:
https://www.google.com/about/app ... -rewards/index.html
其實我當時的想法是,如果能獲取來自Google的獎勵,不論獎金多少,都將是一個至高無上的榮譽。

我提交后,Chromium團隊很快的做出了回復,他們確認這是一個重大的安全問題,而且影響所有運行Chrome瀏覽器的操作系統,包括: Linux, Windows, Chrome, Mac等等. 但另一個員工說這是一個已知的問題,并提供了一個issue號: 658022,但我無限查看漏洞內容是否與我提交的一致。之后我向google 團隊的幾個成員發了郵件,說既然是已知的問題,那也就是不符合獎勵規則,因此我也就可以公布細節,讓視頻內容公司重視這個問題,以便盡早的商討更加安全的解決方案。

說了這么多,只想說明一下事件的背景,下面我就說明實現細節,很多東西可能有些專業,主要講述一個過程。

1.安裝Google Chrome 32bit版本(32版本容易使用工具進行調試)
2.Chrome內置的CDM是Widevine(幾年前收購來的),目錄在Google\Chrome\Application\58.0.3029.110\WidevineCdm,在子目錄_platform_specific\win_x86有下2個dll:
    widevinecdm.dll - widevine核心模塊,導出的函數有:InitializeCdmModule_4,DeinitializeCdmModule,CreateCdmInstance,GetCdmVersion,GetHandleVerifier
    widevinecdmadapter.dll - PPAPI插件標準適配庫,導出函數有:PPP_GetInterface,PPP_InitializeModule,PPP_ShutdownModule
3.正常情況下播放DRM視頻的流程:
    Chrome -> Widevine CDM Adapter(widevinecdmadapter.dll) -> Widevine CDM Module (widevinecdm.dll)
    widevinecdmadapter.dll調用widevinecdm.dll的導出函數CreateCdmInstance來創建CDM實例.
4.CDM框架是Google Chrome的標準,所以API參數和接口都有C++ include文件,比如API CreateCdmInstance:
    CDM_API void* CreateCdmInstance(int cdm_interface_version, const char* key_system, uint32_t key_system_size, GetCdmHostFunc get_cdm_host_func, void* user_data);

    CDM實例要繼承于class ContentDecryptionModule_8,查看class ContentDecryptionModule_8,發現了一個非常重要的函數:Decrypt,主要是將加密的數據傳入,解密后的數據傳出,我的天吶,只要截獲了這個函數不就搞定了嗎!!!

[C++] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
class CDM_CLASS_API ContentDecryptionModule_8 {      // Decrypts the |encrypted_buffer|.
   //
   // Returns kSuccess if decryption succeeded, in which case the callee
   // should have filled the |decrypted_buffer| and passed the ownership of
   // |data| in |decrypted_buffer| to the caller.
   // Returns kNoKey if the CDM did not have the necessary decryption key
   // to decrypt.
   // Returns kDecryptError if any other error happened.
   // If the return value is not kSuccess, |decrypted_buffer| should be ignored
   // by the caller.
   virtual Status Decrypt(const InputBuffer& encrypted_buffer,
                          DecryptedBlock* decrypted_buffer) = 0;
 };


5.了解了API參數和class定義后,就設想如果在widevinecdmadapter.dll 和 widevinecdm.dll之間在互相調用時截獲到解密后的數據就可以繞過DRM保護機制.
6.開始寫一個DLL, 名為CdmProxy.dll, 我自己的CreateCdmInstance函數,這部分不解釋了:

[C++] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
extern "C" __declspec(dllexport) void * CDMAPI_DEFINE my_CreateCdmInstance(int cdm_interface_version, const char* key_system,
    uint32_t key_system_size, GetCdmHostFunc get_cdm_host_func, void* user_data)
{
    gHostUserData = user_data;
    wsprintf(wchLog, L"CdmProxy - call CreateCdmInstance(%d, %S, %d, 0x%08X, 0x%08X)",
        cdm_interface_version, key_system, key_system_size, get_cdm_host_func, user_data);
    OutputDebugStringW(wchLog);
    void *p = pCreateCdmInstance(cdm_interface_version, key_system, key_system_size, get_cdm_host_func, user_data);
 
    cdm::ContentDecryptionModule_8 *pCdmModule = (cdm::ContentDecryptionModule_8 *)(p);
    MyContentDecryptionModuleProxy *pMyCdmModule = new MyContentDecryptionModuleProxy(pCdmModule);
 
    return pMyCdmModule;
}


    我的代{過}{濾}理class MyContentDecryptionModuleProxy,代碼不解釋:
    // class MyContentDecryptionModuleProxy

[C++] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class MyContentDecryptionModuleProxy : public cdm::ContentDecryptionModule_8
{
public:
    MyContentDecryptionModuleProxy(cdm::ContentDecryptionModule_8 *pCdm)
    {
        mCdm = pCdm;
    }
private:
    cdm::ContentDecryptionModule_8 *mCdm;
 
public:
    // 最重要的解密函數,保存原數據和解密后的數據
    virtual cdm::Status Decrypt(const cdm::InputBuffer& encrypted_buffer, cdm::DecryptedBlock* decrypted_buffer)
    {
        cdm::Status status = cdm::kSuccess;
        codelive();
        DebugDecryptBreak(encrypted_buffer.iv, encrypted_buffer.key_id, encrypted_buffer.data);
        status = mCdm->Decrypt(encrypted_buffer, decrypted_buffer);
         
        string strIV = data2HexString((const char *)encrypted_buffer.iv, encrypted_buffer.iv_size);
        string strEncData = data2HexString((const char *)encrypted_buffer.data, min(encrypted_buffer.data_size, 32));
        string strDecData = data2HexString((const char *)decrypted_buffer->DecryptedBuffer()->Data(),
            min(decrypted_buffer->DecryptedBuffer()->Size(), 32));
        wsprintf(wchLog, L"CdmProxy - call Decrypt(IV:%S, encData(%d):%S, decData(%d):%S)",
            strIV.c_str(), encrypted_buffer.data_size, strEncData.c_str(),
            decrypted_buffer->DecryptedBuffer()->Size(), strDecData.c_str());
        OutputDebugStringW(wchLog);
 
        if(mEncFile == NULL)
        {
            mEncFile = fopen("d:\\cdm_enc.bin", "wb");
        }
        if(mEncFile != NULL)
        {
            fwrite(encrypted_buffer.data, 1, encrypted_buffer.data_size, mEncFile);
        }
        if(mDecFile == NULL)
        {
            mDecFile = fopen("d:\\cdm_dec.bin", "wb");
        }
        if(mDecFile != NULL)
        {
            fwrite(decrypted_buffer->DecryptedBuffer()->Data(), 1, decrypted_buffer->DecryptedBuffer()->Size(), mDecFile);
        }
        return status;
    }
};


7.核心代碼寫完了,就要解決DLL加載的問題,嘗試了幾種簡單的方式,分別把widevinecdm.dll和widevinecdmadapter.dll改名為widevinecdm_org.dll和widevinecdmadapter_org.dll,然后自己寫一個DLL,導出和widevinecdm.dll或者widevinecdmadapter.dll相同的API,然后再調用原來DLL的方式,但這種方式發現不可行,原因在于Chrome的安全沙盒,所有的插件都是加載的沙盒進程空間,敏感的API都無法使用,比如:ReadProcessMemory,CeateFile,OutputDebugString等等. 逃脫沙盒(Sandbox Escape)是Google獎金數額非常高的,最高可達$15,000.
8.既然進程都是Chrome創建的,所以就直接對chrome.exe下手,直接patch chrome.exe,讓其加載我的CdmProxy.dll,結果成功了,畢竟chrome啟動時還未啟用沙盒機制,所以沒花費太多技術就解決了DLL加載問題.

9.改變API截獲方式,對widevinecdmadapter.dll進行動態的補丁,將調用API CreateCdmInstance的地址改為我自己的API my_CreateCdmInstance,然后在DLL加載時進行以下處理:

[C++] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    switch(ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        {
            hWideVineCdm = LoadLibraryW(L"{PATH}\\widevinecdm.dll");
 
            pInitializeCdmModule_4 = (InitializeCdmModule_4Func)GetProcAddress(hWideVineCdm, "InitializeCdmModule_4");
            pDeinitializeCdmModule = (DeinitializeCdmModuleFunc)GetProcAddress(hWideVineCdm, "DeinitializeCdmModule");
            pCreateCdmInstance = (CreateCdmInstanceFunc)GetProcAddress(hWideVineCdm, "CreateCdmInstance");
            pGetCdmVersion = (GetCdmVersionFunc)GetProcAddress(hWideVineCdm, "GetCdmVersion");
 
            hWideVineCdmAdapter = LoadLibraryW(L"{PATH}\\widevinecdmadapter.dll");
            if(hWideVineCdmAdapter != NULL)
            {
                DWORD dwSrcAddr = (DWORD)hWideVineCdmAdapter + 0x0000446D;
                const BYTE chVerify[] = { 0xFF, 0x15 };
                BOOL isOK = patch_DsCallFunction(dwSrcAddr, (DWORD)my_CreateCdmInstance, chVerify, sizeof(chVerify));
                wsprintf(wchLog, L"CdmProxy - patch CreateCdmInstance, Address:0x%08X-0x%08X, %s.",
                    dwSrcAddr, (uint32_t)my_CreateCdmInstance,
                    isOK ? L"OK" : L"FAILED");
                OutputDebugStringW(wchLog);
            }
        }
        break ;
    }
}


10.然后進行測試,播放一個有DRM保護的DASH視頻:
    
https://shaka-player-demo.appspo ... gleKey/Manifest.mpd
    發現文件沒保存下來,LOG也沒輸出,想必是安全沙盒起作用了。
11.又要逃脫沙盒,經過研究,發現根本不需要,只要在chrome啟動參數增加 --no-sandbox 即可。我的天吶,為啥要提供這樣一個后門啊!!!

12.再次播放加密的視頻,文件順利保存下來,LOG也輸出成功,經驗證,解密后的數據與之前未加密的數據是一致的。

13.Google Chrome的CDM就這樣被破解了,非常的簡單的就繞過了Widevine DRM的算法,這應該是Chrome CDM的框架設計的嚴重問題,估計要改變也不是非常容易的。

這是LOG數據:

( "CdmProxy - call CreateCdmInstance(8, com.widevine.alpha, 18, 0x70F86310, 0x00D75A88)" )           0.0001399
( "CdmProxy - call CreateCdmInstance(8, com.widevine.alpha, 18, 0x70F86310, 0x00D757C8)" )           0.0000937
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F00000000000000000, encData(348):FFF158402B9FFC2FF05300F2BF83E9A0, decData(0):)" )           0.0001350
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F00000000000000000, encData(348):FFF158402B9FFC2FF05300F2BF83E9A0, decData(348):FFF158402B9FFC00D03403E95B8639BD)" )         0.0001335
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F00000000000000000, encData(348):FFF158402B9FFC2FF05300F2BF83E9A0, decData(348):FFF158402B9FFC00D03403E95B8639BD)" )         0.0001032
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F10000000000000000, encData(348):FFF158402B9FFC487380B8930FFFAB41, decData(348):FFF158402B9FFC00F43420C24620902C)" )         0.0001392
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F20000000000000000, encData(349):FFF158402BBFFC1175E15FE4B6154B30, decData(349):FFF158402BBFFC00FA342D90762A3188)" )         0.0001032
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F30000000000000000, encData(348):FFF158402B9FFCC45D5715E87235E5CF, decData(348):FFF158402B9FFC00F8342CEC825A2D85)" )         0.0000994
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F40000000000000000, encData(348):FFF158402B9FFC6749FBAF64926471DE, decData(348):FFF158402B9FFC00F83421884529290A)" )         0.0000880
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F50000000000000000, encData(349):FFF158402BBFFCF8132EFC31C186DDE1, decData(349):FFF158402BBFFC00F2342D9049124988)" )         0.0001088
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F60000000000000000, encData(348):FFF158402B9FFC82EDA0BD4AB7158938, decData(348):FFF158402B9FFC00EE342D7475223D85)" )         0.0001035
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F70000000000000000, encData(348):FFF158402B9FFC4B2C585CC10F74036E, decData(348):FFF158402B9FFC00F4342D74662A2088)" )         0.0001555
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F80000000000000000, encData(349):FFF158402BBFFCCF33665AC4E219EC92, decData(349):FFF158402BBFFC00FA342E30547B0604)" )         0.0001494
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818F90000000000000000, encData(348):FFF158402B9FFC2C9A7362594261CE23, decData(348):FFF158402B9FFC00F4342E305429150A)" )         0.0004035
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818FA0000000000000000, encData(348):FFF158402B9FFC1905A086AE3CEF0AEC, decData(348):FFF158402B9FFC00EE342E3456391906)" )         0.0005913
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818FB0000000000000000, encData(349):FFF158402BBFFC8D0EB865013262FB6E, decData(349):FFF158402BBFFC00F6342E34563A2186)" )         0.0001479
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818FC0000000000000000, encData(348):FFF158402B9FFC484211C612F22283FB, decData(348):FFF158402B9FFC0102342E74482A2E02)" )         0.0002507
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818FD0000000000000000, encData(348):FFF158402B9FFC283122B1DDE740DAC2, decData(348):FFF158402B9FFC0104342EB464190D08)" )         0.0003011
( "CdmProxy - call Decrypt(IV:6CD1F4FBCE5818FE0000000000000000, encData(349):FFF158402BBFFCAC8759D48FF1A258A3, decData(349):FFF158402BBFFC010E342ED04A1A2982)" )         0.0003095


DRM這么多年了,很多保護機制和算法都做的非常嚴密,但還是被Zhu一樣的隊友給出賣了。

公開這個研究,是為了讓廣大的視頻公司不要以為DRM非常的安全,有時候真的是不堪一擊,某個環節出現漏洞,同樣面臨極大的安全問題。

如果此篇文章不適合公布,請通知我,謝謝。



熱門文章
  • 機械革命S1 PRO-02 開機不顯示 黑...
  • 聯想ThinkPad NM-C641上電掉電點不...
  • 三星一體激光打印機SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數和判...
  • IIS 8 開啟 GZIP壓縮來減少網絡請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機始終停留在開機界面...
  • 常見打印機清零步驟
  • 安裝驅動時提示不包含數字簽名的解...
  • 共享打印機需要密碼的解決方法
  • 圖解Windows 7系統快速共享打印機的...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    午夜影院在线免费观看| jizz18欧美18| 精品人在线二区三区| 欧美第一页草草影院浮力| 无码粉嫩虎白一线天在线观看| 一区二区在线观看不卡| 懂色av中文在线| 97netav| 国产精品视频一区二区免费不卡| 亚洲欧美色图片| 精品美女久久| 成年人免费在线视频网站| 亚洲精品老司机| 日韩精品成人在线观看| 91超碰在线观看| 亚洲自拍偷拍色片视频| 成人免费观看男女羞羞视频| 伊人成年综合网| 一夜七次郎国产精品亚洲| 秋霞a级毛片在线看| av在线免费观看不卡| 7777精品伊人久久久大香线蕉的| 青青草视频在线观看| 成人精品久久一区二区三区| 日韩超碰人人爽人人做人人添| 国产精品视频一区麻豆| 日本不卡一二三区| 国产精品色婷婷久久58| av网站在线免费观看| 野外做受又硬又粗又大视频√| 色综合天天视频在线观看| 天天综合亚洲| 亚洲综合成人av| 日本在线一二三区| 欧美区在线观看| 大香伊人中文字幕精品| 91香蕉视频在线观看视频| 中文字幕亚洲综合久久筱田步美| 国产欧美黑人| 欧美日韩在线播放一区二区| 日韩国产欧美在线视频| 天堂在线中文字幕| 日韩欧美不卡在线| 狠狠爱在线视频一区| 在线不卡一区| 传媒在线观看| 国产又爽又黄的视频| 久久精品日产第一区二区三区精品版| 亚洲2区在线| 国产在线欧美在线| 亚洲精品v欧美精品v日韩精品| 不卡一区视频| 婷婷丁香一区二区三区| 男人女人拔萝卜视频| 欧美精品电影在线播放| 久久黄色网页| 日韩性xxxx| 日韩精品高清在线观看| 免费国产在线观看| 黄色影视在线观看| 久草精品在线| 五月婷婷婷婷婷| 日本韩国欧美精品大片卡二| 7777精品久久久大香线蕉| 国产精品自拍在线| a国产在线视频| 国产a级黄色片| 日本免费久久高清视频| 亚洲黄网站在线观看| 97人人澡人人爽91综合色| 亚洲欧美另类在线视频| 男人的天堂99| 欧美另类极品videosbest最新版本| 久久日韩粉嫩一区二区三区| 国产欧美亚洲精品a| 91精东传媒理伦片在线观看| 亚洲欧洲在线视频| www 日韩| 亚洲大片免费观看| 成人黄色一区二区| 在线观看国产精品淫| 日本成人中文| 韩日视频在线| 俺去俺来也在线www色官网| 免费黄频在线观看| 2018中文字幕一区二区三区| 国产精品18hdxxxⅹ在线| 极品尤物一区二区| 45www国产精品网站| 在线中文字幕一区| 成人污版视频| 黑人巨大精品| 精品一性一色一乱农村| 国产福利在线视频| 国产一二三区在线| 在线小视频网址| 日本熟妇色xxxxx日本免费看| 亚洲成人中文字幕| 影音先锋日韩精品| www黄在线观看| 国产精品一区二区av白丝下载 | 欧美一区二区三区久久| www成人在线视频| 日本高清在线观看视频| 中文字幕乱码在线| 精品久久久久久久久久久久久久久 | 一区二区中文字幕在线| 欧美一区在线观看视频| 丁香花免费高清完整在线播放| 亚洲一区二区中文字幕在线观看| 国产精品96久久久久久又黄又硬| 成人h动漫精品一区二区| 天天天天天天操| 亚洲激情欧美色图| 亚洲一二三精品| 欧美诱惑福利视频| 日本高清不卡在线观看| 销魂美女一区二区三区视频在线| 日韩天堂在线| 午夜在线视频播放| 国产视频三级在线观看播放| 灌醉mj刚成年的大学平面模特| 在线观看国产小视频| 最近中文字幕在线mv视频在线| 欧美性猛交久久久乱大交小说| 中文字幕最新精品| 欧美色道久久88综合亚洲精品| 亚洲a∨精品一区二区三区导航| 欧美人与牲动交xxxxbbbb| 欧美4khd| 国产69久久| 少妇视频在线| 国产剧情在线观看一区| 久久99精品久久久久久欧洲站| 日韩精品一区二区三区免费视频| 午夜激情视频在线| 免费黄色网页| 可以在线看的黄色网址| 久久久999成人| 欧美性69xxxx肥| 色欧美88888久久久久久影院| 亚洲乱码日产精品bd| 日本不卡一二三区黄网| www.成人网| 巨胸喷奶水www久久久免费动漫| 久久亚洲精品人成综合网| heyzo中文字幕在线| 中文字幕在线视频网| 九九九热视频| 少妇精品无码一区二区免费视频| 男人天堂手机在线视频| 欧美xxxx黑人又粗又长精品| 日韩视频免费观看高清在线视频| 欧美日韩亚州综合| 青青草97国产精品免费观看 | 久热免费视频| 一级性生活视频| 久久精品国产亚洲精品| 欧美日韩一区视频| 国产精品伦一区二区三级视频| 日韩成人dvd| 好看的日韩av电影| 国产亚洲依依| 精精国产xxxx视频在线动漫| 成人午夜国产福到在线| 精品一区二区三区五区六区七区 | 加勒比久久综合| 精品视频黄色| 影音先锋日韩在线| 欧美日韩大片免费观看| 九九精品久久| 成人中文字幕视频| 精品在线99| 好看的日韩av电影| 在线一区免费观看| 五月亚洲婷婷| 国内av一区二区三区| 宅男视频免费在线观看视频| jizz18欧美| 国产三级精品在线观看| 一女二男一黄一片| 国产黄色美女视频| 亚洲成a人片77777老司机| 四季av综合网站| 国产成人亚洲欧洲在线| 欧美丰满熟妇bbbbbb百度| 久久久久久蜜桃一区二区| www.四虎精品| 在线免费观看a级片| 亚洲黄色一级大片| 思思久久99热只有频精品66| 蜜桃视频网站在线观看| 精品国产不卡| 亚洲色图都市小说| 欧美国产日本高清在线 | 久久久久久久黄色片| 手机看片久久久| 欧美高清性粉嫩交| 最近2018年手机中文在线| 91ph在线|