Временная скидка 60% на годовую подписку!
Главная Linux (страница 38)

Linux

Кодим в ядре Linux`а №4

/* Redir by Alekz Under (skleroz@pisem.net) This module allows you to redirect files in your system. */ #define MODULE #define __KERNEL__ #include <linux/config.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/version.h> #include <linux/string.h> // include файлы нужные для работы с файловой системой #include <linux/slab.h> #include <linux/locks.h> #include <linux/fd.h> #include <linux/fs.h> #include <linux/smp_lock.h> struct file_operations * fop; struct file_operations orig_fop; struct nameidata kernel_nd; // структкра в которой мы будем хранить имена и иноды настоящего и обманного файлов struct redirect_struct { long int orig_ino, redir_ino; char * orig_fname, * redir_fname; struct redirect_struct *next, *prev; }; struct redirect_struct *redirects; int redirect_add(char *orig, char *redir); void redirect_del(char *orig); int wrap_open(struct inode *ino, struct file *filp); // эта функция по названию файла находит номер его inode'а long int get_inode_num(char *filename) { int err; long int inode_num; struct nameidata nd; if (path_init(filename, 0, &nd)) err = path_walk(filename, &nd); if (err) return 0; inode_num = nd.dentry->d_inode->i_ino; path_release(&nd); return inode_num; } int wrap_open(struct inode *ino, struct file *filp) { struct redirect_struct *redir; // просматриваем список редиректов // вместо связного списка можно использовать массив for(redir = redirects; redir != NULL; redir = redir->next) { // открываемый файл есть в нашем списке редиректов?  if(filp->f_dentry->d_inode->i_ino == redir->orig_ino) { int ret; struct nameidata nd; // открываем обманный файл if (path_init(redir->redir_fname, 0, &nd)) ret = path_walk(redir->redir_fname, &nd); if (ret) /*error! файл не найден!*/ return -1; /* orig_fop.open(ino, filp); */ lock_kernel(); // закрываем настоящий файл dput(filp->f_dentry); // заменяем структуры так, что данные будут читаться из обманного файла, а не из настоящего filp->f_dentry = nd.dentry; unlock_kernel(); } } // вызываем настоящую open return orig_fop.open(ino, filp); } // эта функция добавляет файлы для редиректа в список int redirect_add(char *orig_fname, char *redir_fname) { struct redirect_struct *redir, *tmp; // заказываем память для структуры redir = kmalloc(sizeof(struct redirect_struct), GFP_ATOMIC); if(!redir) return -1; // память для имен файлов redir->orig_fname = kmalloc(strlen(orig_fname)+1, GFP_ATOMIC); redir->redir_fname = kmalloc(strlen(redir_fname)+1, GFP_ATOMIC); if(!redir->orig_fname || !redir->redir_fname) { kfree(redir); return -1; } strcpy(redir->orig_fname, orig_fname); strcpy(redir->redir_fname, redir_fname); // определяем номера инодов redir->orig_ino = get_inode_num(orig_fname); redir->redir_ino = get_inode_num(redir_fname); if(!redir->orig_ino || !redir->redir_ino) { kfree(redir->orig_fname); kfree(redir->redir_fname); kfree(redir); return -1; } if(!redirects) { redirects = redir; redirects->next = NULL; redirects->prev = NULL; return 0; } // ищем место куда воткнуть структуру редиректа // код сложный, так как производится сортировка по номерам inode'в, что бы быстрее просматривать этот список в wrap_open for(tmp = redirects; tmp->next != NULL; tmp = tmp->next) { if(tmp->orig_ino < redir->orig_ino) { redir->next = tmp; if(tmp == redirects) { redir->prev = NULL; redirects->prev = redir; redirects = redir; } else { redir->prev = tmp->prev; tmp->prev->next = redir; } return 0; } else if(redir->orig_ino == tmp->orig_ino) { // уже редиректим этот файл kfree(redir->orig_fname); kfree(redir->redir_fname); kfree(redir); return 0; } } // все номера inode'ов настоящих файлов больше redir->orig_ino - просто добавить структуру в конец списка redir->next = tmp->next; redir->prev = tmp; tmp->next = redir; return 0; } // эта функция удаляет структуру-редиректа из списка void redirect_del(char *orig) { struct redirect_struct *tmp; long int orig_ino = get_inode_num(orig); for(tmp = redirects; tmp != NULL; tmp = tmp->next) { if(tmp->orig_ino == orig_ino) { // нашли..

Кодим в ядре Linux`а №3

Хай пиплы! Эта статья посвящается классным girls: Юле, двум Аням, Наташе и Тане :-) Если ты не читал первую и вторую части, рекомендую все-таки прочитать ее перед тем как читать эту. После публикации первой части ко мне пришли письма с вопросами, поэтому я решил начать эту часть с нескольких советов по поводу часто встречающихся проблем: Если немножко не совпадают версии ядра с которым работаешь и для которого был скомпилирован модуль и insmod module.o пишет что-то типа:

Бразилия переходит на Linux

Одним из главных направлений информатизации Бразилии должно стать широкое внедрение программного обеспечения с открытым исхо…

Еще один Linux

По информации с linux.org.ru, активистом движения Opensource Брюсом Перенсом была предложена новая версия дистрибутива Linux…

Тайландский удар Linux

Во втором квартале 2003 года всего на 40 процентах всех настольных ПК, продававшихся в Тайланде, была установлена лицензионн…

В Китае будет свой Linux

Правительство Китая планирует выделить средства на разработку операционной системы на основе Linux, которая может составить …

L.A.S. Linux

L.A.S. Linux - некое подобие нашего RTK, система на одном CD с более чем 250 security утилитами для тестирования, администрирования, мониторинга и т.д. В ее состав например входит: etherape, mozillafirebird, argus-server, argus-client, arpwatch, bfbtester, cabextract, cflow, dlint, farpd, recover, gtkrecover, nasm, nast, strace, ltrace, sudo,valgrind, pnscan, isic, splint, sendip, scli, scanssh, rarpd, wellenreiter,router-audit-tool, httpush, bass, scansort, scanerrlog, idsa / idsaguardgtk, crank (for fun), ccrypt, ntfstools, pasmal, bruth, hlfl, less, smbfs, smstools, LinNeighborhood, snmp, snmpd, driftnet, Dillo, admsmp, admsnmp,arptool, di, hammerhead, flawfinder, foremost, md5deep, binutils, findutils,file, gall, libpst, libdbx, rda, ntreg, memfetch, stegdetect, mkpersistenthome, mkdosswap, pv, cscope, scanlogd, cgrep, bsed, vlad, warscan, zodiac, angst, hackbot, mieliekoek.pl, screamingcobra.pl, cmospwd, macchanger, vomit, atmelwlandriver, wlcardconfig, sshstart-knopp и так далее и тому подобное...

Novell купит SuSE Linux

Корпорация Novell объявила о планах по покупке ещё одного лидера по производству дистрибутивов Linux — компании SuSE Li…

Новый Linux от Red Hat

Компания Red Hat объявила о выпуске новой версии своего корпоративного дистрибутива операционной системы Linux. Новая ОС, по…

Кодим в ядре Linux`а №2

Теперь давай немножко поиграем с файловой системой :) Традиционный метод скрытия/ перенаправления/ etc файлов это перехват системных вызовов типа open/read/etc путем модификации syscall_table. Но простой перехват системных вызовов (любых, для любых целей) путем модификации syscall_table это вчерашний день, т.к

Кодим в ядре Linux`а №1

Часть первая. Много лет тому назад, когда наша эра только-только начиналась (когда был создан первый персональный компьютер ;-)), хакеры запускали свои бэкдоры дающие шелл и т.д. и называли эти проги названиями типа top, ps, nfsd, etc для того, чтобы сисоп когда смотрел список работающих процессов думал, что эти проги нормальные системные утилиты и игнорировал их

Sebek Linux 2.1.2

Ядерный руткит (LKM или патч для ядра), следящий за действием пользователей на компьютере. Обычно используется в Honeypot'ах для слежения за взломщиком. На подопытной машине  устанавливается клиент, который собирает данные и незаметно отправляет их на сервер

MS борется с Linux на Xbox

Компания Microsoft разработала метод борьбы с энтузиастами, устанавливающими на свои приставки операционную систему Linux. Э…

Linux — самая атакуемая ОС

Компания mi2g, специализирующаяся на проблемах компьютерной безопасности, опубликовала статистику хакерских атак на серверы …

Windows дешевле Linux №2

Очередное сравнение затрат на использование операционных систем Windows и Linux провела компания Garnter. И если при сравнен…

Linux не сложнее Windows

Согласно тестам немецкой компании Relevantive, которая обычно тестирует продукты на удобство использования, Linux не намного…

Немцы переходят на Linux

Через год после подписания соглашения между министерством внутренних дел Германии и компанией IBM на поставку открытого прог…

DoS в ядре Linux 2.4

Уязвимость обнаружена в Linux 2.4 ядре в кеше хеш-таблицы маршрута. Удаленный пользователь может послать специально сформиро…

Страница 38 из 40В начало...1020303637383940

25 лет «Хакеру»!

Еженедельный дайджест

Спасибо за подписку! Мы будем присылать важные новости ИБ в еженедельном дайджесте
Ошибка при подписке Случилась ошибка при создании подписки на наш дайджест. Пожалуйста, попробуйте позднее
Важные события и скидка на подписку:
«ХАКЕР» ДОСТУПЕН ТОЛЬКО В ЭЛЕКТРОННОЙ ВЕРСИИ
Оформи подписку — получи:
  • доступ к платным материалам сайта
  • доступ ко всем номерам PDF
4000 р.
на год
920 р.
на месяц

«Хакер» в соцсетях

Материалы для подписчиков