└── SDKDecryption ├── .vs └── SDKDecryption │ └── v14 │ └── .suo ├── SDKDecryption.sln └── SDKDecryption ├── BodyDecryption.cs ├── Decryption.cs ├── DecryptionFormatJson.cs ├── DecryptionViewer.Designer.cs ├── DecryptionViewer.cs ├── DecryptionViewer.resx ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs └── Resources.resx ├── SDKDecryption.csproj └── SDKDecryption.csproj.user /SDKDecryption/.vs/SDKDecryption/v14/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/willysys/SDKDecryption/5af5aa2512247294725572bb612597e84c7817e8/SDKDecryption/.vs/SDKDecryption/v14/.suo -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SDKDecryption", "SDKDecryption\SDKDecryption.csproj", "{832E3205-6609-4AA5-B41C-F22B87CEE2A0}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {832E3205-6609-4AA5-B41C-F22B87CEE2A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {832E3205-6609-4AA5-B41C-F22B87CEE2A0}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {832E3205-6609-4AA5-B41C-F22B87CEE2A0}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {832E3205-6609-4AA5-B41C-F22B87CEE2A0}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/BodyDecryption.cs: -------------------------------------------------------------------------------- 1 | using Fiddler; 2 | using Org.BouncyCastle.Crypto; 3 | using Org.BouncyCastle.Crypto.Encodings; 4 | using Org.BouncyCastle.Crypto.Engines; 5 | using Org.BouncyCastle.OpenSsl; 6 | using System; 7 | using System.Collections.Generic; 8 | using System.IO; 9 | using System.IO.Compression; 10 | using System.Linq; 11 | using System.Reflection; 12 | using System.Resources; 13 | using System.Security.Cryptography; 14 | using System.Text; 15 | using System.Threading.Tasks; 16 | 17 | namespace SDKDecryption 18 | { 19 | class BodyDecryption 20 | { 21 | private static string iv = ""; 22 | 23 | public static string decryptSDKBody(String skey,String bodyContent) 24 | { 25 | string result; 26 | //将url_safe_base64编码的数据转换为base64编码的RSA加密的AES密钥 27 | String skey_base64 = url_safe_base64_decode(skey); 28 | //将RSA加密的skey进行解密,得到AES私钥 29 | byte[] aes_key = RSADecryptionWithXMLKey(skey_base64); 30 | String Result = Convert.ToBase64String(aes_key); 31 | result = AESDecryption(bodyContent, Result, iv); 32 | return result; 33 | } 34 | 35 | public static string decryptSDKBody(string skey,byte[] bodyContent) 36 | { 37 | string result; 38 | //将url_safe_base64编码的数据转换为base64编码的RSA加密的AES密钥 39 | String skey_base64 = url_safe_base64_decode(skey); 40 | //将RSA加密的skey进行解密,得到AES私钥 41 | byte[] aes_key = RSADecryptionWithXMLKey(skey_base64); 42 | String Result = Convert.ToBase64String(aes_key); 43 | result = AESDecryption(bodyContent, Result, iv); 44 | return result; 45 | } 46 | 47 | 48 | public static byte[] RSADecryptionWithXMLKey(string decryptString) 49 | { 50 | Assembly assm = Assembly.GetExecutingAssembly(); 51 | Stream istr = assm.GetManifestResourceStream("SDKDecryption.Resources.PrivateKey.xml"); 52 | StreamReader sr = new StreamReader(istr, Encoding.Default); 53 | StringBuilder buffer = new StringBuilder(); 54 | string strline; 55 | while ((strline = sr.ReadLine()) != null) 56 | { 57 | buffer.Append(strline); 58 | } 59 | String xmlPrivateKey = (buffer.ToString()); 60 | System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 61 | rsa.FromXmlString(xmlPrivateKey); 62 | byte[] PlainTextBArray = Convert.FromBase64String(decryptString); 63 | byte[] DypherTextBArray = rsa.Decrypt(PlainTextBArray, false); 64 | String Result = Convert.ToBase64String(DypherTextBArray); 65 | return DypherTextBArray; 66 | } 67 | 68 | //AES解密 69 | //解密内容是字符串 70 | public static string AESDecryption(byte[] text, string AesKey, string AesIV) 71 | { 72 | try 73 | { 74 | 75 | //判断是否是16位 如果不够补0 76 | //16进制数据转换成byte 77 | byte[] encryptedData = text; 78 | RijndaelManaged rijndaelCipher = new RijndaelManaged(); 79 | rijndaelCipher.Key = Convert.FromBase64String(AesKey); 80 | rijndaelCipher.IV = Encoding.ASCII.GetBytes(AesIV); 81 | rijndaelCipher.Mode = CipherMode.CBC; 82 | rijndaelCipher.Padding = PaddingMode.None; 83 | ICryptoTransform transform = rijndaelCipher.CreateDecryptor(); 84 | byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length); 85 | byte[] contentText = Decompress(plainText); 86 | string result = Encoding.UTF8.GetString(contentText); 87 | if (result == null) 88 | { 89 | FiddlerApplication.Log.LogString("aes decryption result is null"); 90 | } 91 | return result; 92 | } 93 | catch (Exception ex) 94 | { 95 | FiddlerApplication.Log.LogString(ex.ToString()); 96 | return null; 97 | } 98 | } 99 | 100 | 101 | //AES解密 102 | public static string AESDecryption(string text, string AesKey, string AesIV) 103 | { 104 | try 105 | { 106 | 107 | //判断是否是16位 如果不够补0 108 | //text = tests(text); 109 | //16进制数据转换成byte 110 | byte[] encryptedData = Convert.FromBase64String(text); // strToToHexByte(text); 111 | Console.WriteLine(encryptedData.Length + ""); 112 | RijndaelManaged rijndaelCipher = new RijndaelManaged(); 113 | rijndaelCipher.Key = Convert.FromBase64String(AesKey); // Encoding.UTF8.GetBytes(AesKey); 114 | rijndaelCipher.IV = Encoding.ASCII.GetBytes(AesIV); 115 | rijndaelCipher.Mode = CipherMode.CBC; 116 | rijndaelCipher.Padding = PaddingMode.None; 117 | ICryptoTransform transform = rijndaelCipher.CreateDecryptor(); 118 | byte[] plainText = transform.TransformFinalBlock(encryptedData, 0, encryptedData.Length); 119 | byte[] contentText = Decompress(plainText); 120 | string result = Encoding.UTF8.GetString(contentText); 121 | FiddlerApplication.Log.LogString(result); 122 | return result; 123 | } 124 | catch (Exception ex) 125 | { 126 | //Console.WriteLine(ex.ToString()); 127 | FiddlerApplication.Log.LogString(ex.ToString()); 128 | return null; 129 | 130 | } 131 | } 132 | 133 | 134 | //gzip格式数据解压缩 135 | public static byte[] Decompress(byte[] zippedData) 136 | { 137 | MemoryStream ms = new MemoryStream(zippedData); 138 | GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Decompress); 139 | MemoryStream outBuffer = new MemoryStream(); 140 | byte[] block = new byte[1024]; 141 | while (true) 142 | { 143 | int bytesRead = compressedzipStream.Read(block, 0, block.Length); 144 | if (bytesRead <= 0) 145 | break; 146 | else 147 | outBuffer.Write(block, 0, bytesRead); 148 | } 149 | compressedzipStream.Close(); 150 | return outBuffer.ToArray(); 151 | } 152 | 153 | 154 | //将url_safe_base64编码格式的字符串转换成base64编码格式的url 155 | public static String url_safe_base64_decode(String skey) 156 | { 157 | String decode_skey = skey.Replace("_", "/").Replace("-", "+"); 158 | int len = skey.Length % 4; 159 | if (len > 0) 160 | { 161 | skey += "====".Substring(0, 4 - len); 162 | } 163 | return decode_skey; 164 | } 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/Decryption.cs: -------------------------------------------------------------------------------- 1 | using Fiddler; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using Standard; 8 | using System.Windows.Forms; 9 | using System.Text.RegularExpressions; 10 | 11 | namespace SDKDecryption 12 | { 13 | public sealed class Decryption : Inspector2, IRequestInspector2, IBaseInspector2 14 | { 15 | 16 | private DecryptionViewer myControl = new DecryptionViewer(); 17 | private bool m_bDirty; 18 | private bool m_bReadOnly; 19 | private byte[] m_entityBody; 20 | private HTTPRequestHeaders m_Headers; 21 | private JSONRequestViewer jsonRequestViewer; 22 | 23 | 24 | public Decryption() 25 | { 26 | this.jsonRequestViewer = new JSONRequestViewer(); 27 | } 28 | 29 | public bool bDirty 30 | { 31 | get 32 | { 33 | return this.m_bDirty; 34 | } 35 | } 36 | 37 | public byte[] body 38 | { 39 | get 40 | { 41 | return this.m_entityBody; 42 | } 43 | 44 | set 45 | { 46 | this.m_entityBody = value; 47 | this.DoDecryption(); 48 | } 49 | } 50 | 51 | 52 | public void DoDecryption() 53 | { 54 | //如果需要解密 55 | String path = this.m_Headers.RequestPath; 56 | if (this.m_entityBody == null || this.m_entityBody.Length == 0) 57 | { 58 | this.myControl.clearText(); 59 | } 60 | else 61 | { 62 | if (path.Contains("skey")) 63 | { 64 | String skey = Regex.Split(path, "skey=")[1]; 65 | //此种方式才能将byte[]转换成常见的base64编码的字符串 66 | String base64Body = System.Text.Encoding.Default.GetString(this.m_entityBody); 67 | //此种方式转不了base64编码格式的字符串 68 | String decryptionBody = BodyDecryption.decryptSDKBody(skey, base64Body); 69 | myControl.setText(decryptionBody); 70 | } 71 | else 72 | { 73 | String decodeBody = System.Text.Encoding.Default.GetString(this.m_entityBody); 74 | myControl.setText(decodeBody); 75 | } 76 | } 77 | 78 | } 79 | 80 | public bool bReadOnly 81 | { 82 | get 83 | { 84 | return this.m_bReadOnly; 85 | } 86 | 87 | set 88 | { 89 | this.m_bReadOnly = value; 90 | } 91 | } 92 | 93 | public HTTPRequestHeaders headers 94 | { 95 | get 96 | { 97 | FiddlerApplication.Log.LogString("headers get function."); 98 | return m_Headers; 99 | } 100 | set 101 | { 102 | this.m_Headers = value; 103 | 104 | } 105 | 106 | } 107 | 108 | public override void AddToTab(TabPage o) 109 | { 110 | o.Text = "Decryption"; 111 | o.Controls.Add(this.myControl); 112 | o.Controls[0].Dock = DockStyle.Fill; 113 | } 114 | 115 | public void Clear() 116 | { 117 | this.m_entityBody = null; 118 | this.myControl.clearText(); 119 | } 120 | 121 | 122 | public override int GetOrder() => 123 | 100; 124 | 125 | 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/DecryptionFormatJson.cs: -------------------------------------------------------------------------------- 1 | using Fiddler; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows.Forms; 8 | using Standard; 9 | using System.Text.RegularExpressions; 10 | 11 | namespace SDKDecryption 12 | { 13 | public class DecryptionFormatJson : Inspector2, IRequestInspector2, IBaseInspector2 14 | { 15 | private bool m_bDirty; 16 | private bool m_bReadOnly; 17 | private byte[] m_entityBody; 18 | private HTTPRequestHeaders m_Headers; 19 | private JSONRequestViewer jsonRequestViewer; 20 | 21 | public DecryptionFormatJson() 22 | { 23 | 24 | } 25 | 26 | public bool bDirty 27 | { 28 | get 29 | { 30 | return this.m_bDirty; 31 | } 32 | } 33 | 34 | public byte[] body 35 | { 36 | get 37 | { 38 | return jsonRequestViewer.body; 39 | } 40 | 41 | set 42 | { 43 | this.m_entityBody = value; 44 | byte[] decodedBody = this.DoDecryption(); 45 | if (decodedBody != null) 46 | { 47 | jsonRequestViewer.body = decodedBody; 48 | } 49 | else 50 | { 51 | jsonRequestViewer.body = value; 52 | } 53 | } 54 | } 55 | 56 | public byte[] DoDecryption() 57 | { 58 | //如果需要解密 59 | String path = this.m_Headers.RequestPath; 60 | if (path.Contains("skey")) 61 | { 62 | String skey = Regex.Split(path, "skey=")[1]; 63 | //此种方式才能将byte[]转换成常见的base64编码的字符串 64 | String base64Body = System.Text.Encoding.Default.GetString(this.m_entityBody); 65 | //此种方式转不了base64编码格式的字符串 66 | // String bodytext= Convert.ToBase64String(this.m_entityBody); 67 | String decryptionBody = BodyDecryption.decryptSDKBody(skey, base64Body); 68 | byte[] decodeBody = System.Text.Encoding.UTF8.GetBytes(decryptionBody); 69 | return decodeBody; 70 | } 71 | else 72 | { 73 | this.Clear(); 74 | return null; 75 | } 76 | } 77 | 78 | 79 | public bool bReadOnly 80 | { 81 | get 82 | { 83 | return this.m_bReadOnly; 84 | } 85 | 86 | set 87 | { 88 | this.m_bReadOnly = value; 89 | jsonRequestViewer.bReadOnly = value; 90 | } 91 | } 92 | 93 | public HTTPRequestHeaders headers 94 | { 95 | get 96 | { 97 | return this.m_Headers; 98 | } 99 | 100 | set 101 | { 102 | 103 | this.m_Headers = value; 104 | jsonRequestViewer.headers = value; 105 | } 106 | } 107 | 108 | public override void AddToTab(TabPage o) 109 | { 110 | jsonRequestViewer = new JSONRequestViewer(); 111 | jsonRequestViewer.AddToTab(o); 112 | o.Text = "DecryptionFormatJson"; 113 | } 114 | 115 | public void Clear() 116 | { 117 | this.m_entityBody = null; 118 | jsonRequestViewer.Clear(); 119 | } 120 | 121 | public override int GetOrder() 122 | { 123 | return jsonRequestViewer.GetOrder(); 124 | } 125 | 126 | public override int ScoreForContentType(string sMIMEType) 127 | { 128 | return jsonRequestViewer.ScoreForContentType(sMIMEType); 129 | } 130 | 131 | public override void SetFontSize(float flSizeInPoints) 132 | { 133 | jsonRequestViewer.SetFontSize(flSizeInPoints); 134 | } 135 | 136 | } 137 | } 138 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/DecryptionViewer.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace SDKDecryption 2 | { 3 | partial class DecryptionViewer 4 | { 5 | /// 6 | /// 必需的设计器变量。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 清理所有正在使用的资源。 12 | /// 13 | /// 如果应释放托管资源,为 true;否则为 false。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region 组件设计器生成的代码 24 | 25 | /// 26 | /// 设计器支持所需的方法 - 不要修改 27 | /// 使用代码编辑器修改此方法的内容。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.richTextBox1 = new System.Windows.Forms.RichTextBox(); 32 | this.SuspendLayout(); 33 | // 34 | // richTextBox1 35 | // 36 | this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; 37 | this.richTextBox1.Location = new System.Drawing.Point(22, 3); 38 | this.richTextBox1.Name = "richTextBox1"; 39 | this.richTextBox1.Size = new System.Drawing.Size(718, 409); 40 | this.richTextBox1.TabIndex = 0; 41 | this.richTextBox1.Text = ""; 42 | this.richTextBox1.TextChanged += new System.EventHandler(this.richTextBox1_TextChanged); 43 | // 44 | // DecryptionViewer 45 | // 46 | this.Controls.Add(this.richTextBox1); 47 | this.Name = "DecryptionViewer"; 48 | this.Size = new System.Drawing.Size(682, 366); 49 | this.ResumeLayout(false); 50 | 51 | } 52 | 53 | #endregion 54 | 55 | private System.Windows.Forms.TreeView treeView1; 56 | private System.Windows.Forms.RichTextBox richTextBox1; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/DecryptionViewer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Drawing; 5 | using System.Data; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | using System.Windows.Forms; 10 | 11 | namespace SDKDecryption 12 | { 13 | public partial class DecryptionViewer : UserControl 14 | { 15 | public DecryptionViewer() 16 | { 17 | InitializeComponent(); 18 | } 19 | 20 | 21 | private void DecryptionViewer_Load(object sender, EventArgs e) 22 | { 23 | 24 | } 25 | 26 | private void textBox1_TextChanged(object sender, EventArgs e) 27 | { 28 | 29 | } 30 | 31 | public void setText(string content) 32 | { 33 | // this.textBox1.Text = content; 34 | //this.treeView1. 35 | this.richTextBox1.Text = content; 36 | } 37 | 38 | public void clearText() 39 | { 40 | this.richTextBox1.Clear(); 41 | } 42 | 43 | private void richTextBox1_TextChanged(object sender, EventArgs e) 44 | { 45 | 46 | } 47 | } 48 | 49 | 50 | } 51 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/DecryptionViewer.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // 有关程序集的一般信息由以下 6 | // 控制。更改这些特性值可修改 7 | // 与程序集关联的信息。 8 | [assembly: AssemblyTitle("SDKDecryption")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SDKDecryption")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | //将 ComVisible 设置为 false 将使此程序集中的类型 18 | //对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, 19 | //请将此类型的 ComVisible 特性设置为 true。 20 | [assembly: ComVisible(false)] 21 | 22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 23 | [assembly: Guid("832e3205-6609-4aa5-b41c-f22b87cee2a0")] 24 | 25 | // 程序集的版本信息由下列四个值组成: 26 | // 27 | // 主版本 28 | // 次版本 29 | // 生成号 30 | // 修订号 31 | // 32 | //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, 33 | // 方法是按如下所示使用“*”: : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | 38 | //[assembly: Fiddler.RequiredVersion("4.6.20171.26113")] 39 | [assembly: Fiddler.RequiredVersion("4.6.20171.9220")] 40 | 41 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.42000 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace SDKDecryption.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | public class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | public static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SDKDecryption.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | public static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | 63 | /// 64 | /// 查找 System.Byte[] 类型的本地化资源。 65 | /// 66 | public static byte[] privatekey { 67 | get { 68 | object obj = ResourceManager.GetObject("privatekey", resourceCulture); 69 | return ((byte[])(obj)); 70 | } 71 | } 72 | 73 | /// 74 | /// 查找类似 <RSAKeyValue><Modulus>yapfUQyiOpd0ozaGlBPpEkpN3KD7XLS6LyV48wXoRYnB2yYC6ok9uR05exyyROmY3BDsZXAy4axiLicI0QBpCa/vsnOl3NVUMbiQyqtU+pq/abVKth53oH31y2S2Iv5odf9X/ikeXXjVZDJ44uWqarPz5lmGr9PRxJFT2QqZqas=</Modulus><Exponent>AQAB</Exponent><P>7lq4EvSPMUV0af7HuLnJ6ipeHwUwTlI7l06zcR34mvc0NFwoH0TpjKXRcfF43Irj9i7R9bAe4bPtgRuF5aIuYQ==</P><Q>2JhT7KlleDXDsMqm/4rdK1vgRPUtWXxSMz/3ZNL8P8Ep4wx9zMRMeFMyufITWjCRK/x74sTEltPM7DrgQ85biw==</Q><DP>NodYjzWVwK7kCA+6fz85uzGAINaeC3zylxXxJVK2+jTNo6DlqOmqCHwy4z9b6BB6QGrLq8pj9jykfCHgyv0EYQ==< [字符串的其余部分被截断]"; 的本地化字符串。 75 | /// 76 | public static string PrivateKey1 { 77 | get { 78 | return ResourceManager.GetString("PrivateKey1", resourceCulture); 79 | } 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 122 | ..\Resources\privatekey.pem;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 123 | 124 | 125 | ..\Resources\PrivateKey.xml;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;gb2312 126 | 127 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/SDKDecryption.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {832E3205-6609-4AA5-B41C-F22B87CEE2A0} 8 | Library 9 | Properties 10 | SDKDecryption 11 | SDKDecryption 12 | v4.5.2 13 | 512 14 | 15 | 16 | true 17 | full 18 | false 19 | bin\Debug\ 20 | DEBUG;TRACE 21 | prompt 22 | 4 23 | 24 | 25 | pdbonly 26 | true 27 | bin\Release\ 28 | TRACE 29 | prompt 30 | 4 31 | 32 | 33 | 34 | False 35 | C:\Users\yusheng\Desktop\bccrypto-csharp-1.8.1-bin (1)\BouncyCastle.Crypto.dll 36 | 37 | 38 | ..\..\..\..\Program Files\fiddler\Fiddler4\Fiddler.exe 39 | 40 | 41 | ..\..\..\..\Program Files\fiddler\Fiddler4\Inspectors\Standard.dll 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | UserControl 60 | 61 | 62 | DecryptionViewer.cs 63 | 64 | 65 | 66 | True 67 | True 68 | Resources.resx 69 | 70 | 71 | 72 | 73 | DecryptionViewer.cs 74 | 75 | 76 | PublicResXFileCodeGenerator 77 | Resources.Designer.cs 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | copy "$(TargetPath)" "D:\Program Files\fiddler\Fiddler4\Inspectors\$(TargetFilename)" 86 | 87 | 94 | -------------------------------------------------------------------------------- /SDKDecryption/SDKDecryption/SDKDecryption.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Program 5 | D:\Program Files\fiddler\Fiddler4\Fiddler.exe 6 | 7 | --------------------------------------------------------------------------------