Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 19

Поиск и замена в бинарном файле

22.11.2013, 23:14. Показов 5584. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть у нас в конторе чат, который хранит свои настройки в бинарном файле. По умолчанию он берет имя в чате равным имени компьютера. Можно ли найти его в файле и заменить на имя пользователя?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2013, 23:14
Ответы с готовыми решениями:

Поиск и замена в файле
Всем привет, Есть некий файл который генерит программма: задачка найти в файле определенное слово и заменить его на слово введенное...

Поиск и замена в файле
Доброго дня, помогите пожалуйста написать батник или предложите какой либо инструмент. Необходимо в текстовом файле вида: ...

Поиск и замена в файле
Добрый день:) Проблема возникла, прошу помощи! Необходимо в xml файле найти встречающиеся подряд строки и изменить их значение. ...

19
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.11.2013, 13:40
Цитата Сообщение от Red_Stalker Посмотреть сообщение
Здравствуйте. Есть у нас в конторе чат, который хранит свои настройки в бинарном файле. По умолчанию он берет имя в чате равным имени компьютера. Можно ли найти его в файле и заменить на имя пользователя?
Чистый бат с бинарями не работает. Perl в конторе стоит?
0
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 19
24.11.2013, 14:46  [ТС]
Цитата Сообщение от FraidZZ Посмотреть сообщение
Чистый бат с бинарями не работает. Perl в конторе стоит?
Увы нет. Вчера продолжил поиск решения проблемы и единственный возможный вариант просто выполнить команду смены ника в окне чата. Аналогично скрипты не могут работать с окнами, так что придется искать решение на AutoIt. Тему можно закрывать.
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.11.2013, 14:56
Цитата Сообщение от Red_Stalker Посмотреть сообщение
так что придется искать решение на AutoIt
Могу помочь.

Добавлено через 52 секунды
Да, AutoIT может работать с бинарями.

Добавлено через 40 секунд
И если вдруг захотите - дистрибутив StrawberryPerl для Windows весит 71 МБ.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.11.2013, 17:23
Можно организовать замену средствами VBScript.
0
24.11.2013, 18:33

Не по теме:

Поздно :-)
Дабы не нарушать правила форума и не флудить темами, решили на AutoIT через взаимодействие с окнами. Вариант с заменой не подошел в связи со странным форматом файла.

0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.11.2013, 21:07
Цитата Сообщение от FraidZZ Посмотреть сообщение
со странным форматом файла.
ать? Кодированная длина буфера для никнейма в хидере?
0
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 19
24.11.2013, 21:14  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
ать? Кодированная длина буфера для никнейма в хидере?
userdata.rar

Вот файл для примера. Но проблема уже решилась через работу с окном

Ах да. Ник в чате VLAD-PC
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.11.2013, 21:16
Да я не знаю
Меня попросили на AutoIT простенький скрипт написать — я написал. Причины, почему ТС решил конкретно так сделать — не знаю, но догадываюсь, что данные как-то странно хранятся.

Добавлено через 1 минуту
О, а вот и Вы подключились. Возможно щас второй вариант забабахаем
0
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 19
24.11.2013, 21:18  [ТС]
Цитата Сообщение от FraidZZ Посмотреть сообщение
Да я не знаю
Меня попросили на AutoIT простенький скрипт написать — я написал. Причины, почему ТС решил конкретно так сделать — не знаю, но догадываюсь, что данные как-то странно хранятся.

Добавлено через 1 минуту
О, а вот и Вы подключились. Возможно щас второй вариант забабахаем
Я просто не знаю как батником его отредактировать ) Поэтому и спросил тут )
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.11.2013, 21:25
Да я никак там ник увидеть в этом бинаре не могу Может адрес дадите (я про HEX)
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.11.2013, 21:37
....... не батником, VBScript-ом.

Red_Stalker, я думаю, если подменить никнейм на другой, с иной длинной, он не заработает.
В бинарнике по-любому стоят не метки, а закодирован размер секций.

Чтобы обойти эту проблему, мне нужен бинарник с введенной максимально возможной длинной никнейма.
Также мне нужно, чтобы Вы проверили работает ли приложенный мною вариант.
Сейчас там должен оказаться ALEX-PC:

FraidZZ, offset - 840.
Миниатюры
Поиск и замена в бинарном файле  
Вложения
Тип файла: zip userdata2.zip (1.7 Кб, 13 просмотров)
0
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 19
24.11.2013, 21:43  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
....... не батником, VBScript-ом.

Red_Stalker, я думаю, если подменить никнейм на другой, с иной длинной, он не заработает.
В бинарнике по-любому стоят не метки, а закодирован размер секций.

Чтобы обойти эту проблему, мне нужен бинарник с введенной максимально возможной длинной никнейма.
Также мне нужно, чтобы Вы проверили работает ли приложенный мною вариант.
Сейчас там должен оказаться ALEX-PC:

FraidZZ, offset - 840.
Да. Простая замена работала и раньше. Но нельзя было ввести ник длиннее. Сейчас поставил ник Maximum123456789123456789123456789
userdata.rar
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.11.2013, 21:44
Red_Stalker, скажите из скольки символов допустим минимальный по длинне ник?
1
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 19
24.11.2013, 21:47  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
Red_Stalker, скажите из скольки символов допустим минимальный по длинне ник?
1234567890123456789012345678901234 = 34 символа
0
Модератор
Эксперт JS
 Аватар для Eva Rosalene
5241 / 2115 / 416
Регистрация: 06.01.2013
Сообщений: 4,846
24.11.2013, 21:48
Цитата Сообщение от Dragokas Посмотреть сообщение
Red_Stalker, скажите из скольки символов допустим минимальный по длинне ник?

Не по теме:

Ну всё... Наша тяжелая артиллерия входит в бой... Я медленно и перебежками отползаю в уютный ламповый окопчик... ;)

0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.11.2013, 21:54
Цитата Сообщение от Dragokas
минимальный
то, вообщем уже не важно.

Судя из сравнения файлов, они одинакового размера, а значит и размер секции для ника там выделенный статически.
Осталось узнать у Вас вот это:
Цитата Сообщение от Dragokas Посмотреть сообщение
Также мне нужно, чтобы Вы проверили работает ли приложенный мною вариант.
Сейчас там должен оказаться ALEX-PC:
чтобы убедится, что нет проверки контрольной суммы. (рядом красуется надпись SHA-1, что-то меня это насторожило ).
0
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 19
24.11.2013, 21:57  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
то, вообщем уже не важно.

Судя из сравнения файлов, они одинакового размера, а значит и размер секции для ника там выделенный статически.
Осталось узнать у Вас вот это:

чтобы убедится, что нет проверки контрольной суммы. (рядом красуется надпись SHA-1, что-то меня это насторожило ).
Минимальный 1 символ. Замена на Алекс сработала.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.11.2013, 22:37
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

FraidZZ, да просто иногда практиковаться тоже полезно. А то я вообще лясы отложил за неимением времени.

Red_Stalker, сохранить файл с расширением .vbs и положить рядом с бинарником.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Explicit
 
Dim Nick: Nick = InputBox("Enter New Game NickName:")
if Len(Nick) > 32 then msgbox "Слишком длинный ник (нужно не более 32 символов!)": WScript.Quit
if Len(Nick) = 0 then WScript.Quit
 
Dim NickNull, n
For n = 1 to len(Nick)
    NickNull = NickNull & mid(Nick, n, 1) & chr(0)
Next
NickNull = NickNull & String (64 - len(Nick)*2, chr(0)) 'Затираем все остальное символами Null
 
Dim curPath: curPath = WScript.ScriptFullname: curPath = left(curPath, instrrev(curPath, "\"))
Dim sFile: sFile = curPath & "userdata.vcdata"
 
With CreateObject("ADODB.Stream")
    .Type = 1: .Open: .LoadFromFile sFile
    .Position = 2112
    .Write StringToByteArray(NickNull)
    .Position = 0
    .SaveToFile sFile, 2 'overwrite
    .Close
End With
 
Function StringToByteArray(sText)
    Dim BS: Set BS = CreateObject("ADODB.Stream")
    BS.Type = 1: BS.Open
    Dim TS: Set TS = CreateObject("ADODB.Stream")
    With TS
        .Type = 2: .Open: .Charset = "windows-1251": .WriteText sText: .Position = 0: .CopyTo BS: .Close
    End With
    BS.Position = 0: StringToByteArray = BS.Read()
    BS.Close: Set BS = Nothing: Set TS = Nothing
End Function
1
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 19
24.11.2013, 22:42  [ТС]
Цитата Сообщение от Dragokas Посмотреть сообщение
FraidZZ, да просто иногда практиковаться тоже полезно. А то я вообще лясы отложил за неимением времени.

Red_Stalker, сохранить файл с расширением .vbs и положить рядом с бинарником.
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Explicit
 
Dim Nick: Nick = InputBox("Enter New Game NickName:")
if Len(Nick) > 32 then msgbox "Слишком длинный ник (нужно не более 32 символов!)": WScript.Quit
if Len(Nick) = 0 then WScript.Quit
 
Dim NickNull, n
For n = 1 to len(Nick)
    NickNull = NickNull & mid(Nick, n, 1) & chr(0)
Next
NickNull = NickNull & String (64 - len(Nick)*2, chr(0)) 'Затираем все остальное символами Null
 
Dim curPath: curPath = WScript.ScriptFullname: curPath = left(curPath, instrrev(curPath, "\"))
Dim sFile: sFile = curPath & "userdata.vcdata"
 
With CreateObject("ADODB.Stream")
    .Type = 1: .Open: .LoadFromFile sFile
    .Position = 2112
    .Write StringToByteArray(NickNull)
    .Position = 0
    .SaveToFile sFile, 2 'overwrite
    .Close
End With
 
Function StringToByteArray(sText)
    Dim BS: Set BS = CreateObject("ADODB.Stream")
    BS.Type = 1: BS.Open
    Dim TS: Set TS = CreateObject("ADODB.Stream")
    With TS
        .Type = 2: .Open: .Charset = "windows-1251": .WriteText sText: .Position = 0: .CopyTo BS: .Close
    End With
    BS.Position = 0: StringToByteArray = BS.Read()
    BS.Close: Set BS = Nothing: Set TS = Nothing
End Function
Спасибо большое! )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.11.2013, 22:42
Помогаю со студенческими работами здесь

Поиск и замена текста в файле
Имеется, допустим, файлик в кодировке 1251: tyutuyt бухгалтера лросодло клиентов апорпвоыпоп ываываыаыва Нужно как-то заменить...

Поиск и замена текста в REG-файле
Здравствуйте, помогите пожалуйста написать скрипт имеется файл C:\dir\1.reg нужно в нем найти текст из 2-й строки файла C:\dir\2.txt и...

Поиск и замена строки в CFG-файле
Добрый день уважаемые обитатели форума! Очень нужна ваша помощь. Есть файл: config.cfg у которого вот такое содержание: //Please do...

Поиск числа и его замена на большее в текстовом файле
Подскажите как реализовать данную функцию, есть текстовый файл url.txt такого содержания: как сделать так чтобы после каждого...

Поиск и замена текста в файле, в содержимом которого имеются специальные символы
Поискал в инете, толкового ответа не нашел. Суть вопроса... Есть текстовый файл. При запуске батник предлагается ввести новое значение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru