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'