Обзор бесплатных почтовых серверов для операционных систем семейства Windows Алексей Бережной c:\telnet mail.test.ru 25 cd c:\MailRoot\bin xmail.exe --install-auto net start "XMail Server" XMCrypt {plain_password} telnet 10.0.0.249 25 xmail.exe –-install-auto telnet 10.0.0.249 25 ----------------------------------------------------------------------------------------------------------------- Графические инструменты для Server Core Сергей Яремчук > expand CoreConfigurator.cab -f:* C:\ ----------------------------------------------------------------------------------------------------------------- VMware Workstation 6.5. Способы установки Иван Коробко %SystemRoot%\System32\ msiexec.exe /i "VMware Workstation.msi" VMware-workstation-6.5.0-118166.exe /a /v " /qn TARGETDIR=" W:\VmWare Workstation 6.5"" VMware-workstation-.exe %SystemRoot%\System32\msiexec.exe [keys] VMware Workstation.msi %SystemRoot%\System32\msiexec.exe /fa /qn /jm SERIALNUMBER=XXXXX-XXXXX-XXXXX-XXXXX VMware Workstation.msi %SystemRoot%\System32\msiexec.exe /fa /qn /jm VMware Workstation.msi VMware-workstation-.exe /v "/fa /qn /jm SERIALNUMBER=XXXXX-XXXXX-XXXXX-XXXXX" ----------------------------------------------------------------------------------------------------------------- Slack – автоматизируем настройку сервисов Алексей Коробкин # slack ldapslave kdcslave ircserver [slack] path = /var/slack comment = my slack repo SOURCE=slack-master::slack SOURCE=slack-master:/var/slack # cd /var/slack/roles/ircbot/files # mkdir -p home/ircbot/.irssi # touch home/ircbot/.irssi/config # cd /var/slack/roles/ircbot/files # cat home/ircbot/.irssi/config settings = { core = { real_name = "IRC Bot"; user_name = "ircbot"; nick = "+ircbot+"; }; }; #!/bin/sh # Обновить список пакетов apt-get update # Установить irssi apt-get install irssi # Создать свою группу для учётной записи ircbot groupadd ircbot # Создать учётную запись ircbot, домашний каталог для неё, добавить в группу ircbot useradd -g ircbot -c "IRC Bot" -m -d /home/ircbot ircbot #!/bin/sh # Исправить права на каталог .irssi chown -R ircbot:ircbot /home/ircbot/.irssi # Отчитаться о завершении установки echo "IRC Bot installation has been done." # slack ircbot ----------------------------------------------------------------------------------------------------------------- Решаем проблемы с установкой и удалением драйвера защиты Андрей Луконькин hinstall.exe -info hinstall.exe -i [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Home Edition RU" /fastdetect /usepmtimer /NoExecute=OptIn [boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Microsoft Windows XP Home Edition RU" /fastdetect /usepmtimer /NoExecute=AlwaysOff ----------------------------------------------------------------------------------------------------------------- Внедряем смарт-карты в домене Станислав Шпак <% If bNewThanNT4 And "Enterprise"=sServerType Then %> Request a certificate for a smart card on behalf of another user by using the smart card certificate enrollment station.
Note: You must have an enrollment agent certificate to submit a request on behalf of another user.
<%End If%> ----------------------------------------------------------------------------------------------------------------- Shorewall: iptables с человеческим лицом Валентин Синицын #ZONE TYPE OPTIONS IN OUT # OPTIONS OPTIONS fw firewall net ipv4 loc ipv4 #SOURCE DEST POLICY LOG LEVEL LIMIT:BURST loc net ACCEPT all all REJECT info #SOURCE DEST POLICY LOG LEVEL LIMIT:BURST loc net ACCEPT net all DROP info all all REJECT info #ZONE INTERFACE BROADCAST OPTIONS net th0 detect dhcp,tcpflags,routefilter,nosmurfs,logmartians loc eth1 detect tcpflags,nosmurfs #INTERFACE SOURCE ADDRESS PROTO PORT(S) IPSEC MARK eth0 eth1 #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE USER/ MARK # PORT PORT(S) DEST LIMIT GROUP DNS/ACCEPT $FW net SSH/ACCEPT loc $FW Ping/ACCEPT loc $FW Ping/DROP net $FW ACCEPT $FW loc icmp ACCEPT $FW net icmp #ACTION SOURCE DEST PROTO DEST SOURCE RATE USER/ # PORT(S) PORT(S) LIMIT GROUP PARAM - - udp 53 PARAM - - tcp 53 #ACTION SOURCE DEST ICQ/LOG:info loc:!192.168.0.10 net ICQ/REJECT loc:!192.168.0.10 net # shorewall start # shorewall check # shorewall show #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL # PORT PORT(S) DEST REDIRECT loc 3128 tcp www - !192.168.0.2 #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL RATE # PORT PORT(S) DEST LIMIT DNAT net loc:192.168.0.2 tcp http - - 3/sec:10 #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL # PORT PORT(S) DEST DNAT- loc net:1.2.3.4 tcp 25 - 192.168.0.1 ROUTER_IP=192.168.0.1 SMTP=$(get_current_smtp) #ACTION SOURCE DEST PROTO DEST SOURCE ORIGINAL # PORT PORT(S) DEST DNAT- loc net:$SMTP tcp 25 - $ROUTER_IP ----------------------------------------------------------------------------------------------------------------- Безопасная работа с сессиями в PHP Антон Гришан session.use_trans_sid = 0 session.use_only_cookies = 1 Пример 1: Доступ к PHPSESSID с помощью JavaScript Пример 2: Защита PHPSESSID с помощью http only ----------------------------------------------------------------------------------------------------------------- Обманчивая простота языка BF: генезис или мутация? Алексей Вторников ,. [[][[[]]]] [[][]]] [[[][]] >+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]>++++++++ [<++++>-]<.>+++++++++++[<+++++>-]<.>++++++++[<+++>-]<.+++.------.--------.[-] >++++++++[<++++>-]<+.[-]++++++++++. // Интерпретатор BrainFuck import java.io.*; public class BrainFuck { private final int MEMORY_SIZE = 32767; // Объем памяти private char [] code; // Текст программы private byte [] memory; // Память private int pc; // Программный счетчик private int pointer; // Текущая ячейка памяти private int level; // Уровень вложенности [ и ] // Конструктор класса public BrainFuck (File f) throws IOException { code = open (f).toCharArray (); cleanCode (); checkBrackets (); // Инициализировать память и программный счетчик memory = new byte [MEMORY_SIZE]; for (int i = 0; i < MEMORY_SIZE; i++) memory [i] = 0; pc = pointer = l = 0; interpret (); } // Собственно, интерпретатор private void interpret () { for (pc = 0; pc < code.length; pc++) { switch (code [pc]) { case '>': incrementPointer (); break; case '<': decrementPointer (); break; case '+': incrementByteAtPointer (); break; case '-': decrementByteAtPointer (); break; case '.': output (); break; case ',': input (); break; case '[': startJump (); break; case ']': endJump (); break; } } } // Указатель на ячейку вправо public void incrementPointer () { if (++pointer > MEMORY_SIZE) System.out.println ("Выход за пределы памяти: " + MEMORY_SIZE); } // Указатель на ячейку влево public void decrementPointer () { if (--pointer < 0) System.out.println ("Ошибка адресации указателя"); } // Увеличить значение ячейки под указателем на 1 public void incrementByteAtPointer () { ++memory [pointer]; } // Уменьшить значение ячейки под указателем на 1 public void decrementByteAtPointer() { --memory [pointer]; } // Распечатать содержимое ячейки памяти под указателем public void output () { byte [] out = {memory [pointer]}; String s = new String (out); System.out.print(s); } // Ввести значение в ячейку памяти под указателем public void input () { BufferedReader stream = new BufferedReader (new InputStreamReader (System.in)); try { String str = stream.readLine (); byte [] in = str.getBytes (); memory [pointer] = in [0]; } catch (IOException e) {System.out.println ("Ошибка чтения");} } // // Если 0, то сдвинуться вперед до парной «]» public void startJump () { if (memory [pointer] == 0) { pc++; while (level > 0 || code [pc] != ']') { if (code [pc] == '[') level++; if (code [pc] == ']') level--; pc++; } } } // Если не 0, то сдвинуться назад к парной «[» public void endJump () { if (memory [pointer] != 0) { pc--; while (level > 0 || code [pc] != '[') { if (code [pc] == ']') level++; if (code [pc] == '[') level--; pc--; } } } // Открыть файл с исходным текстом программы на BrainFuck private String open (File f) { String s = ""; try { String line = ""; BufferedReader br = new BufferedReader (new FileReader (f)); while ((line = br.readLine ()) != null) { if (line.length () > 0) { line = line.trim (); } s += line; } br.close(); } catch (IOException ioe) { ioe.printStackTrace (); System.exit (0); } return s; } // Удалить из исходного текста программы «лишние» символы private void cleanCode () { String newCode = ""; for (int i = 0; i < code.length; i++) { if (code [i] == '.' || code [i] == ',' || code [i] == '+' || code [i] == '-' || code [i] == '<' || code [i] == '>' || code [i] == ']' || code [i] == '[') { newCode += code [i]; } } code = newCode.toCharArray (); } // Проверить баланс скобок "[" и "]" public void checkBrackets () { int counter = 0; for (int i = 0; i < code.length; i++) { switch (code [i]) { case '[': counter++; break; case ']': counter--; break; } } // Если counter не 0, то скобки «[» и «]» несбалансированы if (counter > 0) { System.out.println ("Слишком много ["); System.exit (0); } if (counter < 0) { System.out.println ("Слишком много ]"); System.exit (0); } } // Точка входа... public static void main (String [] args) { if (args.length > 0) { try {new BrainFuck (new File (args [0]));} catch (IOException ioe) { ioe.printStackTrace (); System.exit (0); } } else { System.out.println ("Синтаксис: java BrainFuck исходный_файл"); System.exit (0);} } } ----------------------------------------------------------------------------------------------------------------- С новым Python 3000! Сергей Супрунов print >>sys.stderr, 'Error' print('Error', file=sys.stderr) >>> print(1, 2, 3) >>> print(1, 2, 3, sep='->', end='!!!\n') (2.5)>>> print 'Один', 'Два\n', 'Новая строка' (3.0)>>> print('Один', 'Два\n', 'Новая строка') print 'Итого: %d' % total print('Итого: {0} {1}'.format(total, currency)) print('Итого: {sum} {0}'.format(currency, sum=total) >>> format(2/3, '8.3f') >>> 1.2.__format__('.5f') >>> 0o640 >>> 0640 >>> print range(5) >>> print xrange(5) >>> d = {'a': 'A', 'b': 'B', 'c': 'C'} >>> d.keys() >>> list(d.keys()) >>> 'a' in d >>> 'A' in d #!/usr/local/bin/python # -*- coding: koi8-r -*- open(file, 'rb') >>> raise 'Error message' >>> raise Exception, 'Error message' >>> raise Exception('Error message') raise Exception, message, traceback raise Exception(message) except Exception, var except Exception as var raise Exception() from exceptvar >>> s = 'serg:*:1006:1006:Suprunov:/home/serg:/usr/local/bin/bash' >>> login, *tmp, shell = s.split(':') >>> login >>> shell >>> tmp tariffs = set(('Повремённый', 'Комбинированный', 'Безлимитный')) tariffs = {'Повремённый', 'Комбинированный', 'Безлимитный'} python -3 script.py ----------------------------------------------------------------------------------------------------------------- Почему стоит использовать механизм обработки исключений в PHP Антон Гришан set_charset($charset)) { // Установить нужную кодировку не удалось die("Сan't set charset [".$charset."]"); } ....... } ?> set_charset($charset)) { // Установить нужную кодировку не удалось return(false); } ....... return(true); } ?> set_charset($charset)) { // Установить нужную кодировку не удалось return(ERROR_DB_CHARSET); } ....... return(SUCCESS); } ?> set_charset($charset)) { // Установить нужную кодировку не удалось throw new Exception("Сan't set charset [".$charset."]"); } ....... } ?> connect('main_db', 'localhost', 3306, 'root', 'parol', 'utf8'); } catch (Exception $e) { /* Здесь мы перехватываем и обрабатываем исключения, * возникшие в ходе выполнения кода в блоке try */ echo 'Error: '. $e->getMessage().' Line: '. ? $e->getLine(); } ?> getMessage(); // Код ошибки echo $error->getCode(); // Файл, где произошла ошибка echo $error->getFile(); // Номер строки, где было сгенерировано исключение echo $error->getLine(); // Стек вызова функций до момента генерации исключения в виде строки echo $error->getTraceAsString(); // Стек вызова функций до момента генерации исключения в виде массива var_dump($error->getTrace()); ?> report(); } private function report(){ // посылаем письмо администратору } } ?> ----------------------------------------------------------------------------------------------------------------- bugtraq, стр. 79 http://[host]/exec/"> http://[host]/exec/">