<[root@/root]># groupadd test 16:26 pts/3
<[root@/root]># chattr +i /etc/group- 16:35 pts/3
<[root@/root]># groupdel test 16:36 pts/3
groupdel: cannot rewrite group file
<[root@/root]># grep 'test' /etc/group 16:36 pts/3
test:x:213:
<[root@/root]># grep 'test' /etc/group- 16:36 pts/3
<[root@/root]># ls -l /etc/group- 16:36 pts/3
-rw------- 1 root root 706 2010-02-05 16:25 /etc/group-
<[root@/root]># Linux не для идиотов (сборка рассказов и рецептов) — Капитула А. Нам катастрофически не хватает документации. Причем не инструкций вида «сделайте так и вот так», и не справочных руководств, а некоторого «мостика» между новичком, который видел только графическую оболочку подобную GNOME или KDE, и профессионалом, который может скомпилировать необходимый ему драйвер, даже если этот драйвер упорно сопротивляется. Сделана попытка написать книжку, которая позволила бы сравнительно просто перейти с пользовательского уровня знакомства с Linux на более высокий уровень, не проходя по типичным ошибкам, и за сравнительно короткое время.

В книге рассмотрены вопросы, связанные с программированием под Linux: файловый ввод/вывод, метаданные файлов, основы управления памятью, процессы и сигналы, пользователи и группы, вопросы интернационализации и локализации, сортировка, поиск и многие другие. Много внимания уделено средствам отладки, доступным под GNU Linux. Все темы иллюстрируются примерами кода, взятого из V7 UNIX и GNU. Эта книга может быть полезна любому, кто интересуется программированием под Linux.
#include <string.h>
#include <openssl/sha.h>
#include <openssl/hmac.h>
#include <openssl/evp.h>
#include <openssl/bio.h>
#include <openssl/buffer.h>
/* gcc -o test test.c -lssl */
int main(void)
{
BIO *b64, *bmem, *bio;
unsigned char *mycode1="WU9ZTyEA\n";
bio = BIO_new_file("/home/dbsh/leaf.txt", "w");
if(!bio){ exit(0); }
char *buffer = (char *)malloc(strlen(mycode1));
memset(buffer, 0, strlen(mycode1));
b64 = BIO_new(BIO_f_base64());
bmem = BIO_new_mem_buf(mycode1, strlen(mycode1));
bmem = BIO_push(b64, bmem);
BIO_read(bmem, buffer, strlen(mycode1));
BIO_printf(bio,buffer);
BIO_free_all(bmem);
free(buffer);
return 0;
}
(16:03:02) Namelles One: так смотри, нада дампить по одному символу вплоть до buffer[LENGTH], то есть не полагаясь на функции, а просто вычитывая по байту из памяти. Тогда оно спокойно сдампится и за \0
(16:03:10) Namelles One: я с таким сталкивался уже)
(16:03:22) 391664: ммм… код есть?
(16:03:39) 391664: впринцепе указателем по массиву… да я понял
(16:03:41) Namelles One: ну, я разве непонятно обьяснил?)
Врядли есть код, это могло быть хз када)
(16:04:17) Namelles One: да и strlen нада делать на base64 строку, а то в расшифрованной оно на том же \0 отвалится)
(16:04:30) 391664: лана. спс, я чет не допер даж )
(16:05:25) Namelles One: да не за что)) для этого и существуют другие программеры — для советов)
#!/usr/bin/bash
if [ -z "$1" ];then
# Если без аргументов, то берем из буфера
WORD=$(xclip -o);
else
WORD="$1";
fi
WORD=$(basename "$WORD" | sed "s/ /+/g");
TMPFILE='/tmp/word_translate';
lynx -dump -display_charset=UTF-8 "http://m.translate.ru/translator/result/?text=$WORD&dirCode=er" > $TMPFILE;
OUTWORD=$(cat $TMPFILE | head -n 5 | tail -n 1);
echo $OUTWORD | dzen2 -l 2 -p -w 300 -bg "#cdc9c9" -fg "#000000" -x 150 -y 150 -e & #39;onstart=scrollhome,uncollapse;button4=scrollup
;button5=scrolldown;button1=exit';
rm -f $TMPFILE;
exit 0;
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys, os, string
class BruteForce():
def __init__(self, filename=None):
self.fn = filename
self.dnd = "default.txt"
self.pswd = 0
def extract(self):
cmd="/usr/bin/unrar e -p"+str(self.pswd.strip())+" "+str(self.fn)+" > /dev/null 2>&1"
return os.system(cmd)
def bf_dict(self, dictname = None):
if dictname is None:
self.dictname = open(self.dnd)
else:
self.dictname = open(dictname)
for self.pswd in self.dictname:
if self.extract() is 0:
print "password: ", self.pswd
self.dictname.close()
sys.exit(0)
if __name__ == "__main__":
if len(sys.argv) < 2:
print "Usage: ", sys.argv[0], " name.rar --dict[=name dict]\n"
sys.exit(0)
bf = BruteForce(sys.argv[1])
if len(sys.argv) == 3:
key = sys.argv[2].split("=")
if key[0] == "--dict":
if len(key) > 1:
bf.bf_dict(key[1])
else:
bf.bf_dict()
else:
bf.bf_dict()