Пример #1
0
        public static Boolean DetectDrm(ZipFile inputZip, out Constants.DRMType drmType)
        {
            drmType = Constants.DRMType.None;
            //inputZip["META-INF/encryption.xml"];
            try
            {
                // Adobe Adept DRM has "META-INF/rights.xml", containing <operatorURL>.
                // B&N have an <operatorURL> with "barnesandnoble.com" somewhere inside.
                // Adobe uses a variety of other URLs.
                ZipEntry rightsXml = inputZip["META-INF/rights.xml"];
                if (rightsXml != null)
                {
                    XElement xRoot = XElement.Load(rightsXml.OpenReader());


                    var adeptDrm = xRoot.Descendants(adeptns + "operatorURL");
                    if (adeptDrm.Count() > 0)
                    {
                        String url = adeptDrm.Last().Value;
                        if (url.ToLower().Contains("barnesandnoble"))
                        {
                            drmType = Constants.DRMType.BarnesAndNoble;
                            return(true);
                        }
                        else
                        {
                            drmType = Constants.DRMType.Adobe;

                            return(true);
                        }
                    }


                    XNamespace ns = (xRoot.Attribute("xmlns") != null) ? xRoot.Attribute("xmlns").Value : XNamespace.None;

                    var koboDRM = xRoot.Name;
                    if (koboDRM.ToString().ToLower() == "kdrm")
                    {
                        drmType = Constants.DRMType.Kobo;
                        return(true);
                    }
                }
                ZipEntry sinfXml = inputZip["META-INF/sinf.xml"];
                // Apple Fairplay DRM has "META-INF/sinf.xml" containing <fairplay:sinf>.
                if (sinfXml != null)
                {
                    XElement xRoot = XElement.Load(sinfXml.InputStream);
                    //XNamespace ns = (xRoot.Attribute("xmlns") != null) ? xRoot.Attribute("xmlns").Value : XNamespace.None;

                    var fairplayDRM = xRoot.Descendants(applens + "sinf");
                    if (fairplayDRM.Count() > 0)
                    {
                        drmType = Constants.DRMType.Apple;
                        return(true);
                    }
                }

                return(false);
            }

            catch (Exception e)
            {
                return(false);
            }
        }
Пример #2
0
 public bool DetectDrm(out Constants.DRMType drmType)
 {
     throw new NotImplementedException();
 }