2

How to get the website fingerprinting defense wfpad to work?

Adapting the files in scramblesuit's test/ directory to wfpad worked for the stand-alone operations (replacing scramblesuit with wfpad), but failed when started with adapted torrc files. The adapted torrc files are:

torrc.server

# Feel free to adapt the path.
DataDirectory /tmp/wfpad-torserver    
Log notice stdout    
SOCKSPort auto    
AssumeReachable 1    
PublishServerDescriptor 0    
Exitpolicy reject *:*    
ORPort auto    
Nickname "WfpadTest"    
BridgeRelay 1    
ServerTransportListenAddr wfpad 127.0.0.1:40535
ServerTransportPlugin wfpad exec /home/tortest/obfsproxy_wfpadtools/bin/obfsproxy \
    --log-min-severity=debug \
    --log-file=/tmp/wfpad-server.log \
    managed

torrc.client

# Feel free to adapt the path.
DataDirectory /tmp/wfpad-torclient    
Log notice stdout    
SOCKSPort auto    
UseBridges 1    
Bridge wfpad 127.0.0.1:40535    
ClientTransportPlugin wfpad exec /home/tortest/obfsproxy_wfpadtools/bin/obfsproxy \
    --log-min-severity=debug \
    --log-file=/tmp/wfpad-client.log \
    managed

error message

2016-05-22 10:32:05,499 [DEBUG] [wfpad - client] Connected with the other WFPad end.
Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 101, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 84, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
    return func(*args,**kw)
--- <exception caught here> ---
  File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 602, in _doReadOrWrite
    why = selectable.doWrite()
  File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 587, in doConnect
    self._connectDone()
  File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 616, in _connectDone
    self.protocol.makeConnection(self)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/protocol.py", line 494, in makeConnection
    self.connectionMade()
  File "/home/tortest/obfsproxy_wfpadtools/obfsproxy/network/network.py", line 281, in connectionMade
    self.circuit.setDownstreamConnection(self)
  File "/home/tortest/obfsproxy_wfpadtools/obfsproxy/network/network.py", line 97, in setDownstreamConnection
    self.circuitCompleted(self.upstream)
  File "/home/tortest/obfsproxy_wfpadtools/obfsproxy/network/network.py", line 134, in circuitCompleted
    self.transport.circuitConnected()
  File "/home/tortest/obfsproxy_wfpadtools/obfsproxy/transports/wfpadtools/wfpad.py", line 197, in circuitConnected
    self.connections = self.process.get_connections()
exceptions.AttributeError: 'Process' object has no attribute 'get_connections'

2016-05-22 10:32:05,574 [CRITICAL] Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 101, in callWithLogger
    return callWithContext({"system": lp}, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/log.py", line 84, in callWithContext
    return context.call({ILogContext: newCtx}, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
    return self.currentContext().callWithContext(ctx, func, *args, **kw)
  File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
    return func(*args,**kw)
--- <exception caught here> ---
  File "/usr/lib/python2.7/dist-packages/twisted/internet/posixbase.py", line 602, in _doReadOrWrite
    why = selectable.doWrite()
  File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 587, in doConnect
    self._connectDone()
  File "/usr/lib/python2.7/dist-packages/twisted/internet/tcp.py", line 616, in _connectDone
    self.protocol.makeConnection(self)
  File "/usr/lib/python2.7/dist-packages/twisted/internet/protocol.py", line 494, in makeConnection
    self.connectionMade()
  File "/home/tortest/obfsproxy_wfpadtools/obfsproxy/network/network.py", line 281, in connectionMade
    self.circuit.setDownstreamConnection(self)
  File "/home/tortest/obfsproxy_wfpadtools/obfsproxy/network/network.py", line 97, in setDownstreamConnection
    self.circuitCompleted(self.upstream)
  File "/home/tortest/obfsproxy_wfpadtools/obfsproxy/network/network.py", line 134, in circuitCompleted
    self.transport.circuitConnected()
  File "/home/tortest/obfsproxy_wfpadtools/obfsproxy/transports/wfpadtools/wfpad.py", line 197, in circuitConnected
    self.connections = self.process.get_connections()
exceptions.AttributeError: 'Process' object has no attribute 'get_connections'
  • 1
    it looks a version mismatch/conflict. It happens when you have an old version of package from your OS package manager and a new one installed otherwise in another location – Alexey Vesnin May 25 '16 at 1:05
  • @AlexeyVesnin: Thank you very much. Make this an answer to get the points. – serv-inc May 25 '16 at 7:45
  • ok, just did it - it's an answer now – Alexey Vesnin May 25 '16 at 15:01
2

it looks a version mismatch/conflict. It happens when you have an old version of package from your OS package manager and a new one installed otherwise in another location

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.