4 мая 2011 г.

Манипулирование изображениями из командной строки

Масштабирование:

convert -resize 320x200 in.jpg out.jpg


Вырезание блока:

convert -crop 660x528+320+200 in.jpg out.jpg

Вращение на 90 градусов:

convert -rotate 90 image_0001.tiff output.tiff

Переворот верх-низ:


convert -flip me.jpg me_flipped.jpg
convert -flop me.jpg me_flopped.jpg


Создание уменьшенного варианта:


mogrify -sample 80x60 *.jpg
mogrify -format png -sample 15%x15% *.jpg


Создание одного PDF из группы картинок и наоборот:


convert *jpg allinone.pdf
convert allinone.pdf img.png


Добавление текста:


convert -font helvetica -fill yellow -pointsize 25 \
-draw 'text 100,250 "Nandi Hills, Bangalore"' \
image.png text.png

convert -font helvetica -fill yellow -pointsize 36 \
-draw 'text 100,250 "Nandi Hills, Bangalore"' \
-fill green -draw 'text 150,300 Beautiful' \
image.png text.png


Обрамление рамкой:

convert -bordercolor blue -border 5x5 pic001.png border001.png


Мозаика:


convert -page +15+30 1.png -page +49+60 2.png \
-page +52+58 3.png \
-background wheat -mosaic mosaic.png


2D Logo:


convert basic.png -fill blue -draw 'color 0,0 reset' \
basic.png +matte -compose CopyOpacity -composite \
-font Helvetica -pointsize 20 -fill white \
-gravity center -annotate 0x0 "Blue Pill" 2D.png


3D эффекты:
Расплывание:

convert basic.png -blur 0x4 -blur 0x4 -blur 0x4 -blur 0x4 \
+matte blurred.png


Тень:


convert blurred.png -shade 90x0 -normalize light.png
convert blurred.png -shade 90x180 -normalize dark.png


3D Logo:


convert \( light.png \( +clone -fx 'rand()' -threshold -1 \) \
+swap +matte -compose CopyOpacity -composite \) \
\( dark.png \( +clone -threshold 100% \) \
+swap +matte -compose CopyOpacity -composite \) \
-compose Over -composite high_lighting.png

convert 2D.png high_lighting.png -compose ATop -composite 3D.png

convert 3D.png \( +clone -fx 'rand()' +matte -shade 120x45 \
-fill gray -fill beige -tint 120 \) \
-insert 0 -flatten bg_3D.png


Источник: http://www.opennet.ru/tips/info/853.shtml

Работа c PDF, PS, DJVU

сшиваем несколько pdf файлов в один:


gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=1-2.pdf 1.pdf 2.pdf


или по маске:

gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=myebook.pdf *.pdf


следует учитывать то, что с маской *.pdf файлы будут считаны в том порядке, в каком выдаёт результаты команда


ls -l *.pdf



разбираем pdf файл на составляющие: текст и картинки.

pdf2html filename.pdf



или

pdftohtml filename.pdf


(зависит от дистрибутива)

текст будет конвертирован в HTML файл и картинки будут сохранены в текущем директории
если pdf файл состоит только из картинок, то картинки будутавтоматически пронумерованы

вращаем кучу сосканированных страничек автоматически, с помощью скрипта:

это нужно на случай, если сканнер, который может автоматом заглатывать странички, не может их программно переворачивать.

скрипт jpegsrotate.sh


#!/bin/bash
#
# jpegsrotate
#

if [ -z `which jpegtran` ]; then
usage
echo "Error: jpegtran is needed"
echo
exit 1
fi

shopt -s extglob

DEFMASK="*.jpg"
DEFEVENMASK="*[02468].jpg"
DEFODDMASK="*[13579].jpg"
DEFDEG=270

function usage() {
echo
echo "usage:"
echo "$0"
echo " rotates files with the mask $DEFMASK by $DEFDEG degrees clockwise"
echo "$0 --even"
echo " rotates even files with the mask $DEFEVENMASK by 180 degrees"
echo "$0 --odd"
echo " rotates odd files with the mask $DEFODDMASK by 180 degrees"
echo "$0 --params \"REGEXP\" (90|180|270)"
echo " rotates files with the mask REGEXP by the given aspect ratio clockwise"
echo
}

if [ "$1" == "--even" ]; then
MASK=$DEFEVENMASK
DEG=180
elif [ "$1" == "--odd" ]; then
MASK=$DEFODDMASK
DEG=180
elif [ "$1" == "--params" ]; then
if [ -n "$2" -a -n "$3" ]; then
MASK=$2
DEG=$3
else
usage
exit 1
fi
elif [ -n "$1" ]; then
usage
exit 1
else
MASK=$DEFMASK
DEG=$DEFDEG
fi

for i in $MASK; do
if [ ! -e $i ]; then
usage
echo "Error: current directory must contain files with the mask $MASK"
echo
exit 1
fi
echo "$i"
jpegtran -rotate $DEG $i > $i.rotated
mv $i.rotated $i
done




скрипт может вращать только на 90, 180 или 270 градусов по часовой стрелке

источник скрипта: http://www.howtoforge.com/creating_djvu_documents_on_linux

3 мая 2011 г.

Установка Linux

Первое, самое удобное в этой ОС для простого пользователя то, что установки пользователя можно отвязать от партиции, годе находится система. То есть при переустановке системы ВСЕ установки пользователя останутся невредимыми, если, конечно, не форматировать этот участок накопителя.
Мне вполне это удобно, т.к. я люблю экспериментировать с разными дистрибутивами, переустанавливая порой всю систему. Переустановка в нормальном дистрибутиве занимает около 10-15 минут.
Когда сношу систему - скидываю свои установки

/etc/network/interfaces - установки сетевухи: lan, wlan
/etc/inputrc - установки консоли, если меняли
/etc/etc/wpa_supplicant/wpa_supplicant.conf - установки для wlan: пароль и прочее
/lib/firmware/ - если для wlan адаптера нужны какие фирмварные файлы

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

/etc/fstab - файл разметок файловых систем.

Возня с восстановлением файлов занимает минуты 2-3.

Пример с партициями:

more /proc/partitions


major minor #blocks name

8 0 390711384 sda
8 1 8088696 sda1
8 2 2233035 sda2
8 3 1 sda3
8 5 360289755 sda5
8 6 10482349 sda6
8 7 9614871 sda7

sda - весь накопитель, sda1-sda6 - партиции, включая в этом случае логическую sda3

Команда для получения списка прикрученных системой кусков:


df

2 мая 2011 г.

Проверка конденсаторов на вшивость прибором C/ESR Meter

Чума века электроники - вздувшиеся потерявшие свою ёмкость кондюки. Эта проблема встречается ну очень часто, особенно в китайской технике, напичканной дешёвкой. К сожалению, проблема сия порой всплывает и у больших поставщиков оборудования. На этом поприще компания DELL засветилать очень крупно в 2005 году, когда для экономии они сами начали ремонтировать вышедшие из строя материнки, закупленные ну очень дёшево. Некоторые мейнбоарды возвращались по нескольку раз.
Подсказал мне Kanzler о существовании прибора для измерения ёмкости C/ESR Meter. Мерять можно в очень широком диапазоне. В магазине можно сей прибор купить тоже, но за 300$. Нафига козе баян, если плату можно сделать самому лазерно-утюжным методом и обойдётся всё в 20-35€, если покупать компоненты?

Вот так выглядит изначальная реализация


Схема сего девайса


Печатная плата от Руслана, без SMD компонент:




Девайс от miron63 (SMD компоненты, пониженная частота PIC микроконтроллера):


После распечатки на лазернике и процесса термической обработки утюгом



помогаем травлению кисточкой



зачистили





попозже напишу о процессе испытаний :)


источники инфы:

Изначальная схема
Измеритель C и ESR
Схема и печатная плата от Руслана
Реализация от miron63 с пониженным энергопотреблением

1 мая 2011 г.

распечатка буклетов под линуксом из pdf, ps

данный скрипт на линуксе позволяет подготовить документ для двусторонней двустраничной распечатки буклетов (порядок: 1-4,2-3...) из обычных ps или pdf документов.


#!/bin/sh
#если необходимо из pdf ps
pdf2ps file.pdf file.ps
psbook -s4 file.ps tmp.
psnup -2 tmp. 1_4.ps
rm tmp.
#если необходимо то обратно
ps2pdf 1_4.ps 1_4.pdf



при необходимости можно также сделать и пакетно.

Написание реконнект-скрипта для DSL модема с использованием telnet

собственно, была небольшая проблемка реконнекта модема от Zyxel, выглядующего в сеть с целью получения нового IP адреса компа.

при входе на модем через telnet, необходимо пройдись по пунктим меню:


telnet 192.168.1.1
login,yourpassword
24
8
poe drop poe0
dev dial 1
99


зная эту последовательность команд, пишем скриптик для реконнекта:



#!/bin/sh
host=192.168.1.1
port=23
login="superadmin"
passwd="yourpassword"

(echo open ${host} ${port}
sleep 1
echo ${login}
sleep 1
echo ${passwd}
sleep 1
echo "24"
sleep 1
echo "8"
sleep 1
echo "poe drop poe0"
sleep 1
echo "dev dial 1"
sleep 1
echo exit) | telnet


задержки в секунду (sleep 1) вводились сугубо из-за опасения за медленную реакцию роутера.

Или циклом:

#!/bin/bash
host=127.0.0.1
port=23
arr=( "superadmin" "yourpassword" "24" "8" "poe drop poe0" "dev dial 1" "99" )

(echo open ${host} ${port}
sleep 1
for j in "${arr[@]}"
do
echo $j
sleep 1
done
echo exit) | telnet

Взлом и изучение программ в Linux

В последнее время наблюдается рост коммерческих приложений в Linux. Таким образом, возникает потребность в реинженеринге защитных механизмов в новых условиях. Крекеры, пришедшие с Windows не находят удобных инструментов, да и «родные» не знают о многих из них.

В данном обзоре я постараюсь восполнить информацию об инструментах крекера в Linux. Статья не претендует на полноту, эксклюзивность и ориентирована на новичков. (поиск юзал, такой темы не нашел)

Анализаторы файлов
Прежде чем ломать программу, необходимо проанализировать ее. Для этих целей служат следующие программы:

file
Показывает информацию о файле: тип, архитектуру, факт использования разделяемых библиотек, была ли удалена символьная информация командой strip.

nm
Выводит таблицу внешних символов. Показывает имена переменных, функций, метки. (Это справедливо только для файлов, не обработанных командой strip)

size
Выводит размеры всех секций программы (при указании флага -А).

strace
Выдаёт имена системных функций по ходу выполнения программы.

strings
Выводит все текстовые строки, содержащиеся в файле. Бывает очень полезна при поиске регистрационных кодов, хранящихся в открытом виде. (на практике все еще попадается такая слабая защита).

ldd

Показывает зависимости программы от динамических библиотек. Программистам пользы больше, чем крекерам.




readelf

Исследует файл. Выводит намного больше информации, чем команда file.

Показывает тип файла, архитектуру, точку входа и другие не менее важные для крекера данные.


Дизассемблеры

Objdump
Больше, чем просто дизассемблер.

Показывает заголовки программы, секции файла (флаг -х)
Дизассемблирует файл (флаг -D)
Показывает содержимое секций в шестнадцатеричном виде (флаг -s)
и т.д.

Замечание. При дизассемблировании файла, лучше скидывать листинг в файл: objdump -D > ./file, чтобы хоть как-то уменьшить вероятность вывиха обеих глаз.

Dissy
«Обертка» для утилит nm, readelf и objdump. (из-за этого файлы без символьной информации не анализируются)

Имеет графический интерфейс, работать намного приятнее, чем с objdump. Главное окно разделено на две части, в верхней – имена функций, в нижней – их дизассемблерный листинг. Программа показывает переходы, осуществляет навигацию по ним и по вызовам процедур.

Сравнение objdump и Dissy:




Lida (Linux Interactive DisAssembler)

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

LDasm (Linux Disassembler)

Еще одна оболочка для objdump/binutils, написанная на Perl/Tk. По словам автора, "to imitate the look'n'feel of W32Dasm" Так что не мешает ознакомиться.
К сожалению, не обновлялся с декабря 2002 года.

Bastard
Дизассемблер под Linux&FreeBSD, понимаетELF/PE/bin-форматы.

Шестнадцатеричные редакторы
Отобразить в шестнадцатеричном виде файлы могут утилиты objdump, hexdump, od.

KHexEdit
Входит в среду KDE. Имеет графический интерфейс.

Bless
Написанный на моно шестнадцатеричный редактор. Поддерживает вкладки.

Biew
Консольный редактор. Позволяет просматривать и редактировать файлы в текстовом, шестнадцатеричном, ассемблерном виде.

HTE
Также консольный редактор, но функционально на голову выше прочих. Дизассемблирует файлы, поддерживает перекрестные ссылки, указывает имена функций и пр.

В Linux достаточно много шестнадцатеричных редакторов, я указал лишь самые интересные (на мой взгляд).

Дамперы
В случае, когда программа запакована, необходимо снять дамп памяти с запущенного процесса.

Я нашел только два достойных дампера.

PD by ilo
Опубликованный в журнале Phrack. Мне так и не удалось получить запускаемый дамп с помощью этой программы.

Process Dumper (pd)
Программа довольно неплохо снимает дамп с запущенных процессов.
Запуск: pd -p pid > dump

Далее нужно обработать файл напильником. Например, в KHexEdit



Удаляем символьный мусор до заголовка.

Таким образом мне получилось сделать запускающийся дамп с программой, запакованной UPX.

Отладчики
Тяжелая артиллерия:
gdb и все, все, все (графические оболочки)
Довольно мощный отладчик, но при работе можно вывихнуть руки (А без рук и без глаз какой же вы крекер?). Работать с ним довольно сложно, но можно.

Вердикт: для гуру.

EDB

Сравнительно недавно появился отладчик, напоминающий OllyDbg, только для Linux. Причем он написан с нуля, а не является оберткой для других утилит.

Окно разделено на 4 части: дизассемблер, стек, дамп памяти со вкладками, содержание регистров.

В работе этот отладчик очень удобен и интуитивно понятен. Программа позволяет ставить точки прерывания, искать строки, переходы к регистрам, и имеет очень много других полезных функций.



Linice

Неофициальный порт Softice под Linux. При установке требует древнее ядро и квалифицированного шамана с бубном. (Даже не стал париться)

В заключение несколько скринов с примерами работы:

Отладка в EDB, сравнение паролей:



Исследование файла при помощи nm & hte:




Также не помешает исследовать виртуальную файловую систему /proc для взлома программ.

================

LINKS:
PD by ilo: http://www.reversing.org
Process Dumper: http://www.trapkit.de/research/forensic/pd/
Dissy: http://www.ipd.bth.se/ska/sim_home/dissy.html
EDB: http://www.codef00.com
Linice: www.linice.com
HTE: www.hte.sourceforge.net
LDasm: http://www.feedface.com/projects/ldasm.html
Lida: http://lida.sourceforge.net/
Bastard: http://bastard.sourceforge.net/


источник информации: https://forum.antichat.net/showthread.php?p=416604