Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Перезагрузка компьютера из командной строки

02.07.2011 | Категория: Software | Автор: ManHunter
В некоторых случаях требуется перезагрузить компьютер из командной строки, пакетного файла, через удаленный доступ или в автоматическим режиме без участия человека (например, через планировщик). В этом случае привычная комбинация меню "Пуск" - "Завершение работы", естественно, недоступна. Можно, конечно, воспользоваться сторонними утилитами различных разработчиков, скриптами AutoIt и другими вспомогательными средствами, но они могут быть не всегда доступны. Здесь я собрал несколько способов перезагрузки компьютера с использованием команд самой операционной системы. Некоторые из них работают только на определенных версиях Windows, а некоторые универсальные.

Первая универсальная команда перезагрузки через shutdown, работающая на Windows XP и Windows 7. Параметры команды: -r - перезагрузка (reboot), -f - остановить все запущенные приложения, -t 0 - перезагрузить сразу же, без ожидания.

shutdown -t 0 -r -f
Вторая команда экзотичная, выполняется через команду ping. Работает также на Windows XP и Windows 7:

ping -n 0 127.0.0.1>nul&wmic OS WHERE Primary="TRUE" CALL Win32Shutdown 6
Следующие две команды специфичны только для Windows XP. Эта работает на всех версиях Windows XP:

rundll32 user.exe,ExitWindowsExec 2
А эта работает только до версии SP2 включительно. Останавливается служба журнала событий, после чего система автоматически уходит в перезагрузку. На более новых системах подобный фокус не срабатывает.

echo y|net stop eventlog
Следующий метод перезагрузки самый громоздкий и основан на использовании скрипта VBS. Скрипт состоит из нескольких строчек, поэтому его придется создавать через команды консоли copy con имя_файла.vbs или через перенаправление вывода команды echo в файл. Зато сохраненный файл можно использовать в будущем. Такой способ подходит для Windows XP и Windows 7.

Читать статью целиком »
Просмотров: 123153 | Комментариев: 18

Алгоритм шифрования ROT13 на Ассемблере

14.06.2011 | Категория: Образ мышления: Assembler | Автор: ManHunter
Шифр ROT13 - вариация "шифра Цезаря", в котором используется сдвиг букв в алфавите или простейшая подстановка. Алгоритм не обладает даже минимальной криптостойкостью, поэтому не может применяться в серьезных системах. Вместе с тем, он часто используется при кодировании PHP-скриптов (функция str_rot13), так что алгоритм обратного кодирования будет полезен при написании расшифровщиков. Вот что у меня получилось:
  1. ;-----------------------------------------------------------------------
  2. ; Функция шифрования строки по алгоритму ROT13
  3. ; Copyright (C) ManHunter / PCL
  4. ; http://www.manhunter.ru
  5. ;-----------------------------------------------------------------------
  6. ; Параметры:
  7. ;      lpData - указатель на строку
  8. ;      dSize  - длина строки
  9. ;-----------------------------------------------------------------------
  10. proc    ROT13 lpData:DWORD, dSize:DWORD
  11.         pusha
  12.  
  13.         ; Длина строки
  14.         mov     ecx,[dSize]
  15.         or      ecx,ecx
  16.         jz      .loc_ret
  17.  
  18.         ; Указатели на строку
  19.         mov     esi,[lpData]
  20.         mov     edi,esi
  21. .loc_crypt:
  22.         ; Получить символ из строки
  23.         lodsb
  24.         inc     edi
  25.  
  26.         ; Сохранить бит регистра
  27.         mov     ah,al
  28.         and     ah,20h
  29.  
  30.         ; Символ в верхний регистр
  31.         and     al,(0FFh-20h)
  32.         cmp     al,'A'
  33.         ; Кодировать не надо
  34.         jb      .no_crypt
  35.         cmp     al,'Z'
  36.         ; Кодировать не надо
  37.         ja      .no_crypt
  38.  
  39.         sub     al,13
  40.         ; Cимвол первой половины алфавита?
  41.         cmp     al,'A'
  42.         jae     @f
  43.         add     al,26
  44. @@:
  45.         ; Восстановить бит регистра
  46.         or      al,ah
  47.         dec     edi
  48.         ; Записать измененный символ
  49.         stosb
  50. .no_crypt:
  51.         ; Следующий символ
  52.         loop    .loc_crypt
  53. .loc_ret:
  54.         popa
  55.         ret
  56. endp
Параметры функции: lpData - указатель на шифруемую строку в памяти, dSize - длина строки. При шифровании затрагиваются только буквы английского алфавита, любые другие буквы и символы остаются без изменения. Поскольку ROT13 является обратным алгоритмом, то снять его можно, просто применив эту же функцию к зашифрованной строке.

Читать статью целиком »
Просмотров: 8311 | Комментариев: 6

Расчет хеша SHA1 на Ассемблере

08.06.2011 | Категория: Образ мышления: Assembler | Автор: ManHunter
Алгоритм криптографического хеширования SHA1 (Secure Hash Algorithm 1) используется во многих криптографических приложениях и протоколах. В его основе лежат методы, очень похожие на MD5. В Интернете есть много реализаций этого алгоритма на разных языках программирования, но я не нашел ни одного нормального решения на Ассемблере. Пришлось разбираться самому и в результате у меня получилась достаточно быстрая функция расчета SHA1 участка памяти произвольной длины. Для работы в сегменте данных потребуются некоторые дополнительные переменные и массивы, они вынесены в глобальную область видимости, чтобы не загромождать код.
  1. section '.data' data readable writeable
  2.  
  3. SHA1_h0         dd ?  ; Переменные, в которых будет создан хеш SHA1
  4. SHA1_h1         dd ?
  5. SHA1_h2         dd ?
  6. SHA1_h3         dd ?
  7. SHA1_h4         dd ?
  8.  
  9. SHA1_a          dd ?  ; Вспомогательные переменные для промежуточных
  10. SHA1_b          dd ?  ; вычислений
  11. SHA1_c          dd ?
  12. SHA1_d          dd ?
  13. SHA1_e          dd ?
  14.  
  15. SHA1_W          rd 80  ; Массивы для промежуточных данных
  16. SHA1_Buff       rb 64
Я постарался сохранить оригинальные названия переменных, которые используются в описании алгоритма, так что с этим вопросов возникнуть не должно.

Читать статью целиком »
Просмотров: 6690 | Комментариев: 13

Расчет CRC16 на Ассемблере

30.11.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter
CRC (Cyclic Redundancy Code - циклический избыточный код) - алгоритм расчета контрольной суммы для передаваемого сообщения, основанный на полиномиальной арифметике. Основная идея алгоритма CRC состоит в представлении сообщения в виде огромного двоичного числа, делении его на другое фиксированное двоичное число и использовании остатка от этого деления в качестве контрольной суммы. Получив сообщение, приемник должен выполнить аналогичное действие и сравнить полученный результат с принятой контрольной суммой. Сообщение считается достоверным, выполняется это равенство. Классический алгоритм CRC16 часто используется в архиваторах для контроля целостности данных служебных заголовков архивов, также его удобно использовать для сравнения строки с каким-либо значением, когда по соображениям безопасности сравниваемое значение не хранится в открытом виде. Для контроля целостности файлов функцию CRC16 лучше не использовать, так как из-за небольшой длины ее научились подделывать. Чтобы выполнить расчет CRC16 требуется сперва подготовить так называемую таблицу инициализации. В сегменте данных таблица резервируется как 256 слов, по одному word на каждый возможный байт:
  1. ; Сегмент данных
  2. section '.data' data readable writeable
  3.  
  4. ; Таблица инициализации для расчета CRC16
  5. crc16table rw 256
В классическом варианте для расчета CRC16 используется полином 0a001h, на его основе таблица слов заполняется значениями. Для этого используется следующая вспомогательная функция:
  1. ;-----------------------------------------------------------------------
  2. ; Функция создания таблицы инициализации для расчета CRC16
  3. ;-----------------------------------------------------------------------
  4. proc init_CRC16
  5.         push    eax ebx ecx edi
  6.  
  7.         ; Указатель на выделенную под таблицу память
  8.         mov     edi,crc16table
  9.         ; Расчитать значения для всех 256 слов
  10.         xor     edx,edx
  11. CRC16_Polynom:
  12.         mov     eax,edx
  13.         mov     ecx,8
  14. CRC16_NL:
  15.         shr     ax,1
  16.         jae     CRC16_NoXOR
  17.         ; Magic Number!
  18.         xor     ax,0a001h
  19. CRC16_NoXOR:
  20.         loop    CRC16_NL
  21.         ; Записать значение в таблицу полиномов
  22.         stosw
  23.         inc     edx            ; Счетчик +1
  24.         cmp     edx,256        ; Всю таблицу сгенерировали?
  25.         jne     CRC16_Polynom  ; Нет, работаем дальше
  26.  
  27.         ; Восстановить измененные регистры
  28.         pop     edi ecx ebx eax
  29.         ret
  30. endp
Таблица инициализации получается всегда одинаковой (при условии неизменности полинома), так что ее можно даже не раcчитывать, а хранить в виде массива констант. Если требуется таблица инициализации CRC16 отдельно для использования в других проектах или языках программирования, то она приведена ниже. Для некоторых других разновидностей алгоритма CRC16, например, CRC-CCITT или CRC16-IBM, полином будет другим, и, соответственно, таблица также будет другой.

Читать статью целиком »
Просмотров: 11291 | Комментариев: 2

Stop! 1.0

24.11.2010 | Категория: Мои программы | Автор: ManHunter

Скриншот программы Stop!

Программа Stop! предназначена для подавления окна завершения работы системы. По функционалу аналогична вызову команды "shutdown.exe -a", но более удобна в применении. Естественно, что никак не поможет при убитом процессе lsass.exe и прочих критических сбоях, но зато пригодится при лечении всякой вирусни, отладке программ и в другие моменты, когда отведенной на раздумья минуты явно недостаточно. В архиве есть программа test.exe для проверки работоспособности. Для особо запущенных случаев, когда окно завершения выскакивает постоянно, прилагается вариант программы traystop.exe, которая после запуска сворачивается в трей. Для подавления окна завершения работы достаточно кликнуть левой кнопкой мыши на иконке программы в трее. Правая кнопка - меню.

Читать статью целиком »
Просмотров: 5728 | Комментариев: 14

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.0035 сек.) / Память: 4.5 Mb
Наверх