Пример кода:
“Стремись не к тому, чтобы добиться успеха,
а к тому, чтобы твоя жизнь имела смысл”
Альберт Энштейн
понедельник, 28 марта 2011 г.
понедельник, 21 марта 2011 г.
Получение IP адресов домена с помощью nslookup
# получить список всех IP адресов домена
nslookup google.com | awk '/Address:/ { print $2 }' | grep -v \#
# получить один IP адрес домена
nslookup google.com | awk '/Address:/ { print $2 }' | tail -n1
# получить информацию о домене
echo "`nslookup google.com | awk '/Address:/ { print $2 }' | tail -n1`" | socat - TCP4:whois-servers.net:43
nslookup google.com | awk '/Address:/ { print $2 }' | grep -v \#
# получить один IP адрес домена
nslookup google.com | awk '/Address:/ { print $2 }' | tail -n1
# получить информацию о домене
echo "`nslookup google.com | awk '/Address:/ { print $2 }' | tail -n1`" | socat - TCP4:whois-servers.net:43
Узнаем информацию о городе, стране, доме из google.com
Для запроса используем запрос:
http://maps.google.com/maps/geo?q=russia&output=json&oe=utf8&sensor=true_or_false
возможные значения поля
output: json, csv, xml, kml
q: [любой адрес в текстовом виде, на любом языке: страна, город, улица дом]
PS:
Можно использовать информацию из Whois запроса,
в результате получаем подробную информацию, включая GPS координаты объекта.
http://maps.google.com/maps/geo?q=russia&output=json&oe=utf8&sensor=true_or_false
возможные значения поля
output: json, csv, xml, kml
q: [любой адрес в текстовом виде, на любом языке: страна, город, улица дом]
PS:
Можно использовать информацию из Whois запроса,
в результате получаем подробную информацию, включая GPS координаты объекта.
socat, netcat, nc прямой запрос к whois серверам!
Вместо 10.0.0.1 подставляем IP адрес, инф. о котором нужно узнать:
echo "10.0.0.1" | socat - TCP4:whois.ripe.net:43
echo "10.0.0.1" | socat - TCP4:whois-servers.net:43
echo "10.0.0.1" | socat - TCP4:whois.arin.net:43
echo "10.0.0.1" | nc whois.ripe.net 43
echo "10.0.0.1" | nc whois-servers.net 43
echo "10.0.0.1" | nc whois.arin.net 43
echo "10.0.0.1" | socat - TCP4:whois.ripe.net:43
echo "10.0.0.1" | socat - TCP4:whois-servers.net:43
echo "10.0.0.1" | socat - TCP4:whois.arin.net:43
echo "10.0.0.1" | nc whois.ripe.net 43
echo "10.0.0.1" | nc whois-servers.net 43
echo "10.0.0.1" | nc whois.arin.net 43
DOS vs VirtualBox for Linux
1. Скачиваем и устанавливаем VirtualBox
2. Создаем новую виртуальную машину
"Создать"->"Вперед>"
Введем имя "Dos" -> "Вперед>" -> "Вперед>" -> "Вперед>" -> "Вперед>"
Выберем "образ фиксированного размера" -> "Вперед>" -> "Вперед>"
-> "Финиш"
3. Устанавливаем Dos (скачиваем один из образов для установки)
Обмен файлами можно организовать путем подключения физических устройств, созданием и монтированием виртуальных устройств. Проще и безопаснее всего это сделать через виртуальный образ FDD диска
# создадим образ диска 1.44Mb
dd bs=512 count=2880 if=/dev/zero of=~/floppy.img
# форматируем
mkfs.msdos ~/floppy.img
# монтируем
sudo mkdir /media/floppy/
sudo mount -o loop ~/floppy.img /media/floppy/
Далее можно подключить созданный образ к виртуальной машине
и использовать его для обмена файлами
Есть более оригинальный способ. Можно монтировать образ виртуального HDD диска (Dos.vdi).
# читаем 4 байта (без знаковое целое) по смещению 76
od -j76 -N4 -td4 Dos.vdi | awk 'NR==1{print $2;}' #=2 (фикс. размер диска)
# читаем 4 байта (без знаковое целое) по смещению 344
od -j344 -N4 -td4 Dos.vdi | awk 'NR==1{print $2;}' #=8192 (начало диска)
#копируем таблицу разделов диска в отдельный файл
dd if=Dos.vdi of=vdstart bs=1 skip=8192 count=1b >/dev/null #8192(начало диска)
# узнаем характеристики диска
/sbin/sfdisk -luS vdstart
rm vdstart
По этим данным можно вычислить начало диска и его общий размер:
# offset = 8192(начало диска)+63(начало)*512(размер сектора) = 40448
# size = 1048257(число секторов)*512(размер сектора) = 536707584
sudo mkdir /media/Dos/
sudo mount Dos.vdi /media/Dos -t auto -o loop,offset=40448
Полученную папку /media/Dos можно использовать для прямого перемещения данных в виртуальную машину
Например: для моего случая мне потребовалась документация по Dos (Tech Help 6.0) FAsm и отладчик Swat. И другие инструменты.
2. Создаем новую виртуальную машину
"Создать"->"Вперед>"
Введем имя "Dos" -> "Вперед>" -> "Вперед>" -> "Вперед>" -> "Вперед>"
Выберем "образ фиксированного размера" -> "Вперед>" -> "Вперед>"
-> "Финиш"
3. Устанавливаем Dos (скачиваем один из образов для установки)
Обмен файлами можно организовать путем подключения физических устройств, созданием и монтированием виртуальных устройств. Проще и безопаснее всего это сделать через виртуальный образ FDD диска
# создадим образ диска 1.44Mb
dd bs=512 count=2880 if=/dev/zero of=~/floppy.img
# форматируем
mkfs.msdos ~/floppy.img
# монтируем
sudo mkdir /media/floppy/
sudo mount -o loop ~/floppy.img /media/floppy/
Далее можно подключить созданный образ к виртуальной машине
и использовать его для обмена файлами
Есть более оригинальный способ. Можно монтировать образ виртуального HDD диска (Dos.vdi).
# читаем 4 байта (без знаковое целое) по смещению 76
od -j76 -N4 -td4 Dos.vdi | awk 'NR==1{print $2;}' #=2 (фикс. размер диска)
# читаем 4 байта (без знаковое целое) по смещению 344
od -j344 -N4 -td4 Dos.vdi | awk 'NR==1{print $2;}' #=8192 (начало диска)
#копируем таблицу разделов диска в отдельный файл
dd if=Dos.vdi of=vdstart bs=1 skip=8192 count=1b >/dev/null #8192(начало диска)
# узнаем характеристики диска
/sbin/sfdisk -luS vdstart
rm vdstart
По этим данным можно вычислить начало диска и его общий размер:
# offset = 8192(начало диска)+63(начало)*512(размер сектора) = 40448
# size = 1048257(число секторов)*512(размер сектора) = 536707584
sudo mkdir /media/Dos/
sudo mount Dos.vdi /media/Dos -t auto -o loop,offset=40448
Полученную папку /media/Dos можно использовать для прямого перемещения данных в виртуальную машину
Например: для моего случая мне потребовалась документация по Dos (Tech Help 6.0) FAsm и отладчик Swat. И другие инструменты.
воскресенье, 20 февраля 2011 г.
lighttpd: пишем mod_rpaf
Скачиваем последнюю версию lighttpd
Читаем инструкцию по написанию плагина для lighttpd
Исходный код модуля для apache берем тут
Приступаем:
cd lighttpd-1.4.28/src
cp mod_skeleton.c mod_rpaf.c
После небольшой правки получаем текст приведенный ниже.
Скопируем приведенный ниже текст и вставим в mod_rpaf.c:
добавим строки в файл src/Makefile.am
lib_LTLIBRARIES += mod_rpaf.la
mod_rpaf_la_SOURCES = mod_rpaf.c
mod_rpaf_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
mod_rpaf_la_LIBADD = $(common_libadd)
собираем lighttpd
./configure --prefix=/usr ...
make
sudo make install
конфигурационный файл lighttpd.conf:
server.port = 8081
server.modules = ("mod_rpaf", ....)
rpaf.enable = 1 # 1-enable module, 0-disable module
rpaf.proxy_ips = ( "127.0.0.1", ... ) # proxy servers address
rpaf.sethostname = 1 # 1-enable set "Host:" using "X-Forwarded-Host" or "X-Host", 0-off
rpaf.header = "X-Real-IP" # "X-Forwarded-For" if commented
конфигурационный файл nginx.conf:
http {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
}
server { # simple reverse-proxy
listen 80;
server_name test.org;
access_log /var/log/nginx/lighttpd.access.log;
# pass requests for dynamic content to rails/turbogears/zope, et al
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host myhost;
}
}
перезапускаем оба сервиса:
service nginx restart
service lighttpd restart
модуль написан по аналогии с mod_rpaf для apache
Это первая версия модуля, прошу протестировать его всех,
кому он может быть полезным.
в случае обнаружения багов, пишите по адресу: isaleksey@gmail.com
github
cd lighttpd-1.4.28/src
git clone git://github.com/symalex/mod_rpaf.git .
Читаем инструкцию по написанию плагина для lighttpd
Исходный код модуля для apache берем тут
Приступаем:
cd lighttpd-1.4.28/src
cp mod_skeleton.c mod_rpaf.c
После небольшой правки получаем текст приведенный ниже.
Скопируем приведенный ниже текст и вставим в mod_rpaf.c:
добавим строки в файл src/Makefile.am
lib_LTLIBRARIES += mod_rpaf.la
mod_rpaf_la_SOURCES = mod_rpaf.c
mod_rpaf_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
mod_rpaf_la_LIBADD = $(common_libadd)
собираем lighttpd
./configure --prefix=/usr ...
make
sudo make install
конфигурационный файл lighttpd.conf:
server.port = 8081
server.modules = ("mod_rpaf", ....)
rpaf.enable = 1 # 1-enable module, 0-disable module
rpaf.proxy_ips = ( "127.0.0.1", ... ) # proxy servers address
rpaf.sethostname = 1 # 1-enable set "Host:" using "X-Forwarded-Host" or "X-Host", 0-off
rpaf.header = "X-Real-IP" # "X-Forwarded-For" if commented
конфигурационный файл nginx.conf:
http {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
}
server { # simple reverse-proxy
listen 80;
server_name test.org;
access_log /var/log/nginx/lighttpd.access.log;
# pass requests for dynamic content to rails/turbogears/zope, et al
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host myhost;
}
}
перезапускаем оба сервиса:
service nginx restart
service lighttpd restart
модуль написан по аналогии с mod_rpaf для apache
Это первая версия модуля, прошу протестировать его всех,
кому он может быть полезным.
в случае обнаружения багов, пишите по адресу: isaleksey@gmail.com
github
cd lighttpd-1.4.28/src
git clone git://github.com/symalex/mod_rpaf.git .
среда, 9 февраля 2011 г.
Создание SSH туннеля
пример:
перебросить локальный порт 2000 на удаленный порт 25
ssh -f -L [bind_address:]2000:local.org:25 -nNT user@remote.org
пояснения:
-f - перейти в фон после запуска
local.org - локальный сервер
user@remote.org - удаленный сервер с которым соединяемся
[bind_address:] - необязательный параметр (по умолч.: localhost)
-L 2000 - локальный порт для начала туннеля
:25 - удаленный порт для конечной точки туннеля
-N - не выполнять удаленных команд
-n - связать стандартное устройство ввода с /dev/null
-T - не создавать псевдо tty на удаленной системе
пример:
перебросить удаленный порт 2000 на локальный порт 25
ssh -f -R [bind_address:]2000:local.org:25 -nNT user@remote.org
пояснения:
[bind_address:] - необязательный параметр (по умолч.: localhost)
-R 2000 - удаленный порт 2000
добавить в sshd_config:
GatewayPorts clientspecified
перебросить локальный порт 2000 на удаленный порт 25
ssh -f -L [bind_address:]2000:local.org:25 -nNT user@remote.org
пояснения:
-f - перейти в фон после запуска
local.org - локальный сервер
user@remote.org - удаленный сервер с которым соединяемся
[bind_address:] - необязательный параметр (по умолч.: localhost)
-L 2000 - локальный порт для начала туннеля
:25 - удаленный порт для конечной точки туннеля
-N - не выполнять удаленных команд
-n - связать стандартное устройство ввода с /dev/null
-T - не создавать псевдо tty на удаленной системе
пример:
перебросить удаленный порт 2000 на локальный порт 25
ssh -f -R [bind_address:]2000:local.org:25 -nNT user@remote.org
пояснения:
[bind_address:] - необязательный параметр (по умолч.: localhost)
-R 2000 - удаленный порт 2000
добавить в sshd_config:
GatewayPorts clientspecified
Подписаться на:
Сообщения (Atom)