C#: программа проверки полисов ОМС

2015-04-07 CheckPolis.exe — консольная прогамма для проверки полисов обязательного медицинского страхования через интернет. Запускается через командную строку так:

CheckPolis.exe XXXXxxxxXXXXxxxx XX.XX.XXXX
Результат выдаёт через stdout и как код возврата приложения
Возможные результаты:
* 0 — аргументы не заданы
* 1 — полис существует
* 2 — полис не существует
* 3 — ответ не распознан

Скачать

Написано за 4 часа. Некоторые события пока не обработаны. Исходный код:

/*
  * Created by SharpDevelop.
  * http://kmsvsr.ru
  * Date: 07.04.2015
  * Time: 17:47
  * 
  */
 
 /* args:
  * [0] - номер полиса
  * [1] - дата рождения
  * 
  * ответ программы:
  * 0 - аргументы не заданы
  * 1 - полис существует
  * 2 - полис не существует
  * 3 - ответ не распознан
  * 4 - ответ не получен
  * 5 - неведома ху...
 */
 
 using System;
 using System.Net;
 using System.IO;
 using System.Text;
 
 namespace CheckPolis
 {
     class Program
     {
         private static string POST(string Url, string Data)
         {// спасибо за функцию http://programmerinfo.ru/post_get/
           WebRequest req = WebRequest.Create(Url);
           req.Method = "POST";
           req.Timeout = 100000;
           req.ContentType = "application/x-www-form-urlencoded";
           byte[] sentData = Encoding.GetEncoding(1251).GetBytes(Data);
           req.ContentLength = sentData.Length;
           Stream sendStream = req.GetRequestStream();
           sendStream.Write(sentData, 0, sentData.Length);
           sendStream.Close();
           WebResponse res = req.GetResponse();
           Stream ReceiveStream = res.GetResponseStream();
           StreamReader sr = new StreamReader(ReceiveStream, Encoding.UTF8);
           //Кодировка указывается в зависимости от кодировки ответа сервера
           Char[] read = new Char[256];
           int count = sr.Read(read, 0, 256);
           string Out = String.Empty;
           while (count > 0)
           {
             String str = new String(read, 0, count);
             Out += str;
             count = sr.Read(read, 0, 256);
           }
           return Out;
         }
         
         public static int Main(string[] args)
         {
             if(args.Length > 1){ //если аргументов хотя бы два
                 //переменная в запрос с номером полиса
                 //ХХХХххххХХХХхххх
                 //переменная в запрос с датой рождения
                 //ХХ.ХХ.ХХХХ
                 string Data="polis=" + args[0] + "&birthday=" + args[1];
                 
                 //адрес страницы проверки полисов
                 string tfomsurl = "http://www.tfoms.e-burg.ru/citizens/check-the-relevance-of-the-policy/?type=special";
                 
                 //сюда получим страницу с ответом
                 string responseFromServer = "";
                 responseFromServer = POST(
                     tfomsurl,
                     Data);
                 
                 if(responseFromServer.Contains("<table class=\"wd-main data-table\">")){//если полис существует
                     Console.Write("1");
                     return 1;
                 }else if(responseFromServer.Contains("<h3 style=\"color: red\">")){//если полис не существует
                     Console.Write("2");
                     return 2;
                 }else{//если ответ непонятный
                     Console.Write("3");
                     return 3;
                 }
             } else { //справка по программе
                 Console.Write("0\nHelp:\nCheckPolis.exe XXXXxxxxXXXXxxxx XX.XX.XXXX");
                 Console.Write("\nhttp://kmsvsr.ru");
                 Console.Write("\nPress any key to continue . . . ");
                 Console.ReadKey(true);
                 return 0;
             }            
         }
     }
 }

Что такое Shellshock для BASH, и как провериться

Shellshock (CVE-2014-6271, CVE-2014-6277, CVE-2014-6278, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187)  — это уязвимость в командной строке bash, которая позволяет атакующим удалённо запускать произвольные команды на уязвимой системе. Если BASH в последний раз обновлялся до 1 октября, то скорее всего уязвима. Уязвимы версии BASH начиная с версии 1.14 (1994 года выпуска) по последнюю версию 4.3.

Код для проверки системы на наличие уязвимости:

env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

Если в результате выполнения будет написано «vulnerable», значит система уязвима.

Проверка применения политик GPO

  1. Войти на проверяемый компьютер под учётной записью проверяемого пользователя
  2. Открыть командную строку CMD
  3. Выполнить команду gpresult /h gpreport.html
  4. В текущей папке командной строки (обычно домашняя папка пользователя) появится файл gpreport.html
  5. Проанализировать содержимое файла gpreport.html через браузер