Симферопольский Форум: Telnet - увидеть данные в двоичном коде. - Симферопольский Форум

Перейти к содержимому

Внимание! Для всех новых пользователей введена премодерация сообщений и тем.
  • (3 Страниц)
  • +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Telnet - увидеть данные в двоичном коде. или не telnet )

#1 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 11:06

Возникла такая вот потребность. Работаю с устройством, протокол которого описан в двоичном виде. Телнет же и все компоненты, которые я знаю, возвращают символьную строку. Если её просто перевести в двоичную форму (через коды символов), результат получается, мягко говоря, не совсем соответствующий описанию. При этом видно, что частично всё же получается то, что ожидал, частично же - какая-то пурга. Хочу увидеть, что же говорит система сразу в двоичном виде, потому что подозреваю "испорченный телефон" при преобразованиях туда-обратно. Вот только не могу найти, каким способом это сделать. Задача - подключиться на нужный адрес/порт, отправить туда определённое значение и получить двоичный ответ. Гугление дает массу вопросов на эту тему и что-то совсем не даёт ответов :unsure: То ли я не так спрашиваю, то ли действительно проблема...

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

#2 Пользователь офлайн   Пэтро 

  • Рублю
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 5 648
  • Регистрация: 15 Сентябрь 10
  • Сказали спасибо раз:
  • ГородЛуговое
  • Страна:  

Отправлено 21 Ноябрь 2016 - 11:15

Может все таки шеснадцатиричный?

Надо написать программу работающую с сокетами. Простейший вариант на php.

Или возможно
http://the.earth.li/...l#using-rawprot

Подключаем Оптический гигабитный интернет в Симферополе и районе.
+79787647406

#3 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 11:27

Не, там именно двоичный и протокол описан на уровне битов. Приходят, естессно, байты. Причем и телнет, и компонента, которой я пользуют, эти байты показывает в виде строки. Вот последний пример: компонента говорит, что пришло 5 байт. И показывает мне строку из 10 символов! То есть, видимо, значение этих байтов не позволяет нормально преобразовать их в символьную строку. Само собой, если я начинаю перегонять их обратно в двоичный код, получаю фигню. Мне бы увидеть один в один что пришло.
P.S. использую mswinsck.ocx.

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

#4 Пользователь офлайн   Пэтро 

  • Рублю
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 5 648
  • Регистрация: 15 Сентябрь 10
  • Сказали спасибо раз:
  • ГородЛуговое
  • Страна:  

Отправлено 21 Ноябрь 2016 - 11:29

Или возможно
http://the.earth.li/...l#using-rawprot

Подключаем Оптический гигабитный интернет в Симферополе и районе.
+79787647406

#5 Пользователь офлайн   Пэтро 

  • Рублю
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 5 648
  • Регистрация: 15 Сентябрь 10
  • Сказали спасибо раз:
  • ГородЛуговое
  • Страна:  

Отправлено 21 Ноябрь 2016 - 11:33

Проблема в том что байты преобразовываются в символы с помощью таблицы соответствия

Win-1251, koi-8 типа того.

Байты они не читаемы.

Подключаем Оптический гигабитный интернет в Симферополе и районе.
+79787647406

#6 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 11:36

А, нет, погорячился. Со строкой все правильно, только от этого не легче.
Описание протокола: приходит 5 байт.
Компонента говорит, что приходит 5 байт.
Показывает строку "Ђ› "
Получаю коды символов: 1026 4 8250 0 0
Перевожу их в двоичный вид: 10000000010 00000100 10000000111010 00000000 00000000
Ну и какие же это байты? Длина должна быть 40 бит.
Кстати, в строке не все символы отобразились как есть, браузер, похоже, не умеет.

Сообщение отредактировал FreeLSD: 21 Ноябрь 2016 - 11:42

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

#7 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 11:49

Просмотр сообщенияПэтро сказал:

Проблема в том что байты преобразовываются в символы с помощью таблицы соответствия

Я понимаю, что проблема именно в этом. Но я не могу заставить 1С читать коды символов в чем-то кроме юникода. И вообще не представляю, как их выдает компонента. Поэтому мне бы избежать всяких преобразований вообще. Понятно, что можно взять и наваять что-то самому. Но зачем изобретать велосипед, наверняка же такая задача возникала уже в истории человечества :)

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

#8 Пользователь офлайн   Rumlin 

  • Добрый волшебник
  • PipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 32 948
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • ГородHavana
  • Страна:  

Отправлено 21 Ноябрь 2016 - 12:01

Дюже древняя утилита.

Цитата

Использовaние клиента Telnet в качестве транспорта для бинарных файлов невозможно из-за спeцифики протокола (более подробно в RFC854 про ). Поэтому без потерь мoжно передавать файлы, содержащие стандартный набор ASCII-символов.

https://xakep.ru/2013/11/25/61645/

Т.е. устройство сетевое и у нее есть какой-то открытый порт ?


Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов
Ничего не делается к лучшему © Борис Раушенбах
Люди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский


Какой ты любопытный.

#9 Пользователь офлайн   Пэтро 

  • Рублю
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 5 648
  • Регистрация: 15 Сентябрь 10
  • Сказали спасибо раз:
  • ГородЛуговое
  • Страна:  

Отправлено 21 Ноябрь 2016 - 12:09

Можно расписать максимально подробно, что куда передаётся чем принимается и как обрабатывается.

Хорошо заданный вопрос уже 50% ответа

Подключаем Оптический гигабитный интернет в Симферополе и районе.
+79787647406

#10 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 12:43

Ну вот то, что я знаю/понимаю:
1. Устройство (весы). Имеет IP-адрес, слушает на определенном порту. Принимает запрос и возвращает 5 байт.
2. В этих байтах имеют значение отдельные биты (так организован протокол), к тому же часть данных передается в обратном порядке (сначала второй байт, потом первый).
3. Компонента mswinsck.ocx, получив эти 5 байт, выдает их в виде строки (т.е. байты уже преобразованы в символы). Попытка преобразовать и обратно хотя бы в 16ричный код дает иногда нормальный, иногда странный результат. Putty видит все как надо, хоть и в 16ричном, а не двоичном виде.
Так что проблема все-таки в преобразовании значения в символ.
Вывод: с используемой компонентой вряд ли можно добиться нормального результата, хотя бы потому, что принципы "озвучивания" ею байтов не ясны.

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

#11 Пользователь офлайн   Rumlin 

  • Добрый волшебник
  • PipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 32 948
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • ГородHavana
  • Страна:  

Отправлено 21 Ноябрь 2016 - 12:55

Можно послушать этот аппарат с помощью Wireshark.
Вот пример - видим в телнет 4 символа, а в реальности их 7.
Прикрепленное изображение: Wireshark.png


Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов
Ничего не делается к лучшему © Борис Раушенбах
Люди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский


Какой ты любопытный.

#12 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 14:10

Собственно, послушать уже получилось. Видно, что даже в шестнадцатиричном виде там все норм. Проблема начинается в том месте, когда компонента пытается сделать из этого строку. Поэтому теперь вопрос стоит так: а неужели вообще никому никогда не нужно было видеть "приход" как есть, без дурацкого перевода? :facepalm: Потому что найти такую компоненту пока не удалось, хоть сам садись пиши.

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

#13 Пользователь офлайн   Rumlin 

  • Добрый волшебник
  • PipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 32 948
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • ГородHavana
  • Страна:  

Отправлено 21 Ноябрь 2016 - 14:19

FreeLSD, а как он управляющие символы в строку слепит? https://ru.wikipedia...%BE%D0%BB%D1%8B


Я детей вообще то боюсь, милостивый мой государь, - шумливы, жестоки и себялюбивы, а коли дети правят державой? ©Юлиан Семёнов
Ничего не делается к лучшему © Борис Раушенбах
Люди, люди — это самое главное. Люди дороже даже денег. © Ф.М. Достоевский


Какой ты любопытный.

#14 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 14:30

Там мне строка и не нужна. Мне нужен сам байт, как есть, пусть как Putty делает, в шестнадцатиричном виде хотя бы. Вот компонента для COM порта, популярная у 1сников, это умеет. А для TCP - ничего пока не нашел.

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

#15 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 15:24

Пытаюсь понять логику, по которой образуется строка.
Пример: Putty показывает байт A8. mswinsck передает в 1С его в виде буквы "Ё". 1С определяет, что код этого символа - 1025 (десятичный). Но это не соответствует шестнадцатиричному! Вот и возникает проблема.

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

#16 Пользователь офлайн   Пэтро 

  • Рублю
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 5 648
  • Регистрация: 15 Сентябрь 10
  • Сказали спасибо раз:
  • ГородЛуговое
  • Страна:  

Отправлено 21 Ноябрь 2016 - 15:40

А как компонента работает? Это activex библиотека? Она подключается к 1с? И какие есть варианты её заменить?

Как выглядит запрос?

Подключаем Оптический гигабитный интернет в Симферополе и районе.
+79787647406

#17 Пользователь офлайн   Пэтро 

  • Рублю
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 5 648
  • Регистрация: 15 Сентябрь 10
  • Сказали спасибо раз:
  • ГородЛуговое
  • Страна:  

Отправлено 21 Ноябрь 2016 - 15:42

Какие способы приёма данных поддерживает 1с? Http?

Подключаем Оптический гигабитный интернет в Симферополе и районе.
+79787647406

#18 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 16:00

Как работает компонента, понятия не имею )
Это ActiveX бибилиотека, часть Visual Studio, насколько я знаю. Файл mswinsck.ocx. 1Сники часто его используют, посколльсу стандартный, легкодоступный и легкоприменяемый.
К 1С подключается как обычный ActiveX компонент.
До сих пор проблем с ней не было, это первый случай. Да и то не факт, что именно с ней проблема, возможно, проблема в разных таблицах символов.
На что заменить, не знаю, вот и ищу.
1С поддерживает кучу способов обмена, вот только TCP/IP среди них почему-то и нет. Почему и приходится рассчитывать на внешние компоненты.

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

#19 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 16:03

hex A8 = dec 168
Набираю ALT+168, получаю "¨". Почему-то компонента передает "Ё"

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

#20 Пользователь офлайн   FreeLSD 

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 9 718
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 21 Ноябрь 2016 - 17:12

Возник вопрос: а если там действительно разные таблицы кодирования?
В Юникоде символ с кодом A8 - это http://www.fileforma...r/a8/index.htm.
Можно ли как-то быстро определить, в какой существующей таблице этот код соответствует символу http://www.fileforma...0401/index.htm?

Если человек не начнёт работать над собой, то дьявол найдёт ему другую работу - выискивать недостатки у других.

Поделиться темой:


  • (3 Страниц)
  • +
  • 1
  • 2
  • 3
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей