Archive for the Linux Category

После обновления на новую версию с Unity и последующим переключением на среду Gnome, перестали открываться директории которые находились в меню «Переход». Лечиться следующим образом:

1
gedit ~/.local/share/applications/mimeapps.list

Далее ищем строки:

1
2
x-scheme-handler/file
x-scheme-handler/trash

И приводим их к следующему виду:

1
2
x-scheme-handler/file=nautilus.desktop
x-scheme-handler/trash=nautilus.desktop

Сохраняем файл. Все.

Creepy — это релевантный парсер геолокаций в соц.сетях, сейчас доступны twitter и flickr, координаты берутся как из самих статусов сообщений так и из EXIF информации в фотографиях. Сайт разработчика — http://ilektrojohn.github.com/creepy/

Установка в Ubuntu:

1
2
3
sudo add-apt-repository ppa:jkakavas/creepy
sudo apt-get update
sudo apt-get install creepy

Программа написана на Python. Может понадобиться дополнительная установка модулей.
Проверил ее на профиле Олега Тинькова (@olegtinkov в твиттере). Получил в итоге следующую картину его передвижений по планете Земля ) (масштаб увеличил чтоб захватить все точки). Карты которые можно использовать это гугл, опенстрит и другие. more »

розовый youtube fixed

розовый youtube fixed

Пару дней назад, при просмотре роликов непосредственно на Youtube, появилась розовая пелена через которую, мягко говоря, ничего не видно. Как временное решение (пока не пофиксит «труба», что маловероятно, либо adobe) можно попросту заблокировать прием кукисов.
На скрине показано как это сделать. (Заходим в «Настройки», далее все понятно).

В основном заражают javascript файлы, как правило код пропущен через обфускатор (base64, japan utf-8 etc).
Очень легко в таких заражениях найти уникальную сигнатуру, и почистить все одним махом.
И так:

1
grep -rl 'hVu6r#r#iFy#eVtV' ./ | xargs sed -i '/hVu6r#r#iFy#eVtV/d'

hVu6r#r#iFy#eVtV — это и есть наша уникальная сигнатура.

Logkeys — очень простой и в тоже время удобный кейлогер(клавиатурный шпион) для линукс машин.
Доступен в репозиториях многих дистрибутивов linux, так же доступен и в сорсах. Адрес проекта на google-code -> http://code.google.com/p/logkeys/.
Установка на ubuntu|debian:

1
sudo apt-get install logkeys

Примеры запуска:

1
logkeys -s -o log_keys.txt

-s — запускаем кэйлогер
-o пишем в файл
-k — убить процесс
Чтоб в файл не попадали функциональные клавиши, а только буквы нужно запустить с параметром —no-func-keys

1
logkeys -s --no-func-keys -o log_key.txt

TOR на Ubuntu (заметка)

| Январь 2nd, 2011

https://addons.mozilla.org/firefox/2275/ — Torbutton Fx

1
2
3
4
5
6
7
8
#!/bin/sh
echo "deb http://deb.torproject.org/torproject.org maverick main" >> /etc/apt/sources.list
gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
sudo apt-get update && sudo apt-get install privoxy tor tor-geoipdb
echo "forward-socks4a / 127.0.0.1:9050 ." >> /etc/privoxy/config
/etc/init.d/tor start
/etc/init.d/privoxy start

Firesheep: Firefox addon

| Октябрь 29th, 2010
firesheep

firesheep

Firesheep дополнение к Firefox, которое перехватывает сессии(cookies) пользователей в открытых Wi-Fi сетях, если используется подключение по HTTP без использования SSL соединения.
В дополнения включен перехват сессий из популярных социальных сетей и сервисов, таких как: Vkontakte, Flickr, FaceBook, Twitter, Amazon, Dropbox и т.д.
В архиве выкладываю исходный код версии для Linux-x86. Для пользователей Windows и MacOS уже есть рабочий вариант дополнения здесь (пользователи windows сразу должны установить WinPcap).
Для компиляции необходимо наличие установленных библиотек xulrunner.

1
sudo apt-get install xulrunner-dev

.
Компиляция:

1
2
//ваша версия xulrunner может отличаться, следует поправить под свою версию путь
./autogen.sh --with-xulrunner-sdk=/usr/lib/xulrunner-devel-1.9.2.12 && CPATH=/usr/include/nspr make

После сборки проекта, аддон для Firefox будет находиться в директории build под названием firesheep.xpi, для его установки достаточно «закинуть» файл в окно Firefox, потом перезапустить последний.
Перед первым запуском firesheep, следует дать определенные права файлу.

1
2
cd ~/.mozilla/firefox/YOUR_PROFILE_ID.default/extensions/firesheep@codebutler.com/platform/Linux_x86-gcc3/
sudo ./firesheep-backend --fix-permissions

На этом приложения готово к использованию. В настройках следует выбрать интерфейс который будем «слушать».

Firesheep Linux-x86 (source code) Скачать
Firesheep готовый аддон для Linux-x86 Скачать

Linux: Opera Passwords Recovery

| Октябрь 28th, 2010

Пароли в Opara лежат в файле wand.dat, который расположен в директории ~/.opera/. Немного полазив по сайтам сделал собирательный пример выуживания паролей. В основе пример из этой статьи, 2005 года еще, http://www.reteam.org/blog/archives/00000012.htm. Причина написания поста, в том, что софт который есть в сети, почему-то, стоит денег, многие некорректно декриптуют содержимое, и так, ближе к теме:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
// sna@reteam.org  - 6th of April 2005
// unwand.cpp //
#include <iostream>
#include <string.h>

#include <openssl/md5.h>
#include <openssl/des.h>


const unsigned char opera_salt[11] =
{
    0x83, 0x7D, 0xFC, 0x0F, 0x8E, 0xB3, 0xE8, 0x69, 0x73, 0xAF, 0xFF
};

int main(int argc, char **argv)
{
    if(argc != 2)
    {
        std::cout << "Usage: unwand <opera wand file>" << std::endl;
        return 1;
    }

    FILE *fdWand = fopen(argv[1], "rb");

    if(NULL == fdWand)
    {
        perror("Failed to open file");
        return 1;
    }

    fseek(fdWand, 0, SEEK_END);
    unsigned long fileSize = ftell(fdWand);

    unsigned char *wandData = (unsigned char *)malloc(fileSize);

    if(NULL == wandData)
    {
        fclose(fdWand);
        perror("Memory allocation failed");
        return 1;
    }

    rewind(fdWand);
    fread(wandData, fileSize, 1, fdWand);
    fclose(fdWand);

    unsigned long wandOffset = 0;

    //
    // main loop, find and process encrypted blocks
    //

    while(wandOffset < fileSize)
    {
        // find key length field at start of block
        unsigned char *wandKey = (unsigned char *)
            memchr(wandData + wandOffset, DES_KEY_SZ, fileSize - wandOffset);

        if(NULL == wandKey)
        {
            break;
        }

        wandOffset = ++wandKey - wandData;
        // create pointers to length fields
        unsigned char *blockLengthPtr = wandKey - 8;
        unsigned char *dataLengthPtr = wandKey + DES_KEY_SZ;

        if(blockLengthPtr < wandData || dataLengthPtr > wandData + fileSize)
        {
            continue;
        }

        // convert big-endian numbers to native
        unsigned long
            blockLength  = *blockLengthPtr++ << 24;
            blockLength |= *blockLengthPtr++ << 16;
            blockLength |= *blockLengthPtr++ <<  8;
            blockLength |= *blockLengthPtr;

        unsigned long
            dataLength  = *dataLengthPtr++ << 24;
            dataLength |= *dataLengthPtr++ << 16;
            dataLength |= *dataLengthPtr++ <<  8;
            dataLength |= *dataLengthPtr;

        // as discussed in the article
        if(blockLength != dataLength + DES_KEY_SZ + 4 + 4)
        {
            continue;
        }

        // perform basic sanity checks on data length
        if(dataLength > fileSize - (wandOffset + DES_KEY_SZ + 4)
            || dataLength < 8 || dataLength % 8 != 0)
        {
            continue;
        }

        unsigned char
            hashSignature1[MD5_DIGEST_LENGTH],
            hashSignature2[MD5_DIGEST_LENGTH],
            tmpBuffer[512];

        //
        // hashing of (salt, key), (hash, salt, key)
        //

        memcpy(tmpBuffer, opera_salt, sizeof(opera_salt));
        memcpy(tmpBuffer + sizeof(opera_salt), wandKey, DES_KEY_SZ);

        MD5(tmpBuffer, sizeof(opera_salt) + DES_KEY_SZ, hashSignature1);

        memcpy(tmpBuffer, hashSignature1, sizeof(hashSignature1));
        memcpy(tmpBuffer + sizeof(hashSignature1),
            opera_salt, sizeof(opera_salt));

        memcpy(tmpBuffer + sizeof(hashSignature1) +
            sizeof(opera_salt), wandKey, DES_KEY_SZ);

        MD5(tmpBuffer, sizeof(hashSignature1) +
            sizeof(opera_salt) + DES_KEY_SZ, hashSignature2);

        //
        // schedule keys. key material from hashes
        //

        DES_key_schedule key_schedule1, key_schedule2, key_schedule3;

        DES_set_key_unchecked((const_DES_cblock *)&hashSignature1[0],
            &key_schedule1);

        DES_set_key_unchecked((const_DES_cblock *)&hashSignature1[8],
            &key_schedule2);

        DES_set_key_unchecked((const_DES_cblock *)&hashSignature2[0],
            &key_schedule3);

        DES_cblock iVector;
        memcpy(iVector, &hashSignature2[8], sizeof(DES_cblock));

        unsigned char *cryptoData = wandKey + DES_KEY_SZ + 4;

        //
        // decrypt wand data in place using 3DES-CBC
        //

        DES_ede3_cbc_encrypt(cryptoData, cryptoData, dataLength,
            &key_schedule1, &key_schedule2, &key_schedule3, &iVector, 0);

        if(0x00 == *cryptoData || 0x08 == *cryptoData)
        {
            std::wcout << L"<null>" << std::endl;
        }
        else
        {
            // remove padding (data padded up to next block)
            unsigned char *padding = cryptoData + dataLength - 1;
            memset(padding - (*padding - 1), 0x00, *padding);
                    //uncomment if Windows platform
            //std::wcout << (wchar_t *)cryptoData << std::endl;
           
            // dump byte-aligned data[dataLength] little endian UTF-16 as UTF-8. (c) Madhu
            for (unsigned int i = 0; i < dataLength; i+=2) {
                int uch = cryptoData[i];
                uch = uch | cryptoData[i+1];
                if (uch == 0) break;
                if (uch > 0x7FF)
                    std::cout << (unsigned char) (((uch >> 12) & 0xF) | 0xE0)
                            << (unsigned char) (((uch >> 6) & 0x3F) | 0x80)
                            << (unsigned char) ((uch & 0x3F) | 0x80);
                else if (uch > 0x7F)
                    std::cout << (unsigned char) (((uch >> 6) & 0x1F) | 0xC0)
                            << (unsigned char) ((uch & 0x3F) | 0x80);
                else std::cout << (unsigned char) uch;             
            }                      
        }
        std::cout << std::endl;;
        wandOffset = wandOffset + DES_KEY_SZ + 4 + dataLength;
    }

    free(wandData);
    return 0;
}

Компиляция:

1
g++ -Wall -o unwand -lssl unwand.cpp

Запуск программы:

1
./unwand ~/.opera/wand.dat

Hotot: twitter client

| Октябрь 15th, 2010
hotot

hotot

Долго примерялся к различным twitter-клиентам на ubuntu/linux, но все были монстрами, тяжелыми и набитыми различной чепухой. Некоторое время, продолжительное, пользовался обычным джаббером для постинга твиттов, но иногда хочется ведь и изображение запостить.
Так вот, попробовал клиент который еще в пелёнках ходит, под названием Hotot. И уже с месяц только ним и пользуюсь. Что же он умеет:
1) поддержка плагинов (уже имеются в наличии: загрузка изображений на сервисы твиттера и стороние, вывод геолокации в твиттах, встроенных переводчик завязаный на Google Translate, превью изображений прямо в твитт-ленте)
2) висеть в трее )
3) разбит на следующие разделы: лента твиттов ваших подписок, лента твиттов адресованных вам, личные сообщения, избранные твитты, ретвитты, поиск пользователя и обычный поиск.
4) работает как через ввод логина/пароля так и через OAuth API
5) поддержку прокси сервера (http-proxy, socks4|5 proxy)
6) написан на python (плагины на javascript с возможностью дополнять своими)

На данный момент последняя версия 0.9.5 под кодовым именем Ada. В которой также появилось возможность использовать сервис identica.

Теперь о том где взять клиент:
1) добавив репозиторий

1
2
3
sudo add-apt-repository ppa:hotot-team
sudo apt-get update
sudo apt-get install hotot

2) из сорсов:

1
2
3
4
hg clone https://hotot.googlecode.com/hg/ hotot
cd hotot/
python ./hotot/hotot.py // если просто хотите запустить и посмотреть
./setup.py build &amp;&amp; sudo ./setup.py install --install-layout deb // если решили установить

Сайт проекта http://hotot.org/

Aircrack now with WPA migration mode

| Сентябрь 18th, 2010
aireplay_ng

aireplay_ng

Сегодня разработчики выпустили новую ревизию Aircrack в которой добавили новый модуль — WPA migration mode.
Модуль предназначен для атак на точки доступа WiFi с функцией WPA migration mode, которая предназначена для авторизации
пользователей как с включенным WPA так и без него.
Обновленную версию можно скачать и установить с SVN:

1
2
3
4
svn co http://trac.aircrack-ng.org/svn/trunk aircrack-ng
cd aircrack-ng
make
make install

Для проверки и скачиваний обновлений в дальнейшем достаточно будет воспользоваться командой из директории программы:

1
svn up

Gammu + Bluetooth

| Август 13th, 2010

Gammu — софт для работы с телефоном (синхронизация, бэкап данных, доступ к камере телефона, радио и т.д.)
Для получения свежих версий ПО советую добавить репозиторий разработчика:

1
2
deb http://ppa.launchpad.net/nijel/ppa/ubuntu lucid main
deb-src http://ppa.launchpad.net/nijel/ppa/ubuntu lucid main

В моем случае это версия Ubuntu 10.04 — Lucid. (меняете на свою).
Приведу пример конфига gammu при подключении по bluetooth (тип соединения Serial Port): more »

DharmaEncoder

| Июль 30th, 2010

Хочу обратить внимание на этот новый проект под названием DharmaEncoder. Очень удобный энкодер/декодер написанный на python с использованием PyGtk, который в данный момент поддерживает:
- URL
- Full Url
- Base64
- Hex
- MD5 Hash
- SHA1 Hash
- SQL Char String
- Unicode %u00
- и т.д.

Страница 1 из 3123