"; } close (LIST); SMB scan #!/usr/bin/perl -w print "Content-Type: text/html; charset=koi8-r\n\n"; use CGI; # Используем cgi для получения данных с html-формы $f=new CGI; $tmp_f="/tmp/$$"; $fn = $f->param('Fl'); # Получаем путь к локальному файлу (указанный в форме) $fn=~ s/.*[\/\\](.*)/$1/; # Получаем имя файла, «отсекая» локальный путь (вида c:\xxx) $fl_h = $f->upload('Fl'); # Используя метод upload, получаем указатель на временный # файл, созданного CGI.pm open (FILE,">$tmp_f"); # Создаем пустой файл while (<$fl_h>) { print FILE; } close (FILE); $vir=`clamscan $tmp_f | grep $tmp_f`; # Проверка файла антивирусом Clam $vir=~s/^.*[\\\:]//; print "$fn $vir"; # Вывод результатов
# Uncomment this option to enable logging. # LogFile must be writable for the user running daemon. # A full path is required. # Default: disabled LogFile /tmp/clamd.log # Log time with each message. # Default: disabled LogTime #!/usr/bin/perl -w print "Content-Type: text/html; charset=koi8-r\n\n"; $searchword="FOUND"; # Переменная с ключевым словом open (LIST,"/tmp/clamd.log"); while (";
}
close (LIST);
cat /tmp/clamd.log | grep FOUND
Вирусная активность
#!/usr/bin/perl –w
print "Content-Type: text/html; charset=koi8-r\n\n";
$str = $ENV{'REMOTE_ADDR'};
# Записываем переменную среды окружения REMOTE_ADDR в переменную $str
$tmp_f="/tmp/$$";
$scan=`nmap -sT $str > $tmp_f`;
# Сканируем tcp порты удаленной машины, результат запишем во временный файл
open (LIST,$tmp_f);
while ( ";
}
close (LIST);
-----------------------------------------------------------------------------------------------------------------
Auditor Collection: проверяем безопасность вашей сети
Андрей Бирюков
auditor# dnswalk -r webserver.ru.
ifconfig tun0 10.0.0.1 up
insmod netlink_dev
insmod ethertap
mknod /dev/tun0 c 36 16
nstxcd zone.server.com
nstxd zone.server.com 123.45.67.89
[root@user -> ~]$ traceroute 10.0.0.1
[root@user -> ~]$ arp
[root@hacker -> ~]$ arpspoof -t 10.0.0.171 10.0.0.1
[root@user~]$ arp
[root@user]$ traceroute 10.0.0.1
-----------------------------------------------------------------------------------------------------------------
Ruby – язык завтрашнего дня
Владимир Овсянников
%port install ruby
# gem install vcard -y --remote
# gem --help
arr1 = Array.new
arr2 = []
hash1 = Hash.new
hash2 = {}
1.class.class
obj.attr = 5
var = obj.attr
class MyFirstClass # создаём класс с именем MyFirstClass
attr_reader :first # заменится на def first; @first; end
attr_writer :second # заменится на def first=(v); @first = v; end
attr_accessor :tre # attr_reader + attr_writer
def initialize(attrs) # конструктор
@first = attrs[:first]
@second = attrs[:second]
@tre = attrs[:tre]
@end_attr = attrs[:end]
end
def end=(oth) # метод end = будет приравнивать @end_attr половине аргумента
@end_attr = oth/2.to_f # .to_f – принудительное приведение к Float
end
def end # метод end будет возвращать квадрат @end_attr
@end_attr**2 # методы возвращают последнее вычисленное значение или аргумент return
end
end
obj = MyFirstClass.new(:first=>'FIRST', :second=>2, :tre=>'ТРИ', :end=>5)
obj.first # => FIRST
obj.first = 'ПЕРВЫЙ' # => ОШИБКА: метод first=() не определён
obj.second = 'ДВА' # => ДВА
obj.second # => ОШИБКА: метод second() не определён
obj.tre = obj.tre*3 # => ТРИТРИТРИ
obj.end # => 25
obj.end = 11 # => 11
obj.end # => 30.25
File.open('/tmp/tempfile', 'w') do |tmp|
tmp.write 'Bla-bla-bla'
end
for(i=0; arr[i]; i++){
printf("%d\n", arr[i])
}
arr.each{|el| puts el}
rez = [3,4,5,6,7,8,9,11,12,15,17,21,22,25,30].find_all{|el| (el%3).zero?}
puts rez
rez = [3,4,5,6,7,8,9,11,12,15,17,21,22,25,30].map{|el| el*2}
rez = [3,4,5,6,7,8,9,11,12,15,17,21,22,25,30].partition{|el| el>12}
a = [1,2,3,4,5,6,7,8,9,0]
a[-3..-1] # => [8, 9, 0]
str = 'String'
str[1] # => 116
str[1].chr # => 't'
print 5[0], 5[1], 5[2] # => 101
5.to_s(2) # => '101'
8.to_s(7) # => '11'
59.to_s(27) # => '25'
100.to_s(36) # => '2s'
-----------------------------------------------------------------------------------------------------------------
Обзор Ruby on Rails
Владимир Овсянников
# gem install rails -y
class User < ActiveRecord::Base
validates_confirmation_of :password, :message=>'Пароли не совпадают'
validates_length_of:password, :in=>4..10, :too_long=>'Пароль слишком длинный', :too_short=>'Пароль слишком короткий', :on=>:create
end
(10.weeks + 1.day – 4.minutes).ago
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].in_groups_of(3){|el| p el}
=> [1, 2, 3]
=> [4, 5, 6]
=> [7, 8, 9]
=> [10, nil, nil]
rails <имя директории>
-----------------------------------------------------------------------------------------------------------------)
{
print $_;
print "