X-Git-Url: http://xvm.mit.edu/gitweb/invirt/scripts/vnc-client.git/blobdiff_plain/9cdc8e66b5f632bbb53512c8564713fa11fc6e2f..e717bb0335826dc7b760ae97c35848eb7ea5dcd5:/invirt-vnc-client diff --git a/invirt-vnc-client b/invirt-vnc-client index b789c56..f71366a 100755 --- a/invirt-vnc-client +++ b/invirt-vnc-client @@ -3,6 +3,7 @@ from twisted.internet import reactor, ssl, protocol, error from OpenSSL import SSL import base64, pickle import getopt, sys, os, time +import io verbose = False @@ -122,6 +123,10 @@ class ProxyFactory(protocol.Factory): self.authtoken = authtoken self.machine = machine +class SafeUnpickler(pickle.Unpickler): + def find_class(self, module, name): + raise pickle.UnpicklingError("globals are forbidden") + def main(): global verbose try: @@ -175,7 +180,7 @@ def main(): # Unpack authentication token try: - token_inner = pickle.loads(base64.urlsafe_b64decode((authtoken.split("."))[0])) + token_inner = SafeUnpickler(io.BytesIO(base64.urlsafe_b64decode((authtoken.split("."))[0]))).load() machine = token_inner["machine"] connect_host = token_inner["connect_host"] connect_port = token_inner["connect_port"]