SpyBot: мониторим статус ВКонтакте и твитим в twitter

Скрипт написан на Python. Работает просто и следующим образом:
1) перед первым запуском нужно прописать ID адрес пользователя ВКонтакте или его алиас (/id123456 или /user_alias) в файл spybot.config напротив значения vkid;
2)

1
python vkontakte_spy_bot.py

далее запускаем скрипт для получение данных для коннекта к twitter через OAuth, для этого переходим по ссылке в твитер, даем разрешение для подключения приложения, получаем PIN-код, вводим его в консольку.
3)

1
2
crontab -e
*/10 * * * * /usr/bin/python /path_to_script/vkontakte_spy_bot.py

далее уже можно смело прописывать скрипт в крон. (обязательное условие держать скрипт и конфиг в одной директории)
4) время в UTC, также just4fun твитим координаты HQ CIA from Langley 😉

Скачать скрипт мониторинга статуса ВКонтакте

UPD: Можно ф-цию получения статуса заменить примерно следующим образом, используя API ВКонтакте
Continue reading «SpyBot: мониторим статус ВКонтакте и твитим в twitter»

Vigenere — расчет индекса совпадений

Скрипт подсчитывает индекс совпадений в зависимости от сдвига, для определения длины ключа по методу Фридмана.
В функцию передаем значения первого значения сдвига (k) и общее количество последующих сдвигов текста (seq).
Для примера в скрипт введено значение четвертой части Kryptos’a (K4), если принять во внимание что для ее шифровки использовался метод Виженера — то длина ключа, скорее всего, будет равна 7.

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
#!/usr/bin/env python
# coding: utf-8
# dev: Dominus <dominus [at]k0derz[dot]ru>
# site: http://k0derz.ru/

def shifts(text, k=1, seq=1):
    print '|---------------|---------------|-----------------------|'
    print '|\tShift\t|\tCount\t|\tPercent, % \t|'
    print '|---------------|---------------|-----------------------|'
    for items in range(seq):
        text_len = len(text)
        a_count = [0 for x in range(text_len)]
        delta = 0
        for index in range(text_len):
            if index < text_len - k:
                index2 = index+k
                a_count[index] = text[index2]
            else:
                    a_count[index] = text[delta]
                    delta = delta + 1
        counter = 0
        for inx in range(text_len):
            if text[inx] == a_count[inx]:
                counter = counter + 1
        print '|\t%d\t|\t%d\t|\t%f\t|' % (k, counter, counter*100.0/text_len)
        k = k + 1
    print '|---------------|---------------|-----------------------|'      

def main():
    text = 'OBKRUOXOGHULBSOLIFBBWFLRVQQPRNGKSSOTWTQSJQSSEKZZWATJKLUDIAWINFBNYPVTTMZFPKWGDKZXTJCDIGKUHUAUEKCAR'
    shifts(text, 1, 17)
   
if __name__ == '__main__':
    main()

Continue reading «Vigenere — расчет индекса совпадений»

Python: анализатор текста

Простой анализатор текста, делает подсчет количества вхождения букв в предоставленный текст и их процентное соотношение к общему количество символов в тексте. Писался для себя и на скорую руку как отмаз за код 😉

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
#!/usr/bin/env python
# coding: utf-8
# dev: Dominus <dominus [at]k0derz[dot]ru>
# site: http://k0derz.ru/

def main():
   
    a_count = [0 for x in range(123)]
    alpha_count = 0
    f = open('fbi_cipher.txt', 'r') # здесь лежит файлик с анализируемым текстом
    text = f.read()
    f.close()
    for items in text:
        if items.isalpha():
            my_ord = ord(items.lower())
            k = a_count[my_ord]
            index = my_ord
            a_count[index] = k + 1
            alpha_count = alpha_count + 1
    i = 97     
    print '|\tletter\t|\tcount\t|\tpercent, %\t'
    print '|---------------|---------------|---------------------'
    for k in range(26):    
        persent = a_count[i] * 100.0 / alpha_count
        print '|\t%s\t|\t%d\t|\t%s\t' % (chr(i), a_count[i], persent)
        i = i + 1
    print '|---------------|---------------|---------------------' 
    print 'Total letters: %d' % alpha_count

if __name__ == '__main__':
    main()

Continue reading «Python: анализатор текста»

Python: socket post data (простой пример)

Немного проанализировав метрику Яндекса, увидел заходы на сайт в выдачи о примере отправки POST-запроса, реализованного на Python’e.
Поэтому решил немного переделать этот пример реализации сокетов на python. В заголовке POST запроса написал только необходимый минимум, без учета кукисов и юзерагентов etc.

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
#!/usr/bin/env python
'''
post_socket.py.py
author: Dominus
site: http://k0derz.ru/
'''

import socket, sys

def main():
if len(sys.argv) &lt; 4:
print "Usage: python post_socket.py server port data=test"
sys.exit(1);
HOST = sys.argv[1]      # server adress
PORT = int(sys.argv[2]) # server port
DATA_POST = sys.argv[3] # POST data
DATA_LEN  = str(len(DATA_POST))

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # init TCP socket type
s.connect((HOST, PORT))
s.send("POST /search.php HTTP/1.1\r\nHost: "+ HOST +"\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: "+ DATA_LEN +"\r\n\r\n" + DATA_POST) # send DATA to server
data = s.recv(1024)  # recieve info
s.close()
rsp = repr(data)
print rsp

if __name__ == "__main__":
main()

Python: MRA — Mail.ru Agent (SMS)

Решил немного потренироваться в создании пакетов и разборов дампов, выбрал для этого MRA в качестве исследуемого и Python как язык для реализации задуманного.
Хочу сразу уточнить, что ответ сервера при отправки SMS был выбран методом тыка, потому что у меня нет под рукой нативного клиента, который мог бы отправить СМСку.
Основные моменты описаны в коде, оптимизировать ф-ции в коде не стал, т.к. так более наглядней и можно просмотреть все этапы создания пакета для отправки.
В роле снифера выступал wireshark.
Буду очень благодарен за дампы с ответами после отправки SMS.(успешной и нет)
Continue reading «Python: MRA — Mail.ru Agent (SMS)»

Python: Пример использования сокетов

Для примера взял получения информации о сервере Counter-Strike, а именно имя сервера и текущую карту. Соединение происходит по протоколу UDP, затем распарсиваем полученные данные и выводим на экран.

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
#!/usr/bin/env python
'''
cs_client.py
author: Dominus
site: http://k0derz.ru/
'''

import socket, string, sys

def main():    
    if len(sys.argv) < 3:
        print "Usage: python cs_client.py server port"
        sys.exit(1);
    HOST = sys.argv[1]          # server adress
    PORT = int(sys.argv[2]) # server port
   
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # init UDP socket type
    s.connect((HOST, PORT))
    s.send("\xFF\xFF\xFF\xFFTSource Engine Query\x00")   # send INFO request to CS-server
    data = s.recv(1024)  # recieve info
    s.close()
    rsp = repr(data).split("\\x00")
    print "Server name:", rsp[1]
    print "Server map:",  rsp[2]

if __name__ == "__main__":
    main()

DharmaEncoder

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

Курсы ввода/вывода WMZ на Python

Находясь в некой прострации после НГ (кстати, ВСЕХ с Новым 2010 Годом!!!), и в нехватке времени писать что то интересное/сочное, выложу маленький примерчик как можно спарсить нужные данные на Python’e.
Для примера взял всё те же курсы валят. Continue reading «Курсы ввода/вывода WMZ на Python»