Перейти к содержанию


stayprimitive

Пользователь
  • Публикаций

    9
  • Зарегистрирован

  • Посещение

Репутация

64 Excellent

Информация о stayprimitive

  • Звание
    Rank №1
  1. Как правильно брутить?

    Да ты ебало свое стяни собака горбатая. В очке у себя пальцем поработай.
  2. Как правильно брутить?

    Точно не знаю, как это называется в терминологие. Бручу ssh для поднятия прокси серверов, чтобы в дальнейшем их использовать при авторизации в банковских кабинетах: альфа-клик, сбер и прочее. Изначально тоже на скорость грешил, но за 72ч прошло более 300к комбинаций, не так уж и много конечно, надеялся на результат. Предпочел медузу потому что она более настраиваемя именно на ssh протокол, управления потоками у нее происходит не только методом увелечения процессов. Проще говоря процессор меньше загружает и перебор быстрее. На остальных протаколах использую гидру. Эрмитаж не пробовал, честно говоря пару раз только о нем слышал. Patator проверял, но питон не очень люблю.
  3. Как правильно брутить?

    Приветствую. Интересует такой аспект, как брутфорс. На практике использую linux, medusa, proxychains, masscan и публичные списки паролей с именами пользователей. К примеру: proxychains medusa -U userlist.txt -P wordlist.txt -H iplist.txt -M ssh -O result.txt -T 10 -t 4 Список имен ползователей содержит более 100 строк, список паролей тоже не слабый, хоть и взято все с паблика. По итогам ни одного гуда. Proxychains использую в связке с тором, может большенство серверов блокирую тор? Вообщем, что я делаю не так?
  4. На чем ботов пишите?
  5. Сделай лучше тогда.
  6. Приветствую, в данной статье хочу описать метод, как работать с платежной системой киви используя си. Не претендую на звание мастера, всего-лишь делюсь своим опытом, надеюсь кому-нибудь будет полезно. Так же буду рад конструктивной критике. Приступим к первой части. Теорию опишу очень поверхнастно так как этой воды можно везде найти. Мы имеем пару логин:пасс, далее мы формируем json запрос для проверки валидности пары, в случае успеха получаем тг-тикет. Далее берем тг-тикет и по нему получаем стс-тике с которым уже производим авторизацию. После авторизации можно будет при помощи парсера получать различную информацию с аккаунта киви, например балан, транзакции и прочее. Файл main.c Code: //Статическая функция, возвращающая ответ с сервера static size_t CallBack(void *contents, size_t size, size_t nmemb, void *userp) { size_t realsize = size * nmemb; curl_data_t *cdt = (curl_data_t*)userp; cdt->resp_data = realloc(cdt->resp_data, cdt->resp_size + realsize + 1); if(cdt->resp_data == NULL) { printf("--> not enough memory (realloc returned NULL)\n"); return 0; } memcpy(&(cdt->resp_data[cdt->resp_size]), contents, realsize); cdt->resp_size += realsize; cdt->resp_data[cdt->resp_size] = 0; return realsize; } //Функция проверяет правильность пары логин:пасс и получает тг-тикет и записывает куки qiwi_t QiwiGetTgstByClient(char *request) { printf("-> QiwiGetTgstByClient\n"); CURL *curl = curl_easy_init(); CURLcode res; curl_data_t cdt; cdt.resp_data = malloc(1); cdt.resp_size = 0; if(curl == NULL) exit(1); struct curl_slist *slist = NULL; slist = curl_slist_append(slist, "Accept: application/vnd.qiwi.sso-v1+json"); slist = curl_slist_append(slist, "Accept-Language: ru;q=0.8,en-US;q=0.6,en;q=0.4"); slist = curl_slist_append(slist, "Content-Type: application/json; charset=UTF-8"); slist = curl_slist_append(slist, "Accept-Encoding: gzip, deflate"); slist = curl_slist_append(slist, "X-Requested-With: XMLHttpRequest"); curl_easy_setopt(curl, CURLOPT_URL, "https://auth.qiwi.com/cas/tgts"); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist); curl_easy_setopt(curl, CURLOPT_HEADER, 0); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CallBack); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&cdt); curl_easy_setopt(curl, CURLOPT_POST, 1); curl_easy_setopt(curl, CURLOPT_TIMEOUT, 60L); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt"); curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt"); curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); //Цикл используется для того чтобы в случае высокой задержки програма не останавливалась do { printf("--> Sending curl request\n"); res = curl_easy_perform(curl); }while(res != CURLE_OK); //Формируем json для дальнейшего использования qiwi.json = strdup(cdt.resp_data); // slist лучше очистеть, бывали проблемы из-за этого if(slist != NULL) curl_slist_free_all(slist); //записываем куки файл curl_easy_cleanup(curl); return qiwi; } // Функция получает стс-тикет по тг-тикету qiwi_t QiwiGetStsByTgst(char *request) { printf("-> QiwiGetStsByTgst\n"); CURL *curl = curl_easy_init(); CURLcode res; curl_data_t cdt; cdt.resp_data = malloc(1); cdt.resp_size = 0; if(curl == NULL) exit(1); struct curl_slist *slist = NULL; slist = curl_slist_append(slist, "Accept: application/vnd.qiwi.sso-v1+json"); slist = curl_slist_append(slist, "Accept-Language: ru;q=0.8,en-US;q=0.6,en;q=0.4"); slist = curl_slist_append(slist, "Content-Type: application/json; charset=UTF-8"); slist = curl_slist_append(slist, "Accept-Encoding: gzip, deflate"); slist = curl_slist_append(slist, "X-Requested-With: XMLHttpRequest"); curl_easy_setopt(curl, CURLOPT_URL, "https://auth.qiwi.com/cas/sts"); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, slist); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CallBack); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&cdt); curl_easy_setopt(curl, CURLOPT_POST, 1); curl_easy_setopt(curl, CURLOPT_HEADER, 0); curl_easy_setopt(curl, CURLOPT_TIMEOUT, 60L); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt"); curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt"); curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); do { printf("--> Sending curl request\n"); res = curl_easy_perform(curl); }while(res != CURLE_OK); qiwi.answer = strdup(cdt.resp_data); if(slist != NULL) curl_slist_free_all(slist); curl_easy_cleanup(curl); return qiwi; } // Функция отправляет стс-тикет на сервер qiwi_t QiwiInputStsTicket(char *request) { printf("-> QiwiInputStsTicket\n"); CURL *curl = curl_easy_init(); CURLcode res; curl_data_t cdt; cdt.resp_data = malloc(1); cdt.resp_size = 0; if(curl == NULL) exit(0); char url[128]; sprintf(url, "https://qiwi.com/j_spring_cas_security_check?ticket=%s", request); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CallBack); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&cdt); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curl, CURLOPT_TIMEOUT, 60L); curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt"); curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt"); curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); do { printf("--> Sending curl request\n"); res = curl_easy_perform(curl); }while(res != CURLE_OK); qiwi.answer = strdup(cdt.resp_data); curl_easy_cleanup(curl); return qiwi; } //Устанавливаем прокси и записываем куки qiwi_t QiwiSetProxy() { printf("-> QiwiSetProxy\n"); CURL *curl = curl_easy_init(); CURLcode res; curl_data_t cdt; cdt.resp_data = malloc(1); cdt.resp_size = 0; if(curl == NULL) exit(1); curl_easy_setopt(curl, CURLOPT_URL, "https://auth.qiwi.com/app/proxy?v=1"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CallBack); curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&cdt); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curl, CURLOPT_TIMEOUT, 60L); curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt"); curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt"); curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); do { printf("--> Sending curl request\n"); res = curl_easy_perform(curl); }while(res != CURLE_OK); qiwi.answer = strdup(cdt.resp_data); curl_easy_cleanup(curl); return qiwi; } // Функция осуществляет авторизацию qiwi_t QiwiAuthClient() { printf("-> QiwiAuthClient\n"); //Эта функция не описывалась еще, она возвращает две переменные //db.qiwi.username || db.qiwi.password GetActivatedWallet(); //Эта функция тоже не описывалась, // Она проверяет к какому из кошельков подключаться if(db.qiwi.username == NULL || db.qiwi.password == NULL) GetActivatedWallet(); //Формируем запрос в формате json QiwiParseUserPass(db.qiwi.username, db.qiwi.password); //Получаем тикет из сформированного json запроса QiwiGetTgstByClient(qiwi.userpass); //Снова формируем json запрос с тикетом QiwiParseTgst(qiwi.json); //Функция сравнивает тикеты и пишит их в базу, чтобы по сто раз не обращаться к //серверам киви UpdateWalletTicket(qiwi.ticket, 1); //Формирование запроса в формате json QiwiParseTicketRequest(qiwi.ticket); //Получение стс-тикета QiwiGetStsByTgst(qiwi.request); //Подготовка запроса на авторизацию QiwiParseSts2(qiwi.answer); //Обновляем второй тикет UpdateWalletTicket(qiwi.ticket, 2); //Авторизируемся по стс-тикету QiwiInputStsTicket(qiwi.ticket); //Устанавливаем прокси для отправки запросов QiwiSetProxy(); return qiwi; } Я не стал весь процесс запихивать в одну функцию, ибо это крайне не читабельно. Кому интересно, могу написать вторую часть с более подробными описаниями. Также исправьте, если я где-то ошибся, буду очень признателен
  7. Как найти дропа для пластика?

    Со студентам как правило сложно договориться, ибо они не дураки и понимаю что к чему. Да и самый важный момент - это личный контакт, со студентами он более опасен.
  8. Приветствую. Пытался найти похожею тему, но не сумел. Сабж, коротко говоря. Как найти дроп(а, ов) для оформления на них дебетовых карт. Сам процесс оформления пластика достаточно наработан и осечки не дает. Собственно, ранее пробовал искать нор, алкашей и прочих представителей низшей прослойки населения. Смог через них сделать только около 10 карт, не так уж это и много. Да и с этими людьми проблем много, то потеряются, то карту заблокируют. Может кто-нибудь подсказать, как правильно подходить к поиску дропов?
×