• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Автоматизация, или как быстро не деградировать

2c71e9

Газонокосильщик
КИДАЛА
Регистрация
19.04.2019
Сообщения
708
Реакции
682
Пожалуйста, обратите внимание, что пользователь заблокирован
1572735683318.png


Данный материал показывает, как можно упростить жизнь и куда копать для этого. Мы все часто выполняем различные действия за компом, и как ленивые жопы иногда хочется чуток меньше делать действий. Мне как кодеру, частенько приходится считать контрольные суммы, к примеру md5. Ну и как истинный лентяй, я взял и нашел сайт, где можно онлайн считать. Но что делать если нет интернета, а еще более страшно, что эти сайты ведут логи. И короче как истинный хакер решил все упростить. И понял почему-бы не написать наипростейший бинарь, который в консоли будет считать это.

Вариантик для unix.

main.cpp

C++:
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
#include "md5.h"

using namespace std;

int main(int argc, char *argv[]) {
    string key;

    while(1){
        printf("Enter key : \n"); // вывести приглашение
        getline(cin,key); // прочитать строку
        cout << md5(key) << endl; // посчтитать и вывести результат
    }
    return 0;
}

Как видно, это очень просто)


Для винды я не проверял, но софт легко гуглится тоже.


Библиотеку md5.h я тупо стырил с github. Все гуглится на ура. Опять же ввод параметров нам дает, чтобы данные не оседали в логах вашего bash.

Вы скажите, вот тебе делать нехер. Бери готовое да юзай. Ну во первых мы знаем что софт делает только то что нужно. А во вторых, мы просто не теряем навык, а может и что нить новое познаем. Я пока думал как сделать, выучил консоль от и до, как параметры передавать, как грабить выводы и так далее. Смысла описывать это все нету, есть учебники.

g++ main.cpp md5.cpp -o md5

скомпилировали, и засунули в /usr/local/bin и теперь нашу программу можно вызывать из консоли) Ну здорово же, и быстро и анонимненько. Вот мы и создали простую команду для bash которая делат ваши действия. А что делать если нам нужно выполнять несколько команд подряд? Давай-те напишем простой баш скрипт.

#!/bin/bash

rm old.file
cp $1 old.file

первая строка говорит что мы используем bash скрипт, далее идут список команд где можно передавать параметры с командной строки. через $1 $2 и так далее. Данный скрипт удаляет старый файл и копирует на его место какой скажете. Тоже все просто, теперь обзовем этот bash скрипт megacopy.sh и скопируем в туже папку /usr/local/bin/ и дадим права на запуск.

chmod +x /usr/local/bin/megacopy.sh

И так можно автоматизировать почти все) То есть логику пилим на каком нибудь простом языке программировния, а либы можно использовать уже готовые. Так ваш мозг совсем не засохнет. С windows таже ситуация, ток консоль там дико не удобная, но есть vbs складываем в папочку и выполняем по клику. А параметры вводим через Dialog.

Или через bat файлы


Копипастить не хочу.

Вот к примеру обычный чекер прокси на питоне, набросал за 15 минут.

Python:
import requests

with open('result.txt', 'a') as result_file: # открываем файл для записи резултатов
    with open('proxy_list.txt') as f: # открываем файл с проксями
        for line in f: # читаем прокси по строчно
            proxy_url = line.rstrip('\r\n') # убираем концы строк
            proxies = {
                  "http": "http://"+proxy_url,
                  "https": "http://"+proxy_url,
            } # настраиваем прокси для конекта
            try:
                 r = requests.get("https://raw.githubusercontent.com/kelseyhightower/helloworld/master/README.md", proxies=proxies) # пытеамся приконектиться
                 body = str(r.content)
                 if "helloworld" in body: # если конект был удачный , записываем в файл и выводим прокси.
                      print(proxy_url)
                      result_file.write(line)
            except requests.exceptions.ConnectionError as errc:
                 continue
print ("end check") # завершаем программа

Программа по сути из 20 строчек ^_^ Самое интересное. что и остальные повседневные задачи занимают не больше кода. Все уже написано за вас! Нужно просто написать аогоритм и размять мозг. И не надо ни чего ни у кого покупать :cool:

URL для проверки взяли любой в виде raw файла в интернете, чтобы можно было чекнуть статус конекта и что получили данные. Можно конечно и по коду получать, если пришло 200. То прокси живая.
Ну и прокси списком в файле proxy_list.txt. Гитхаб случайный взял, где был маленький файл)

Вот собственно и все по одиночным командам. Но что делать если мы хотим выполнять наши команды к примеру раз в час или скрипты. В линуксе есть cron в windows есть планировщик.

Ну начнем опять же с линукса, мы создаем скрипт bash с командами.

Далее ставим родной планировщик, если не стоит

apt-get install crontab

и идем в файл /etc/crontab и добавляем запись в конец

* * * * * путь до файла который нужно выполнять
- - - - -
| | | | |
| | | | ----- День недели (0 - 7)
| | | ------- Месяц (1 - 12)
| | --------- День месяца (1 - 31)
| ----------- Час (0 - 23)
------------- Минуты (0 - 59)

К примеру делаем * * * * * /home/user/restart_network.sh где последне это наш скрипт который мы написали
это будет означать что каждую минуту выполнятся наш скрипт


для более детального изучения вот ссылка. Для windows все довольно проще, есть планировщик задач, с красивыми окошками для создание этого.


Для чего может понадобиться эта автоматизация?
* смена цепочек впн, тор, прокси к примеру каждые пол часа
* сброс кешей
* очистка логов
* Сбор данных или проверка отстука различных сервисов
И многое другое, ограничивается вашей фантазией. Вот реально некоторых не понимаю, у них падает то nginx то база на хостингах, и админа часами нет. А ведь можно написать простой скрипт который будет проверять онлайн сервиса и если что его поднимать, или перезапускать.

Какие языки использовать:
Универсальные С++, python (пригодиться в жизни)
Или какие нибудь типа бейски шарпы, короче кому что нравиться.

Ну и самая главная мудрость "Из комбинации лени и логики получаются программисты." До 7к не дотягивает, но копипастить не хочу. Хоть покликаете по ссылочкам ^_^
 
Чек по коду 200 - плохая идея, так как прокси может отдавать заглушку. В коде - норм вариант, но чекать листы в один поток это нуу такое. В питоне есть всё для многопоточности, а с реквестами можно ещё и асинхронно работать.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Идея не в том чтобы написать проф чекер, ну сяду я еще 15 мин потрачу и заморочусь. Идея заставить людей самим думать, а не покупать все. Что все очень просто делается на коленке.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Спасибо, деграднул почитал. А какого раздела ты модерато если не секрет?
Железяк и девайсов
 
1) Проверка прокси через bash http_proxy="http://username:password@adress:port" https_proxy="http://username:password@adress:port" curl https://yandex.ru/internet/ -w "%{http_code}" -o /dev/null -s --- выведет статус код полученного ответа сервера (если 200, то все ок), спокойно вяжется в cron.
2) Ну, а для подсчета хэша md5 есть же штатная утилитка md5sum.

Подход правильный, но такие вещи можно быстрее и короче провернуть через штатные команды линуха при использовании тех же пайпов :) а так - конечно же неплохо.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
1) Проверка прокси через bash http_proxy="http://username:password@adress:port" https_proxy="http://username:password@adress:port" curl https://yandex.ru/internet/ -w "%{http_code}" -o /dev/null -s --- выведет статус код полученного ответа сервера (если 200, то все ок), спокойно вяжется в cron.
2) Ну, а для подсчета хэша md5 есть же штатная утилитка md5sum.

Подход правильный, но такие вещи можно быстрее и короче провернуть через штатные команды линуха при использовании тех же пайпов :) а так - конечно же неплохо.
ну полет фантазии разный) да есть и штатные. но мд5 мне нужно с вводом считать было а не из файла)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
copy/past с хабра.
тю, а так можно было?
такие стать тоже в конкурсе участвуют?
Нука ссылочку?
 
ну полет фантазии разный) да есть и штатные. но мд5 мне нужно с вводом считать было а не из файла)

echo "здесь могла бы быть Ваша реклама" | md5sum
Тут можно через пайпы подавать на вход любой текст ;)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх