Skip to content

Commit

Permalink
fix Tor control auth cookie authentication even if HashedControlPassw…
Browse files Browse the repository at this point in the history
…ord is set

fix custom auth cookie authentication path

Previously the following line in Tor config...

```
HashedControlPassword
16:88A1B9F6EBD74C6960E1E60CC725B6C94A990C65223358EFF0DF41E8BA
```

Was leading the the following error:

```
Sep 13 22:02:08 host onion-grater[10460]: Exception happened during
processing of request from ('10.137.0.45', 48828)
Sep 13 22:02:08 host onion-grater[10460]: Traceback (most recent call last):
Sep 13 22:02:08 host onion-grater[10460]:   File
"/usr/lib/python3.5/socketserver.py", line 625, in process_request_thread
Sep 13 22:02:08 host onion-grater[10460]:
self.finish_request(request, client_address)
Sep 13 22:02:08 host onion-grater[10460]:   File
"/usr/lib/python3.5/socketserver.py", line 354, in finish_request
Sep 13 22:02:08 host onion-grater[10460]:
self.RequestHandlerClass(request, client_address, self)
Sep 13 22:02:08 host onion-grater[10460]:   File
"/usr/lib/python3.5/socketserver.py", line 681, in __init__
Sep 13 22:02:08 host onion-grater[10460]:     self.handle()
Sep 13 22:02:08 host onion-grater[10460]:   File
"/usr/lib/onion-grater", line 651, in handle
Sep 13 22:02:08 host onion-grater[10460]:     self.controller =
self.connect_to_real_control_port()
Sep 13 22:02:08 host onion-grater[10460]:   File
"/usr/lib/onion-grater", line 592, in connect_to_real_control_port
Sep 13 22:02:08 host onion-grater[10460]:
controller.authenticate(cookie)
Sep 13 22:02:08 host onion-grater[10460]:   File
"/usr/lib/python3/dist-packages/stem/control.py", line 1071, in authenticate
Sep 13 22:02:08 host onion-grater[10460]:
stem.connection.authenticate(self, *args, **kwargs)
Sep 13 22:02:08 host onion-grater[10460]:   File
"/usr/lib/python3/dist-packages/stem/connection.py", line 575, in
authenticate
Sep 13 22:02:08 host onion-grater[10460]:
authenticate_password(controller, password, False)
Sep 13 22:02:08 host onion-grater[10460]:   File
"/usr/lib/python3/dist-packages/stem/connection.py", line 711, in
authenticate_password
Sep 13 22:02:08 host onion-grater[10460]:     password =
password.replace('"', '\\"')
Sep 13 22:02:08 host onion-grater[10460]: TypeError: a bytes-like object
is required, not 'str'
```

```
ls -la /var/run/tor/
```
```
total 148
drwxr-sr-x  2 debian-tor debian-tor    140 Sep 13 22:15 .
drwxr-xr-x 28 root       root          760 Sep 13 22:00 ..
srw-rw----  1 debian-tor debian-tor      0 Sep 13 22:15 control
-rw-r-----  1 debian-tor debian-tor     32 Sep 13 22:15 control.authcookie
-rw-r-----  1 debian-tor debian-tor 143123 Sep 13 22:15 log
srw-rw-rw-  1 debian-tor debian-tor      0 Sep 13 22:15 socks
-rw-r--r--  1 debian-tor debian-tor      6 Sep 13 22:15 tor.pid
```
```
DataDirectory /var/lib/tor
PidFile /var/run/tor/tor.pid
RunAsDaemon 1
User debian-tor

ControlSocket /var/run/tor/control GroupWritable RelaxDirModeCheck
ControlSocketsGroupWritable 1
SocksPort unix:/var/run/tor/socks WorldWritable
SocksPort 9050

CookieAuthentication 1
CookieAuthFileGroupReadable 1
CookieAuthFile /var/run/tor/control.authcookie

Log notice file /var/log/tor/log
```

The HashedControlPassword confused python-stem even
though cookie authentication was functional without that HashedControlPassword.

There is no need to manually read Tor authentication cookie file.

        with open(global_args.control_cookie_path, "rb") as f:
            cookie = f.read()

python-stem can do that for us.

Line

```
controller.authenticate(cookie)
```

was wrong. `controller.authenticate` does not take

Syntax from manual:

https://stem.torproject.org/api/connection.html#stem.connection.authenticate

```
stem.connection.authenticate(controller, password=None, chroot_path=None, protocolinfo_response=None)
```
  • Loading branch information
Patrick Schleizer committed Sep 15, 2018
1 parent e5cb9bc commit 70e735d
Showing 1 changed file with 3 additions and 6 deletions.
9 changes: 3 additions & 6 deletions usr/lib/onion-grater
Expand Up @@ -132,6 +132,7 @@ import socket
import socketserver
import stem
import stem.control
import stem.connection
import struct
import sys
import textwrap
Expand Down Expand Up @@ -584,12 +585,8 @@ class FilteredControlPortProxyHandler(socketserver.StreamRequestHandler):
))

def connect_to_real_control_port(self):
with open(global_args.control_cookie_path, "rb") as f:
cookie = f.read()
controller = stem.control.Controller.from_socket_file(
global_args.control_socket_path
)
controller.authenticate(cookie)
controller = stem.connection.connect(control_socket=global_args.control_socket_path)
stem.connection.authenticate_cookie(controller, cookie_path=global_args.control_cookie_path)
return controller

def handle(self):
Expand Down

0 comments on commit 70e735d

Please sign in to comment.