The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

Трассировка обмена данными через Unix domain socket
Для Unix domain socket до сих пор отсутствовал инструмент  для захвата или
ослеживания содержимого канала связи, наподобие tcpdump для IP. Для решения
данной задачи подготовлен новый инструмент udtrace, который реализован в
виде разделяемой библиотеки, подключаемой через LD_PRELOAD.


Загружаем код из Git:

    git clone git://git.gnumonks.org/udtrace

Собираем командой:

    make

Запускаем интересующее приложение в режиме трасиировки:

    LD_PRELOAD=libudtrace.os программа

Например, чтобы узнать какие данные передаёт systemctl через Unix-сокет при
выполнении команды "stat", можно запустить:

    LD_PRELOAD=libudtrace.so systemctl status

    >>> UDTRACE: Unix Domain Socket Trace initialized (TITAN support DISABLED)
    >>> UDTRACE: Adding FD 4
    >>> UDTRACE: connect(4, "/run/dbus/system_bus_socket")
    4 sendmsg W 00415554482045585445524e414c20
    4 sendmsg W 3331333033303330
    4 sendmsg W 0d0a4e45474f54494154455f554e49585f46440d0a424547494e0d0a
    [...]
     UDTRACE: Removing FD 4

где, 

* 4 - номер файлового дескриптора
* sendmsg - имя системного вызова (кроме sendmsg может быть  read, write , readv и т.п.)
* R|W - операция чтения или записи (со стороны отслеживаемого процесса)
* шестнадцатеричный дамп переданных или полученных данных (отображаются только
реально переданные через сокет данные, а не попавшие буфер передачи)

Для декодирования шестнадцатеричного дампа можно собрать декодировщики от
проекта Osmocom, написанные на языке TTCN-3 с использованием Eclipse TITAN.
Для их включения при сборке можно указать флаг

   make ENABLE_TITAN=1

После чего запускать трассировку строкой вида:

   LD_LIBRARY_PATH=/usr/lib/titan LD_PRELOAD=libudtrace.so systemctl status
 
12.04.2018 , Источник: http://laforge.gnumonks.org/blog/20...
Ключи: trace, dump, debug, unix, socket, tcpdump / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Просмотр состояния и мониторинг системы

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Онанимус, 10:04, 12/04/2018 [ответить] [смотреть все]    [к модератору]
  • +/
    А чего не показали, как изменится выхлоп, после применения шестнадцатеричного декодировщика?
     
     
  • 2.3, Qasta, 12:31, 12/04/2018 [^] [ответить] [смотреть все]    [к модератору]
  • +/
    Тоже интересно было бы посмотреть...
     
     
  • 3.8, Аноним, 09:42, 13/04/2018 [^] [ответить] [смотреть все]     [к модератору]
  • +/
    Где тот герой, кто оторвет жопу от дивана, и пересоберет udtrace, и воспроизведе... весь текст скрыт [показать]
     
  • 1.2, EHLO, 11:23, 12/04/2018 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Что из этого нельзя в strace? Или strace слишком архаично для *Ops-ов?
     
     
  • 2.4, щи, 15:35, 12/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Тем, что strace работает через ptrace? Разве не очевидно?
     
  • 2.5, Аноним, 18:04, 12/04/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –2 +/
    В strace очевидно много лишнего Интересней зачем кому-то использовать unix soc... весь текст скрыт [показать]
     
     
  • 3.6, Аноним, 18:07, 12/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Для каких прикладных задач - это вопрос. Вопросительный знак потерялся. :)
     
  • 3.9, Аноним, 10:24, 13/04/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    А что, чтобы применить для чего-либо этот nginx, нужно спрашивать одобрения у Сы... весь текст скрыт [показать]
     
     
  • 4.12, Аноним, 12:31, 18/04/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Одобрение спрашивать не нужно, но полезно знать ограничения продукта, который ты... весь текст скрыт [показать]
     
  • 3.10, Andrey Mitrofanov, 10:45, 13/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    > В *strace очевидно много лишнего.
    > Интересней зачем кому-то использовать unix sockets - для общесистемных нужд?

    Пошарь на своём локалхостике в выводе -[CODE]for mp in /{,var/,run/}; do
        mountpoint -q $mp && find $mp -mount -type s;
    done 2>/dev/null[/CODE]и подумай, зачем _тебе_ это?

    > Для каких прикладных задач может быть полезно. nginx не предлагать, Сысоев не
    > одобрит.

     
     
  • 4.13, Аноним, 12:43, 18/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Годный ответ. Спасибо.
     
     
  • 5.14, Andrey Mitrofanov, 14:25, 18/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    > Годный ответ. Спасибо.

    Пожалуйста.

    Там ещё ',tmp/'  перед '}' имеет смысл добавить.

    ...и, для ценителей:
    $ lsof -U |sort -k9 |less -S
    # lsof -U |sort -k6,6 -k9 |awk '{if($6!=x){l=$0;x=$6}else{if(l)print l;print;l=""}}' |less -S

     
  • 1.7, Аноним, 22:51, 12/04/2018 [ответить] [смотреть все]     [к модератору]  
  • +/
    Можно как-то так code sudo socat -v UNIX-LISTEN tmp socat-listen,ignoreeof,... весь текст скрыт [показать]
     
  • 1.11, izyk, 13:17, 13/04/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    Можно так:
    https://superuser.com/a/576404
    если можно.
     
  • 1.15, Аноним, 19:17, 24/04/2018 [ответить] [смотреть все]     [к модератору]  
  • +/
    Способ с LD_PRELOAD вообще позволяет прикалываться над программами по всякому М... весь текст скрыт [показать]
     
     
  • 2.16, Andrey Mitrofanov, 06:42, 25/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    >Ну и просто изучать что программа делает.

    Маленький Столман плачет в каждом читающем это.

     
  • 1.17, universite, 06:07, 28/04/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    На FreeBSD не собирается:
    [code]
    root@tank1:/tmp/udtrace/udtrace# gmake
    cc -Wall -fPIC -o utils.o -c utils.c
    cc -Wall -fPIC -o sock_events.o -c sock_events.c
    In file included from sock_events.c:3:
    ./sock_events.h:8:10: fatal error: 'sys/epoll.h' file not found
    #include <sys/epoll.h>
             ^~~~~~~~~~~~~
    1 error generated.
    gmake: *** [Makefile:18: sock_events.o] Ошибка 1
    [/code]
     
     
  • 2.19, xm, 14:54, 11/05/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Патамушта там kqueue
     
  • 1.18, Sfinx, 21:15, 09/05/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    sysdig не ?
     
  • 1.20, Всем Сосать, 16:07, 17/05/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    Нажрались системдятины? Теперь трассировщик нужен?
    Не хотели кушать bash, жрите блобы и дампы.  
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor