ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

05.02.2017, 20:17
|
|
Guest
Сообщений: n/a
Провел на форуме: 1002
Репутация:
0
|
|
Создаю GET запрос к торрент трекеру.
В ответ получаю
Код:
Code:
d8:intervali3073e12:min intervali3073e5:peers180:S�ƭ(X_V�����39A��*���[�����Jm�w��I�ƒK��#غc_\K6P�w�
x6�Y�\%-G�����P_�p�A��{�)� ����.��[��mj�V�$^�?E^Xȿ`�xf�r_ܠ 9�mj��ނ�?09M�7.��~�q[�����_n�|uO�S �vY����e
Как можно перевести такие данные в нормальную строку???
Если что, вот фрагмент кода создания строки:
Код:
Code:
var str = "";
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
console.log(str);
});
|
|
|
|

05.02.2017, 21:28
|
|
Guest
Сообщений: n/a
Провел на форуме: 169212
Репутация:
441
|
|
Похоже на содержимое торрент файла. Какой нибудь bencode декодер/энкодер должен помочь.
|
|
|
|

06.02.2017, 14:21
|
|
Guest
Сообщений: n/a
Провел на форуме: 3164
Репутация:
0
|
|
Сообщение от mazahist
mazahist said:
↑
Создаю GET запрос к торрент трекеру.
В ответ получаю
Код:
Code:
d8:intervali3073e12:min intervali3073e5:peers180:S�ƭ(X_V�����39A��*���[�����Jm�w��I�ƒK��#غc_\K6P�w�
x6�Y�\%-G�����P_�p�A��{�)� ����.��[��mj�V�$^�?E^Xȿ`�xf�r_ܠ 9�mj��ނ�?09M�7.��~�q[�����_n�|uO�S �vY����e
Как можно перевести такие данные в нормальную строку???
это часть стандартного ответа торрент-сервера. можешь посмотреть wireshark'ом пакет
там после "peers180:" просто идет дофига байт. Это пары состоящие из ip-адреса + порта.
ip(4 байта)+порт(2 байта) = 6 байт - занимает каждая пара. а число после peers - это количество последующих байт с этими парами. например, в твоем случае 180=6*30, значит дальше 30 пар
потом по этим ip-ишникам и портам трекер отправляет запросы на закачку файла и уже у них качает раздачу.
так что, наверно, ответ на твой вопрос - получать строку надо именно в qbytearray (например), а не string'ом. а потом уже вытаскивать нужные значения.
|
|
|
|

07.02.2017, 20:17
|
|
Guest
Сообщений: n/a
Провел на форуме: 1002
Репутация:
0
|
|
Сообщение от UnknownSource
UnknownSource said:
↑
ответ на твой вопрос - получать строку надо именно в qbytearray (например), а не string'ом. а потом уже вытаскивать нужные значения.
Я использую nodejs, там нет qbytearray. В nodejs есть объект Buffer - Uint8Array представление данных: Позволяет на лету преобразовывать данные, но вряд ли он поможет.
Сообщение от UnknownSource
UnknownSource said:
↑
а потом уже вытаскивать нужные значения
Так данные же нужно сначала собрать:
Код:
Code:
response.on('data', function (chunk) {
str += chunk;
});
+Если задать кодировку ascii:
[CODE]
Code:
d8:intervali3577e12:min intervali3577e5  eers180:2F/b
|
|
|
|

08.02.2017, 16:53
|
|
Guest
Сообщений: n/a
Провел на форуме: 3164
Репутация:
0
|
|
Сообщение от mazahist
mazahist said:
↑
Я использую nodejs, там нет qbytearray. В nodejs есть объект Buffer - Uint8Array представление данных: Позволяет на лету преобразовывать данные, но вряд ли он поможет.
вот в плане кода не подскажу, с nodejs не знаком.
но по сути самих данных:
там лежит например,
0x70 0x65 0x65 0x72 0x73 0x31 0x38 0x30 0x3a 0x5f 0xb7 0x66 0x13 0xc3 0x2f - прям байты в 16-теричном виде. а по нормальному - это
--p----e-----e------r-----s-----1----8-----0---:----95--183---102---19 ----49967
---тут идет в ascii -коде-------------------------- |---а тут уже не ascii! перевели в десятичные числа ip: 95.183.102.19, и порт 0xc32f ->49967. калькулятор тебе в помощь это проверить
|
|
|
|

08.02.2017, 22:40
|
|
Guest
Сообщений: n/a
Провел на форуме: 1002
Репутация:
0
|
|
Не пойму, почему для любой magnet ссылки количество пиров = 30 (180/6)???
Сообщение от UnknownSource
UnknownSource said:
↑
после "peers180:" просто идет дофига байт. Это пары состоящие из ip-адреса + порта.
ip(4 байта)+порт(2 байта) = 6 байт - занимает каждая пара. а число после peers - это количество последующих байт с этими парами. например, в твоем случае 180=6*30, значит дальше 30 пар
Код HTML:
HTML:
var strBuff = [], length = 0;
//добавляем в массив пришедшие данные+ увеличиваем общую длину пришедших данных
response.on('data', function (chunk) { strBuff.push(chunk); length += chunk.length; });
response.on('end', function () {//когда пересылка закончена
var body = Buffer.concat(strBuff, length); //создаем буфер 16-ти ричных значений из массива пришедших данных
var str = body.toString("ascii");//переводим буфер в ascii
var numPeers = str.slice(str.search("peers") + 5).slice(0, str.search(":") + 1); //страшный парсинг числа пиров ( =180)
var peerCount = numPeers / 6; // 180/6 = 30
var bPeers = bencode.decode(str).peers;//получам список пиров( от библиотеки bencode( не работает с utf8 :( ))
var peers = group(body.slice(body.length - numPeers), 6).map(function (address) {//групируем байты в буфере по 6 и для каждой группы вызываем функцию( ниже)
return {//возвращаем
address: address,//сам буффер
ip: address.slice(0, 4).join('.'),//переводим каждый байт в 10-ную систему+соединяем в строку с разделителм '.': байты с [0,1,2,3] - это ip
port: address.readUInt16BE(4)//получаем беззнаковое целое 2-х байтовое число - это порт
}
});
console.log(peers); //вывод в консоль
});
Вот код, который выводит:
Код:
Code:
[
{ address: ,
ip: '108.169.22.64',
port: 45317 },
{ address: ,
ip: '144.110.162.178',
port: 19122 },
{ address: ,
ip: '155.5.193.216',
port: 1794 },
{ address: ,
ip: '93.143.227.53',
port: 42162 },
{ address: ,
ip: '168.129.139.191',
port: 52050 },
{ address: ,
ip: '198.175.77.243',
port: 39245 },
{ address: ,
ip: '222.118.156.195',
port: 28462 },
{ address: ,
ip: '147.14.55.139',
port: 14524 },
{ address: ,
ip: '243.139.32.65',
port: 61791 },
{ address: ,
ip: '79.185.73.89',
port: 19789 },
{ address: ,
ip: '222.113.33.137',
port: 6578 },
{ address: ,
ip: '140.37.131.34',
port: 24671 },
{ address: ,
ip: '153.132.149.194',
port: 26463 },
{ address: ,
ip: '55.180.217.200',
port: 61785 },
{ address: ,
ip: '23.191.110.48',
port: 28594 },
{ address: ,
ip: '16.148.1.214',
port: 42580 },
{ address: ,
ip: '23.59.125.209',
port: 15455 },
{ address: ,
ip: '183.116.25.216',
port: 33364 },
{ address: ,
ip: '52.43.36.227',
port: 24157 },
{ address: ,
ip: '73.96.253.67',
port: 5215 },
{ address: ,
ip: '66.218.96.213',
port: 62099 },
{ address: ,
ip: '30.74.59.62',
port: 20047 },
{ address: ,
ip: '165.123.28.56',
port: 25951 },
{ address: ,
ip: '84.183.248.95',
port: 58885 },
{ address: ,
ip: '18.235.180.178',
port: 18975 },
{ address: ,
ip: '185.4.145.155',
port: 24671 },
{ address: ,
ip: '29.96.176.54',
port: 50523 },
{ address: ,
ip: '219.101.72.235',
port: 16421 },
{ address: ,
ip: '203.10.124.210',
port: 28709 },
{ address: ,
ip: '212.255.11.95',
port: 18789 }
]
Если смотреть в uTorrent, на вкладке "пиры"- этих адресов там нет; DHT специально отключил.
|
|
|
|

09.02.2017, 18:13
|
|
Guest
Сообщений: n/a
Провел на форуме: 3164
Репутация:
0
|
|
Сообщение от mazahist
mazahist said:
↑
Не пойму, почему для любой magnet ссылки количество пиров = 30 (180/6)???
хз, вроде не всегда. если взять раздачу, какую-нибудь редкую, у которой пиров всего пара штук, то здесь будет поменьше число. но это надо бы проверить.
Сообщение от mazahist
mazahist said:
↑
Если смотреть в uTorrent, на вкладке "пиры"- этих адресов там нет; DHT специально отключил.
вот это странно. особенно, если dht отключено, то пиры трекер получает только из этого ответа. и они должны во вкладке пиры отображаться. но может настройки торрент-трекера все-таки не такие, или ты че-то не там/не то отключил. или ты повторно качаешь ту же раздачу, и трекер ее пиры уже "помнит".
поюзай программу wireshark. она весь трафик пишет, можно его просматривать и тд. Статья на хабре "приручение акулы" про нее есть.
и попробуй в трафике поискать
ip.addr==108.169.22.64
или остальные свои ip-адреса. и он должен показать обмен пакетами с этими адресами.
я у себя проверил и так работает.
еще вот ссылка на документацию
https://wiki.theory.org/BitTorrentSp...HTTPS_Protocol
а в целом, вот как ты написал, так все и должно работать. надо только проверить правильно
|
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|