Paiza.io peut accéder au réseau et gérer les fichiers.
Cela signifie que libtrusterd peut être exécuté via les ctypes de Python!
Comme prévu, des éléments de type wget pourraient être facilement implémentés en Python.
context = ssl.create_default_context()
conn = http.client.HTTPSConnection(host, 443, context=context)
conn.request('GET',path)
res = conn.getresponse()
f = open(libname, "wb")
f.write(res.read())
f.close()
Même https est facile ™
Eh bien, ce n'est pas grave si vous apportez ceci ainsi que libtrusterd.so.
@Phi, célèbre pour tmlib.js, a écrit un article sur Python Je le savais pour la première fois à cette époque, mais grâce à cet article Ajout du chemin d'accès prévu à LD_LIBRARY_PATH.
os.environ["LD_LIBRARY_PATH"] = os.environ.get("LD_LIBRARY_PATH") + ":."
Mais ça ne marche toujours pas. ..
Il semble que dlopen ne regarde les variables d'environnement qu'au démarrage du processus.
Pour aggraver les choses, paiza.io ne produit aucun résultat au moins lorsque le processus est redémarré! Il existe peut-être un moyen de travailler avec des processus enfants, mais manque d'expérience en python Par conséquent, le code que j'ai écrit est NG. Si la sortie standard du processus enfant est absorbée par le processus parent Je sens que je peux y aller.
Vous pouvez ouvrir la bibliothèque partagée autant de fois que vous le souhaitez, mais elle ne se chargera pas après la deuxième fois. J'ai l'impression qu'il y avait une description, ce qui signifie que je me souviens de la bibliothèque ouverte.
Appelez à l'avance la bibliothèque partagée qui serait manquante avec ctypes.CDLL, J'ai couru libtrusterd.
dummy = ctypes.CDLL("./libevent-2.0.so.5")
dummy = ctypes.CDLL("./libevent_core-2.0.so.5")
dummy = ctypes.CDLL("./libevent_openssl-2.0.so.5")
--LD_LIBRARY_PATH est déjà en retard à dlopen même s'il est réécrit dans le code
Recommended Posts