-
Posts
2099 -
Joined
-
Last visited
-
Days Won
17
Everything posted by pyth0n3
-
Bineinteles m/am referit la ESP (Extended Stack Pointer) care va sta intotdeauna in top la stack si la EIP (Extended Istruction Pointer( care va detine adresa urmatoarei instructii care vine executate.E doar o greseala de exprimare in context pe care am facuto.
-
Cum să instalezi Google Chrome pe Ubuntu 11.10
pyth0n3 replied to bt.ionut's topic in Tutoriale in romana
Un packet nu poate fi instalat cu comenzile de rutina daca nu vine specificata o sursa de unde trebuie instalat packet/ul respectiv.Presupun ca de default Ubuntu nu vine cu un repository oficial pentru google/chrome.Primele comenzi descarca cheia publica pentru a verifica inegritatea pachetului , restul comenzilor introduc sursa intrun file de configurare pe care apt il va citi atunci cand va instala pachetul. -
In ultima bucata de cod exista o greseala, astept sa imi spuneti unde e O alta alternativa pentru a stampa un nickname de 7 caractere + newline in GAS Intel 32 biti AT&T syntax ar fi urmatoarea Intructia pushl pune 4 byte in stack dupa care datele vin stocate in ECX si executate, observati ca nickname-ul este scris in hex invers .text .globl _start _start: pushl $0x68747970 movl %esp, %ecx movl $0x4, %edx #len movl $0x1, %ebx movl $0x4, %eax int $0x80 pushl $0x0a336e30 movl %esp, %ecx movl $0x4, %edx #len movl $0x1, %ebx movl $0x4, %eax int $0x80 movl $1, %eax movl $0, %ebx int $0x80
-
In acest tutorial voi descrie caracteristicile de baza a limbajului de programare assembly.Vom avea un simplu exemplu de baza si anume stamparea unei variabile in stdout, structura instructiilor , definirea sectiunilor de baza , memoria, registrii de baza care pot fi intalniti in arhitectura procesoarelor de 32 biti Intel , nu in ultimul rand voi converti un exemplu de cod assembly scris pentru arhitectura intel 32 biti in 64 biti.Voi folosi cei mai simpli termeni pentru a descrie structura instructiilor si a unui registru.Pentru a nu duce in erroare un user ma voi folosi doar de registrii indispensabili.Assembly este un limbaj de programare Low Level.Spre deosebirea celorlalte limbaje de programare assembly necesita o traducere simpla in Machine Code deoarece fiecare cuvant sau mai bine spus instructie in assembly vine transformata intro instructie macchine code.Intructiile in machine code sunt intructii binare care pot fi interpretate foarte simplu de catre un computer dar putin mai greu de catre o persoana.De aceea pentru fiecare instructie binara a fost creata o instructie in assembly care poate fi denumita human readable deoarece creierului uman este mai simplu sa memoreze un anumit alias decat o instructie in 0 si 1.Fiecare procesor are un set de instructii assembly care difera de la o arhitectura la alta.Pentru a traduce instructiile assembly in operation code (macchine instruction code) vine folosit un traducator chemat assembler.Acesta este un software care interpreteaza instructiile scrise in assembly si le traduce in macchine code.Ei bine exista mai multe tipuri de assembler si fiecare are o anumita sintaxa.Instructiile scrise de catre un anumit assembler nu pot fi traduse in opcode de catre alt tip de assembler deoarece instructiile sunt diverse.Cele mai cunoscute tipuri de assembler sunt urmatoarele: NASM Windows, Linux, Mac OS X, DOS, OS/2 MASM Windows, DOS, OS/2 TASM Windows, DOS Yasm Windows, DOS, Linux, Unix-like HLA Windows, Linux, FreeBSD, Mac OS X GAS Unix-like, Windows, DOS, OS/2 Evident lista poate fi mult mai lunga , dar ma limitez aici.Ceea ce este important sa intelegeti este faptul ca fiecare are o sintaxa particulara pentru a scrie intructiile si ca exista diverse moduri de a programa in assembly.Pentru acest tutorial si urmatoarele exemple eu voi folosi GAS ca assembler.Ce este important sa cunoasteti este ca acest tip de assembler permite scrierea instructiilor assembly in 2 moduri.De default este folosita sintaxa AT&T dar poate fi folosita si sintaxa Intel.Ambele sintaxe pot traduce instructiile in opcode compatibil cu procesoarele Intel doar ca difera modul in care sunt scrise instructiile. Intex Syntax instructie dest,source AT&T Syntax instructie source,dest In urmatoarele exemple voi folosi doar AT&T Syntax.Assembly nu este un limbaj de programare cross platform deci anumite instructii vor putea fi executatea doar pe anumite platforme si nu pe altele.Exemplele sunt create pentru sistemele Linux 32 Biti Intel.In final voi traduce exemplul din tutorial si pentru arhitectura Intel 64 biti Linux.De obicei limbajele de programare se invata intrun anumit mod .Vin invatate structurele de date, instructiile , structurele de control , functiile si cu putina practica o persoana poate incepe sa programeze.Ei bine in assembly este putin diverssi pentru a obtine o anumita functie vor trebui scrise mai multe linii de cod.Pentru a cunoaste assembly necesita cunostinta sistemului operativ, a structurii procesorului si cum vine alocata memoria in ambientul respectiv.Acest tutorial este basic deoarece am vrut sa merg pe principul keep it simple .Vom incepe cu descrierea arhitecturii a unui computer.Avem un procesor , 3 tipuri de memorie (cache memory, main memory , secondary memory) ,Input/Output Devices (tastiera spre exemplu).Procesorul acceseaza date in memorie in urmatorul fel:Va cauta in mod direct existenta datelor in cache memory , main memory(ram) si in mod indirect date in secondary memory (hard disk).In cazul in care datele nu se gasesc in casche memory sau in main memory vor fi incarcate din secondary memory in main memory dupa care procesorul va avea access direct la ele.Conceptul programarii in assembly este urmatorul: Procesorul preia date din memorie executa operatii aritmetice asupra datelor si stocheaza rezultatul inapoi in memorie sau il stampeaza in stdout (monitorul user/ului).La randul lor datele pot fi preluate din stdin (tastiera) , pot fi procesate si stocate in memorie sau pe ecranul user-ului.In momentul in care datele vin preluate de catre cpu din main memory(ram) pentru a executa anumite operatii asupra lor vin stocate intrun alt spatiu de memorie, acest spatiu vine chemat registu.Un cpu detine mai multi registrii pentru a stocain mod temporar datele atunci cand se fac operatii asupra lor dupa care datele vin puse la locul de unde au fost luate .Ceea ce probabil il pune pe user intro stare de umra este faptul ca procesorul poate detine multi registrii.Nu e nevoie sa cunosti fiecare registru daca nu il folosesti atunci cand programezi in assembly .In acest articol nu voi descrie toti registrii deoarece voi crea o confuzie.Ceea ce este important sa cunoasteti este faptul ca atunci cand o valoare este preluata din memorie trebuie stocata intrun anumit loc temporar unde pentru a face operatii asupra ei dupa care rezultatul va fi stocat inapoi in memorie iar registrul temporar va prelua urmatoarea valoare. Ca in fiecare limbaj de programare si in assembly programul vine impartit in anumite sectii.Exista o sectie unde pot fi declarate anumite tipuri de date.Spre exemplu exista o sectie chemata .data , aici pot fi declarate tipurile de date cu care se va lucra, Aceasta sectie poate fi paragonata cu declararea variabilelor in alte limbaje de programare. O alta sectie este .bss , in aceasta sectie se pot declara alte tipuri de date a caror valoare spre exemplu nu este cunoscuna initial.O alta sectie este .text , aici pot fi scrise instructiile care vor procesa datele declarate si procesate in sectiile .data .bss.O alta sectie importanta este .globl , aici pot fi chemate functii/librari externe care au fost deja create in precedenta.Vom avea si o sectie _start de unde instructiile vor incepe sa fie executate.Aceasta sectie poate fi paragonata cu functia main() in c. Pentru a scrie un simplu program in assembly se vor crea sectiile respective, se vor umple cu date dupa care se vor chema instructii asupra datelor declarate.In urmatoarele exemple vom vedea cum se pot declara date , cum vin declarate instructiile? , ce se intampla atunci cand instructiile vin traduse in opcode?, cum vin incarcate datele din memorie intrun registru?, cum pot fi chemate functii externe asupra datelor? Pentru a putea face o operatie asupra unei valori , va trebui declarata valoarea respoectiva , acelasi lucru si pentru oricare alt tip de date.Initial vom construi o sectie .data unde vom stoca un nickname. Declar o sectie data in memorie .data Declar o eticheta pentru tipul de date pe care il voi crea NickName: Declar tipul de date pe care vreau sa le stochez in memorie .ascii "pyth0n3\n: Asadar am creat o sectie, o eticheta , un tip de date Eticheta va avea o adresa in memoria RAM , la adresa respectiva se vor gasi datele pe care le-am declarat Etichetei ii vine atribuita o adresa de memorie NickName data variable address 0x8049098 La adresa 0x8049098 vom avea datele stocate si anume pyth0n3\n NickName data variable content in excaped hex 0x70 0x79 0x74 0x68 0x30 0x6e 0x33 0x0a p y t h 0 n 3 \n Evident o data ce instructia .ascii "pyth0n3\n" va fi tradusa in opcode de catre assembler vom avea urmatorul cod Nick Name data variable content in binary giant, 8 bytes 0000101000110011011011100011000001101000011101000111100101110000 Important este sa intelegeti faptul ca acest cod se afla la o anumita adresa si anume la 0x8049098 ,am tradus adresa in hex dar pentru procesor va fi tot o valoare in 0 si 1.Dupa ce am declarat datele ramane sa decidem ce vrem sa facem cu ele .Vom stampa pe ecran ceea ce am stocat la adresa 0x8049098.Evident pentru a face acest lucru exista mai multe alternative.In Linux ne putem folosi de syscall.Trebuie individuate functiile de care avem nevoie pentru a stampa datele + functia pentru a inchide programul.Fiecare syscall are un anumit id numeric .In fiecare sistem linux lista se poate gasi in /usr/include/asm .In fisierul unistd_32.h se vor gasi functiile pentru procesoarele 32 biti iar in unistd_64.h pentru procesoarele 64 biti.Vom folosi 2 syscall diverse 1 pentru a stampa datele declarate 2 pentru a iesi din program. Pentru a stampa datele vom folosi #define __NR_write care are ca id numarul 4 Pentru a iesi din program vom folosi #define __NR_exit care are ca id numarul 1 Datele care vin procesate trebuie incarcate in registrii asadar vom folosi 4 registrii a procesorului pentru a stoca temporar date care vor fi executate.Asadar vom folosi EAX,EBX,ECX,EDX care pot fi paragonate cu 4 variabile temporare unde vom stoca date care trebuie executate. In momentul in care nu am specificat nici o instructie registrii momentan nu au nici o valoare eax 0x0 0 ecx 0x0 0 edx 0x0 0 ebx 0x0 0 Probabil va intrebati in care ordine pot fi introduse datele in registrii spre exemplu care este primul registru? Ei bine ordinea este urmatoarea EAX EBX ECX EDX.Vom muta valoarea functiei write in primul registru Pentru a scrie instructiile trebuie creata o sectie .text , avand in vedere oricum faptul ca vom chema si functii externe syscall va trebui specificata si o sectie pentru external routines si anume .globl _start dupa care vom crea sectia _start unde vom incepe sa executam instructiile pe care le vom scrie Asadar vom incepe cu prima instructie .text .globl _start _start movl $4, %eax Dupa executarea acestei instructii registrul EAX va avea valoarea 4 eax 0x4 4 ecx 0x0 0 edx 0x0 0 ebx 0x0 0 Functia write are nevoie de cateva argumente pentru a stampa datele si anume primul argument pe care va trebui sa il specificam functiei dupa ce a fost incarcata in registrul EAX este unde anume vrem sa stampam datele? In linux exista 3 tipuri de fisiere chemate file descriptor Standard input identificat de catre valoarea 0 acet fisier preia input-ul de la tastiera spre exemplu Standard output identificat de catre valoarea 1 , acest file este folosit pentru a stampa informatia Standard error indenbtificat de catre valoarea 2, acest file este folosit pemtru a stampa mesajele de erroare. Pentru a stampa datele vom folosi standard output, asadar primul argument va fi specificat in al doilea registru si anume EBX , standard output are ca valoare 1 asadar urmatoarea instructie pe care o vom scrie este movl $1, %ebx Acum registrii au urmatoarele valori eax 0x4 4 ecx 0x0 0 edx 0x0 0 ebx 0x1 1 Al doilea parametru a functiei care trebuie specificat este adresa in memorie unde se afla datele pe care vrem sa la stampam.In urmatorul registru vom incarca adresa etichetei cu urmatoarea instructie leal NickName, %ecx Asadar registrii vor avea urmatoarele valori eax 0x4 4 ecx 0x8049098 134516888 edx 0x0 0 ebx 0x1 1 Dupa cum observati instructia leal NickName, %ecx a incarcat in ECX adresa unde se afla datele si anume 0x8049098 care este echivalent cu 134516888 in decimal.Al treilea argument al functiei care trebuie incarcat in urmatorul registru si anume EDX este lungimea pe care vrem sa o stampam din datele pe care le/am declarat (lungimea nickname-ului este pyth0n3 7+1 newline). movl $8, %edx In acest moment registrii vor avea urmatoarele date eax 0x4 4 ecx 0x8049098 134516888 edx 0x8 8 ebx 0x1 1 Deci pana aici i-am spus procesorului sa faca urmatorul lucru.Mergi la adresa 0x8049098 si stampeaza pe ecran urmatoarele 8 caractere.Daca am fi specificat mai multe caractere ar fi stampat ceea ce se afla dupa 8 caractere pe care le-am declarat in memorie(incercati, o sa va stampeze garbage).In momentul in care instructiile au fost declarate ,nu ramane decat sa chemam procesorul ca sa execute ceea ce am facut pana acum.Urmatoarea instructie va face acest lucru , este un interupt (kernelul va trimite un semnal procesurului ca sa execute ceea ce a fost incarcat in registrii acum. int 0x80 O data ce aceasta instructie vine executata , vor fi stampate pe ecran 8 caractere din datele declarate.(ultimul caracter este doar un newline).Dupa ce datele vor fi stampate registrii vor avea urmatoarele valori eax 0x8 8 ecx 0x8049098 134516888 edx 0x8 8 ebx 0x1 1 Dupa cum observati valoarea din registru EBX este in EAX acum.Dupa ce codul vine executat se va face un return in EAX.Acum nu ramane decat sa declaram instructiile necesare pentru a iesi din program , asadar vom folosi ca syscall exit care are valoarea 1.Dupa cum am specificat , ordinea pentru a incarca instructiile in registrii este urmatoarea .Prima valoare in EAX , iar urmatorii parametrii in EBX,ECX,EDX.Atentie acest lucru este valabil doar pentru procesoarele intel 32 biti.Deci vom chema valoare 1 in registrul EAX. movl $1, %eax Asadar vom avea urmatoarele valori eax 0x1 1 ecx 0x8049098 134516888 edx 0x8 8 ebx 0x1 1 Dupa cum observati registrii nu au fost modificati si unele valori pe care le-am incarcat inainte au ramas in registrii.Atunci cand veti scrie cod putin mai complicat in assembly va trebui sa aduceti registrul la statul initial sau uneori sa daceti un decrement dealtfel registrul va detine valoarea care a fost incarcata initial. Urmatorul parametru pentru functia exit este un return code.Aici putem specifica modul in care vrem sa iesim din program.Un return cod 0 va iesi curat , se poate specifica un return code 1 cand vrem sa iesim cu o erroare. In cazul nostru nu exista o erroare , asadar vom iesi cu 0.Primul si singurul parametru al functiei exit va fi 0. movl, $0 %ebx Dupa cum observati instructiile pe care le-am declarat au fost executate si valorile au fost urcate in registrii EAX va avea valoarea 1 , EBX va avea valoarea 0 iar restul registrilor vor avea valorile precedente eax 0x1 1 ecx 0x8049098 134516888 edx 0x8 8 ebx 0x0 0 Pentru a executa ceea ce este acum in EAX va trebui sachemam un inerrupt , acest semnal va spune procesorului sa execute ce gaseste acum in EAX.Nu vor fi executate datele din registrul ECX si EDX deoarece valoarea pe care am puso in registrul EAX si este echivalenta cu functia exit chiama doar un singur parametru si anume 0 pe care l-am pus in registrul EBX .Asadar vor fi executate datele din EAX SI EBX int $0x80 In acest caz am iesit din program , nu mai vine nimic stampat pe ecran , dar totusi putem observa cu care exist status am iesit.In Linux se poate face acest lucru folosind urmatorul comand imediat dupa ce am executat un program. echo $? In acest tutorial am facut un simplu exemplu in assembly si am observat ce se intampla atunci cand fiecare instructie vine executata. Acest lucru poate fi facut cu un debugger,asadar nu uitati sa asablati codul cu extensii pentru debugging daca vreti sa vedetice face pentru a asambla codul se vafolosi as. as -ggstabs nickname.s -o nickname.o Note: Am specificat optiunea ggstabs doar pentru debugging ,asadar il puteti urca intrun debugger preferat ca sa observati cum vin alocate datele.In momentul de fata vom avea un objec code nickname.o care trebuie ytrecut prin linker.Vom folosi ld pentru linking , asadar vom crea un executabil. ld nickname.o -o nickname Evident in momentul in care il veti trece in debugger veti observa mai multi registrii.Eu m-am limitat ca sa nu duc in erroare.Fiecare registru are rolul lui si fiecare registru este necesar.Un simplu exemplu pe care il veti pbserva atunci cand si doar daca veti face debugging este urmatorul.Presupunem ca am creat un breakpoint inainte ca prima instructie sa fie executata si vrem sa observam valorile care sunt stocate in momentul de fata in registrii.Atentie nu in fiecare registru trebuie neaparat sa existe valori, unii vor avea un flag sau nici o valoare. eax 0x0 0 ecx 0x0 0 edx 0x0 0 ebx 0x0 0 esp 0xbffff840 0xbffff840 ebp 0x0 0x0 esi 0x0 0 edi 0x0 0 eip 0x8048074 0x8048074 <_start> eflags 0x200212 [ AF IF ID ] cs 0x73 115 ss 0x7b 123 ds 0x7b 123 es 0x7b 123 fs 0x0 0 gs 0x0 0 Dupa cum observati unii registrii au anumite valori precum registrul ESP care va avea intotdeuna o adresa de memorie si anume adresa dintyrun anumit segment de memorie chemat stack (probabil este interesant atunci cand se va scrie un exploit , stack overflow spre exemplu sau buffer overflow).EIP va detine intotdeuna adresa din top a segmentului de memorie chemat stack.Un alt registru inportant este EIP care este un instruction pointer , acest registru va detine intoteauna urmatoarea adresa urmatoarei sintructii care trebuie executate.Sa nu uitam faptul ca si instructiile pe care le folosim trebuie sa fie stocate undeva in memorie.Pentru acest tutorial ma voi opri aici deoarece in momentul de fata nu am folosit alti registrii pentru a putea explica ceea ce fac.Va las exemplele codului din acest tutorial si nu in ultimul rand pentru cai care sunt curiosi voi traduce codul assembly 32 bit in 64 bit doar ca sa observati diferentele. #nickname.s 32 bit intel gas AT&T syntax assembly .data NickName: .ascii "pyth0n3\n" .text .globl _start _start: movl $4, %eax movl $1, %ebx leal NickName, %ecx movl $24, %edx int $0x80 movl $1, %eax movl $0, %ebx int $0x80 #nickname.s 64 bit intel gas AT&T syntax assembly .data NickName: .ascii "pyth0n3\n" .text .globl _start _start: movq $1, %rax movq $1, %rdi movq $NickName, %rsi movq $8, %rdx syscall movq $60, %rax movq $0, %rdi syscall Cum am mai spus exista mai multe variante pentru a scrie acest cod. Exemplu : Vom stampa "OK" pe ecran intrun mod divers sintaxa pentr 32 bit .text .globl _start _start: pushl $0x0a6b6f mov %esp, %ecx mov $0x4, %edx mov $0x4, %eax movl $1, %eax movl $0, %ebx int $0x80 Probabil exista greseli de exprimare, nu ezitati sa scrieti , le voi corecta. ###END
-
Pentru cei pasionati de structura sistemelor operative: BareMetal is a 64-bit OS for x86-64 based computers. The OS is written entirely in Assembly, while applications can be written in Assembly or C/C++. Development of the Operating System is guided by its 3 target segments: High Performance Computing - Act as the base OS for a HPC cluster node. Running advanced computation workloads is ideal for a mono-tasking Operating System. Embedded Applications - Provide a platform for embedded applications running on commodity x86-64 hardware. Education - Provide an environment for learning and experimenting with programming in x86-64 Assembly as well as Operating System fundamentals. Current version is 0.5.3 - released February 23, 2012. BareMetal boots via Pure64 and has a command line interface with the ability to load programs/data from a hard drive. Current plans for v0.6.0 call for basic TCP/IP support, a native File System, as well as general bug fixes and optimizations. The creation of BareMetal was inspired by MikeOS - A 16-bit OS written in Assembly used as a learning tool to show how simple Operating Systems work.
-
1.In sistemele Unix nu exista optiunea "-i" pentru sed (nu va functiona) 2.In sistemele Unix log/urile se pot gasi si sub /var/adm , restul depinde in baza directivelor create in /etc/syslog.conf
-
In C/C++ chemi doar o functie print cu un exit status Poftim ti-am tradus codul in assembly AT&T Syntax pentru procesoarele Intel 32 biti Rezultatul este echivalent cu ceea ce ai scris in C/C++ mai sus sau cu "print hello world" in python doar ca ii spun direct procesorului ce sa faca. #Declar o sectiune .data pentru a stoca date .data #Declar un handler HAND care va detine datele pe care le voi procesa HAND: #Declar tipul de date .ascii .ascii"Hello World\n" #Declar o sectiune .text care va detine instructiile necesare #pentru a processa datele din sectiunea data .text #Declar o sectiune .globl unde voi chema functii/librarii externe #pentru a procesa datele din sectiunea .data .globl _start #De la sectiunea _start: incep sa execut instructiile _start: movl $4, %eax #chem in registrul eax functia write (syscall) movl $1, %ebx #specific in registrul ebx parametrul functiei (standard output) movl $HAND, %ecx #chem in registrul ecx adresa in memorie a datelor declarate in HAND movl $12, %edx #mut in registrul edx lungimea caracterelor din HAND #cu urmatoare instructie ii dau un ordin procesorului sa renunte la ceea ce face si sa faca ceea #ce este pus in registrul eax si anume valoarea 4 care corespunde la (write syscall) care nu face #altceva decat sa stampeze pe ecran datele care se gasesc la adresa din registrul ecx. #in sistemele Linux semnalul va fi trimis la CPU de catre Kernel int $0x80 #Ies din program movl $1, %eax #chem in registrul eax functia exit (syscall) movl $0, %ebx #chem in registrul ebx parametrul functiei care de fapt este un exit status 0 # ii dau un ordin procesorului sa execute ceea ce vede in eax acum si anume functia exit int $0x80
-
Acum probabil unii vor spune exista proxy socks, vpn etc.Cand vor face DROP la restul protocoalelor nu va ramane decat un singur canal HTTP unde nimeni nu va putea face nimic altceva decat sa navigheze pe internet sub ochii altora.Probabil veti spune ca e imposibil , ei bine ei vor spune ca protocolul este deprecated si ca HTTP cu toate serviciile care le ofera ar putea inlocui orice protocol.
- 7 replies
-
- arenait
- comunicare
-
(and 3 more)
Tagged with:
-
Green Day - Working Class Hero
-
In diverse organizatii backup-urile nu vin tinute pe disck-uri , datele vin stocate in tape (casete) si des vin folosite librarii care se ocupa de backup precum sl8500 sau diverse alte produse IBM , etc.O politica adoptata spre exemplu la un corporate unde ma ocup de IT consulting ar fi urmatoarea:60 de zile full backup , 1 incremental pe zi + 1 archive database in fiecare ora pentru orice sistem + clona ambient , deci asta ar insemna ca vine pastrata o copie a unui ambient de productie (daca exista 10 servere database, vor exista 10 servere clone database ).Ceea ce vine pastrat in termen mai lung ar fi doar datele care vin stocate in db de productie si sincer sa fiu nu cunosc exact timpul cat pot fi pastrate dar vin stocate in ambiente destul de sofisticate chemate bunker cu o clima constanta si structuri destul de solide.In general se face cam 6-7 Terabyte de backup pe zi.
-
M-am jucat cu aceleasi flag-uri doar ca am facut un call divers, exista multe alte flag-uri cu care te poti juca pentru a modifica atributiile unui fisier.
-
Daca prezint imaginea de mai sus la clasa de copiii imi vor spune ca este un gandac , daca este un curs de engleza imi vor spune ca este un bug ,iar daca facem cateva jocuri de cuvinte cu prefixe vom ajunge la debug si daca il aruncam pe google vom obtine alte informatii.Prin logica coreland aceste informatii la ceea ce am scris in primul post se poate ajunge la o concluzie.
-
Avand in vedere faptul ca am access la serverele serviciului nu imi rame decat sa intru in contact cu tine (stai linistit probabil suntem deja in chat) sa iti vand o gogoasa , sa imi mai dai cateva informatii si sa iti trimit sticletii.Cum poti fi atat de sigur in ceea ce faci?
-
Ca executabilele sa poata fi folosite de catre orice user se pot atribui urmatoarele permisii chmod u+s Block chmod u+s UnBlock Evident daca un user detine ambele executabile va putea debloca si bloca in acelasi timp As sugerii sa fie pus doar Block la dispozitia user-ului rst asadar o data ce o persoana a terminat un assessment poate bloca fisierul care poate fi deblocat doar de persoana care detine UnBlock .Note: O data blocat fisierul nu poate fi nici macar modificat si nici sters oricare ar fi userul care incearca acest lucru.
-
Am creat 2 executabile Unul blocheaza fisierul iar al doilea il deblocheaza, trebuie rulat cu drepturi administrative Un fisier blocat nu poate fi sters si nici modificat de catre nimeni, nici macar de catre root USAGE: UnBlock <filename> USAGE: Block <filename> Va arata un 0 daca operatiunea a fost executata sau nimic in momentul in care operatiunea nu a fost executata -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 begin 644 Block-Unblock.tar.gz M'XL(".:HW$\``T)L;V-K+55N8FQO8VLN=&%R`.U8#VQ3QQF_9YP06F#.GXZT MI<S:`@TK.'%("*!!FW\0(/Q-8`54WAS[)7;KV)G]S$C%M`0GK"ADRS:#HLV; M@I9-V>1JGIH!$FRB"FM5:9-@ZZ9VTSJJ@F0&F^A&JZU%>-_W[M[SY4@:(P%= MI_=9Y[O?W7?W??>]NW?W?K7^H/LY<F^E'*2ZJ@IS9W55.9]CT;G,646<SNKE MU<Z*RO(J)X&JRF75Q%Y^C_W2)!)672&[G71VJ=[RP+(I]:9K_X3*UQJ:UDJ2 M9&`+F4$0=4>M>960GY])ZRN)G<PDI60!>93D:AA2-^A`N@AE3#F0K)!F0"J" M08IZK'F8"@$7LC:))4V@+Z8AZ(@)^Q,;;=?JCD(!M4%$/*9>T6R!+0GH`V M3.?13T+;K2R5@GXIV,94#[B>:]MV6?5,%@N]?YG?UUKF]RSU^P*1_8YPT%%! MZVW,]W6;=[!8T3X%K%\1FSNVA_ZLOOG9?3_ZV8N_;B:G/W-3^99SVU9LF\GZ MY;"^O.AQT6.HCR\Q?7@$=MW/%S>^<U;T?S%7+N#CK'4E9+G0OEK`3@$_`JFI MSYJ'_N3C[&6YO2,8D'''J+),($QN#,]R(J_?`K4>7T".A!4/"7>&?`&UC71& MU#`)=X55I0/ZHCKKV^'R!<BZIO6U=7*%HUR/I47[2=K/QN*-8O/YYF#K%H8/ M'+/FY4*'(Y#/A$D.8@XXACD$;@AS<#J..01NQ^'+S=%KUA3VW=,S/@AKL?\[ M-]/I=-_OU)R4`VI3.3!,ZCK\/;WGM?%T52_T3"]\`?ZQ3WHA6O)B\<I%Z)9> MB!:]V';EO(;1LA?=O7)6P^B!MQAQ4L/HB1<?P95A@/PS<_Y][^&WHY>N;VW9 M[AWL!:UA^-NVTUL)6>HE4+XQ.$'87+I7CZ)SD2>/)R`_/0*[H.?J,/R__*$E M>E5:^49XP<`)'#]Z5OHAJJ2+^K!94U_Y1BCU2@X.($7/6?<\,SZ@+B(#9QY' M?1@_>JWX^"CH]IU5"TYA'11FO6HMP;KT^=?&T0?PN.>:#68<_6J>)5+6WS`[ M>M;:;SNU%9;+X9:2O,/U)=:!^A+;86M)ZI>WTFF]?`'*5_-AL.=!,?4.H%.X M2F'0S/Q$?[ZXLSF%C[YG_`_Y8/#:_-03..+I8HC.0!3_%[_Z<MK2EU9+G._W M-]C`=AXXA"[T-^2!U73L)=2*OB*MO!5Z*WIN_IZ]\C/C_?-+QHUX'L?W3/3? M:;7P-);:!J-7K>GS_3.@*G*#!LG0U==1(WB3\H,KNV#-S-#VFX6XO2Y5#=F? M\-D7ANUK[&4>95]9(.+WVRO6+'+:%RVR*VYOT%[RI)WL:*Y9U[#*7HL'L-W^ MA3:?7PFX.I0U=%VDV3I)<^M%8GMB-J1+!ZUYL"G($K8__?">>^]6.AB''-\5 M2Z`=WQ-G`#\`^2Y(#[+^#['QT.=N6`6X]TH)?7_!G,@\[`?]L3P&.;X+<+$7 MLARF'(Q!/;@61)^N0W[H(-TK=RKX_M;+GX<S9Q6D#9!V0WHVFFE;5U>WREY: MK[3Z7`%[I:/24;5TQ6):F*S-6:XW$D>XJT-UM4*NAFCNU4OPDE)"G<01"*J* MHZ9V_5+5U<Y0>R#B:(WXX!3P>8B&O*ZPES@\70$8C^9JB+;L4T)A7S`P`<C0 M%E+\J$<+G7X5#?K@7U7VPW\;`&@*>ERJBS@4K]P6@L=/'&XU&`J#`9H]ZPYI MQEP=/C<8"*K:'QV-]FP-@YH[V-&A!-3LX_XHH>L)G[UV3DOT^>JBGQV?(YDS M2SM/)7J6Z&)EN9/3:P2]1M`KF42OD="S#/5PS?I!#P^`7$X/$Y[7[\.Z0CU< MTW%F5]3;3.BZ1CU<ZV=`KY/Y(I',N;V39,Y4W!M++'1/B//=2[0]I]G%-7T( M"G,YNQ:6\,Y\B^GA7HA9J'^\793G(<UB?7`OC5GH'N+G@3C*Z>'>.V.A>Q+U MYG!Z1]CX6(_O@$L6&C\QSE_G](I@'Q7!Y+\DZ&'Z-J>'=[YNT$MP%P?]#![B M]/"=LP0>XOQ)[/Z`9-95(^@U@M[&2?1^S.G%0"^6DVGC]9),#Y^==A_,H7$0 M]4YR>GC0#4^A]RM.#P^TT2GLCK.YHIYVS\RA=\R9G!Z._QMN/+R7',B]?3Q, M%S@]?.=VY]Z^CS#]B9\'Z`WG3CZ/B\R^-@_0&YU"[S(;3U\CJ+>2T]/OX_EL M+%W>!KU_"'IZ;N'JN^$P*@=CCT%Y*<GLMUG">$FH?(SKR-]-1<'W$='Z4ZU2 M`],!&@U,+?@-3&<=-[!V:];>"Q337;?DH([ITSQD8!K!F(%G:7C,P`_0\0S\ MH(8O&7@V]3^JXSDT1@:>2^WWZ?A3=#X&IKLM9N!\#0\=U7&!AH<-3-_8HP8N MTG#"P/2D/W!,QY^F_AAX'AW/P,5T/`,_3'B9`5\$_'.SDG?3LSG_)/#O$<X_ M"?PKY?R3P#\XD$F2Q<,"\=C([-%U^##9C?X?HW<:Q'CKMO5F]$7[>.3%.?L] M7/PDB-\W!?O?PT)?9KR?"^.=X.(C6>9I^UN?'[$4D+\(^#H7;\GR$/D/%T\[ MQ-/*.8Q/;QY^K_32.UH!V']<RJP/Q`Y.WPYIM8"W272]Z-]D3TN9]50`ZVFO M8*]3P`/2Q&\Z/%=U?VW@[T\`CS"<;RDF)Q`?U7$A&4=]\'\W\_?W4F:]V"!^ M?P6<Y/`EP?X-0?]#P!^PYUM@F0N)$/SV:6'CS[-D]E<![B]W2`VKD;8VAQL^ M*>M:MFR7F]8WM\#7J"S73T`;ZCC@"<KM_F"KRR]K]RK9%=E/X,[4Z5=4Q>.H M6KFB@F"#[//L1U1)M,N8[(ET='3I=AHVUVMCK=U>LZG!0&A&+V>LN`TKGB!Z MNJYI2VU-D[QE[=KFAA:YI::VJ0$[X'U0=H5"KBY9"7@F5FA?RD2NW[6Y9M/Z M.H*7/5;'/J^?>BKS!<V^KMWAB*S=*_7>$S_8Y0W[Y.U*NP\^R$-U?E<XK(2) MW-8I>[]":#?ZK3[)P)G/]@F-$S_[(0`9)P&$@[+7%?#X%?W9Z'$R?-7NP[(, M5UB]%X8!:8,)9A3MI@O16;YBN:-=4>5.MZQZ(X'G'*W[B<8ET)%,N6/9$] MYPSPM/QO187!_SJK*Y#_K:ZL-/G?^R'3\;^OWP?^-PX=XP+_J]7!N1.?@O]- M0GL2VI+_H_QOU>:<#6/__&/COTZD=U[+6_:W"SF_^*[)_]X=_K>;\;^#C/^- M,?YWB/&_<<;_#D_._\:FYW]?T/C?(P;_.RCPOS&!_QT2^-^XP/\.WWW^-\'X M7[QLG1[5^-^1*?C?).5_L5E3I_QOXJ/XW\0D_&_B8^=_W[QW_&_<X'_CV?*_ M31_!_R[-FO]E!_#M#/#]XX![/V8..&ERP"8'3$P.^/^9`]XTB1[/`0_U46YW M.@Y8NQ-FP0'C83>2!0>L<[O3<<#:73,+#ECG=J?C@/&=VYL%!XQ<S$@6'#"> MYHDL.>!$EASPY2PYX-XL.>`QJ%Q@<L#4_C0<\)#``<<%#GA$`3`@><%#C@ M#.=+.>!>@0,>,3#E@!-WR`''!0YX1."`$]-PP`F!`T[>(0<\+'#`0P('G+@# M#O@D%Q_D@'_+S0\YW[<$_"X7;^2`/^#BB1QPCL"!%@L<<*G``9<)G.\:`6\7 M..!=`@<L"_:^+.!O"!SP]SG.%SG@GW(<+7+`)Z4,AXX<\#F!`WY=RJP7Y'0O M`A[C\&7!_GN"_DV!`RX4..#B3SX'7&&2P"8);(HIIIABBBFFF&***::88HHI GIIABBBFFF&***::88HHIIIABBBFFF&***::8<C?EOV.41W``4``` ` end -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iF4EAREIAAYFAk/cqe8ACgkQiOFy19RY1SDaaQD9FftXKinTt+m1onug/eKSCCy5 vU1K19jlEuS4qbJDU+oBAL57hjkCXiHLlBNRZcC99sZrLoqnCakVRFfkptCky3B/ =lvYA -----END PGP SIGNATURE-----
-
Esti constient de rezultatul unui exploit inainte sa il executi?Ce suma trebuie investita in pentesting si ce suma in disaster recovery?Cata resposabilitate oferi in serviciile tale?Cat ma costa un serviciu de pentesting , care sunt consecintele si cat ma costa integritatea datelor, adica trebuie sa investesc o suma mult mai mare in backup-uri sau imi vine garantata integritatea datelor atunci cand testul se va termina?In ce anume consta testul de pentesting?Si nu il ultimul rand care sunt metodede pentru a face pentesting intrun ambient database?Mentionez faptul ca aplicatia nu este un simplu script php si un simplu database deoarece intrun ambient profesional vom exclude acest lucru.Vom lua ca exemplu aplicatii de tipul CRM si SAP deoarece sunt cele mai cunoscute .Inainte de a incepe voi cere si analiza planul dupa descrierea ambientului.
-
Happy Birthday from GAS Assembler .data T1: .ascii "\x20\x20\x20\x20\x2e\x0a" T2: .ascii "\x20\x20\x2e\x2e\x6c\x2e\x2e\x0a" T3: .ascii "\x20\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x0a" T4: .ascii "\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x2e\x0a\x0a" HS: .ascii "\x48\x61\x70\x70\x79\x20" BS: .ascii "\x42\x69\x72\x74\x68\x64\x61\x79\x20" PS: .ascii "\x70\x73\x2d\x61\x78\x6c\x0a\x0a" .text .globl _start _start: movl $4, %eax movl $1, %ebx movl $T1, %ecx movl $6, %edx int $0x80 movl $4, %eax movl $1, %ebx movl $T2, %ecx movl $8, %edx int $0x80 movl $4, %eax movl $1, %ebx movl $T3, %ecx movl $9, %edx int $0x80 movl $4, %eax movl $1, %ebx movl $T4, %ecx movl $12, %edx int $0x80 movl $4, %eax movl $1, %ebx movl $HS, %ecx movl $6, %edx int $0x80 movl $4, %eax movl $1, %ebx movl $BS, %ecx movl $9, %edx int $0x80 movl $4, %eax movl $1, %ebx movl $PS, %ecx movl $8, %edx int $0x80 movl $1, %eax movl $0, %ebx int $0x80 Howto: Compiling as -o HappyBirthday.o HappyBirthday.s Linking through 'ld' ld -o HappyBirthday HappyBirthday.o
-
Fedora 17 (Beefy Miracle) GNOME 3.4 custom wallpaper (NOT default) Screenshots (using scrot) Screenshot1 Click for large version Screenshot2 Click for large version #!/bin/bash ########################################### ### ### ### Fedora 17 i686 after install script ### ### ### ########################################### ###get administrative privileges su - root ###first system update && upgrade yum -y update yum -y upgrade ###gnome tweak yum -y install gnome-tweak-tool ###gnome shell extensions yum -y install gnome-shell-extension* ###enable rpm fusion repo yum -y localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm yum -y update yum -y upgrade ###get gimp yum -y install gimp ###install codec yum -y install gstreamer-plugins-bad gstreamer-plugins-bad-free-extras gstreamer-plugins-bad-nonfree gstreamer-plugins-ugly gstreamer-ffmpeg libmatroska xvidcore xine-lib-extras-freeworld libdvdread libdvdnav gstreamer-plugins-good lsdvd libdvbpsi ffmpeg ffmpeg-libs gstreamer-ffmpeg ###dvd/video 32 bit rpm -ivh http://rpm.livna.org/repo/17/i386/libdvdcss-1.2.10-1.i386.rpm ###Flash Player 32 bit rpm -ivh http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux yum -y install flash-plugin ###Microsoft Fonts wget http://dl.dropbox.com/u/964512/lffl_fedora/msttcore-fonts-2.0-3.noarch.rpm rpm -ivh msttcore-fonts-2.0-3.noarch.rpm ###install development tools yum -y groupinstall development-tools ###install nmap yum -y install nmap ###install vlc, scrot (screen capture tool) yum -y install vlc scrot ###The Editor yum -y install vim ###Office Suite yum -y groupinstall "Office/Productivity" ###install java plugin yum -y install icedtea-web ###install gecko-mediaplayer yum -y install gecko-mediaplayer ###install Korn Shell yum -y install ksh ###install wireshark yum -y install wireshark ###intall calibre yum -y install calibre ###Enable && start sshd systemctl enable sshd.service systemctl start sshd.service systemctl is-enabled sshd.service systemctl is-active sshd.service Some other sh*t: System Optimization ###Disable rpcbind,cups,sendmail,atd,avahi,ip6tables,livesys systemctl stop rpcbind.service systemctl disable rpcbind.service systemctl is-enabled rpcbind.service systemctl stop cups.service systemctl disable cups.service systemctl is-enabled cups.service systemctl stop sendmail.service systemctl disable sendmail.service systemctl is-enabled sendmail.service systemctl stop atd.service systemctl disable atd.service systemctl is-enabled atd.service systemctl stop avahi-daemon.service systemctl disable avahi-daemon.service systemctl is-enabled avahi-daemon.service systemctl stop ip6tables.service systemctl disable ip6tables.service systemctl is-enabled ip6tables.service systemctl stop livesys.service systemctl disable livesys.service systemctl is-enabled livesys.service systemctl stop livesys-late.service systemctl disable livesys-late.service systemctl is-enabled livesys-late.service Optional ###CERT-Forensics-Tools rpm -ivh http://www.cert.org/forensics/tools/cert-forensics-tools-release-17.rpm rpm -ivh http://www.cert.org/forensics/tools/forensics.asc yum -y install CERT-Forensics-Tools Security ###Disable all firewall default rules /sbin/iptables -F && /sbin/service iptables save ###Disable selinux su -c 'sed s/^SELINUX=.*$/SELINUX=disabled/ -i /etc/sysconfig/selinux'
-
Eu va sfatuiesc sa faceti un test de speed folosind un tool lasat de catre o organizatie (Communications Regulatory Authority).Un test de speed dureaza in jur de 24 de ore unde calculatorul va fi folosit doar pentru a face acest test , dupa care se va obtine un rezultat concret .Nu puteti face un test pozitiv in 5 minute .Studiati putin testele de performance cum vin facute , e spre binele vostru daca vreti totusi sa aveti un raspuns concret.
-
Un examen LPI se bazeaza pe teorie in schimb un RHCSA pe practica.Intrun examen RHCSA daca ai o problema de tipul 7. Ce comanda se foloseste pentru a afisa toate fisierele care fac parte dintr-un pachet DEB? 1. dpkg -L 2. dpkg -V 3. dpkg -S 4. dpkg --get-selections Faci man dpkg si ai rezolvat problema in schimb in LPI va trebui sa cunosti fiecare argument pentru dpkg. In general un LPI nu poate demonstra ca esti un profesionist in administrarea sistemelor ci doar faptul ca cunosti comenzi si parametrii.Majoritatea iau cu success un certificat LPI dar mult mai putini iau un RHCSA.Colegul meu a luat un certificat RHCSA , a fost singura persoana care la luat din 20 care au participat la examen din care toti au luat doar LPI si au cazut la RHCSA .Asta demonstreaza ca teoria nu este indeajuns pentru a administra un sistem Linux, luand in considerare faptul ca un individ care a luat un certificat LPI ar fi cunoscut toate comenzile si argumentele dar a cazut la un examen RHCSA unde toate cunostintele pe care le-a acumulat prin obtinerea unui certificat LPI le-ar fi putut obtine folosind comand-ul man.In general un exemen RHCSA iti pune la dispozitie un sistem cu cateva probleme si posibilitatea sa il administrezi folosindu-te de resursele pe care sistemul ti le pune la dispozitie .Deci e bine sa cunosti argumentele fiecarui comand dar acest lucru il face man.Presupunem ca tu le stii pe toate si se da urmatoarea problema care desigur o veti intalni de multe ori in administrarea sistemelor.Te trezesti la examen cu un server Linux pe care trebuie sa ii faci boot si incepi sa vezi urmatoarele 3 tipuri de errori diverse Error1 Error2 Error3 E clar ca cu toate cunostintele pe care le ai in cap daca nu treci de primul pas nu vei putea face restul examenului si oricum ai cazut.Raman doua lucruri diverse teoria si practica.Imaginile de mai sus au fost extrase dintrun examen RCHSA si sunt lucruri de baza.Pentru a termina examenul care e practic trebuie rezolvate si configurate mai multe chestii.Evident google poate fi acum cel mai bun prienten dar la examen veti avea doar un sistem , un ecran si o tastiera.
-
LPI exams , oricum nu sunt sigur ca se pot face in limba romana, dar au acelasi stil de a pune intrebari.
-
Asta se numeste serviciu comunist.Personalul nu este in grad sa aiba o conversatie cu clientii.Alte exemple dupa o scurta plimbare prin romania.Clientul:As vrea va rog frumos o punga de chips Vanzatorul: Dute si ia de pe raft Clientul: Ce tip de salam aveti Vanzatorul:Vezi ce este pe raft Aratati-mi cu degetul o tara din europa care mai ofera un serviciu atat de comunist (cei care sau mai plimbat putin pot vedea diferentele)Majoritatea spun ca sunt rasist dar luand ca exemplu cele mai comuniste tari precum polonia veti vedea ca exista o mare diferenta de comportament si serviciu.Oriunde ai merge parca esti tratat ca un comunist indiferent de loc: bar,hotel,restaurant ,banca,posta etc.Un israelian care a deschis un self-service in romania intrun oras avea mai multi clienti decat un roman care a deschis un self-service in romania.Pana si turcii ofera un serviciu de calitate intre prsonal si client.Sh*t si cafeaua de la un bar de lux ti-o arunca intro scarba comunista.Ce pot sa iti spun deschideti un cont mai putin comunist intro alta tara.
-
Jimi Hendrix - All Along The Watchtower