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

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

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

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

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

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

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

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

Или что-то случилось, или одно из двух.

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

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

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

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

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

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

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

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

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

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

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

Или что-то случилось, или одно из двух.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 12 498
  • Регистрация: 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
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 12 498
  • Регистрация: 16 сентября 10
  • Страна:  

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

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

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

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

Или что-то случилось, или одно из двух.

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

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

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

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

Цитата

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Или что-то случилось, или одно из двух.

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

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

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

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


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

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

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

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

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

Или что-то случилось, или одно из двух.

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

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

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

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


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

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

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

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

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

Или что-то случилось, или одно из двух.

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

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

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

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

Или что-то случилось, или одно из двух.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Или что-то случилось, или одно из двух.

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

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

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

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

Или что-то случилось, или одно из двух.

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

  • Живу здесь
  • PipPipPipPipPip
  • Перейти к галерее
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Старая гвардия
  • Сообщений: 12 498
  • Регистрация: 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 скрытых пользователей