Сейчас на форуме: rmn, exp50848 (+8 невидимых)

 eXeL@B —› Основной форум —› PsExec - Вывод в консоль
Посл.ответ Сообщение


Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 10 февраля 2012 03:52
· Личное сообщение · #1

Дароф всем ;)

Собственно есть известная программка - PsExec.exe --> Link <-- для удаленного запуска порог и т.п. Но есть одна проблем, она не делает лог файлов, т.е. в консоль не выводит результаты своей работы.

Все, что она может вывести - это свой хэлп ( если хапусить PsExec.exe >> log.txt)

что б потестить, можно запускать так: PsExec.exe \localhost calc

Должно вывести: Couldn't access localhost:

Вывод происходит тут:

Code:
  1.   /*40294A*/  PUSH PsExec.00428C84
  2. /*40294F*/  CALL PsExec.004069CC  //culd acc


нормальный вывод в констоль:
Code:
  1. /*404BA0*/  PUSH PsExec.0042A7C0
  2. /*404BA5*/  CALL PsExec.00408375


Проблема в том, что Couldn't access localhost: и прочая нужная инфа выводится в юникоде, а правильный вывод в консольку - в ASCII.


Кроме того в в импорте присутствуют функции типа WriteConsoleA и WriteConsoleW


Вопрос: как бы там грамотно вывести на примере строки "Couldn't access localhost:" в консоль ( что бы сработало ">> log.txt"

-----
-=истина где-то рядом=-




Ранг: 3.6 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 10 февраля 2012 04:30 · Поправил: kiber_punk
· Личное сообщение · #2

Не нужно глубоко копать и дизасмить.

>> а правильный вывод в консольку - в ASCII.
Неа. Вывод зависит от настроек этой самой консоли.

Запускай консольку в юникоде и не мучайся.
cmd /u




Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 10 февраля 2012 04:53
· Личное сообщение · #3

Ладно, задам вопрос подругому: у мну в eax указатель на строку в юникоде, как мне ее переконвертить в аски?

-----
-=истина где-то рядом=-




Ранг: 3.6 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 10 февраля 2012 05:44
· Личное сообщение · #4

уфф... помоему вопрос звучал несколько иначе - "вывести строку в консоль, что бы сработало ">> log.txt"
Т.е. корректно перенаправить вывод в файл.

Не зачем изобретать велосипед, а переконвертировать строку средствами самой консоли.




Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 10 февраля 2012 05:57
· Личное сообщение · #5

как это сделать?

-----
-=истина где-то рядом=-




Ранг: 3.6 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 10 февраля 2012 06:51 · Поправил: kiber_punk
· Личное сообщение · #6

Я уже выше писал об этом.
Запускай консоль в режиме Юникода:
cmd /u
а из неё уже переправляй вывод из psexec в файл тем же способом.



Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 10 февраля 2012 09:22
· Личное сообщение · #7

команда chcp меняет кодировку



Ранг: 3.6 (гость), 2thx
Активность: 0.010
Статус: Участник

Создано: 10 февраля 2012 09:52
· Личное сообщение · #8

>> команда chcp меняет кодировку
chcp меняет кодовую страницу, но не кодировку.

Перевести вывод консоли в режим юникода можно лишь [пере]запустив командный процессор с ключом /u

KingSise, оно:
%comspec% /u /c PsExec.exe \localhost calc >> log.txt
?



Ранг: 281.8 (наставник), 272thx
Активность: 0.250.01
Статус: Участник
Destroyer of protectors

Создано: 10 февраля 2012 10:21 · Поправил: MasterSoft
· Личное сообщение · #9

KingSise пишет:
в eax указатель на строку в юникоде, как мне ее переконвертить в аски?


Code:
  1. mov ebx, eax
  2. push    eax //src
  3. call    lstrlenW
  4. mov     edx, 004010AB //dest
  5. @loop:
  6. mov     cx, word ptr [ebx]
  7. mov     byte ptr [edx], cl
  8. inc     edx
  9. add     ebx, 0x2
  10. sub     eax, 0x1
  11. test    eax, eax
  12. jnz     @loop


так?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 10 февраля 2012 10:56
· Личное сообщение · #10

И половина кодировок типа китайской отвалятся. Есть же нормальные апи для конвертации MultiByteToWideChar и наборот соответственно.

| Сообщение посчитали полезным: yagello


Ранг: 106.9 (ветеран), 27thx
Активность: 0.080
Статус: Участник

Создано: 10 февраля 2012 21:34
· Личное сообщение · #11

Archer пишет:
И половина кодировок типа китайской отвалятся. Есть же нормальные апи для конвертации MultiByteToWideChar и наборот

Ну если брать во внимание кодировки, особенно если понадобится китайская, то придется следить за локалью и выставлять нужную через setlocale. Иначе при конвертации из Unicode в ANSI произойдет потеря символов.




Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 12 февраля 2012 15:14
· Личное сообщение · #12

kiber_punk пишет:
Перевести вывод консоли в режим юникода можно лишь [пере]запустив командный процессор с ключом /u


К сожалению с PsExec такой трюк не проходит, там походу просто нету вывода...

Зато есть kernel32.WriteConsoleW ;) Так что кое как вывод организовать удалось, не совсем так как хотелось, но все же ;)

-----
-=истина где-то рядом=-



 eXeL@B —› Основной форум —› PsExec - Вывод в консоль
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати