Skip to content

vnclog crashes log if upstream server require password #272

@yonixw

Description

@yonixw

Please include the following information:

vncdotool version

  • vncdo 1.1.0 installed with:
    • pip install git+https://github.com/sibson/vncdotool.git@v1.1.0
  • Python 3.10.6

VNC server and version
TightVNC - 2.8.81 (windows) (link)

But also on these old ones:

  • x11vnc: 0.9.16 lastmod: 2019-01-05 (linux/docker) (link)
  • Xvnc TigerVNC 1.7.0 - built Dec 5 2017 09:25:01 (linux/docker)

Steps to reproduce

  • vnclog -v -v -v -v -s 127.0.0.1::5900 --listen 6000 --forever record-vnc
  • Try to connect to the port of vnclog (6000) when the upstream vnc server (5900) is password protected
    • vncdo --server 127.0.0.1::6000 type 1

GIF:
ezgif com-gif-maker

Expected result

vnclog to save recorded actions to file.

Which erroneous result did you get instead

INFO:vncdotool.loggingproxy:new connection from 127.0.0.1
INFO:twisted:Starting factory <vncdotool.loggingproxy.VNCLoggingClientFactory object at 0x00000149507C0250>
DEBUG:vncdotool.loggingproxy:Client selected <AuthTypes.VNC_AUTHENTICATION: 2>
DEBUG:vncdotool.loggingproxy:Client shares: 93
DEBUG:vncdotool.loggingproxy:Unhandled response '<MsgC2S.UNKNOWN: ce>'
Unhandled Error
Traceback (most recent call last):
  File "C:\Python310\lib\site-packages\twisted\python\log.py", line 96, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "C:\Python310\lib\site-packages\twisted\python\log.py", line 80, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "C:\Python310\lib\site-packages\twisted\python\context.py", line 117, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "C:\Python310\lib\site-packages\twisted\python\context.py", line 82, in callWithContext
    return func(*args, **kw)
--- <exception caught here> ---
  File "C:\Python310\lib\site-packages\twisted\internet\selectreactor.py", line 148, in _doReadOrWrite
    why = getattr(selectable, method)()
  File "C:\Python310\lib\site-packages\twisted\internet\tcp.py", line 248, in doRead
    return self._dataReceived(data)
  File "C:\Python310\lib\site-packages\twisted\internet\tcp.py", line 253, in _dataReceived
    rval = self.protocol.dataReceived(data)
  File "C:\Python310\lib\site-packages\vncdotool\loggingproxy.py", line 282, in dataReceived
    RFBServer.dataReceived(self, data)
  File "C:\Python310\lib\site-packages\vncdotool\loggingproxy.py", line 92, in dataReceived
    self._handler[0]()
  File "C:\Python310\lib\site-packages\vncdotool\loggingproxy.py", line 169, in _handle_protocol
    raise ProtocolError(ptype)
vncdotool.loggingproxy.ProtocolError: 206

CRITICAL:twisted:Unhandled Error
Traceback (most recent call last):
  File "C:\Python310\lib\site-packages\twisted\python\log.py", line 96, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "C:\Python310\lib\site-packages\twisted\python\log.py", line 80, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "C:\Python310\lib\site-packages\twisted\python\context.py", line 117, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "C:\Python310\lib\site-packages\twisted\python\context.py", line 82, in callWithContext
    return func(*args, **kw)
--- <exception caught here> ---
  File "C:\Python310\lib\site-packages\twisted\internet\selectreactor.py", line 148, in _doReadOrWrite
    why = getattr(selectable, method)()
  File "C:\Python310\lib\site-packages\twisted\internet\tcp.py", line 248, in doRead
    return self._dataReceived(data)
  File "C:\Python310\lib\site-packages\twisted\internet\tcp.py", line 253, in _dataReceived
    rval = self.protocol.dataReceived(data)
  File "C:\Python310\lib\site-packages\vncdotool\loggingproxy.py", line 282, in dataReceived
    RFBServer.dataReceived(self, data)
  File "C:\Python310\lib\site-packages\vncdotool\loggingproxy.py", line 92, in dataReceived
    self._handler[0]()
  File "C:\Python310\lib\site-packages\vncdotool\loggingproxy.py", line 169, in _handle_protocol
    raise ProtocolError(ptype)
vncdotool.loggingproxy.ProtocolError: 206

Additional information

  • Disabling password seem to solve the issue.

  • In vncdotool.loggingproxy.ProtocolError: 206, the 206 code is different based on the server I used, and seemed random in general...

  • Took me a while to figure out it was to due with the password. And that is why I tried so many versions, because I thought the protocol error comes from a specific version of my vnc server that is the issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions