HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Песочница
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 05.02.2017, 20:17
mazahist
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);
});
 
Ответить с цитированием

  #2  
Старый 05.02.2017, 21:28
crlf
Guest
Сообщений: n/a
Провел на форуме:
169212

Репутация: 441
По умолчанию

Похоже на содержимое торрент файла. Какой нибудь bencode декодер/энкодер должен помочь.
 
Ответить с цитированием

  #3  
Старый 06.02.2017, 14:21
UnknownSource
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'ом. а потом уже вытаскивать нужные значения.
 
Ответить с цитированием

  #4  
Старый 07.02.2017, 20:17
mazahist
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 intervali3577e5eers180:2F/b
 
Ответить с цитированием

  #5  
Старый 08.02.2017, 16:53
UnknownSource
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. калькулятор тебе в помощь это проверить
 
Ответить с цитированием

  #6  
Старый 08.02.2017, 22:40
mazahist
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 специально отключил.
 
Ответить с цитированием

  #7  
Старый 09.02.2017, 18:13
UnknownSource
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)
 


Быстрый переход




ANTICHAT.XYZ