|
@@ -478,612 +478,188 @@ namespace MOKA_Factory_Tools
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 解析其他keys
|
|
|
+ /// 在线获取Key:最新接口;
|
|
|
/// </summary>
|
|
|
/// <param name="url"></param>
|
|
|
- /// <param name="keymessage"></param>
|
|
|
- /// <param name="keytype"></param>
|
|
|
- /// <param name="sqliteConn"></param>
|
|
|
+ /// <param name="sn"></param>
|
|
|
+ /// <param name="order"></param>
|
|
|
+ /// <param name="psn"></param>
|
|
|
+ /// <param name="firetv_device_code"></param>
|
|
|
+ /// <param name="connection"></param>
|
|
|
/// <param name="key"></param>
|
|
|
/// <param name="error"></param>
|
|
|
+ /// <param name="md5"></param>
|
|
|
/// <returns></returns>
|
|
|
- public static bool GetKeys(string url, string keymessage, string sn, string keytype, SQLiteConnection sqliteConn, out string key, out string error, string order, out string md5)
|
|
|
+ public static bool GetIDMKeys(string url, string sn, string order, string psn, string firetv_device_code, SQLiteConnection connection, out KeyInfo keys, out string msg)
|
|
|
{
|
|
|
+ msg = "";
|
|
|
+ keys = new KeyInfo();
|
|
|
string code;
|
|
|
- string desc;
|
|
|
- error = "";
|
|
|
- key = "";
|
|
|
- md5 = "";
|
|
|
+ bool result = false;
|
|
|
+
|
|
|
HttpHelper http = new HttpHelper();
|
|
|
HttpItem item = new HttpItem()
|
|
|
{
|
|
|
- Encoding = Encoding.Default,
|
|
|
+ Encoding = Encoding.UTF8,
|
|
|
Method = "post",
|
|
|
- ContentType = "application/x-www-form-urlencoded",
|
|
|
+ ContentType = "application/json",
|
|
|
KeepAlive = false
|
|
|
};
|
|
|
|
|
|
// 计算函数耗时;
|
|
|
Stopwatch watch = new Stopwatch();
|
|
|
watch.Start();
|
|
|
- switch (keymessage)
|
|
|
+
|
|
|
+ item.URL = url;
|
|
|
+ item.Postdata = string.Format("{{\"orderNum\":\"{0}\",\"sn\":\"{1}\",\"psn\":\"{2}\",\"orderCode\":\"{3}\"}}", order, sn, psn, firetv_device_code);
|
|
|
+ HttpResult httpResult = http.GetHtml(item);
|
|
|
+ if (httpResult.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
{
|
|
|
- case "DeviceID":
|
|
|
+ JObject jObject = JObject.Parse(httpResult.Html);
|
|
|
+ msg = JSON_SeleteNode(jObject, "msg");
|
|
|
+ code = JSON_SeleteNode(jObject, "code");
|
|
|
+ if ( code == "0" )
|
|
|
+ {
|
|
|
+ Dictionary<string, string> data = JsonConvert.DeserializeObject<Dictionary<string, string>>(jObject["data"].ToString());
|
|
|
+ if (data != null)
|
|
|
{
|
|
|
- item.URL = url + "/getid.do?";
|
|
|
- item.Postdata = "devicetype=tcl_unknown_model" + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
+ if (data.ContainsKey("mac") && data.ContainsKey("mac_md5"))
|
|
|
{
|
|
|
- Log.WriteGetKeyLog("\r\nGetDeviceID:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetDIDKeyXml(result.Html, "response", "id", out code, out desc, out key))
|
|
|
- {
|
|
|
- //
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse DID", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
+ keys.Mac.data = data["mac"];
|
|
|
+ keys.Mac.md5 = data["mac_md5"];
|
|
|
}
|
|
|
- else
|
|
|
+
|
|
|
+ if (data.ContainsKey("btMac") && data.ContainsKey("btMac_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get DID", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.BT_MAC.data = data["btMac"];
|
|
|
+ keys.BT_MAC.md5 = data["btMac_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "MAC":
|
|
|
- {
|
|
|
- item.URL = url + "/getmac.do?";
|
|
|
- item.Postdata = "typeString=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetMac:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "mac", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse Mac", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("wifiMac") && data.ContainsKey("wifiMac_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get Mac", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["wifiMac"];
|
|
|
+ keys.WiFi_MAC.md5 = data["wifiMac_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "HDCP_KEY":
|
|
|
- {
|
|
|
- item.URL = url + "/gethdcpkey.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetHDCP_KEY:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "key", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse hdcp", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("deviceid") && data.ContainsKey("deviceid_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get hdcp", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["deviceid"];
|
|
|
+ keys.WiFi_MAC.md5 = data["deviceid_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "CI_PLUS_KEY":
|
|
|
- {
|
|
|
- item.URL = url + "/getcikey.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetCI_PLUS_KEY:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "key", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse ciplus", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("hdcp") && data.ContainsKey("hdcp_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get ciplus", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["hdcp"];
|
|
|
+ keys.WiFi_MAC.md5 = data["hdcp_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "WiDi":
|
|
|
- {
|
|
|
- item.URL = url + "/getwidi.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetWiDi:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "key", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse widi", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("hdcp2") && data.ContainsKey("hdcp2_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get widi", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["hdcp2"];
|
|
|
+ keys.WiFi_MAC.md5 = data["hdcp2_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "HDCP2.2_KEY":
|
|
|
- {
|
|
|
- item.URL = url + "/gethdcpkey2.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetHDCP2.2_KEY:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "key", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse hdcp22", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("ci") && data.ContainsKey("ci_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get hdcp22", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["ci"];
|
|
|
+ keys.WiFi_MAC.md5 = data["ci_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "NETFILX_ESN":
|
|
|
- {
|
|
|
- item.URL = url + "/getnetfilxesn.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetNETFILX_ESN:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "esn", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse esn", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("ecp") && data.ContainsKey("ecp_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get esn", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["ecp"];
|
|
|
+ keys.WiFi_MAC.md5 = data["ecp_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "MGK_KEY":
|
|
|
- {
|
|
|
- item.URL = url + "/getmgk.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetMGK:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "key", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse MGK", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("acas") && data.ContainsKey("acas_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get MGK", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["acas"];
|
|
|
+ keys.WiFi_MAC.md5 = data["acas_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "Fairplay_KEY":
|
|
|
- {
|
|
|
- item.URL = url + "/getfairplay.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetFairplay:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "fairplay", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse Fairplay", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("lek") && data.ContainsKey("lek_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get Fairplay", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["lek"];
|
|
|
+ keys.WiFi_MAC.md5 = data["lek_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "ECP_KEY":
|
|
|
- {
|
|
|
- item.URL = url + "/getecp.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetecp:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "ecp", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse ecp", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("pek") && data.ContainsKey("pek_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get ecp", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["pek"];
|
|
|
+ keys.WiFi_MAC.md5 = data["pek_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "LEK":
|
|
|
- {
|
|
|
- item.URL = url + "/getlek.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetlek:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "lek", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse lek", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("playready") && data.ContainsKey("playready_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get lek", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["playready"];
|
|
|
+ keys.WiFi_MAC.md5 = data["playready_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "PEK":
|
|
|
- {
|
|
|
- item.URL = url + "/getpek.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetpek:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "pek", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse pek", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("netfilx") && data.ContainsKey("netfilx_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get pek", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["netfilx"];
|
|
|
+ keys.WiFi_MAC.md5 = data["netfilx_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "PlayReady_key":
|
|
|
- {
|
|
|
- item.URL = url + "/getplayready.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetplayready:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "playReady", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse playready", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("hash") && data.ContainsKey("hash_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get playready", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["hash"];
|
|
|
+ keys.WiFi_MAC.md5 = data["hash_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "Hashkey":
|
|
|
- {
|
|
|
- item.URL = url + "/gethash.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGethash:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "hash", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse hash", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("mgk") && data.ContainsKey("mgk_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get hash", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["mgk"];
|
|
|
+ keys.WiFi_MAC.md5 = data["mgk_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "YouTube_KEY":
|
|
|
- {
|
|
|
- item.URL = url + "/getYoutubeKey.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGet youtube key:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "youtubeKey", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse youtube key", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ if (data.ContainsKey("youtube") && data.ContainsKey("youtube_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get youtube key", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["youtube"];
|
|
|
+ keys.WiFi_MAC.md5 = data["youtube_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case "DAK":
|
|
|
- {
|
|
|
- item.URL = url + "/getdak.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
+
|
|
|
+ if (data.ContainsKey("fairplay") && data.ContainsKey("fairplay_md5"))
|
|
|
{
|
|
|
- Log.WriteGetKeyLog("\r\nGetDAK:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "dak", out code, out desc, out key, out md5))
|
|
|
- {
|
|
|
+ keys.WiFi_MAC.data = data["fairplay"];
|
|
|
+ keys.WiFi_MAC.md5 = data["fairplay_md5"];
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse dak", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
+ if (data.ContainsKey("widevine") && data.ContainsKey("widevine_md5"))
|
|
|
+ {
|
|
|
+ keys.WiFi_MAC.data = data["widevine"];
|
|
|
+ keys.WiFi_MAC.md5 = data["widevine_md5"];
|
|
|
}
|
|
|
- else
|
|
|
+
|
|
|
+ if (data.ContainsKey("attention") && data.ContainsKey("attention_md5"))
|
|
|
{
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get dak", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ keys.WiFi_MAC.data = data["attention"];
|
|
|
+ keys.WiFi_MAC.md5 = data["attention_md5"];
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- watch.Stop();
|
|
|
- Log.WriteInfoLog(string.Format("[GetKeys] order={0},sn={1},keytype={2},keymessage={3}, Elapsed={4}", order,sn,keytype,keymessage,watch.Elapsed.TotalMilliseconds));
|
|
|
- return true;
|
|
|
- }
|
|
|
|
|
|
- public static bool GetWidevineAnAttestationKey(
|
|
|
- string url,
|
|
|
- string sn,
|
|
|
- string keytype,
|
|
|
- SQLiteConnection sqliteConn,
|
|
|
- out bool isAndroidTV,
|
|
|
- out string Widevinekey,
|
|
|
- out string Attestationkey,
|
|
|
- out string error,
|
|
|
- string order,
|
|
|
- out string AttestationMd5)
|
|
|
- {
|
|
|
- string code;
|
|
|
- string desc;
|
|
|
- isAndroidTV = false;
|
|
|
- error = "";
|
|
|
- Widevinekey = "";
|
|
|
- Attestationkey = "";
|
|
|
- AttestationMd5 = "";
|
|
|
+ if (data.ContainsKey("dsn") && data.ContainsKey("dsn_md5"))
|
|
|
+ {
|
|
|
+ keys.WiFi_MAC.data = data["dsn"];
|
|
|
+ keys.WiFi_MAC.md5 = data["dsn_md5"];
|
|
|
+ }
|
|
|
|
|
|
- HttpHelper http = new HttpHelper();
|
|
|
- HttpItem item = new HttpItem()
|
|
|
- {
|
|
|
- Encoding = Encoding.Default,
|
|
|
- Method = "post",
|
|
|
- ContentType = "application/x-www-form-urlencoded",
|
|
|
- KeepAlive = false
|
|
|
- };
|
|
|
+ if (data.ContainsKey("dak") && data.ContainsKey("dak_md5"))
|
|
|
+ {
|
|
|
+ keys.WiFi_MAC.data = data["dak"];
|
|
|
+ keys.WiFi_MAC.md5 = data["dak_md5"];
|
|
|
+ }
|
|
|
|
|
|
- // 计算函数耗时;
|
|
|
- Stopwatch watch = new Stopwatch();
|
|
|
- watch.Start();
|
|
|
- item.URL = url + "/getWidevineAndAttestation.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&order=" + order + "&sn=" + sn;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGetWidevine_KEY:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (!Xmlconfig.GetWidevineAndAttestationKeyXml(result.Html, "response", out code, out desc, out isAndroidTV, out Widevinekey, out Attestationkey, out AttestationMd5))
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse widevineAndAttestation", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
+ result = true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get widevineAndAttestation", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
watch.Stop();
|
|
|
- Log.WriteInfoLog(string.Format("[getWidevineAndAttestation] order={0},sn={1},keytype={2},Elapsed={3}", order, sn, keytype, watch.Elapsed.TotalMilliseconds));
|
|
|
- return true;
|
|
|
- }
|
|
|
+ Log.WriteInfoLog(string.Format("[GetKeysOnline] order={0},sn={1},Elapsed={2}", order, sn, watch.Elapsed.TotalMilliseconds));
|
|
|
|
|
|
- public static bool GetAcasKey(string url, string keymessage, string sn, string keytype, SQLiteConnection sqliteConn, string order, out string acaskey_data, out string acaskey_datamd5, out string acaskey_tool, out string acaskey_toolmd5, out string error)
|
|
|
- {
|
|
|
- string code;
|
|
|
- string desc;
|
|
|
- error = "";
|
|
|
- acaskey_data = "";
|
|
|
- acaskey_datamd5 = "";
|
|
|
- acaskey_tool = "";
|
|
|
- acaskey_toolmd5 = "";
|
|
|
- HttpHelper http = new HttpHelper();
|
|
|
- HttpItem item = new HttpItem()
|
|
|
- {
|
|
|
- Encoding = Encoding.Default,
|
|
|
- Method = "post",
|
|
|
- ContentType = "application/x-www-form-urlencoded",
|
|
|
- KeepAlive = false
|
|
|
- };
|
|
|
+ if ( !result )
|
|
|
+ ReportErrormsg("Fail to GetIDMKeys ", msg + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + httpResult.Html, connection);
|
|
|
|
|
|
- // 计算函数耗时;
|
|
|
- Stopwatch watch = new Stopwatch();
|
|
|
- watch.Start();
|
|
|
- item.URL = url + "/getAcasKey.do?";
|
|
|
- item.Postdata = "type=" + keytype + "&sn=" + sn;
|
|
|
- if (sn.Trim().Length > 0)
|
|
|
- item.Postdata += "&order=" + order;
|
|
|
- HttpResult result = http.GetHtml(item);
|
|
|
- if (result.StatusCode == System.Net.HttpStatusCode.OK)
|
|
|
- {
|
|
|
- Log.WriteGetKeyLog("\r\nGet ACAS key:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
|
|
|
- if (Xmlconfig.Get2KeyInfoFromXml(result.Html, "acasKey_data", "acasKey_tool", out code, out desc, out acaskey_data, out acaskey_datamd5, out acaskey_tool, out acaskey_toolmd5))
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = desc;
|
|
|
- ReportErrormsg("Fail to parse ACAS key", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = result.StatusDescription;
|
|
|
- ReportErrormsg("Fail to get ACAS key", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
|
|
|
- return false;
|
|
|
- }
|
|
|
- watch.Stop();
|
|
|
- Log.WriteInfoLog(string.Format("[getAcasKey] order={0},sn={1},keytype={2},Elapsed={3}", order, sn, keytype, watch.Elapsed.TotalMilliseconds));
|
|
|
- return true;
|
|
|
+ return result;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -2800,7 +2376,7 @@ namespace MOKA_Factory_Tools
|
|
|
msg = jObject["Error"].Value<string>();
|
|
|
string data = jObject["Data"].ToString();
|
|
|
|
|
|
- if (bResult && data.StartsWith("成功"))
|
|
|
+ if (bResult)
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
@@ -3255,79 +2831,28 @@ namespace MOKA_Factory_Tools
|
|
|
foreach (FileInfo keyfile in Getkeyfile.GetFiles())
|
|
|
{
|
|
|
filename = keyfile.FullName;
|
|
|
- if (keyfile.Name.Contains("Online"))
|
|
|
+ try
|
|
|
{
|
|
|
- try
|
|
|
+ fskey = new FileStream(keyfile.FullName.ToString(), FileMode.Open, FileAccess.ReadWrite, FileShare.None);
|
|
|
{
|
|
|
- if (localmidList.host == null)
|
|
|
+ brkey = new StreamReader(fskey);
|
|
|
{
|
|
|
- if (CommonMethod.GetMidInfo(TestMode.serverurl, order, TestMode.MAC, "", "", errorDBNow, out localmidList))
|
|
|
+ if (fskey.Length == filesize || filesize == -1)
|
|
|
{
|
|
|
- ;
|
|
|
+ data = brkey.ReadToEnd();
|
|
|
+ return true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ error = "File size error.\r\nFilename:" + keyfile.Name + "\r\nFilesize:" + fskey.Length.ToString();
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
- if (keytype == "DeviceID")
|
|
|
- localmidList.keytype["DeviceID"] = "devicetype=tcl_unknown_model";
|
|
|
- else if (keytype == "MAC")
|
|
|
- keytype = "MAC";
|
|
|
- else if (keytype == "HDCPKEY")
|
|
|
- keytype = "HDCP_KEY";
|
|
|
- else if (keytype == "HDCPKEY22")
|
|
|
- keytype = "HDCP2.2_KEY";
|
|
|
- else if (keytype == "ESN")
|
|
|
- keytype = "NETFILX_ESN";
|
|
|
- else if (keytype == "Widevine")
|
|
|
- keytype = "Widevine_KEY";
|
|
|
- else if (keytype == "WiDi")
|
|
|
- keytype = "WiDi";
|
|
|
- else if (keytype == "CIKEY")
|
|
|
- keytype = "CI_PLUS_KEY";
|
|
|
- if (CommonMethod.GetKeys(localmidList.host, keytype, SN, localmidList.keytype[keytype], errorDBNow, out string did, out error, order, out string md5))
|
|
|
- {
|
|
|
- data = did;
|
|
|
- Log.WriteGetKeyLog("\r\n" + keytype + "= " + data);
|
|
|
- return true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- error = ex.Message;
|
|
|
- return false;
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
+ catch
|
|
|
{
|
|
|
- try
|
|
|
- {
|
|
|
- fskey = new FileStream(keyfile.FullName.ToString(), FileMode.Open, FileAccess.ReadWrite, FileShare.None);
|
|
|
- {
|
|
|
- brkey = new StreamReader(fskey);
|
|
|
- {
|
|
|
- if (fskey.Length == filesize || filesize == -1)
|
|
|
- {
|
|
|
- data = brkey.ReadToEnd();
|
|
|
- return true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = "File size error.\r\nFilename:" + keyfile.Name + "\r\nFilesize:" + fskey.Length.ToString();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- catch
|
|
|
- {
|
|
|
- ;
|
|
|
- }
|
|
|
+ ;
|
|
|
}
|
|
|
}
|
|
|
return false;
|
|
@@ -3360,86 +2885,29 @@ namespace MOKA_Factory_Tools
|
|
|
foreach (FileInfo keyfile in Getkeyfile.GetFiles())
|
|
|
{
|
|
|
filename = keyfile.FullName;
|
|
|
- if (keyfile.Name.Contains("Online"))
|
|
|
+ try
|
|
|
{
|
|
|
- try
|
|
|
+ fskey = new FileStream(keyfile.FullName.ToString(), FileMode.Open, FileAccess.Read, FileShare.None);
|
|
|
{
|
|
|
- if (localmidList.host == null)
|
|
|
+ brkey = new BinaryReader(fskey);
|
|
|
{
|
|
|
- if (CommonMethod.GetMidInfo(TestMode.serverurl, order, TestMode.MAC, "", "", errorDBNow, out localmidList))
|
|
|
+ if (fskey.Length == filesize || filesize == -1)
|
|
|
{
|
|
|
- ;
|
|
|
+ data = SerialInit.ByteToHex(brkey.ReadBytes((int)fskey.Length));
|
|
|
+ data = data.Replace(" ", "");
|
|
|
+ return true;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+ error = "File size error.\r\nFilename: " + keyfile.Name + "\r\nFilesize: " + fskey.Length.ToString();
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
- if (keytype == "DeviceID")
|
|
|
- localmidList.keytype["DeviceID"] = "devicetype=tcl_unknown_model";
|
|
|
- else if (keytype == "MAC")
|
|
|
- keytype = "MAC";
|
|
|
- else if (keytype == "HDCPKEY")
|
|
|
- keytype = "HDCP_KEY";
|
|
|
- else if (keytype == "HDCPKEY22")
|
|
|
- keytype = "HDCP2.2_KEY";
|
|
|
- else if (keytype == "ESN")
|
|
|
- keytype = "NETFILX_ESN";
|
|
|
- else if (keytype == "Widevine")
|
|
|
- keytype = "Widevine_KEY";
|
|
|
- else if (keytype == "WiDi")
|
|
|
- keytype = "WiDi";
|
|
|
- else if (keytype == "CIKEY")
|
|
|
- keytype = "CI_PLUS_KEY";
|
|
|
- else if (keytype == "MGK")
|
|
|
- keytype = "MGK_KEY";
|
|
|
- else if (keytype == "Attestation")
|
|
|
- keytype = "Attestation";
|
|
|
- else if (keytype == "Fairplay")
|
|
|
- keytype = "Fairplay_KEY";
|
|
|
- if (CommonMethod.GetKeys(localmidList.host, keytype, SN, localmidList.keytype[keytype], errorDBNow, out string did, out error, order, out string md5))
|
|
|
- {
|
|
|
- data = did;
|
|
|
- Log.WriteGetKeyLog("\r\n" + keytype + "= " + data);
|
|
|
- return true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- error = ex.Message;
|
|
|
- return false;
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
+ catch
|
|
|
{
|
|
|
- try
|
|
|
- {
|
|
|
- fskey = new FileStream(keyfile.FullName.ToString(), FileMode.Open, FileAccess.Read, FileShare.None);
|
|
|
- {
|
|
|
- brkey = new BinaryReader(fskey);
|
|
|
- {
|
|
|
- if (fskey.Length == filesize || filesize == -1)
|
|
|
- {
|
|
|
- data = SerialInit.ByteToHex(brkey.ReadBytes((int)fskey.Length));
|
|
|
- data = data.Replace(" ", "");
|
|
|
- return true;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- error = "File size error.\r\nFilename: " + keyfile.Name + "\r\nFilesize: " + fskey.Length.ToString();
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- catch
|
|
|
- {
|
|
|
- ;
|
|
|
- }
|
|
|
+ ;
|
|
|
}
|
|
|
}
|
|
|
return false;
|