четверг, 2 августа 2018 г.

Получение ключа доступа (access_token) для API «ВКонтакте»

«Access_token» – это некий уникальный ключ доступа к API социальной сети «ВКонтакте».
Используя уникальный ключ, вы  сможете постить сообщения на стену «ВКонтакте», отправлять личные сообщения, загружать фотографии и делать много других интересных вещей.

понедельник, 14 мая 2018 г.

Как отправить историю Вконтакте с компьютера.

Относительно недавно в социальной сети Вконтакте была добавлена новая функция
«Историй» друзей.

Идея «сторис» принадлежит другой соцсети — Instagram. Смысл «Историй» в том,
что вы можете делиться с друзьями короткими роликами длиной 12 секунд, снятыми
на ваш андроид телефон или айфон, или же делиться картинками и фотографиями.

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

четверг, 19 апреля 2018 г.

Как создать свой socks5 proxy-сервер

Если у вас нет своей VDS
Регистрируемся на digitalocean.com
Создаем новый droplet любой конфигурации, минимальный стоит 5$/месяц, трафик 1TB, чуть дороже 10$/месяц — трафик 2TB, 20$ — 4TB

Операционная система Ubuntu 17.10 x64 вполне подойдет

Minimal server configuration

Рекомендуемая минимальная конфигурация сервера, предлагающая базовые функции SOCKS без какой-либо проверки подлинности. Конфигурация, описанная здесь, не является наименьшей возможной конфигурацией, но структурирована для облегчения отладки и расширения. Каждый раздел конфигурационного файла обсуждается отдельно. Минимальный  файл указан в конце страницы. Последующие страницы расширяют минимальную конфигурацию, указанную здесь, для поддержки более сложных сценариев использования.

вторник, 13 февраля 2018 г.

Получение контрольной суммы SHA-1 приложения

Ищем где на компьютере находится keytool
Скорее всего он пудет в папке 
C:\Program Files\Java\jdk1.7.0_05\bin

Путь и версия jdk могут быть разными

Открываем командную строку и вводим:
keytool -list -v -keystore D:\MyKeys\mykey.jks -alias MyApp

Где:
D:\MyKeys\mykey.jks  — путь к вашему ключу
mykey.jks — имя ключа
alias — псевдоним ключа. 

Далее система попросит ввести пароль. Вводим пароль который создали в процессе создания ключа.
После успешного ввода пароля получаем SH1:
SHA1: F3:A3:24:75:B2:A8:AD:09:R4:72:32:53:72:B5:98:5D:KF:1B:84:KC

Получите ключ Google Maps API

Для доступа к серверам Google Maps вашему приложению требуется ключ API. Вам нужен ключ API с ограничением для приложений Android. Ключ предоставляется бесплатно. Вы можете использовать его с любым из своих приложений, обращающихся к Google Maps Android API, без каких-либо ограничений по количеству пользователей.
Выберите один из следующих способов получить свой ключ API из Android Studio.
  • Самый быстрый и простой способ: Используйте ссылку в файле google_maps_api.xml, созданном Android Studio.
    1. Скопируйте ссылку из файла google_maps_api.xml и вставьте ее в адресную строку своего браузера. Эта ссылка перенаправит вас в Google API Console и предоставит в Google API Console необходимую информацию через параметры URL, тем самым сократив объем данных, которые требуется вводить вручную.
    2. Выполните инструкции, чтобы создать новый проект в Google API Console, или выберите существующий проект.
    3. Создайте ключ API, ограниченный для Android, для своего проекта.
    4. Скопируйте созданный ключ API, вернитесь в Android Studio и вставьте ключ API в элемент в файле google_maps_api.xml.
  • Несколько менее быстрый способ: Используйте учетные данные в файле google_maps_api.xml, созданном Android Studio.
    1. Скопируйте учетные данные из файла google_maps_api.xml.
    2. Откройте Google API Console в браузере.
    3. Используйте скопированные учетные данные, чтобы добавить приложение в существующий ключ API или создать новый ключ API.
  • Полный процесс получения ключа API: если в вашем случае ни один из приведенных способов не работает, следуйте описанию всего процесса.

Как сгенировать ключ для использования google maps api в Android

Для того, чтобы использовать в своих android-приложениях пакет классов для работы с  google-maps, необходимо получить от google бесплатный ключ – чтобы вставить его в файл-layout для отображения карты (поле android:apiKey для элемента com.google.android.maps.MapView). Для этого используется утилита keytool. Утилита keytool управляет хранилищем ключей (закрытых и публичных), а также их сертификатами. Хранилище ключй по умолчанию – файл специального формата.
Как получить ключ для google-maps MapView в Android:
1. Создаем новую пару ключей в хранилище (если хранилища не существует оно будет создано)
keytool -genkey -alias <имя ключа> -keystore <имя файла-хранилища ключей и сертификатов>
где:
  • genkey – указывает, что мы хотим создать в хранилище ключей новую пару ключей – открытый и закрытый
  • alias – указывает имя для наших ключей
  • keystore – указывает имя файла-хранилища ключей

2. Создаем и подписываем для ключей сертификат безопасности
keytool -selfcert -alias <имя ключа> -keystore <имя файла-хранилища ключей и сертификатов>
где:
  • selfcert – указывает что мы хотим создать сертифкат безопасности для нашей пары ключей
  • alias – указывает имя для наших ключей
  • keystore – указывает имя файла-хранилища ключей

3. Выводим сгенерированные ключи
keytool -list -alias <имя ключа> -keystore <имя файла-хранилища ключей и сертификатов> -storepass <пароль на хранилище> -keypass <пароль для ключа>
где:
  • list – используется для отображения сгенерированных ключей с псевдонимом заданным после флага alias в хранилище указанном после флага keystore
В результате вы должны получать запись вида:
  • Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
4. Скопировав полученное значение мы вставим его в специальную строку запроса на страничке google получения кодов, на его основе, в ответ, нам сгенерируется ключ, который мы должны вставить в наш код.
Пример для debug mode:
  • keytool -list -alias androiddebugkey -keystore $HOME/.android/debug.keystore -storepass android -keypass android

воскресенье, 14 января 2018 г.

Декодирование VK Audio

define('VK_ID', ID_пользователя_в_виде_числа); function decode($str){ $vals = explode("#", explode("?extra=", $str)[1]); $tstr = vk_o($vals[0]); $ops = vk_o($vals[1]); $ops_arr = explode(chr(9), $ops); $len = sizeof($ops_arr); for($i = $len - 1; $i >= 0; $i--){ $args_arr = explode(chr(11), $ops_arr[$i]); $op_ind = array_shift($args_arr); switch($op_ind){ case "v": $tstr = vk_v($tstr); break; case "r": $tstr = vk_r($tstr, $args_arr[0]); break; case "x": $tstr = vk_x($tstr, $args_arr[0]); break; case "s": $tstr = vk_s($tstr, $args_arr[0]); break; case "i": $tstr = vk_i($tstr, $args_arr[0]); break; } } return $tstr; } $vk_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/="; function vk_o($str){ global $vk_str; $len = strlen($str); $result = ""; for($s = 0, $index2 = 0; $s < $len; $s++){ $sym_index = strpos($vk_str, $str[$s]); if($sym_index !== false){ $i = (($index2 % 4) !== 0) ? ( ($i<<6) + $sym_index) : $sym_index; if(($index2%4) != 0){ $index2++; $shift = -2 * $index2 & 6; $result .= chr(0xFF & ($i >> $shift)); } else { $index2++; } } } return $result; } function vk_s($str, $start){ $len = strlen($str); if($len > 0){ $cur = abs($start); $shuffle_pos = array(); for($i = $len - 1; $i >= 0; $i--){ $cur = (($len * ($i + 1)) ^ $cur + $i) % $len; $shuffle_pos[$i] = $cur; } for($i = 1; $i < $len; $i++){ $offset = $shuffle_pos[$len - $i - 1]; $prev = $str[$i]; $str[$i] = $str[$offset]; $str[$offset] = $prev; } } return $str; } function vk_i($str, $i){ return vk_s($str, $i ^ (int) VK_ID); } function vk_v($str){ return strrev($str); } function vk_r($str, $i){ global $vk_str; $vk_str2 = $vk_str . $vk_str; $vk_str2_len = strlen($vk_str2); $len = strlen($str); $result = ""; for($s = 0; $s < $len; $s++){ $index = strpos($vk_str2, $str[$s]); if($index !== false){ $offset = ($index - $i); if($offset < 0){ $offset += $vk_str2_len; } $result .= $vk_str2[$offset]; } else { $result .= $str[$s]; } } return $result; } function vk_x($str, $i){ $xor_val = ord($i[0]); $str_len = strlen($str); $result = ""; for($i = 0; $i < $str_len; $i++){ $result .= chr(ord($str[$i]) ^ $xor_val); } return $result; } echo decode($argv[1]); ?>