Просмотр исходного кода

1,将LEK、PEK移动到HDCP前面抄写。2,小米FireTV在CVT抄写的Key需要进行Check,同时FVP需要激活。

sat23 3 лет назад
Родитель
Сommit
17ebcef788
1 измененных файлов с 181 добавлено и 127 удалено
  1. 181 127
      FactoryTool_CShare/Views/OperationPanel.cs

+ 181 - 127
FactoryTool_CShare/Views/OperationPanel.cs

@@ -2760,6 +2760,133 @@ namespace MOKA_Factory_Tools
                 keyInfo.BT_MAC.result = true;
             }
 
+            //PEK抄写
+            if (WritePEK.Checked)
+            {
+                if (!CommonMethod.IsNumberAndWord(keyInfo.PEK.data))
+                {
+                    ErrMsg = string.Format("PEK format error!\r\n{0}", keyInfo.PEK.data);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
+                byte[] PEKData = SerialInit.HexToByte(keyInfo.PEK.data);
+                Log.WriteInfoLog("Write PEK...");
+                if (SerialCMD.SetFireTVPEK(TVPort, PEKData, out result, out data, out error, SerailDelay))
+                {
+                    SetsuccessStatus(m_writePEK);
+                    Log.WriteInfoLog("Check PEK...");
+                    if (writeCheckNow.PEKCheckcheck ? SerialCMD.CheckFireTVPEK(TVPort, out result, out data, out error, SerailDelay) : true)
+                    {
+                        SetsuccessStatus(m_checkPEK);
+                        Log.WriteInfoLog("Read PEK...");
+                        if (readCheckNow.PEKReadcheck ? SerialCMD.ReadFireTVPEK(TVPort, out result, out data, out error, SerailDelay) : true)
+                        {
+                            if (readCheckNow.PEKReadcheck)
+                            {
+                                if (SerialInit.BytesCompare_Base64(data, PEKData))
+                                {
+                                    SetsuccessStatus(m_readPEK);
+                                }
+                                else
+                                {
+                                    SetfailStatus(m_readPEK);
+                                    ErrMsg = string.Format("{0}  contrast PEK fail!", SN);
+                                    Log.WriteErrorLog(ErrMsg);
+                                    goto end;
+                                }
+                            }
+                        }
+                        else
+                        {
+                            SetfailStatus(m_readPEK);
+                            ErrMsg = string.Format("{0}  read PEK fail!", SN);
+                            Log.WriteErrorLog(ErrMsg);
+                            goto end;
+                        }
+                    }
+                    else
+                    {
+                        SetfailStatus(m_checkPEK);
+                        ErrMsg = string.Format("{0}  check PEK fail!", SN);
+                        Log.WriteErrorLog(ErrMsg);
+                        goto end;
+                    }
+                }
+                else
+                {
+                    SetfailStatus(m_writePEK);
+                    ErrMsg = string.Format("{0}  Write PEK fail!", SN);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
+                keyInfo.PEK.result = true;
+            }
+
+            //LEK抄写
+            if (WriteLEK.Checked)
+            {
+                if (!CommonMethod.IsNumberAndWord(keyInfo.LEK.data))
+                {
+                    ErrMsg = string.Format("LEK format error!\r\n{0}", keyInfo.LEK.data);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+                byte[] LEKData = SerialInit.HexToByte(keyInfo.LEK.data);
+                Log.WriteInfoLog("Write LEK...");
+                if (SerialCMD.SetFireTVLEK(TVPort, LEKData, out result, out data, out error, SerailDelay))
+                {
+                    SetsuccessStatus(m_writeLEK);
+                    Log.WriteInfoLog("Check LEK...");
+                    if (writeCheckNow.LEKCheckcheck ? SerialCMD.CheckFireTVLEK(TVPort, out result, out data, out error, SerailDelay) : true)
+                    {
+                        SetsuccessStatus(m_checkLEK);
+                        Log.WriteInfoLog("Read LEK...");
+                        if (readCheckNow.LEKReadcheck ? SerialCMD.ReadFireTVLEK(TVPort, out result, out data, out error, SerailDelay) : true)
+                        {
+                            if (readCheckNow.LEKReadcheck)
+                            {
+                                if (SerialInit.BytesCompare_Base64(data, LEKData))
+                                {
+                                    SetsuccessStatus(m_readLEK);
+                                }
+                                else
+                                {
+                                    SetfailStatus(m_readLEK);
+                                    ErrMsg = string.Format("{0}  contrast LEK fail!", SN);
+                                    Log.WriteErrorLog(ErrMsg);
+                                    goto end;
+                                }
+                            }
+                        }
+                        else
+                        {
+                            SetfailStatus(m_readLEK);
+                            ErrMsg = string.Format("{0}  read LEK fail!", SN);
+                            Log.WriteErrorLog(ErrMsg);
+                            goto end;
+                        }
+                    }
+                    else
+                    {
+                        SetfailStatus(m_checkLEK);
+                        ErrMsg = string.Format("{0}  check LEK fail!", SN);
+                        Log.WriteErrorLog(ErrMsg);
+                        goto end;
+                    }
+                }
+                else
+                {
+                    SetfailStatus(m_writeLEK);
+                    ErrMsg = string.Format("{0}  Write LEK fail!", SN);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
+                keyInfo.LEK.result = true;
+            }
+
             //HDCP KEY抄写
             if (WriteHDCP.Checked)
             {
@@ -3015,70 +3142,6 @@ namespace MOKA_Factory_Tools
                 keyInfo.WiDi.result = true;
             }
 
-            //PEK抄写
-            if (WritePEK.Checked)
-            {
-                if (!CommonMethod.IsNumberAndWord(keyInfo.PEK.data))
-                {
-                    ErrMsg = string.Format("PEK format error!\r\n{0}", keyInfo.PEK.data);
-                    Log.WriteErrorLog(ErrMsg);
-                    goto end;
-                }
-
-                byte[] PEKData = SerialInit.HexToByte(keyInfo.PEK.data);
-                Log.WriteInfoLog("Write PEK...");
-                if (SerialCMD.SetFireTVPEK(TVPort, PEKData, out result, out data, out error, SerailDelay))
-                {
-                    SetsuccessStatus(m_writePEK);
-                    Log.WriteInfoLog("Check PEK...");
-                    if (writeCheckNow.PEKCheckcheck ? SerialCMD.CheckFireTVPEK(TVPort, out result, out data, out error, SerailDelay) : true)
-                    {
-                        SetsuccessStatus(m_checkPEK);
-                        Log.WriteInfoLog("Read PEK...");
-                        if (readCheckNow.PEKReadcheck ? SerialCMD.ReadFireTVPEK(TVPort, out result, out data, out error, SerailDelay) : true)
-                        {
-                            if (readCheckNow.PEKReadcheck)
-                            {
-                                if (SerialInit.BytesCompare_Base64(data, PEKData))
-                                {
-                                    SetsuccessStatus(m_readPEK);
-                                }
-                                else
-                                {
-                                    SetfailStatus(m_readPEK);
-                                    ErrMsg = string.Format("{0}  contrast PEK fail!", SN);
-                                    Log.WriteErrorLog(ErrMsg);
-                                    goto end;
-                                }
-                            }
-                        }
-                        else
-                        {
-                            SetfailStatus(m_readPEK);
-                            ErrMsg = string.Format("{0}  read PEK fail!", SN);
-                            Log.WriteErrorLog(ErrMsg);
-                            goto end;
-                        }
-                    }
-                    else
-                    {
-                        SetfailStatus(m_checkPEK);
-                        ErrMsg = string.Format("{0}  check PEK fail!", SN);
-                        Log.WriteErrorLog(ErrMsg);
-                        goto end;
-                    }
-                }
-                else
-                {
-                    SetfailStatus(m_writePEK);
-                    ErrMsg = string.Format("{0}  Write PEK fail!", SN);
-                    Log.WriteErrorLog(ErrMsg);
-                    goto end;
-                }
-
-                keyInfo.PEK.result = true;
-            }
-
             //Youtube key抄写
             if (WriteYouTube.Checked)
             {
@@ -3554,69 +3617,6 @@ namespace MOKA_Factory_Tools
                 keyInfo.ECP.result = true;
             }
 
-            //LEK抄写
-            if (WriteLEK.Checked)
-            {
-                if (!CommonMethod.IsNumberAndWord(keyInfo.LEK.data))
-                {
-                    ErrMsg = string.Format("LEK format error!\r\n{0}", keyInfo.LEK.data);
-                    Log.WriteErrorLog(ErrMsg);
-                    goto end;
-                }
-                byte[] LEKData = SerialInit.HexToByte(keyInfo.LEK.data);
-                Log.WriteInfoLog("Write LEK...");
-                if (SerialCMD.SetFireTVLEK(TVPort, LEKData, out result, out data, out error, SerailDelay))
-                {
-                    SetsuccessStatus(m_writeLEK);
-                    Log.WriteInfoLog("Check LEK...");
-                    if (writeCheckNow.LEKCheckcheck ? SerialCMD.CheckFireTVLEK(TVPort, out result, out data, out error, SerailDelay) : true)
-                    {
-                        SetsuccessStatus(m_checkLEK);
-                        Log.WriteInfoLog("Read LEK...");
-                        if (readCheckNow.LEKReadcheck ? SerialCMD.ReadFireTVLEK(TVPort, out result, out data, out error, SerailDelay) : true)
-                        {
-                            if (readCheckNow.LEKReadcheck)
-                            {
-                                if (SerialInit.BytesCompare_Base64(data, LEKData))
-                                {
-                                    SetsuccessStatus(m_readLEK);
-                                }
-                                else
-                                {
-                                    SetfailStatus(m_readLEK);
-                                    ErrMsg = string.Format("{0}  contrast LEK fail!", SN);
-                                    Log.WriteErrorLog(ErrMsg);
-                                    goto end;
-                                }
-                            }
-                        }
-                        else
-                        {
-                            SetfailStatus(m_readLEK);
-                            ErrMsg = string.Format("{0}  read LEK fail!", SN);
-                            Log.WriteErrorLog(ErrMsg);
-                            goto end;
-                        }
-                    }
-                    else
-                    {
-                        SetfailStatus(m_checkLEK);
-                        ErrMsg = string.Format("{0}  check LEK fail!", SN);
-                        Log.WriteErrorLog(ErrMsg);
-                        goto end;
-                    }
-                }
-                else
-                {
-                    SetfailStatus(m_writeLEK);
-                    ErrMsg = string.Format("{0}  Write LEK fail!", SN);
-                    Log.WriteErrorLog(ErrMsg);
-                    goto end;
-                }
-
-                keyInfo.LEK.result = true;
-            }
-
             //Playready抄写
             if (WritePlayready.Checked)
             {
@@ -4791,6 +4791,7 @@ namespace MOKA_Factory_Tools
                 keyInfo.DSN.result = true;
             }
 
+            #region 小米FireTV功能;
             if (FunctionSettingNow.MITVEnable)
             {
                 // 读取PSN;
@@ -4807,6 +4808,58 @@ namespace MOKA_Factory_Tools
                     goto end;
                 }
 
+                // CVT抄写: Hashkey、HDCP_KEY1.4、HDCP2.2_KEY、CI_PLUS_KEY、ECP_KEY、FVP
+                // 激活FVP;
+                byte[] FVPData = new byte[] { };
+                if (!SerialCMD.ActiveMiFireTVFVP(TVPort, FVPData, out result, out data, out error, SerailDelay))
+                {
+                    ErrMsg = string.Format("激活FVP失败 {0}", error);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
+                if (!SerialCMD.CheckMiFireTVFVP(TVPort, out result, out data, out error, SerailDelay))
+                {
+                    ErrMsg = string.Format("Check FVP失败 {0}", error);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
+                if (!SerialCMD.CheckFireTVHashkey(TVPort, out result, out data, out error, SerailDelay))
+                {
+                    ErrMsg = string.Format("Check Hashkey失败 {0}", error);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
+                if (!SerialCMD.CheckCikey(TVPort, out result, out data, out error, SerailDelay))
+                {
+                    ErrMsg = string.Format("Check Cikey失败 {0}", error);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
+                if (!SerialCMD.CheckECP(TVPort, out result, out data, out error, SerailDelay))
+                {
+                    ErrMsg = string.Format("Check Cikey失败 {0}", error);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
+                if (!SerialCMD.CheckHDCP(TVPort, out result, out data, out error, SerailDelay))
+                {
+                    ErrMsg = string.Format("Check HDCP 失败 {0}", error);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
+                if (!SerialCMD.CheckHDCP22(TVPort, out result, out data, out error, SerailDelay))
+                {
+                    ErrMsg = string.Format("Check HDCP22 失败 {0}", error);
+                    Log.WriteErrorLog(ErrMsg);
+                    goto end;
+                }
+
                 // 读取HDCP;
                 if (!SerialCMD.GetHDCPKey(TVPort, out result, out data, out error, SerailDelay))
                 {
@@ -4827,6 +4880,7 @@ namespace MOKA_Factory_Tools
 
                 _MiKey._HDCP22 = data.Length;
             }
+            #endregion
 
             // 生成IDM报文;
             keycontent = GenerateReportInfo();