Архив

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

Какво е 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 мрежи.

Промяна на ограниченията в Windows XP и Windows server 2003

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

Един приятел скоро инсталирал XP на една машина и като администратор изтеглил куп неща в дял D: . След това направил потребителски имена на всички потребителите които ще ползват системата. Супер, но когато потребителя се логне в системата няма достъп до файловете в дял D:(тези които преди това моят приятел(като администратор) е добавил по- рано). За да предоставим достъп на потребителите в системата трябва да променим ограниченията на тези файлове чрез cacls:

D:\>cacls /?
Displays or modifies access control lists (ACLs) of files

CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]]
[/P user:perm [...]] [/D user [...]]
filename      Displays ACLs.
/T            Changes ACLs of specified files in
the current directory and all subdirectories.
/E            Edit ACL instead of replacing it.
/C            Continue on access denied errors.
/G user:perm  Grant specified user access rights.
Perm can be: R  Read
W  Write
C  Change (write)
F  Full control
/R user       Revoke specified user's access rights (only valid with /E).
/P user:perm  Replace specified user's access rights.
Perm can be: N  None
R  Read
W  Write
C  Change (write)
F  Full control
/D user       Deny specified user access.
Wildcards can be used to specify more that one file in a command.
You can specify more than one user in a command.

Abbreviations:
CI -- Container Inherit.
The ACE will be inherited by directories.
OI -- Object Inherit.
The ACE will be inherited by files.
IO -- Inherit Only.
The ACE does not apply to the current file/directory.

В този пример ще дадем пълни права на потребител "dr_nikolov":

cacls d:/*.* /T /E /P dr_nikolov:f

Сега ще "разтълкувам" предната команда:

1. calcs -  Името на приложението което използваме за промяна на ограниченята
2. "d:/*.*" - Това са всички директории и файлове които се намират във дял D:
3. /T - Рекурсивно променя ограниченията на всички файлове и директории, вкл. и техните под директории
4. /E - Редактиране на ограниченията
5. /P dr_nikolov:f -- Тук даваме "Full Control" или пълен достъп до файловете на потребител "dr_nikolov"

Това е всичко :)

Логване в SSH сървър, чрез PuTTY

22 януари, 2010 Няма коментари

Здравейте отново от мен Мартин Петров. Тази видео демонстрация е създадена единствено и само с учебна цел.

Този тази видео демонстрация е част от публикацията "За какво да ползваме PuTTY"  в блога www.mpetrov.net

PuTTY е SSH клиент които се ползва най- много от Windows потребителите. Това видео всъщност е именно за тях. Сега ще демонстрирам как чрез PuTTY може да се логнете в отдалечена машина с пуснат SSH сървър в нашият случай GNU/Linux Debian с пуснат OpenSSH сървър.

Преди всичко трябва да изтеглим PuTTY. Просто пишем в google "PuTTY" и първият резултат ни дава линк от където да го изтег7лим. Аз съм го изтеглил предварително и за целта продължаваме напред към демонстрацията.

Стартираме Putty и в секция "Host name" въвеждаме хостнейм или IP адрес на машината в която искаме да се логнем. В нашият случай е IP адрес 10.10.10.1 . Портът които е сетнат в машината е 22( двадесет и втори) затова оставям този порт. В секция "Saved Sections" записваме името на профила и след това натискаме "Save". Така следващият път вместо да правим тези настройки просто два пъти ще натистнем с мишката върху този името на профила които преди малко написахме.

Може да гледате видео демонстрацията от Youtube: Логване в SSH сървър, чрез PuTTY
Демонстрация във vbox7: Логване в SSH сървър, чрез PuTTY

Спиране на sms съобщенията от Големият кеш- 500

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

Абсолютно съм против да получавам sms-и от мобилните оператори за играта "Големият Кеш".  Именно поради тази причина позовавайки се на общите условия на "Големият кеш" цитирани по- долу се отказвам от "услугата"- "Големият кеш" :) .

Написах този пост понеже видях, че доста хора нямат идея как да прекратят това масово изпращане на sms-и от "Големият Кеш".

С няколко думи за да се откажа от получаването на sms-те от "Големият кеш" изпратих sms със съдържание "Stop" на номер 500 .

Извадка от ОБЩИ УСЛОВИЯ за участие във Викторината “Големият кеш”->Общи разпоредби:

Чл.50. В случай, че участник желае да не получава рекламни съобщения от Викторината, може да заяви това на организатора по всяко време като изпрати sms с текст Stop на номер 500 или чрез обаждане до номер 123 /0.03 лв с ДДС за обаждане за абонати и ползватели на Глобул/, *500 /безплатно за абонати и ползватели на Мобилтел/, *500 /безплатно за абонати и ползватели на Vivacom/. С изпращането на този sms, респективно с извършването на обаждането, рекламните съобщения до участника във Викторината се спират. В случай, че желае да възобнови участието си участникът следва да изпрати един sms към номер 500 .

Почти всичко за числото седем

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

sevenУ много народи в древния свят числото 7 има особена символика. За египетските и вавилонските философи то представлявало сума от две жизнени числа 3 и 4: трима човека – баща, майка и дете -- са съставяли основата на живота, а четири било числото на посоките на света и посоката на вятъра, четирите възрасти на човешкия живот. Питагор отдавал голямо значение на числото седем като сума на числата 3 и 4: триъгълниците и четириъгълниците се считали през античността израз на завършеност и съвършенство. Седем още е числото на девствеността, на седемте дни от седмицата, на седемте тона от гамата, на седемте степени в науката.

Древните евреи починали числото седем. В Стария завет пише: „За шест дни създаде Господ небето и земята, морето и всичко в него, а на седмия ден почина”. Шабат е седмият ден за евреите. На седем хълма е основан Древен Рим. В християнството се говори за седем смърни гряха (гордост, алчност, похот, лакомия, гняв, мързел и завист) и седем тайнства (кръщение, миропомазване, причастие, свещенство, брак). Седем дни душата е около гроба. На седмия ден новороденото получава име. При мисюлманите мястото на висшето просвещение е седмото небе. Плеади в гръцката митология се нарича съзвездието от седем звезди. В приказките Синята брада има седем жени, Снежанка живее при седем джуджета и т.н.

С числото седем са свързани и най-известните паметници от античността, наричани Седемте чудеса на света. За първи път те са описани от финикийския писател Антипарт от Сидон през II век преди Хр.
Източник: mastilo.info

Интересни проекти за почивка:
1. Настоящ и развиващ- www.abox7.com- Теглене на клипове от vbox7
2. Бъдещ- www.igri7.com- Безплатни онлайн игри

Как да разделяме големите файлове под GNU/Linux

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

Всеки се е сблъсквал с голям файл които трябва да изпрати по пощата(примерно), но пощенската кутия която ползва позволява прикачения файл да бъде максимум 8 МБ. Ние имаме файл които е 12 MB и не можем да изпратим от първия път за целта трябва да го разделим на две част. Ето как става това под GNU/Linux :)

split -b 6M bigdhstudio.file

Или ако искаме да по различен начин(суфикс) да бъдат именувани разцепените парчета:

split -b 6M bigdhstudio.file bigdhstudio.part.

По този начин суфикса ще бъде "bigdhstudio.part.aa", "bigdhstudio.part.ab" вместо  "xaa", "xab" .. както ще бъде при по- горния пример.

Ако искаме суфикса да не бъдат букви, а цифри 1,2,3 тогава добавяме аргумента -d:

split -bd 6M bigdhstudio.file bigdhstudio.part.

По този начин суфикса ще бъде "bigdhstudio.part.00", "bigdhstudio.part.01"

След като ги изпратим получателя трябва да ги сглоби като за целта прави следното:

cat `echo bigdhstudio.part.* | sort` > bigdhstudio_all

Защо да ползваме летни гуми за лятото и зимни за зимата

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

Над този въпрос размишлявахме с един приятел и реших да потърся за повече детайлна информация.  Ето какво открих:

Защо слагаме зимни гуми?

За сигурно шофиране през зимата е необходимо оптимално сцепление. Благодарение на специалния си дизайн с множество ламели, зимните гуми имат много по-голяма контактна площ с пътя, което гарантира по-добра устойчивост и по-къс спирачен път.

При движение на сняг със скорост от 50 км/ч автомобил, "обут" с четири зимни гуми, има спирачен път от 35 метра, докато този с летни гуми спира за 43 метра.
При заледен път и скорост от само 30 км/ч разликата е още по-голяма. Зимните гуми спират за 57 метра, а летните за цели 68 метра.

Много често метрите, спечелени от зимните гуми, предотвратяват сериозни произшествия и спасяват човешки животи. Кои са истинските зимни гуми? На пазара се предлагат т. нар. "всесезонни" гуми. Според производителите им са подходящи за употреба през цялата година -- при пролетния дъжд, при лятната жега, при есената слана и зимния лед. Това не е нищо друго освен маркетингов трик, който обаче често струва скъпо на клиента. И докато през лятото свойствата на тези гуми са задоволителни, при зимни условия употребата им е компромис със сигурността.

zimen_znakПрез 1999 г. в САЩ и Канада бе приет нов стандарт за зимни гуми, който вече е световно признат. Зимните гуми, одобрени по строгите изисквания на този стандарт, гарантират на клиентите най-високите възможни нива на устойчивост и сцепление с пътя при сурови зимни условия и са маркирани със специален знак: снежинка на фона на планина.

Защо силика?

Най-новата технология в производството на зимни гуми е използването в каучуковата смес на силициев двуокис SiO2, химическо съединение известно под името силика. При температури под 7 градуса Целзий, обикновената каучукова смес на летните и всесезонни гуми губи еластичността си и не може да осъществи добро сцепление с пътя дори при сухи условия. Чрез прибавянето на силика се запазва еластичността на каучуковата смес при минусови температури и се постига маскимално сцепление при сняг и лед. Така например, новите зимни гуми със силика Lassa Snoways Era, производство на Bridgestone Sabanci имат 15% по-добро сцепление на сняг в сравнение с предходния модел на фирмата, което води и до значително подобрение на спирачния път при зимни условия. …

За да прочетете цялата статия, моля натиснете тук: автогуми.ком

Видео уроци как да се ползва най- оптимално www.kakvo.org

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

QuestionСлед внимателно наблюдаване на доста потребители как ползват www.kakvo.org установих, че повечето от тях не го ползват оптимално или напълно неправилно. Смятам, че сайта има цялостно изчистена или минималистична концепция която много добре предразполага за бързото му разбиране. Идеята беше когато потребител влезе в сайта от първия миг да разбере каква е идеята, но очевидно има потребители които са затруднени. За целта реших да направя няколко видео урока за това как се ползва безплатния речник- www.kakvo.org. Уроците съм ги качил във vbox7.com както и във youtube.com

Клипове във vbox7.com:
- Безплатен Синонимен речник -- www.kakvo.org
- Безплатен Компютърен речник -- www.kakvo.org
- Правописен речник -- www.kakvo.org
- Безплатен Съновник -- www.kakvo.org
- Безплатен Превод от Английски на Български -- www.kakvo.org
- Безплатен Превод от Български на Английски -- www.kakvo.org
- Форум за всеки и всичко -- www.forum.kakvo.org

Клипове  във youtube.com:

- БЕЗПЛАТЕН Превод от Английски на Български- www.kakvo.org
- БЕЗПЛАТЕН Превод от Български на Английски- www.kakvo.org
- БЕЗПЛАТЕН Български Тълковен речник- www.kakvo.org
- БЕЗПЛАТЕН Български Съновник
- БЕЗПЛАТЕН Български Правописен речник- www.kakvo.org
- БЕЗПЛАТЕН Български компютърен речник
- БЕЗПЛАТЕН Български синонимен речник- www.kakvo.org
- Форум за всеки и всичко

Често срещани проблеми с encoding при php

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

Случвало ли ви се е да имате стринг които е написан с cp1251 и които да искате да конвертирате в utf-8. Най- вероятно да, но случвало ли ви се е да имате стринг които е написан или на cp1251 или на utf-8 предполагам, че на доста няма да им се е налагало затова реших да напиша тази публикация за лесното на следващите след мен.
Имаме стринг "Това е текст" но незнаем на какъв енкодинг е. Преди да го конвертираме в utf-8 или cp-1251 първо трябва да знаем какъв е и след това е ясно. Ето разиграно решение:

<?php

$s_utf8=iconv("CP1251","UTF-8","Това е текст- ЮТФ-8");
$s_cp1251="Това е текст- ЦП1251";

$check1=mb_detect_encoding($s_utf8,'UTF-8,CP1251');
$check2=mb_detect_encoding($s_cp1251,'UTF-8,CP1251');

echo "[$s_utf8 <-><b>$check1</b>] -- [$s_cp1251 <-> <b>$check2</b>]";

?>

Ето примерен проблем при конвертиране с iconv:

<?php
iconv("UTF-8","CP1251",$s_cp1251);
iconv("CP-1251","UTF-8",$s_utf8);
?>

В горното казваме, че искаме да конвертираме UTF-8 към cp-1251, но това няма как да се реализира понеже стринга е CP1251. Същата тази грешка се получава и при следващото . Именно поради тази причина преди да се конвертира даден стринг към друг енкодинг трябва да се знае какъв е бил преди и какъв да бъде след.

Ето ви две функции за конвертиране от UTF8 към CP1251 и втората отново за конвертиране на CP1251 към UTF8, но с проверка за текущия входящ стринг. При тези две функции може да конвертирате без наличие на iconv.

function cp1251_to_utf8($s)
{
function detect_encoding($string)
{
static $list = array('utf-8', 'windows-1251');
foreach ($list as $item)
{
$sample = iconv($item, $item, $string);
if (md5($sample) == md5($string))
return $item;
}
return null;
}

if ( (detect_encoding($s)) == "windows-1251")
{
$c209 = chr(209); $c208 = chr(208); $c129 = chr(129);
for($i=0; $i<strlen($s); $i++)
{
$c=ord($s[$i]);
if ($c>=192 and $c<=239) $t.=$c208.chr($c-48);
elseif ($c>239) $t.=$c209.chr($c-112);
elseif ($c==184) $t.=$c209.$c209;
elseif ($c==168)    $t.=$c208.$c129;
else $t.=$s[$i];
}
return $t;
}
else
{
return $s;
}
}//End of function cp1251_to_utf8($s)

function utf8_to_cp1251($s)
{
if ((mb_detect_encoding($s,'UTF-8,CP1251')) == "UTF-8")
{
for ($c=0;$c<strlen($s);$c++)
{
$i=ord($s[$c]);
if ($i<=127) $out.=$s[$c];
if ($byte2)
{
$new_c2=($c1&3)*64+($i&63);
$new_c1=($c1>>2)&5;
$new_i=$new_c1*256+$new_c2;
if ($new_i==1025)
{
$out_i=168;
} else {
if ($new_i==1105)
{
$out_i=184;
} else {
$out_i=$new_i-848;
}
}
$out.=chr($out_i);
$byte2=false;
}
if (($i>>5)==6)
{
$c1=$i;
$byte2=true;
}
}
return $out;
}
else
{
return $s;
}
}

Конструкции на SQL за поддръжка на таблици в MySQL

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

MySQL притежава няколко конструкции на SQL за поддръжка на таблици: CHECK TABLE за проверка на целостта им, REPAIR TABLE за извършване на поправка, ANALYZE TABLE за анализ и OPTIMIZE TABLE за оптимизиране.  Следва малко информация за всяка от конструкциите за поддръжка на таблици в MySQL:

CHECK TABLE

Конструкцията CHECK TABLE извършва проверка за целостта на структурата и съдържанието на съответната таблица. Тя е приложима и за MyISAM, и за InnoDB. За таблиците от тип MyISAM се осъществява също и актуализиране на статистиката на индексите. Ако дадената таблица с изглед, с CHECK TABLE се проверява дефиницията му. Ако данните, изведени от CHECK TABLE показват наличие на проблем с таблицата, тя трябва да бъде поправена.

REPAIR TABLE

Конструкцията REPAIR TABLE служи за коригиране на проблеми в таблица, която е повредена. Тя е приложима само за таблици от тип MyISAM. Можете да конфигурирате автоматична поправка на таблиците на MyISAM.

Пример: repair table dhstudio

ANALYZE TABLE

Конструкцията ANALYZE TABLE служи за актуализиране на таблица с информация за разпределението на ключовите стойности в нея. Тя се използва от оптимизатора за избор на по- подходящи планове за изпълнението на заявки. Тази конструкция работи с таблици на MyISAM и InnoDB.

Пример: analyze table dhstudio

OPTIMIZE TABLE

Конструкцията OPTIMIZE TABLE служи за "изчистване" на таблици от тип MyISAM чрез дефрагментирането им. Резултатът е повторното разпределяне на неизползваното пространство, получено в резултат от изтриване и актуализации, както и обединяване на записите, които са били разделени и съхранени разпокъсано. OPTIMIZE TABLE се използва също така за сортиране на индексните страници, ако не са подредени, както и за актуализиране на статистиката за индексите.
OPTIMIZE TABLE работи и с таблици на InnoDB, но ги пренасочва към конструкцията ALTER TABLE, която ги изгражда наново. По този начин се актуализира статистиката за индексите и се освобождава място в клъстерния индекс.

Пример:  optimize table dhstudio

Ако искате да разберете кои таблици трябва да оптимизирате изпълнете следното:

show table status where Data_free!=0;

По този начин ще фрагментирате таблиците които се нуждаят от това, а не тези които са фрагментирани.