Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

parse/output BUG ? #12

Closed
LeonMskRu opened this issue Jun 16, 2024 · 13 comments
Closed

parse/output BUG ? #12

LeonMskRu opened this issue Jun 16, 2024 · 13 comments
Assignees

Comments

@LeonMskRu
Copy link

LeonMskRu commented Jun 16, 2024

set scanner1=c:_DL\tor-relay-scanner-go.exe

curl -o list_tor2 -x 192.168.1.111:3128 "https://onionoo.torproject.org/details?type=relay&running=true&fields=fingerprint,or_addresses,country,flags,version"

это чужой скрипт. просто парсит по параментрам
полученные json в https://github.com/LeonMskRu/arti_windows/tree/main/.tmp/tor-relay-scanner-go
если поменять сканер на Валдика то вроде нормально работает

%python3% filter_relays2.py -c ru -f Stable -F Exit list_tor2 > outRU.json
%python3% filter_relays2.py -c nl,fr,fi,lu,se,gb,ch,ro,no,cz,ru,bg,dk,it,is,es,at,hu,gr,be,ie,hr,pt -v 0.4.8.12 -f Guard,Fast,Stable -F Exit,HSDir list_tor2 > out6.json
%python3% filter_relays2.py -c nl,fr,fi,lu,se,gb,ch,ro,no,cz,ru,bg,dk,it,is,es,at,hu,gr,be,ie,hr,pt -v 0.4.8.12 -f Guard,Fast,Stable,HSDir -F Exit list_tor2 > outH.json

%scanner1% -n 4 -g 20 -o c:\tor\bridges.conf --torrc --url http://127.0.0.1/TOR/outRU.json

виснет как с указанным --timeout 500ms так и без таймаута
там вроде какие то ноды без части данных
Testing 55% [=======> ] (11/20)
The program was running for more than the specified time: 60.00s

%scanner1% -6 -n 4 -g 20 -o c:\tor\bridges_ipv6.conf --torrc --url http://127.0.0.1/TOR/out6.json

мешанина какая то
Bridge [2a00:8780:14:2000::3]:9001 E039FEF5CC8F0AF731AAC7B0FC1DBA63B33372DA
UseBridges 1
00::3]:9001 E039FEF5CC8F0AF731AAC7B0FC1DBA63B33372DA
UseBridges 1
DB8AF770BD40C7C8883EFFF4CAF3
Bridge [2a06:8184:1:39::a]:443 BB65A6D47F77733966314ADDEB3CA56BA423F148
UseBridges 1

%scanner1% -6 -n 4 -g 40 -o c:\github_bridges_ipv6_HSDir.conf.txt --url http://127.0.0.1/TOR/outH.json

тоже странное
[2a01:4f9:3081:414c::2]:9001 A67891856C914E998E82D97A4CCC17381AC4E4FE
]:443 BD4C647508162F59CB44E4DFC1C2B2B8A9387CCA
A02B408EC529DAF90AD23E0B

@LeonMskRu
Copy link
Author

поменял на
%scanner1% -n 4 -g 20 -o c:\tor\bridges.conf --torrc
%scanner1% -6 -n 4 -g 20 -o c:\tor\bridges_ipv6.conf --torrc
%scanner1% -4 -n 4 -g 40 -o c:\github_bridges_ipv6_HSDir.conf.txt

тот же самый мусов в выходных файлах

141.105.130.89:9100 B1F998ADD3C0849A448D9619B9083F6D8A5D0179
93DFB58C3
[2a0f:ca80:1337::9969:dc10]:8443 8453A2131200B0973A5FE8F60DA3859C0F486B30

Bridge 95.141.32.124:33333 E1B9119C61181B93ABDDE7BD731B54A3B797EDF4
UseBridges 1
CD9CF27302AB49F
UseBridges 1

Bridge [2603:c021:1:e6ee:7956:dfc6:e4f4:dcb]:9001 05CC8826920ED353BEEE5E59FDB5697D4F5B77E7
UseBridges 1
66::2e08:6313]:443 41D4F82AB54AE5C5FB8D3CD24B4FC84350EFEF03
UseBridges 1

@juev juev self-assigned this Jun 16, 2024
@juev
Copy link
Owner

juev commented Jun 16, 2024

Интересное поведение, мне нужно время на проверку

@juev
Copy link
Owner

juev commented Jun 16, 2024

Взял последнюю опубликованную версию tor-relay-scanner-go, взял представленные json.

Первый запуск

Разворачиваем локальный веб-сервер:

go install github.com/patrickhener/goshs@latest

Запускаем в директории с подготовленными файлами:

cd src/github.com/LeonMskRu/arti_windows/.tmp/tor-relay-scanner-go
goshs

Запускаем сканер

./main -n 4 -g 20 --torrc --url http://127.0.0.1:8000/outRU.json

n=4 число одновременно проверяемых релеев
g=20 ожидаемое число результата
torrc Output reachable relays in torrc format
url Preferred alternative URL for onionoo relay list

Таким образом мы запускаем программу в 4 потока, ждем результат из 20 рабочих релеев, формат вывода для браузера и берем результат из подготовленного json.
В json присутствуют только 24 релея. Из которых ожидаем увидеть 20. У меня он "виснет" на 6, и больше не находит доступных релеев. В результате завершает работу по таймауту. Запрашиваем очень много релеев из малого числа доступных.

Второй запуск

./main -6 -n 4 -g 20 --torrc --url http://127.0.0.1:8000/out6.json

Результат:

Bridge [2a12:bec0:20b:a9bb::1]:443 2856770C398C8C145BCBF74BE9CDA68509621848
Bridge [2a05:b0c7:607b::1]:443 F766B43B2F76E6A5032F6A38B9D53122638D037C
Bridge [2a06:8184:1:39::a]:443 BB65A6D47F77733966314ADDEB3CA56BA423F148
Bridge [2a0f:ca80:1337::9969:dc10]:8444 153460C0FE0945B0269999554E85534A2F709D8D
Bridge [2a05:b0c7:6397::1]:443 09C375184DE999CE1B4AC034190F5A9F916479F9
Bridge [2001:bc8:1640:777:dc00:ff:fe12:d075]:443 56344DEE34D3343090D00AD88CE2D58B50712C81
Bridge [2a06:8184:1:63::a]:443 C43A429A1464FFB31D62E610968558C4A08FF0C4
Bridge [2001:4b98:dc0:43:f816:3eff:fe51:df77]:9001 A49493CB471F64EBD5EA981A956B1718EAC8B286
Bridge [2a04:52c0:116:fa5::1]:9001 E0DC7A0D89E4F99B97AFF28818191F2390FCBB35
Bridge [2a05:b0c7:64e4::1]:443 1F348BF999D4F7BE263270F5A24F69FCCEC1399C
Bridge [2a06:8184:1:55::a]:443 05A8B5A480220BB819021AA558A5782A3EB25539
Bridge [2a05:b0c7:65f9::1]:443 8CE439B1850C9F09C068F761A4DAC8E81B82A328
Bridge [2a01:4f9:c010:121f::9001]:9001 3431940DFB4643A3EE3F4465BFF2655CA9BDEB96
Bridge [2a00:63c1:13:229:fa53:5051:8c88:ff1e]:443 629301C063FC047171C8A0F1520A9D7CF60308EC
Bridge [2001:41d0:a:1c2c::123:1]:443 2A5746BFF32A363CD3AAD05196C0F10E7143BBB6
Bridge [2a02:1210:4a01:cf32:dead:babe:beef:cafe]:9001 DA84D41783BBB6058CB9DF8C90697E8D5EA647C3
Bridge [2a09:7c44:0:be::1]:443 2A4AA1339A8E1EB302F35E382C52251F252D20B2
Bridge [2a05:b0c7:6388::1]:443 D1D4115C77FD8C5F8BBD1CFA8F938F0143AE8E5B
Bridge [2a0c:e303:0:4de7::1:1]:9001 BEF36E0B4AC34FA111FD620A128676448B841437
Bridge [2a05:541:123:f::1]:9001 87558F54FCCEE5BD8EF6978438287EEA6915411A
UseBridges 1

Аналогичный вывод при выводе в файл.

Третий запуск

./main -6 -n 4 -g 20 --torrc --url http://127.0.0.1:8000/outH.json

Результат:

Bridge [2001:14ba:ab01:2ba9::1]:443 5C4DE421BF92DC8455D544217364A08402DD696C
Bridge [2a09:8340:55d0:4542::1]:9001 85CDBC7ADB15D5B64FB4C5989CD510F6869F9206
Bridge [2603:c027:8701:3d9f:228d:8ce5:bc20:5b67]:443 34F20EB029199ACF56E2A084B972D6795BFC865F
Bridge [2001:470:1f14:220::2]:8443 092E5E97AC7FE3FAA02B408EC529DAF90AD23E0B
Bridge [2001:41d0:304:200::96df]:9001 827988742048E7FAA1AE88F3089EE8DCC1139D91
Bridge [2001:41d0:8:b8d9::1]:9001 E2FC37D1A3B81EA783B40FBB324DBFCE594711AD
Bridge [2a0f:ca80:1337::acea:135a]:8443 BE443DE37BF731829D16D5EB5A16E3CE3A0B8569
Bridge [2001:41d0:302:2200::220b]:9001 DAABB04E4E3336B336B2523D5448DA8B0A43BD7A
Bridge [2a0f:ca80:1337::9969:dc10]:443 C4A67D45ABB1806E13C1F4B4C83FE4B22E2B8A51
Bridge [2001:bc8:1210:e4a:dc00:ff:fe30:edd3]:443 36B2F61D90F59C69AA05228B6DD3645575B6FFBC
Bridge [2a01:4f9:c011:b2fd::1]:443 A99BDA7894C6FBFF88A5DD03175D6B897155595F
Bridge [2a09:be40:28fe:0:4c8d:fcff:fe52:e27d]:9001 80DF58BB8F1540A71E3DA1590019BAB9D9D00F49
Bridge [2a13:9f40:0:7::a]:443 218E99F0ABF856F263D4BC4A458665865EEE6B7C
Bridge [2a04:3541:8000:1000:78d3:3cff:fef7:144]:443 632470165AB6880191D6BDFFAA0544F8955685E6
Bridge [2a09:be40:28fe:0:943b:16ff:feb3:302]:9001 A9C6FEA058C3E53ECDA61E8FDAD0F940718DE8CE
Bridge [2001:4610:a:136::28d]:443 A09DAAAD16E3F77C2ED1A012BD8A18FFCBFEB422
Bridge [2a02:a452:9bf7:1:82ee:73ff:fe67:f076]:9001 FC83153EA2FF3807029506A4B30A27D953DD98D4
Bridge [2a05:b0c7:6e62::1]:443 E205783E3A0F13913435EFD75C64DE6D1B50CF8E
Bridge [2a01:4f9:3070:1c9d::]:9676 95CEC8854A6FB514142A7317CFB12B0AD794223C
Bridge [2001:bc8:3680:bb01::10]:443 BD4C647508162F59CB44E4DFC1C2B2B8A9387CCA
UseBridges 1

Таким образом пока не наблюдаю проблемы.

Вывод

Из первого запуска можно попробовать формировать вывод результата из тех релеев, что удалось обнаружить. То есть если запросили 20 из 24, но нашли только 6, то при выходе по таймауту предоставлять информацию по найденым. В принципе логично, при этом еще делать пометку о том, что нашли меньше, чем запрашивали.

Второй и третий запуски производят корректный результат, без мешанины. Но я запускаю сканер на macOS, и нет возможности проверить поведение на windows. Есть вероятность проблемы специфичной для данной операционной системы. Но подтвердить не могу, к сожалению.

@LeonMskRu
Copy link
Author

LeonMskRu commented Jun 17, 2024

да. что то с перезаписью
если удалить предварительно старый blabla.CONF
то новый создается без мусора

сам клиент делал "как положено"

C:\GitHub\tor-relay-scanner-go\cmd>go get
C:\GitHub\tor-relay-scanner-go\cmd>go build -ldflags "-s -w"

M:_Microsoft_MSYS2\usr\bin\ldd.exe cmd.exe
ntdll.dll => /c/windows/SYSTEM32/ntdll.dll (0x7ff8f76b0000)
KERNEL32.DLL => /c/windows/System32/KERNEL32.DLL (0x7ff8f75b0000)
KERNELBASE.dll => /c/windows/System32/KERNELBASE.dll (0x7ff8f5200000)
apphelp.dll => /c/windows/SYSTEM32/apphelp.dll (0x7ff8f2410000)

C:\GitHub\tor-relay-scanner-go\cmd>file cmd.exe
cmd.exe: PE32+ executable (console) x86-64, for MS Windows, 8 sections

@LeonMskRu
Copy link
Author

LeonMskRu commented Jun 17, 2024

файл 1.txt

Bridge [2600:3c01::f03c:91ff:fe96:a8d7]:9001 7DF739DF5858ED7AA650B822E0D68AB03658414B
UseBridges 1
ges 1

запустил 2а раза было ОК
на 3ий вылез мусор

C:\GitHub\tor-relay-scanner-go\cmd>cmd.exe -6 -n 1 -g 1 --torrc -o 1.txt
Bridge [2a02:4840:2:239:2bd5:9e10:de1d:35e4]:26954 9CE775FFB31F5F2706AEBA6B44085A5B59438145
UseBridges 1

C:\GitHub\tor-relay-scanner-go\cmd>cmd.exe -6 -n 1 -g 1 --torrc -o 1.txt
Bridge [2a03:4000:2b:100a:84de:15ff:fee1:df4b]:443 366F597A7F95581904DC05EB811240C958C17F3D
UseBridges 1

C:\GitHub\tor-relay-scanner-go\cmd>cmd.exe -6 -n 1 -g 1 --torrc -o 1.txt
Bridge [2600:3c01::f03c:91ff:fe96:a8d7]:9001 7DF739DF5858ED7AA650B822E0D68AB03658414B
UseBridges 1

@juev
Copy link
Owner

juev commented Jun 17, 2024

Подытожу, то что сейчас стоит поправить:

  1. При возникновении тайм-аута проверки выводить то, что успели собрать
  2. Явно перезаписывать torrc файл

запустил 2а раза было ОК
на 3ий вылез мусор

Это в случае, когда мы не удаляем файл конфигурации явно?
Если проводить удаление перед каждым запуском мусор остается?

@LeonMskRu
Copy link
Author

если удалять файл (не пробовал его "очищать" через echo/аналоги) мусора нет

проверял пару раз всего но почему то 1ый и 2ой запуск нормально.
на 3+ появляется мусор

Bridge [2a0f:ca80:1337::9969:dc10]:443 C4A67D45ABB1806E13C1F4B4C83FE4B22E2B8A51
UseBridges 1
eBridges 1

@LeonMskRu
Copy link
Author

очищать файл тоже можно. это 6ой запуск

C:\GitHub\tor-relay-scanner-go\cmd>cmd.exe -6 -n 1 -g 1 --torrc -o 3.txt & echo ":" & cat 3.txt & echo. > 3.txt
Bridge [2001:1b10:1000:8101:0:242:ac11:3]:9001 30F019AE4888CEF1F515C71E53543F5A7F164C77
UseBridges 1
":"
Bridge [2001:1b10:1000:8101:0:242:ac11:3]:9001 30F019AE4888CEF1F515C71E53543F5A7F164C77
UseBridges 1

@juev
Copy link
Owner

juev commented Jun 17, 2024

Можешь проверить поведение в ветке?

#14

У себя протестировал, создается каждый раз новый файл, и по достижению дедлайна выводит результат.

@LeonMskRu
Copy link
Author

LeonMskRu commented Jun 17, 2024

когда мало нод в списке

c:_DL\tor-relay-scanner-go.exe --timeout 500ms -n 4 -g 20 -o c:\tor\bridges.conf --torrc --url http://127.0.0.1/TOR/outRU.json
Testing 10% [> ] (2/20)
The program was running for more than the specified time: 60.00s
Bridge [2a00:1838:37:52::da4e]:443 AC7BDB39F81C4B364EA50B12B51C77C7A131EA7C
Bridge 185.173.93.47:9001 A2D63C32574A5376EC1E6CBAE0ABDB1538782541
UseBridges 1

c:_DL\tor-relay-scanner-go.exe --timeout 500ms -n 4 -g 20 -o c:\tor\bridges.conf --torrc --url http://127.0.0.1/TOR/outRU.json
Testing 30% [===> ] (6/20)
The program was running for more than the specified time: 60.00s
Bridge [2a12:5940:48a5::2]:9001 6C2CA581A7B186E17BECC8DC0846E592200D8B67
skip
Bridge 185.173.93.47:9001 A2D63C32574A5376EC1E6CBAE0ABDB1538782541
UseBridges 1

перезапись файлов ОК. раз 5 запускал == мусора не замечено

заметил #1
оно при дубликатах оставляет IPv4 или IPv6 ?

p.s. огромное спасибо.

@juev
Copy link
Owner

juev commented Jun 18, 2024

оно при дубликатах оставляет IPv4 или IPv6 ?

Сейчас выбирается случайный тип адреса, если не указано иное при запуске. Через параметры можно указывать, какие типы адресов требуется обрабатывать.

@LeonMskRu
Copy link
Author

понятно. буду иметь ввиду.

@juev
Copy link
Owner

juev commented Jun 18, 2024

Изменения в новой версии

@juev juev closed this as completed Jun 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants