Пример #1
0
    public static void AddPythonLibrariesToSysMetaPath(ScriptEngine engineInstance)
    {
        Assembly asm = Assembly.GetExecutingAssembly().GetType().Assembly;

        try
        {
            var resQuery =
                from name in asm.GetManifestResourceNames()
                where name.ToLowerInvariant().EndsWith(".zip")
                select name;
            string resName = resQuery.Single();
#if DEBUG
            Console.WriteLine("Found embedded IPY stdlib : {0}", resName);
#endif
            var     importer = new ResourceMetaPathImporter(asm, resName);
            dynamic sys      = engineInstance.GetSysModule();
            sys.meta_path.append(importer);
            sys.path.append(importer);
            //List metaPath = sys.GetVariable("meta_path");
            //metaPath.Add(importer);
            //sys.SetVariable("meta_path", metaPath);
        }
        catch (Exception e)
        {
#if DEBUG
            Console.WriteLine("Did not find IPY stdlib in embedded resources: {0}", e.Message);
#endif
            return;
        }
    }
Пример #2
0
            public static void AddPythonLibrariesToSysMetaPath(ScriptEngine engineInstance)
            {
                Assembly asm = Assembly.GetExecutingAssembly().GetType().Assembly;

                try
                {
                    var resQuery = from name in asm.GetManifestResourceNames()
                                   where name.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)
                                   select name;
                    string resName = resQuery.Single();
#if DEBUG
                    Console.WriteLine("\t[+] Found embedded IPY stdlib: {0}", resName);
#endif
                    var     importer = new ResourceMetaPathImporter(asm, resName);
                    dynamic sys      = engineInstance.GetSysModule();

                    sys.meta_path.append(importer);
                    sys.path.append(importer);
                }
                catch (Exception e)
                {
#if DEBUG
                    Console.WriteLine("\t[-] Did not find IPY stdlib in embedded resources: {0}", e.Message);
#endif
                    return;
                }
            }
Пример #3
0
        public static void Agent(string B64PyCode)
        {
            try
            {
                // setup ironpython engine
                string PyCode      = "";
                byte[] ScriptBytes = Convert.FromBase64String(B64PyCode);
                PyCode = Encoding.ASCII.GetString(ScriptBytes);
                ScriptEngine engine = Python.CreateEngine();

                // Load stdlib to memory
                Assembly asm      = Assembly.GetExecutingAssembly();
                dynamic  sysScope = engine.GetSysModule();
                var      importer = new ResourceMetaPathImporter(asm, "Lib.zip");
                sysScope.meta_path.append(importer);
                sysScope.path.append(importer);

                //execute ironpython code
                var script = engine.CreateScriptSourceFromString(PyCode, SourceCodeKind.Statements);
                script.Execute();
            }
            catch
            {
                Environment.Exit(0);
            }
        }
Пример #4
0
        static void Main(string[] args)
        {
            string PyCode = "";

            if (args.Length >= 1)
            {
                switch (args[0].Split(':')[0].ToLower())
                {
                case "--b64script":
                {
                    byte[] ScriptBytes = Convert.FromBase64String(args[0].Split(':')[1]);
                    PyCode = Encoding.ASCII.GetString(ScriptBytes);
                    break;
                }

                case "--script":
                {
                    PyCode = args[0].Split(':')[1];
                    break;
                }

                default:
                {
                    PrintUsage();
                    return;
                }
                }
            }
            else
            {
                PrintUsage();
                return;
            }
            ScriptEngine engine   = Python.CreateEngine();
            Assembly     ass      = Assembly.GetExecutingAssembly();
            var          sysScope = engine.GetSysModule();
            var          importer = new ResourceMetaPathImporter(Assembly.GetExecutingAssembly(), "Lib.zip");
            List         metaPath = (List)sysScope.GetVariable("meta_path");

            metaPath.Add(importer);
            sysScope.SetVariable("meta_path", metaPath);
            var script = engine.CreateScriptSourceFromString(PyCode, SourceCodeKind.Statements);

            script.Execute();
            Console.WriteLine("Finished Executing.");
        }