Соединение только через VPN [Linux]

Дропаем прямые соединения если VPN упал (соединение только через VPN):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# запрещаем все входящие и исходящие
iptables -P INPUT DROP
iptables -P OUTPUT DROP

# разрешаем уже установленные соединения и локалхост
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# разрешаем соединения до VPN (VPN_IP заменить на ip вашего VPN сервера)
iptables -A OUTPUT -d VPN_IP -j ACCEPT

# разрешаем любые соединения через VPN
iptables -A OUTPUT -i tun+ -j ACCEPT

Аnonabox — хардварный TOR-роутер [Scam]

Ananobox портативное сетевое устройство, которое позволяет подключатся к сети анонимно. Обычно, когда мы серфим и-нет, то оставляем много информации о себе и компьютере, такие как:
— IP компа;
— MAC адрес;
— открытые порты;
— список запущенных программ;
— операционная система;
— используемый браузер и его версию;
— физическое местоположение и т.п.

Ananobox все эти данные скрывает через сети TOR. Так же позволяет получить доступ к заблокированным ресурсом (PoCкомнадзор, привет).

Сайт проекта http://anonabox.com/

Continue reading «Аnonabox — хардварный TOR-роутер [Scam]»

База WPS pin-кодов

Ниже представлена база WPS pin-кодов, в зависимости от MAC-адреса точки доступа. Это всего лишь возможные значения, которые находились эмпирическим путем и были выдернуты мной из программы WPScrackGUI v1.1.8

 

Кто не знает, эти pin-коды нужно использовать с программой reaver [http://code.google.com/p/reaver-wps/], читаем по ссылке как ее готовят и с чем едят.

UPD1 19.11.2013:

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
00:14:D1 26848185 1234XXXX
00:18:E7 15537782
00:19:15 12345670 63396638
00:19:70 4286XXXX 6496XXXX
00:21:29 64637129 22310298 64103747 95891705
00:24:17 31011193
00:26:44 7820XXXX 78202962 49780871
00:38:72 1562XXXX 18836486
00:48:7A 15471628
00:0C:F1 30447028
00:1A:2B 15624697 8847XXXX
00:1D:19
00:1D:7E 66026402
00:1D:73 88420707
00:4F:62 21207136
7C:4F:B5 75332662 72688656
A0:21:87 92442559
A0:21:B7 63825XXX 0634XXXX 01318104 6557XXXX 0669XXXX 5400XXXX 1441XXXX
5C:33:8E 82848439 11765592 43154XXX 1111XXXX 9901XXXX
84:A8:E4 7996XX00
30:46:9A 9754XXXX 95221XXX 3444XXXX 344449XX 1504XXXX 19482417 95221021 2170XXXX
30:39:F2 1670XXXX 16538061 4329XXXX 1340XXXX 1835XXXX 8820XXXX
50:67:F0 20064525 26599625 146076XX 1452XXXX 18674095 91726681 44947477 05884889 8253600 52594809 51660567 95048147 19634173 72344071 03419724 11288879 67971862 23380622 42768777 04898702 09165847
F4:3E:61
58:6D:8F 47158382 69382161
94:44:52 93645348 2444XXXX 5319XXXX 26023809
08:86:3B 21250491
40:4A:03 11866428 79205177
64:68:0C 7996XXXX
88:25:2C 7654XXXX 03526859 7442XXXX 74425648 3565XXXX 0452XXXX
04:C0:6F 0751XXXX
20:4E:7F 45197079
20:2B:C1 1957XXXX
F8:D1:11 4867XXXX
F4:C7:14
C4:3D:C7 5141XXXX 51419981 6810XXXX
B0:48:7A 0055XXXX 54335677 8667XXXX
1C:7E:E5 6041XXXX 22609298 60418579
38:60:77
CC:96:77
C0:C1:C0 78985933 7898XXXX
C0:AC:54
C0:3F:0E 8345XXXX 2585XXXX 2503XXXX
34:08:04 36022656 93395274
74:44:01 3555XXXX 00446747 2761XXXX 27615126 4522XXXX 4545XXXX
BC:76:70 6326XXXX 6343XXXX 63431919 6431XXXX
00:1D:CE 85560130
58:98:35 53890894
DC:0B:1A 1653XXXX 18355604 88202907 13409708 43297917 21158766
38:72:C0 12345678 2017XXXX
72:C0:6F 3863XXXX
6A:C7:14 3205XXXX 3227XXXX 3365XXXX 3495XXXX CO:3F:0E 8321XXXX 25032918
72:A8:E4 3357XXXX
62:C0:6F 3663XXXX 3442XXXX 3304XXXX
00:0B:3B 3814XXXX
00:24:01 97744757
E0:CB:4E 62987523
00:26:CE
00:11:6B 3042XXXX
5C:35:3B 64874487 6487XXXX 9575XXXX
00:26:24 95374611
68:C0:6F 41719565
00:26:5A 76971464
1A:0B:40 17068161
6A:C0:6F 3722XXXX 3539XXXX
6A:A8:E4 3416XXXX 5198XXXX
54:E6:FC 5325XXXX 53256XXX 9999XXXX
E0:69:95
00:22:F7 2456XXXX
CC:96:A0 5051XXXX 5090XXXX 1623XXXX
00:18:02 16546615
2C:B0:5D 5482XXXX 5535XXXX
08:10:74 20956455
00:22:3F 48247818
C8:3A:35 11195207
00:1F:1F 85521162 85521261 85544482
D8:5D:4C 7452XXXX
D0:AE:EC 2417XXXX 0934XXXX 5089XXXX
80:B6:86 4049XXXX 3632XXXX
90:F6:52 15094148 61296879 26412948
22:4E:7F 1558XXXX
94:0C:6D 3795XXXX
74:EA:3A 8388XXXX
1C:AF:F7 0630XXXX DC:OB:1A
00:A0:26 8224XXXX
00:1F:A4
C8:60:00 46264848
F8:3D:FF 25905892
A0:0B:BA 00000000
72:3D:FF 50540686
50:7E:5D 8840XXXX 8846XXXX
E4:7C:F9
00:12:FB
72:C7:14 33614XXX
C0:EF:0E 11034XXX 29159XXX
59:98:35 34739XXX
00:0A:52
5C:33:E8
94:FE:F4 43944552
53:33:8E 9924XXXX
62:55:9C 0111XXXX
6A:55:9C 9957XXXX
00:1D:1A 2053XXXX
38:72:0C
1C:C6:3C 1860XXXX
72:E8:7B 1478XXXX
74:31:70 7776XXXX
10:C6:1F 22643223
98:FC:11 55132909 93532655
00:23:08
14:D6:4D 20700737 64535203
54:6E:FC 02917092
C8:D5:FE
00:22:6B 59900887
AC:E8:7B 77502896
00:4F:67 13648947
19:15:C1
E0:91:15 42764199
00:05:59 2519XXXX
08:76:FF 79412988
00:11:22 6541XXXX
14:D6:D4 31008167
14:E6:E4 8118XXXX
00:1D:D1 37272937
00:B0:0C 1924XXXX
E8:40:F2 4676XXXX
8C:CA:32 71259987
00:30:4F 8764XXXX
00:26:5B 28390046
00:1D:CD 9839XXXX
F4:6D:21 8XXXXXXX
5C:4C:A9 1234567X
1C:BD:B9 55349758 70313376
4C:17:EB
00:19:18
00:25:9C 78091597
4C:60:DE 42473534 22958143 53550866
6A:1D:67 04161608
00:1D:D2 49143836 58542132 14550126
B4:74:9F 23659391
E0:91:F5 49945386
62:C7:14 32184129
84:1B:5E 78100053 1354XXXX
00:23:69 51348014
80:1F:02
00:24:A5 44960452
00:23:CD 54080812
50:46:5D 21101021 46540010
B8:A3:86 19217581
B8:9B:C9 41613849
54:04:A6 31028325 3211XXXX

Чистим javascript файлы от вирусов (заметка)

В основном заражают 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 — это и есть наша уникальная сигнатура.

Linux keylogger — консольный кейлогер (заметка)

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

Linux: Opera Passwords Recovery

Пароли в 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

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/

Подключение мобильного интернета в Ubuntu

Для этого нам понадобится bluetooth manager — blueman.
Консольная звонилка wvdial — есть в пакетах sudo apt-get install wvdial.

Первое что делаем — это подключаем телефон в режиме DUN (Dial-Up Network). Пропущу всякие мелочи типа ввода PIN’a, разберетесь сами, ничего сложного.
Далее нам понадобиться создать простой конфиг для wvdial.

1
2
3
4
5
6
7
8
9
[Dialer Defaults]
Modem = /dev/rfcomm0
Init1 = ATZ
Init2 = AT+CGDCONT=1,"IP","www.djuice.com.ua"
Phone = *99***1#
Username = 1111
Password = 1111
ISDN = no
New PPPD = yes

Конфиг для ОПСОСа DJuice. Настройки своего оператора думаю найти не сложно на официальном сайте. Continue reading «Подключение мобильного интернета в Ubuntu»

Mocp & Conky и обложка к альбому

Chapter [0x01] Для затравки.

mocp conky
mocp conky

Вот к такому виду мы придем в конце этого руководства, как немного облагородить свой рабочий стол (на любителя).
Continue reading «Mocp & Conky и обложка к альбому»

Ubuntu 10.04 на ноутбуке (Die Hard Mode OFF)

Имея ноут DELL Vostro 1015 с Ubuntu на борту, стал замечать треск жесткого диска (hard driver) при работе от батареи, после обновления на 10.04.

Вызвано тем что был включен мод контроля жесткого диска в режиме работы от аккумулятора.

Отключаем эту фичу совсем, потому что убьет жесткий диск намного быстрей.

Открываем файлик в любом текстовом редакторе под рутом /etc/laptop-mode/laptop-mode.conf, находим следующую строку

ENABLE_LAPTOP_MODE_ON_BATTERY и присваиваем ей значение равное 0 (нулю).

В итоге должна иметь следующий вид:

1
ENABLE_LAPTOP_MODE_ON_BATTERY=0

3Proxy — Анонимный прокси!

3Proxy — очень хороший, маленький прокси-сервер. Делаем его полностью анонимным, легким движением руки (можно все задать и через опции, но мне как то, так спокойней), подкорректировав proxy.c в дире src/.
Задав значение переменной anonymous.

1
2
int anonymous = 1;                 //(222 строка)
//anonymous = param->srv->singlepacket;  //(238 строка)

Теперь нужно только собрать все.

1
make -f Makefile.Linux

После этого смело заходим, к примеру, на http://www.leader.ru/secure/who.html и смотрим, что идет «прямое» соединение и никаких прокси.

Curl & Perl & Web-Money

Сидя в субботний вечер, от нефиг делать накатал такой «парсер» для узнавания курса вывода WMZ на одном сайте.

1
curl http://ukrwebmoney.com/rates.js | perl -ne 'if (/out(.*?)([\d+][\.][0-9]{2})/) { print "Вывод WMZ: ".$2." UAH\n"; }' &gt; rate &amp;&amp; clear &amp;&amp; cat rate &amp;&amp; rm -f rate