Архив

Статии по ключова дума: ‘следната’

Какво е Wardriving и как да го направим (Kismet + Festival + Gpsd + Gpsdrive)

4 февруари, 2010 1 коментар

При Wardriving идеята е да се засекат wireless мрежи и да бъдат картографирани. Според нашият закон или това което четох това не е нелегално(освен ако не се използват тези мрежи с лоши намерения). Все пак аз съм го направил с цел познание и идеята на тази публикация е да споделя знание.

Преди да започнем ще опиша какво ще ни трябва:
Устройства(Gps Reciever с bluetooth, bluetooth на самия лаптоп),
Приложения (gpsdrive,gpsd,bluez-utils,festival,mysql-server,kismet)

След като имаме устройствата ще инсталираме приложенията. Аз лично ползвам Holux 240 slim, но е доста бъгав. От време на време сам решава да се бъгне и да не показа кординатите, а двойчни глупости. За да го върнем в NMEA режим трябва да му извадим батерията с което се връща на първоначални настройки(голямо решение няма що. Има и друго ползвайте друг gps reciever).

Инсталиране на приложенията:
apt-get install gpsdrive gpsd festival mysql-server-5.0 kismet bluez-utils

Сега влючваме нашият GPS Reciever
Изпълняваме "hcitool scan" и виждаме:

Scanning …
00:0B:0D:6D:A1:E8   HOLUX GPSlim240

Ето го и търсеният от нас MAC адрес на Holux Slim 240

Редактираме конф. файлове от bluez-utils в /etc/bluetooth

/etc/bluetooth/hcid.conf

Променяме нашият пин ето тук(в случая е 0000):
passkey "0000"

Сега редактираме /etc/bluetooth/rfcomm.conf

rfcomm0 {
bind no;  # Automatically bind the device at startup
device 00:0B:0D:6D:A1:E8; # Bluetooth address of the device
channel 1; # RFCOMM channel for the connection
comment "My GPS device 00:0B:0D:6D:A1:E8"; # Description of the connection
}

Става ясно, че описваме mac адреса на нашият gps reciever

След това вдигаме нашият интерфейс:
hciconfig hci0 up

Свързваме се към нашето устройство Holux:
hcitool cc 00:0B:0D:6D:A1:E8

Отваряме канал
sdptool add --channel=1 OPUSH

и след това биндваме rfcomm0
rfcomm bind rfcomm0 00:0B:0D:6D:A1:E8

За да проверим, че получаваме данните коректно(данните са в текстов вид NMEA) изпълняваме това:
cat /dev/rfcomm0

Ако се вижда нещо от рода:
$GPGGA,235955.065,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*4D
$GPRMC,235955.065,V,0000.0000,N,00000.0000,E,,,150406,,,N*7E
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,235956.059,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*41
$GPRMC,235956.059,V,0000.0000,N,00000.0000,E,,,150406,,,N*72
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,235957.059,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*40
$GPGSA,A,1,,,,,,,,,,,,,,,*1E

То нашият GPS Reciever още не си е намерил сателитите и трябва да го изчакате известно време(на открито). След като си ги намери тези нули се превръщат в кординати разбира се.

Сега ще стартираме и gpsd които да обработва данните от rfcomm0

gpsd /dev/rfcomm0

Можем да проверим дали правилно приема данните със следната команда:

gpspipe -r

След като пуснахме основните приложения сега ще пуснем и Kismet. Неговата задача е да следи wireless мрежите и да ги записва във файл с техните кординати.

За да стартираме kismet като сървър трябва да укажем source type, а ако не го направим ще ни излезе следната грешка:

FATAL: Please configure at least one packet source.  Kismet will not function if no packet sources are defined in kismet.conf or on the command line.  Please read the README for more information about configuring Kismet

Това е защото не е зададен capture source type. За целта редактираме /etc/kismet/kismet.conf , ред "source":

source=iwl3945,wlan0,wlan0

Важен е първия аргумент където указваме какъв модул се зарежда за wireless картата, а в този случай е iwl3945

Сега ще накараме Kismet да логва всички wireless мрежи които намери + техните координати. За целта трябва да редактираме /etc/kismet/kismet.conf

waypoints=true
# GPSDrive waypoint file.  This WILL be truncated.
waypointdata=~/.gpsdrive/way.txt

Следващата стъпка е да накараме Kismet освен да логва и да говори.
Сега ще направим един малък тест на festival

echo "Hi from mpetrov.net -- Festival test"|festival --tts

Ако ви изплюе следната грешка "Linux: can't open /dev/dsp" то тогава извършете това по- долу:

Решение на проблема по- горе:

Редактира се файл (.festivalrc) или (/usr/share/festival/festival.scm):
vim ~/.festivalrc
и се добавя това:
(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")

Сега след като имаме инсталиран и работещ festival ще направим промени в конфигурационния файл на kismet.
kismet.conf(за сървъра)

#Променя се от false на true
Speech=true
#Променя се от nato на speech
speech_type=speech

Ако не искаме да говори kismet сървъра, а нашият kismet клиент правим същите промени, но за "kismet_ui.conf"

Сега ще стартираме и gpsdrive. Неговата цел е да взима данните от Kismet ~/.gpsdrive/way.txt , да ги записва в MySQL базата(която ще създадем след малко) и да визуализира текущото ни местоположение на картата.

Първо трябва да създадем нашата база с таблиците които ще ползва gpsdrive изпълняваме:
geoinfo --create-db geoinfo --db-name geoinfo --db-user gast --db-password gast

Стартираме gpsdrive и какво ? Данните се записват и всичко е страхотно :)

Но на мен лично тази карта не ми допада особено и искам всичко това да го преместя в/у картата на GoogleEarth. За целта използвах едно готово python скриптче, което не работеше (нямаше и автор) и трябваше да пренапиша. Може да бъде изтеглено от тук: gpsdriveToGoogleEarth_mpetrov_net.py

изпълняваме python скриптчето което трябва да конвертира от gpsdrive към GoogleEarth:

python gpsdriveToGoogleEarth_mpetrov_net.py

Получавам следната грешка"
#:/tmp# python gpsdriveToGoogleEarth_mpetrov_net.py
Traceback (most recent call last):
File "gpsdriveToGoogleEarth_mpetrov_net.py", line 1, in <module>
import MySQLdb
ImportError: No module named MySQLdb

Това е защото очевидно нямам mysql модул за python. Сега ще го инсталирам:

apt-get install python-mysqldb

Сега като го изпълним и ще се генерира файл wireless_mpetrov_net.kml които ще вкараме в Google Earth, чрез импорт. Виждаме мрежите които сме картографирали по- рано.

В интерес на истината написах едно простичко bash скриптче което прави някои неща автоматизирано. То може да бъде изтеглено от тук:  War Driver 1.0

Потенциален проблем които може да възникне при употребата на Kismet
Проблем при стартиране на Kismet:

ERROR:  Unable to find room for logging files within 100 counts.  If you really are
logging this many times in 1 day, change log title or edit the source.
WARNING: Error disabling monitor mode: Failed to set channel 0 22:Invalid argument
WARNING: wlan0 (wlan0) left in an unknown state.  You may need to manually
restart or reconfigure it for normal operation.
WARNING: Sometimes cards don't always come out of monitor mode
cleanly.  If your card is not fully working, you may need to
restart or reconfigure it for normal operation.
Trying to wake networkmanager back up…
Kismet exiting.

Решението е :
rm -fr /var/log/kismet/*

Идеята на тази публикация е с учебна цел. Аз като автор не нося никаква отговорност за причинени от нея щети.

PS: Моля слагайте си WPA2 пароли с максимална дължина и сложност поне като минимално нещо което трябва да направите за свойте wireless мрежи.

Архивиране и изтриване на файл с тире в GNU/Linux

28 декември, 2009 Няма коментари

На всеки би трябвало да му се е случвало да трябва да изтирва под GNU/Linux файлове започващи със "--".  Не можете обаче просто да си го мачнете и изтриете по нормалния начин "rm -fr --biba"

Решение: rm -fr ./--biba

Предполагам някои е искал да архивира със zip някой файл започващ със тире(-) и да не е успявал. т.е.

zip -r -example.zip -example.doc;

Извежда следната грешка: zip error: Invalid command arguments (no such option: -)

Решението е(като при изтриването):

zip -r ./-example.zip ./-example.doc;

PS: Всеки нормално занимаваш се с GNU/Linux трябва да се е сблъсквал с това и да го знае още в първия месец, но за тези които не знаят или не са се сблъсквали с този проблем този пост е именно за тях.

Проблем при php.ini с таговете определящи вашия php код

23 октомври, 2009 Няма коментари

Случвало ли ви се е да направите php файл с тагове

<?
echo "asd";
?>

и този същия файл да не се изпълнява като php, а като html. Причината е, че в настройките на php е указано да се ползва само тагa "<?php
, а не краткия вариант "<?".

За да се предостави възможност да ползваме отварящи тагове "<?php" и "<?" трябва да редактираме php.ini и да направим следната промяна:

; This directive determines whether or not PHP will recognize code between
; <? and ?> tags as PHP source which should be processed as such. It's been
; recommended for several years that you not use the short tag "short cut" and
; instead to use the full <?php and ?> tag combination. With the wide spread use
; of XML and use of these tags by other languages, the server can become easily
; confused and end up parsing the wrong code in the wrong context. But because
; this short cut has been a feature for such a long time, it's currently still
; supported for backwards compatibility, but we recommend you don't use them.
; Default Value: On
; Development Value: Off
; Production Value: Off
; http://php.net/short-open-tag
short_open_tag = On

Обединяване на два log файла в Apache чрез awstats или logresolvemerge.pl

25 септември, 2009 1 коментар

awstats_logoСлучвало ли ви се е да ви се наложи да обедините няколко access файла от Apache. Идеята е да направите статистика на сайта с awstats,webalizer или някои друго приложение но това приложение извлича информацията от един файл. За тази цел трябва да обедими файловете ime.access.log и ime.access.log.1 (или всички логове от ime.access.log*) в един файл ime.access.log.FULL. Това може се направи със едно perl скриптче в пакета awstats. За целта първо трябва да инсталирате awstats (apt-get install awstats) и
cp /usr/share/doc/awstats/examples/logresolvemerge.pl /usr/local/bin за
да копирате logresolvermerge като системна команда.
Но сега всичко е наред докато не решите да стартирате logresolvemerge.pl просто за да разберем, че работи нормално(ще ни изведе help страницата си):

dhs:~# logresolvemerge.pl
-bash: /usr/local/bin/logresolvemerge.pl: /usr/bin/perl^M: bad interpreter: No such file or directory

Тук logresolvemrge се чупи не защото има проблем с perl, а защото в сорса има Windows break lines. за да поправим този "проблем" конвертираме към UNIX break lines със dos2unix което приложение се намира в пакета sysutils. за целта инсталираме sysutils:

apt-get install sysutils

след това конвертираме от Windows break lines към Unix break lines:
dos2unix /usr/local/bin/logresolvemerge.pl /usr/local/bin/logresolvemerge.pl

След това тестово изпълняваmе logresolvemrge.pl за да видим дали работи коректно. Ако работи коретно ще ни изведе следната помощна страница:

----- logresolvemerge 1.2 (build 1.34) (c) Laurent Destailleur -----
logresolvemerge allows you to get one unique output log file, sorted on date,
built from particular sources:
- It can read several input log files,
- It can read .gz/.bz2 log files,
- It can also makes a fast reverse DNS lookup to replace
all IP addresses into host names in resulting log file.
logresolvemerge comes with ABSOLUTELY NO WARRANTY. It's a free software
distributed with a GNU General Public License (See COPYING.txt file).
logresolvemerge is part of AWStats but can be used alone as a log merger
or resolver before using any other log analyzer.

Usage:
logresolvemerge.pl [options] file
logresolvemerge.pl [options] file1 … filen
logresolvemerge.pl [options] *.*
perl logresolvemerge.pl [options] *.* > newfile
Options:
-dnslookup     make a reverse DNS lookup on IP adresses
-dnslookup=n   same with a n parallel threads instead of serial requests
-dnscache=file make DNS lookup from cache file first before network lookup
-showsteps     print on stderr benchmark information every 8192 lines
-addfilenum    if used with several files, file number can be added in first
-addfilename   if used with several files, file name can be added in first
field of output file. This can be used to add a cluster id
when log files come from several load balanced computers.

This runs logresolvemerge in command line to open one or several
server log files to merge them (sorted on date) and/or to make a reverse
DNS lookup (if asked). The result log file is sent on standard output.
Note: logresolvemerge is not a 'sort' tool to sort one file. It's a
software able to output sorted log records (with a reverse DNS lookup
included or not) even if log records are dispatched in several files.
Each of thoose files must be already independently sorted itself
(but that is the case in all web server log files). So you can use it
for load balanced log files or to group several old log files.

Don't forget that the main goal of logresolvemerge is to send log records to
a log analyzer in a sorted order without merging files on disk (NO NEED
OF DISK SPACE AT ALL) and without loading files into memory (NO NEED
OF MORE MEMORY). Choose of output records is done on the fly.

So logresolvemerge is particularly usefull when you want to output several
and/or large log files in a fast process, with no use of disk or
more memory, and in a chronological order through a pipe (to be used by a log
analyzer).

Note: If input records are not 'exactly' sorted but 'nearly' sorted (this
occurs with heavy servers), this is not a problem, the output will also
be 'nearly' sorted but a few log analyzers (like AWStats) knowns how to deal
with such logs.

WARNING: If log files are old MAC text files (lines ended with CR char), you
can't run this tool on Win or Unix platforms.

WARNING: Because of important memory holes in ActiveState Perl version, use
another Perl interpreter if you need to process large lof files.

Now supports/detects:
Automatic detection of log format
Files can be .gz/.bz2 files if zcat/bzcat tools are available in PATH.
Multithreaded reverse DNS lookup (several parallel requests) with Perl 5.8+.
New versions and FAQ at http://awstats.sourceforge.net

След като установихме, че работи перфектно ;) сега ще обединим двата файла ime.access.log и ime.access.log.1 (или всички логове от ime.access.log*) в един файл ime.access.log.FULL като това става със следната команда:

logresolvemerge.pl /var/log/apache2/ime.access.log.* > /var/log/apache2/ime.access.log.FULL

Ето и един доста по- прост начин за обединяване на логовете в Apache, а именно, чрез cat:

cat /var/log/apache2/access.log.1 /var/log/apache2/access.log > /var/log/apache2/access.log.ALL

Това е всичко. Вече имаме един обединен Дневник както се казва в някои български литератури- Logfile на Apache.

Проблем със сайта на tyxo.bg

17 май, 2009 1 коментар

Сложил съм един фиктивен брояч на kakvo.org от tyxo.bg и то с главната идея да гледам ТОП 100, че ми е интересно на кое място се вписва сайта. Днес обаче от сутринта сайта им плюе следната грешчица(мисля, че ще стане ясно какво казва):Can't use tyxobg : Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Хайде една положителна подкрепа от мен за tyxo.bg  и по- бързо да си оправят сайта, че да видя на кое място е kakvo.org