CEX.io

понедельник, 28 марта 2011 г.

сбор whois информации в базу данных

Пример кода:

понедельник, 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

Узнаем информацию о городе, стране, доме из 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 координаты объекта.

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

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. И другие инструменты.

воскресенье, 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 .

среда, 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