HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Использование ресурсов (Delphi)
  #1  
Старый 03.01.2009, 10:37
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


По умолчанию Использование ресурсов (Delphi)

Введение
куча вопросов по поводу работы с ресурсами, тут приведу лишь 1 вариант извлечение онного...

BRCC32
1. Запускаем блокнот
2. Записываем секцию вида - updater_exe RCDATA updater.exe
3. Сохраняем с расширением rc
4. Открываем консоль. Набираем следующее brcc32 <путь и имя файла (пункт 3)>
5. В итоге должны получить фай с расширением res

{$R <Resource.res>}
1. Создаем проект в Delphi
2. Используя дериктиву $R добавляем использование ресурса... Пример {$R myres.res}

Извлечение ресурса
Цитата:
uses Classes;
...
procedure ExtractRes;
var Res:TResourceStream;
begin
Res:=TResourceStream.Create(HInstance,'updater_exe',RT_RCDATA);
Res.SaveToFile('FileName.exe');
Res.Free;
end;
Happy End
вот и все...
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

Отправка e-mail на С#
  #2  
Старый 06.01.2009, 17:50
jawbreaker
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме:
1027635

Репутация: 234
По умолчанию Отправка e-mail на С#

Простое консольное приложение которое позволяет отправить email. Нужно указать свой Smtp-сервер в SmtpMail.SmtpServer, по умолчанию это localhost. Чтобы добавить System.Web.Mail идём в Project->Add Reference на вкладке .Net выбираем System.Web.
Вариант 1:
PHP код:
using System;
using System.Web.Mail;

namespace 
SendMail
{
  
/// <summary>
  /// Test console application to demonstrate sending e-mail.
  /// </summary>
  
class TestMail
  
{
    
/// <summary>
    /// The main entry point for the application.
    /// </summary>
    
[STAThread]
    static 
void Main(string[] args)
    {
      
TestMail.Send("test@mail.ru",
                    
"recip@mail.ru",
                    
"Test Message Using CDOSYS",
                    
"Hello World!  This is a simple message sent
                     using CDOSYS."
);
    }

   
    public static 
void Send(string MessageFrom,
                            
string MessageTo,
                            
string MessageSubject,
                            
string MessageBody)
    {
      
MailMessage message = new MailMessage();
      
message.From        MessageFrom;
      
message.To          MessageTo;
      
message.Subject     MessageSubject;
      
message.BodyFormat  MailFormat.Text;
      
message.Body        MessageBody;

      try
      {
        
System.Console.WriteLine("Sending outgoing message");
        
SmtpMail.Send(message);
      }
      catch( 
System.Web.HttpException exHttp )
      {
        
System.Console.WriteLine("Exception occurred:" +
                                 
exHttp.Message);
      }
    }
  }

Вариант2(отправка через Google):
PHP код:
protected string sendMail(string fromstring tostring ccstring bccstring subjectstring body)
        {
            
//Отсылка через System.Web.Mail
            // Инициализация
            
System.Web.Mail.MailMessage mailMsg = new System.Web.Mail.MailMessage();
            
mailMsg.From from;
            
mailMsg.To to;
            
mailMsg.Cc cc;
            
mailMsg.Bcc bcc;
            
mailMsg.Subject subject;
            
mailMsg.BodyFormat System.Web.Mail.MailFormat.Text;
            
mailMsg.Body body;
            
mailMsg.Priority System.Web.Mail.MailPriority.High;
            
// Smtp configuration
            
System.Web.Mail.SmtpMail.SmtpServer "smtp.gmail.com";//smtp is :smtp.gmail.com
            // - smtp.gmail.com use smtp authentication
            
mailMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate""1");
            
mailMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername""myemail@gmail.com");
            
mailMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword""mypassword");
            
// - smtp.gmail.com use port 465 or 587
            
mailMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport""465");//port is: 465, 25 default
            // - smtp.gmail.com use STARTTLS (some call this SSL)
            
mailMsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl""true");
            
// Попытка отправки...
            
try
            {
                
System.Web.Mail.SmtpMail.Send(mailMsg);
                return 
"";
            }
            catch (
Exception ex)
            {
                return 
ex.Message;
            }
        } 

Последний раз редактировалось De-visible; 22.02.2009 в 05:32.. Причина: Исправь на *** свой код, добавь теги CODE!
 
Ответить с цитированием

Измерение температуры процессора AMD64
  #3  
Старый 28.01.2009, 15:56
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
По умолчанию Измерение температуры процессора AMD64

[Измерение температуры процессора AMD64]

[Преамбула]

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

[Coding]
Чтобы узнать текущую температуру нам потребуется доступ к так называемому Thermtrip Status Register. Его формат



Чтобы прочитать значение Thermtrip Status Register для каждого ядра, нам потребуется доступ к конфигурационному пространству PCI.

Для доступа к устройствам на шине PCI существует 2 порта - 0xCF8 и 0xCFC. Порт 0xCF8 именуется CONFIG_ADDRESS (0xCF8) и в него заносится значение в формате



Порт 0xCFC или CONFIG_DATA предназначен для чтения/записи данных в конфигурационное пространство. Сначала мы должны выбрать нужное устройство посредством регистра CONFIG_ADDRESS, а потом прочитать данные из CONFIG_DATA (чуть забегая вперед записывать в CONFIG_DATA тоже придется при выборе ядра).

Теперь перейдем непосредственно к кодингу. Для удобства формирования CONFIG_ADDRESS приведу 2 функции (взято из книженции "Программирование Аппаратных средств в Windows", глава 12 "Пространство шины PCI"):

Код:
int GetDeviceSlot(int iDevice,int iFunction){
return ((((iDevice)&0x1f)<<3)|((iFunction)&0x07));
}

ULONG GetDevice(int iBus,int iSlot,int iAddress){
return (0x80000000L |((iBus&0xff)<<16)|(iSlot<<8)|(iAddress&~3));
}
Таким образом, мы вызываем так

Код:
 
GetDevice(0,GetDeviceSlot(24,3),0xE4);
То есть:
Bus:0
Device:24
Function:3
Offset:0xE4

Почему такие значения? Все это из документации (ссылки на нее в конце).
Ясное дело, что ядра у нас может быть 2. Тогда смотрим еще раз внимательно на формат Thermtrip Status Register и видим бит ThermSenseCoreSel, отвечающий как раз за выбор ядра. Если второй бит от нуля (ThermSenseCoreSel) будет равен 0, то мы проверяем температуру первого ядра, если 1- второго. Итак, полный код функции, которую следует поместить в драйвер

Код:
 
VOID GetTemperature(VOID){
ULONG therm_=0,core=0,conf_data;
ULONG cdata = GetDevice(0,GetDeviceSlot(24,3),0xE4);
//пишем в Configuration Address Register
_outpd(0xCF8,cdata);
// читаем Configuration Data Register
therm_ = _inpd(0xCFC);
conf_data = therm_;
//с каким ядром имеем дело
core=therm_;
core=(core>>2)&1;

//нам нужны биты 23:14
therm_=(therm_>>14)&(0x3FF);
//вычисляем реальную температуру ядра по формуле 
therm_=(therm_/4)-49;
KdPrint(("Temperature Core%d: %d C",core,therm_));

//проверяем другое ядро
conf_data = conf_data^4;
//пишем в Configuration Address Register
_outpd(0xCF8,cdata);
//выбираем другое ядро
_outpd(0xCFC,conf_data);
//пишем в Configuration Address Register
_outpd(0xCF8,cdata);
// читаем Configuration Data Register
therm_ = _inpd(0xCFC);
conf_data = therm_;
//с каким ядром имеем дело
core=therm_;
core=(core>>2)&1;

//нам нужны биты 23:14
therm_=(therm_>>14)&(0x3FF);
//вычисляем реальную температуру ядра по формуле 
therm_=(therm_/4)-49;
KdPrint(("Temperature Core%d: %d C",core,therm_));
}
Получилось что-то вроде...



*Тестировалось на Amd Athlon 64 x2 Dual Core, ОС WinXPSP3

[Что читать?]

Ну если тема интересна, то могу порекомендовать по AMD

[1] Мануалы от производителя.
http://developer.amd.com/documentation/guides/Pages/default.aspx#developer_guides

[2].Хорошая статья, которая помогла мне связать все воедино

Реализация низкоуровневой поддержки шины PCI в ядре Linux
http://www.opennet.ru/base/dev/pci_linux_kernel.txt.html
конкретно по сабжу будет полезен раздел "Конфигурационное пространство устройства PCI", там как раз про Configuration Mechanism, CONFIG_ADDRESS, CONFIG_DATA. Как прочтете это - сразу все в голове уложится.


PS В общем-то посредством пм со мной можно связаться и какой-то момент уточнить.
PSS Сессия, мать ее, моя первая сессия. Чувствую себя ботом, сконфигурированным на заучивание конспектов.... (

Последний раз редактировалось 0x0c0de; 28.01.2009 в 16:01..
 
Ответить с цитированием

[Voltage ID]
  #4  
Старый 07.02.2009, 18:50
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
По умолчанию [Voltage ID]

[Voltage ID]

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

Ясное дело, что чисто температуру мерить довольно скушно, вот я и подумала по ходу дела прикрутить измерение текущего напряжения питания процессора, к тому же, что делается это довольно-таки просто. Для того, чтобы узнать текущий Voltage ID (а затем переверсти его в значение напряжения) нам потребуется доступ к так называемому FIDVID_STATUS register, машинно-зависимому регистру с адресом 0xС0010042.



Его формат. Нас интересует 6-битовое поле CurrVID во втором двойном слове. Таблица соответсвия этих 6-битов и значения напряжения приведена ниже.



Сначала проверяем с помощью функции 8000_0007 CPUID доступность этой [VID] опции (функции CPUID можно глянуть в CPUID Specification от AMD, ссылки на скачку я давала в предыдущем посте амдэшных мануалов).

Код:
 
 _asm{
//проверяем доступность опции
// Advanced Power Management Information
mov eax,80000007h
cpuid
// 2 бит в edx - VID: Voltage Id control
bts edx,2
// cf == 1?
jnb ext
mov isVID,TRUE
ext:
  }
Я думаю, что есть народ тут, который с асмом не дружит. Ну так вот, поясняю насчет многострадальной инструкции bts. Инструкции bts/btr полюбились мне еще в 2007 году, тогда кажись я постила 23 способа получения единицы в регистре (тема вроде такая была) и меня интересовали разные извратные способы, тогда-то я и познакомилась с этой инструкцией. Первый ее операнд - это источник, в котором мы проверяем бит с номером, хранящимся во втором операнде. То есть проверяем второй бит от нуля в edx. флаг CF устанавливается значением этого бита. Сам бит потом устанавливается в 1, но нам это уже не важно. jсс, проверяющие флаг CF - это jb и jnb. второй происходит, если этот бит 0. вот такие дела. Теперь, думаю, все ясно и непосвященному.
В драйвере, после проверок пишем


Код:
// получаем напряжение
if(isVID){
_asm{
mov ecx,0c0010042h
rdmsr
and edx,111111b
mov uVID,edx
}
buf[2] = uVID;
KdPrint(("VID %X",uVID));
}else buf[2]=0xFFFFFFFF;

Из таблицы соответствия была выведена формула для напряжения
opart - часть до запятой, tpart - после запятой.


Код:
DWORD opart,tpart;

if(tmp[2]<0x20){
 tmp[2]=1550-tmp[2]*25;
 opart = tmp[2]/1000;
 tpart = tmp[2]-1000;
 }else{
 tmp[2]=7750 - (tmp[2]-0x1F)*25;
  opart = 0;
 tpart = tmp[2];
 }
  wsprintf(core,L"%d.%dv",opart,tpart);

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

---------
Ах да, речь, идет, конечно об амд, насчет как это у интелов я хз, пока в их манах не смотрела этого

Последний раз редактировалось 0x0c0de; 09.02.2009 в 19:55..
 
Ответить с цитированием

  #5  
Старый 22.02.2009, 01:00
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
По умолчанию

Нихеранепонятный код обновлен, теперь по крайней мере читабельно. Исправила баг с загрузкой драйвера [установка привилегий, в SP2 и SP3 моих работало нормально, но на win7 там не загружался]. И еще я действительно в первый раз не усмотрела нумерацию ядер в мануале и поэтому были разночтения коретемпом. Теперь номер измеряемого ядра показывается верно.

сорцы, бинари теперь тут

http://code.google.com/p/amd-cpu-info/

Тот код, который выше в постах уже не исправляю, так как нет времени и желания. Пускай будет. За нормальными сорцами на код гугл. Замечания желательно слать в jabber, так как там я бываю чаще, чем на форуме.
 
Ответить с цитированием

Создаём скрытое консольное приложение
  #6  
Старый 28.02.2009, 20:44
jawbreaker
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме:
1027635

Репутация: 234
По умолчанию Создаём скрытое консольное приложение

Эта мини-статья о том, как создать консольное приложение в Visual C++ так, чтобы оно не появлялось на экране.

Основной трюк здесь в структуре STARTUPINFO. Она содержит много параметров, из них нам нужны
PHP код:
DWORD cb
DWORD dwFlags
DWORD wShowWindow 
Сначала нужно объявить структуру и выделить для неё память:
PHP код:
STARTUPINFO StartupInfo;
memset(&StartupInfo0sizeof(StartupInfo));
ZeroMemory(&StartupInfosizeof(StartupInfo)); 
Теперь заполним структуру так, чтобы не показывать окно:
PHP код:
// Задаём размер структуры
  
StartupInfo.cb sizeof(STARTUPINFO);
  
  
// Установка параметров окна
  
StartupInfo.dwFlags STARTF_USESHOWWINDOW;

  
// HIDE - прячем окно
  
StartupInfo.wShowWindow SW_HIDE
Функция, которая принимает название программы для запуска из консоли и её аргументы:
PHP код:
DWORD RunSilent(charstrFunctcharstrstrParams)
{
    
STARTUPINFO StartupInfo;
    
PROCESS_INFORMATION ProcessInfo;
    
char Args[4096];
    
char *pEnvCMD NULL;
    
char *pDefaultCMD "CMD.EXE";
    
ULONG rc;
    
    
memset(&StartupInfo0sizeof(StartupInfo));
    
StartupInfo.cb sizeof(STARTUPINFO);
    
StartupInfo.dwFlags STARTF_USESHOWWINDOW;
    
StartupInfo.wShowWindow SW_HIDE;

    
Args[0] = 0;

    
pEnvCMD getenv("COMSPEC");

    if(
pEnvCMD){
        
        
strcpy(ArgspEnvCMD);
    }
    else{
        
strcpy(ArgspDefaultCMD);
    }

    
strcat(Args" /c "); 

    
strcat(ArgsstrFunct);  
    
strcat(Args" "); 
    
    
strcat(ArgsstrstrParams); 

    if (!
CreateProcessNULLArgsNULLNULLFALSE,
        
CREATE_NEW_CONSOLE
        
NULL
        
NULL,
        &
StartupInfo,
        &
ProcessInfo))
    {
        return 
GetLastError();        
    }

    
WaitForSingleObject(ProcessInfo.hProcessINFINITE);
    if(!
GetExitCodeProcess(ProcessInfo.hProcess, &rc))
        
rc 0;

    
CloseHandle(ProcessInfo.hThread);
    
CloseHandle(ProcessInfo.hProcess);

    return 
rc;
    

Пример:
PHP код:
int main()
{
    
DWORD a RunSilent("ipconfig"" > out.txt");
    return 
0;

создаст файл out.txt при этом ничего не выводя на экран.
 
Ответить с цитированием

Перебор пароля по словарю. MD5-хеш (C#)
  #7  
Старый 06.03.2009, 22:39
c0n Difesa
Участник форума
Регистрация: 01.01.2009
Сообщений: 144
Провел на форуме:
89680

Репутация: 154
По умолчанию Перебор пароля по словарю. MD5-хеш (C#)

Введение. Описание программы.

Информация в данном материале может оказаться полезной для тех, кто планирует использовать авторизацию в своем ПО, работать с хешами алгоритма шифрования MD5, а так же для тех, кому просто интересен принцип работы переборщиков паролей по словарю (брутфорсеров). Автор акцентирует внимание читателя на том, что программа работает исключительно с базами словарей (в коде осуществляется работа с txt-файлами, но это не столь принципиально), а не генерирует диапазоны символов для перебора.


Основная часть. Составление и кодирование алгоритма.

Условие задачи довольно простое: имея на руках MD5-хеш, подобрать коллизию (проще говоря, найти комбинацию символов, соответствующую этому хешу, то бишь пароль). Принцип и алгоритм работы приведен ниже.

1. Открыть файл с хешем (input.txt) и открыть файл с паролями (pass.txt).

2. Перевести все символы хеша в верхний регистр. Данная операция позволит корректно сравнивать его с генерируемыми нами хешами (при генерации все символы в хеше в верхнем регистре).

3. Прочитать i-ю строчку файла, где i принадлежит отрезку [0; EndOfFile] (это не столь важно, т.к. строка из файла будет считываться до тех пор, пока не окажется пустой).

4. Сгенерировать хеш прочитанной строчки.

5. Сравнить с целевым хешем. Если равны – вывести строку, соответствующую сгенерированному хешу. Если не равны – продолжить шаги 3-5.

6. Если достигнут конец файла, то уведомить пользователя о том, что пароль не найден.

Если по какой-либо причине непонятны те или иные шаги, то, возможно, все вопросы отпадут после анализа кода (и соответствующих ему комментариев) получившейся программы.

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace MD5Brute
{
    class Programm
    {
        static void Main(string[] args)
        {
            //убедиться, что в командной строке указано имя файла
            if ((args[0].Length == 0) || (args[1].Length == 0))
            {
                Console.WriteLine("Error: Missing Input file or Pass file");
                Console.ReadKey();
            }
            else
            {
                //открыть файл с хешем
                StreamReader reader = new StreamReader(args[0]);
                string EnemyHash = reader.ReadLine(); //прочитать хэш
                reader.Close();
                EnemyHash = EnemyHash.ToUpper(); //перевести все символы в верхний регистр
                //открыть файл с паролями
                reader = new StreamReader(args[1]);
                //перебрать каждую строку
                for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())
                {
                    string CurrentHash = string.Empty;
                    //сгенерировать MD5-хеш
                    foreach (byte b in new MD5CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(line)))
                    {
                        CurrentHash += b.ToString("X2");
                    }
                    //сравнить хеши
                    if (CurrentHash == EnemyHash)
                    {
                        Console.WriteLine("Password: "+line);
                        Console.ReadKey();
                        return;
                    }
                }
                Console.ReadKey();
                Console.WriteLine("No Password");
                return;
            }
        }
    }
}
Формат запуска программы: md5brute.exe <%DIRECTORY%/input.txt> <%DIRECTORY%/pass.txt>


Заключение.

Конечно до полноценного брутфорсера этой программе далеко, но данные исходные коды вполне могут лечь в основу системы авторизации, продвинутого переборщика паролей, системы распределенных вычислений и чего-либо другого. По крайней мере, читатель теперь сумеет сгенерировать MD5-хеш.
 
Ответить с цитированием

Системный вызов stat
  #8  
Старый 21.06.2009, 11:43
--StraNger--
Познающий
Регистрация: 04.01.2009
Сообщений: 94
Провел на форуме:
404716

Репутация: 145
По умолчанию Системный вызов stat

Системный вызов stat
Программирование для linux.
Если в консоли выполнить команду ls-l, то мы увидим кроме всего прочего, информацию о файлах, такую как: права доступа, uid. gid, размер и т.п.
Для получения этой информации программно, нужно использовать вызов stat.
Код:
stat(char *file,struct stat fbuf);
Первый аргумент это имя/путь файла. Второй - это структура stat.
В ней собственно и будет располагаться вся информация.
Некоторые поля структуры:
Код:
st_mode - тип, права доступа.
st_atime - время последнего доступа.
st_size - размер.
st_uid - юид юзера.
st_gid - идентификатор группы пользователей
При ошибке возвращает -1
Теперь давайте напишем пример - программа должна выводить размер указаного файла.
Код:
------------------------------------------------------
#include <stdio.h>
#include <sys/stat.h>// необходимый заголовочный файл
int main(int ac,char *ag[])
{
struct stat buffer; // структура для хранения инфы
if(ac!=1) если кол во аргументов не 1 то
printf("Пожалуйста введите необходимые аргументы\n");
if(stat(ag[1],&buffer)!=-1) //если не произошла ошибка то
printf("Размер файла: %d\n",buffer.st_size); //вывод
else
printf("Не корректное имя файла\n"); // если ошибка
}


---------------------------------------------------------------------------

Последний раз редактировалось --StraNger--; 21.06.2009 в 14:23..
 
Ответить с цитированием

Определение ТИЦ
  #9  
Старый 30.06.2009, 20:17
W!z@rD
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме:
1892597

Репутация: 836


По умолчанию Определение ТИЦ

PHP код:
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;

public class 
Test
{
    public static 
WebResponse GetResponse(string urlbool redirect)
        {
            var 
request = (HttpWebRequest)WebRequest.Create(url);
            try
            {
                
request.Method "GET";
                
request.AllowAutoRedirect redirect;
                return 
request.GetResponse();
            }
            catch
            {
                return 
null;
            }
        }

        public static 
string GetPageSrc(string url)
        {
            var 
response GetResponse(urltrue);
            if (
response == null)
            {
                return 
"";
            }
            
using (var reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(1251)))
            {
                return 
reader.ReadToEnd();
            }
        }

    private static 
int getCI(string url)
    {
        var 
pageScr GetPageSrc(string.Format("http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://www.{0}/"url));
        var 
reg = new Regex("value=\"(.\\d*)\""RegexOptions.IgnoreCase);
        return 
reg.IsMatch(pageScr) ? int.Parse(reg.Match(pageScr).Groups[1].Value) : 0;
    }


    public static 
void Main()
    {
        
Console.WriteLine(getCI("gw.kz"));
        
Console.WriteLine("Done!");
        
Console.ReadLine();
    }

__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
 
Ответить с цитированием

Пример простейшего сниффера для W2K/XP.
  #10  
Старый 26.07.2009, 09:43
skippp
Banned
Регистрация: 11.04.2009
Сообщений: 45
Провел на форуме:
260579

Репутация: 2
Post Пример простейшего сниффера для W2K/XP.

Пример простейшего сниффера для W2K/XP.

Ниже приведён полный код программы. Данный код не претендует на звание крутого снифера, однако при желании его можно доработать, чтобы можно было просматривать содержимое пакетов. Так же на его основе можно легко сделать простой анализатор трафика. А главное - не надо делать всяких драйверов; всё просто и понятно.

Суть этого сниффера заключается в том, что используются сокеты второй версии и созданный сокет переводится в режим promiscuous (прослушивания).

Цитата:
nclude <conio.h>
#include <stdio.h>
#include <winsock2.h>

#define MAX_PACKET_SIZE 0x10000
#define SIO_RCVALL 0x98000001
// Буфер для приёма данных
char Buffer[MAX_PACKET_SIZE]; // 64 Kb

//Структура заголовка IP-пакета

typedef struct IPHeader {
UCHAR iph_verlen; // версия и длина заголовка
UCHAR iph_tos; // тип сервиса
USHORT iph_length; // длина всего пакета
USHORT iph_id; // Идентификация
USHORT iph_offset; // флаги и смещения
UCHAR iph_ttl; // время жизни пакета
UCHAR iph_protocol; // протокол
USHORT iph_xsum; // контрольная сумма
ULONG iph_src; // IP-адрес отправителя
ULONG iph_dest; // IP-адрес назначения
} IPHeader;

char src[10];
char dest[10];
char ds[15];
unsigned short lowbyte;
unsigned short hibyte;

void main()
{
WSADATA wsadata; // Инициализация WinSock.
SOCKET s; // Cлущающий сокет.
char name[128]; // Имя хоста (компьютера).
HOSTENT* phe; // Информация о хосте.
SOCKADDR_IN sa; // Адрес хоста
IN_ADDR sa1; //
unsigned long flag = 1; // Флаг PROMISC Вкл/выкл.

// инициализация
WSAStartup(MAKEWORD(2,2), &wsadata);
s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );
gethostname(name, sizeof(name));
phe = gethostbyname( name );
ZeroMemory( &sa, sizeof(sa) );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr;
bind(s, (SOCKADDR *)&sa, sizeof(SOCKADDR));

// Включение promiscuous mode.
ioctlsocket(s, SIO_RCVALL, &flag);

// Бесконечный цикл приёма IP-пакетов.
while( !_kbhit() )
{
int count;
count = recv( s, Buffer, sizeof(Buffer), 0 );
// обработка IP-пакета
if( count >= sizeof(IPHeader) )
{
IPHeader* hdr = (IPHeader *)Buffer;
//Начинаем разбор пакета...

strcpy(src,"Пакет: ");
CharToOem(src,dest);
printf(dest);
// Преобразуем в понятный вид адрес отправителя.
printf("From ");
sa1.s_addr = hdr->iph_src;
printf(inet_ntoa(sa1));

// Преобразуем в понятный вид адрес получателя.
printf(" To ");
sa1.s_addr = hdr->iph_dest;
printf(inet_ntoa(sa1));

// Вычисляем протокол. Полный список этих констант
// содержится в файле winsock2.h
printf(" Prot: ");
if(hdr->iph_protocol == IPPROTO_TCP) printf("TCP ");
if(hdr->iph_protocol == IPPROTO_UDP) printf("UDP ");

// Вычисляем размер. Так как в сети принят прямой порядок
// байтов, а не обратный, то прийдётся поменять байты местами.
printf("Size: ");
lowbyte = hdr->iph_length>>8;
hibyte = hdr->iph_length<<8;
hibyte = hibyte + lowbyte;
printf("%s",itoa(hibyte,"",10));

// Вычисляем время жизни пакета.
printf(" TTL:%s",itoa(hdr->iph_ttl,"",10));
printf("\n");

}
}

closesocket( s );
WSACleanup();
}
Для успешной компиляции, необходимо подключить к проекту файл ws2_32.lib. надо изменить строки: printf("%s",itoa(hibyte,"",10)); printf(" TTL:%s",itoa(hdr->iph_ttl,"",10));
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мы покупаем статьи Spider Agent Разное - Покупка, продажа, обмен 40 26.09.2009 12:56
Ответы на часто задаваемые вопросы + линки на статьи по SQL/XSS/PHP-инклуд Jokester Уязвимости 2 28.06.2009 00:19
как писать статьи fucker"ok Статьи 0 03.07.2006 21:02



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.