Скрипт написан на 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 ВКонтакте
more »
Posted in Программирование | Комментариев нет
Скрипт подсчитывает индекс совпадений в зависимости от сдвига, для определения длины ключа по методу Фридмана.
В функцию передаем значения первого значения сдвига (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() |
more »
Posted in Программирование | Комментариев нет
Простой анализатор текста, делает подсчет количества вхождения букв в предоставленный текст и их процентное соотношение к общему количество символов в тексте. Писался для себя и на скорую руку как отмаз за код
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() |
more »
Posted in Программирование | Комментариев нет
Немного проанализировав метрику Яндекса, увидел заходы на сайт в выдачи о примере отправки 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) < 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() |
Posted in Программирование | Комментариев нет
Решил немного потренироваться в создании пакетов и разборов дампов, выбрал для этого MRA в качестве исследуемого и Python как язык для реализации задуманного.
Хочу сразу уточнить, что ответ сервера при отправки SMS был выбран методом тыка, потому что у меня нет под рукой нативного клиента, который мог бы отправить СМСку.
Основные моменты описаны в коде, оптимизировать ф-ции в коде не стал, т.к. так более наглядней и можно просмотреть все этапы создания пакета для отправки.
В роле снифера выступал wireshark.
Буду очень благодарен за дампы с ответами после отправки SMS.(успешной и нет)
more »
Posted in Программирование | 16 комментариев
Для примера взял получения информации о сервере 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() |
Posted in Программирование | Комментариев нет
Хочу обратить внимание на этот новый проект под названием DharmaEncoder. Очень удобный энкодер/декодер написанный на python с использованием PyGtk, который в данный момент поддерживает:
- URL
- Full Url
- Base64
- Hex
- MD5 Hash
- SHA1 Hash
- SQL Char String
- Unicode %u00
- и т.д.
Posted in Linux, Программирование | Комментариев нет
Находясь в некой прострации после НГ (кстати, ВСЕХ с Новым 2010 Годом!!!), и в нехватке времени писать что то интересное/сочное, выложу маленький примерчик как можно спарсить нужные данные на Python’e.
Для примера взял всё те же курсы валят. more »
Posted in Программирование | Комментариев нет