niedziela, 16 października 2016

Haiku - menedżery pakietów

System operacyjny Haiku został wyposażony w dwa menedżery pakietów:

- graficzny HaikuDepot


- konsolowy pkgman



Graficznego HaikuDepot nie trzeba omawiać, bo jest bardzo prosty w obsłudze. Z grubsza omówię menedżera pkgman, podając konkretne przykłady.

1) Instalacja pakietów (programów)

pkgman install xrick
- zainstaluje grę xrick, klona Rick Dangerous

2) Aktualizacja pakietów (programów)

pkgman update xrick

3) Deinstalacja pakietów (programów)

pkgman uninstall xrick

4) Szukanie pakietów (programów)

pkgman search rick

5) Wylistowanie dostępnych repozytoriów pakietów

pkgman list-repos

6) Dodanie repozytoriów do systemu

pkgman add-repo clasquin-johnson.co.za/michel/repo
pkgman add-repo http://software.besly.de/repo
pkgman add-repo coquillemartialarts.com/fatelk/repo

lub

pkgman add clasquin-johnson.co.za/michel/repo
pkgman add http://software.besly.de/repo
pkgman add coquillemartialarts.com/fatelk/repo

7) Usunięcie repozytoriów z systemu

pkgman drop-repo "clasqm's repo"
pkgman drop-repo "BeSly Software Solutions"
pkgman drop-repo FatElk 

lub

pkgman drop "clasqm's repo"
pkgman drop "BeSly Software Solutions"
pkgman drop FatElk

8) Aktualizacja systemu

pkgman add http://packages.haiku-os.org/haiku/master/$(getarch)/current
pkgman add http://packages.haiku-os.org/haikuports/master/repo/$(getarch)/current
pkgman update
shutdown -r

Aby korzystać z wyżej opisanych menedżerów pakietów, trzeba mieć zainstalowany system z nightly images . Wersja R1/Alpha 4.1 nie ma tych menedżerów.

środa, 12 października 2016

System operacyjny Haiku

Haiku to otwartoźródłowy system operacyjny, skierowany do użytkowników komputerów osobistych, który został zainspirowany systemem BeOS.

System BeOS został opracowany przez firmę Be Inc. i zaprojektowany do zastosowań multimedialnych. BeOS jest zgodny z interfejsem POSIX i wykorzystuje system plików BFS (Be File System). Jest dostępny na architektury PowerPC i Intel x86. Pierwsze wydanie powstało w 1995 roku a ostatnie R5.0.3 w roku 2000. W 2001 roku prawa autorskie do BeOS-a zostały odsprzedane firmie Palm, znanemu producentowi komputerów kieszonkowych. W związku z brakiem zainteresowania ze strony Palma rozwojem tego systemu oraz nieupublicznieniem kodu źródłowego trwają obecnie prace nad stworzeniem otwartego odpowiednika tego systemu. Jednym z takich projektów jest system operacyjny Haiku.

Projekt powstał w 2001 roku pod nazwą OpenBeOS. W 2004 roku zmieniono nazwę na Haiku. Haiku jest otwartoźródłowym systemem operacyjnym, skierowanym do użytkowników komputerów osobistych. Celem projektu Haiku jest zgodność z BeOS-em R5 na poziomie źródłowym i binarnym, co ma pozwolić na kompilacje i uruchomianie aplikacji napisanych dla BeOS. System napisany jest w języku programowania C++ i dostarcza obiektowo zorientowane API (Interfejs Programowania Aplikacji). Haiku rozwijany jest od 2001 roku, lecz jest ciągle w wersji testowej Alpha (ostatnia wersja rozwojowa to Haiku R1/Alpha 4.1 z 2012 roku).

Specyfikacja Haiku R1/Alpha 4.1 :
Data wydania: 2012-11-14
Strona domowa: http://haiku-os.org
Architektura: x86_32
Jądro: hybrydowe
Licencja: MIT
Minimalne wymagania sprzętowe: Intel Pentium, 128 MB RAM
Zalecane wymagania sprzętowe: Intel Pentium III, 256 MB RAM

Obrazy instalacyjne ostatniej oficjalnej wersji rozwojowej systemu operacyjnego Haiku można pobrać ze strony: https://www.haiku-os.org/get-haiku

Jednak oficjalna wersja (aktualnie R1/Alpha 4.1) ma pewną wadę - brakuje graficznego menedżera pakietów HaikuDepot oraz tekstowego pkgman. Warto ściągnąć bardziej aktualne obrazy systemu tzw. nightly images
Uwaga - te wersje mogą być dosyć niestabilne.

Nie miałem pod ręką żadnej wolnej maszyny, nawet starej, więc zainstalowałem Haiku jako maszynę wirtualną pod VirtualBox-em, który jest dostępny dla systemów Linux, Windows, OS X oraz Oracle Solaris. Na początku zainstalowałem wersję R1/Alpha 4.1, ale brakowało mi menedżerów pakietów, więc zainstalowałem najnowszą wersję testową z nightly images.

Oto kilka zrzutów ekranu systemu operacyjnego Haiku:






Haiku jako konsolę tekstową wykorzystuje powłokę bash. Dużo komend tekstowych jest takich samych jak w linuksie, ale jądro systemu Haiku nie ma nic wspólnego z linuksem!

poniedziałek, 13 czerwca 2016

SimpleHTTPServer

Mając do dyspozycji język Python możemy szybko uruchomić serwer www udostępniający pliki w sieci LAN. W systemie Linux, pythona mamy już zainstalowanego. Pod Windows musimy go doinstalować; tak samo na Androida mamy np. QPython . Dzięki temu udogodnieniu możemy wymieniać pliki pomiędzy różnymi urządzeniami (systemami operacyjnymi) np. możemy szybko przesłać zdjęcie z telefonu na komputer bez używania kabla USB lub czytnika kart pamięci.

Aby uruchomić serwer www udostępniający pliki wydajemy następujące polecenie:

Linux, Windows (Python 2.x):

python -m SimpleHTTPServer 5888

Linux, Windows (Python 3.x):

python -m http.server 5888 

Android (QPython 3.x, tylko interpreter poleceń):

>>> import os
>>> os.system("python -m http.server 5888")

Po wydaniu powyższych poleceń udostępniana jest zawartość katalogu, w którym polecenie python -m ... zostało wykonane. Aby zobaczyć pliki z tego katalogu na kliencie trzeba uruchomić dowolną przeglądarkę www i w pasku adresu wpisać:

http://adres_ip_hosta:5888

np.

http://192.168.0.15:5888

5888 - numer portu, na którym została uruchomiona usługa www. Uruchomienie serwera www na porcie 80 (zakres 0-1023; porty systemowe Uniksa) wymaga uprawnień root-a.

wtorek, 17 maja 2016

Test programów antywirusowych

W serwisie www.virustotal.com można przesłać dowolny plik w celu przeskanowania go online przez ponad 50 programów (silników) antywirusowych pod kątem złośliwego oprogramowania.

Wykorzystując ten serwis stworzyłem prosty test skuteczności różnych programów antywirusowych dla wirusa testowego EICAR, który został stworzony przez Europejski Instytut Badań Wirusów Komputerowych (ang. European Institute for Computer Antivirus Research, EICAR) - www.eicar.org . Testowy wirus nie czyni żadnych szkód, jest to po prostu ciąg znaków, który wykryty przez program antywirusowy spowoduje wyskoczenie okienka z komunikatem o znalezionym wirusie. Kod pliku EICAR wygląda tak:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Powyższy ciąg znaków można zapisać do pliku .com, .bin, .txt lub dowolnego innego i testować skuteczność ochrony antywirusowej. Jeżeli ochrona działa w czasie rzeczywistym, to takiego pliku nie będzie się dało nawet zapisać na dysku. Można taki plik skompresować np. do archiwum .zip i sprawdzić czy antywirus radzi sobie z archiwami.

Test wykrywalności pliku EICAR przez różne antywirusy (VirusTotal):


Ja do swoich testów użyłem 9 różnych wariantów wirusa testowego EICAR. Wyniki testów i zrzuty ekranu z serwisu VirusTotal znajdują się w tabeli poniżej:

RODZAJ PLIKU TESTOWEGO EICAR PROCENT ANTYWIRUSÓW, KTÓRE WYKRYŁY ZŁOŚLIWY KOD WYNIKI (ZRZUTY EKRANU Z VIRUSTOTAL)
Czysty kod EICAR (oryginalny plik wirusa testowego EICAR) 96.4 % 01_plain.jpg
Plik testowego wirusa zakodowany Base64 27.3 % 02_base64.jpg
Plik testowego wirusa spakowany Zipem 87.5 % 03_zip.jpg
Plik podwójnie spakowany Zipem 82.1 % 04_zip-zip.jpg
Plik pięciokrotnie spakowany Zipem 75.0 % 05_zip-zip-zip-zip-zip.jpg
Plik spakowany programem 7zip 71.4 % 06_7zip.jpg
Dodany jeden bajt na początku pliku 37.5 % 07_a.jpg
Dodane 32 bajty na początku i na końcu pliku 14.3 % 08_b.jpg
Kod Eicar zaszyty w pliku LibreOffice Writer .odt 3.6 % 09_libre_office.jpg

Jak widać dwa antywirusy w ogóle nie wykrywają pliku testowego EICAR. Natomiast tylko dwa antywirusy znajdują ciąg EICAR zapisany w pliku .odt (LibreOffice / OpenOffice).

Test, który przeprowadziłem mówi nam jakie możliwości ma silnik antywirusowy tzn. czy wykrywa wirusa zakodowanego algorytmem Base64 lub wielokrotnie spakowanego itp. Jeżeli chodzi o ilość wykrywanych wirusów, robaków, trojanów i innych złośliwych tworów, to skuteczność zależy od baz sygnatur wirusów zaimplementowanych w oprogramowaniu antywirusowym.

niedziela, 17 kwietnia 2016

Jednolinijkowe generatory melodii

Na blogu countercomplex znalazłem ciekawy artykuł jak generować 8-bitowe oldskulowe (podobne do tych z gier z lat 80-tych) melodie za pomocą jednej linijki kodu w języku C. Poniżej dwa przykładowe programy:

main(t){for(t=0;;t++)putchar((t*5&t>>7)|(t*3&t>>10));}

main(t){for(t=0;;t++)putchar((t>>6|t|t>>(t>>16))*10+((t>>11)&7));}

Powyższe programy kompilujemy następująco:

gcc sound.c -o sound

Aby odtworzyć dźwięk z naszego generatora o nazwie sound, należy przekierować jego standardowe wyjście na standardowe wejście odtwarzacza audio np. aplay (Linux) za pomocą potoku |:

./sound | aplay

W komentarzach do artykułu na blogu countercomplex jest dużo innych przykładów - można poeksperymentować modyfikując funkcję putchar().

Źródła
http://countercomplex.blogspot.com/2011/10/algorithmic-symphonies-from-one-line-of.html 
http://countercomplex.blogspot.com/2011/10/some-deep-analysis-of-one-line-music.html 
 

środa, 9 marca 2016

Kody ASCII

Ostatnio potrzebowałem skorzystać z kodów ASCII w konsoli systemu Windows. Oczywiście można znaleźć gotowe tablice z kodami ASCII w internecie, ale rozszerzone kody ASCII są zależne od systemu operacyjnego oraz strony kodowej. Tak więc stworzyłem prosty programik ascii-codes, który wyświetla symbole (znaki) dla kodów ASCII od 0 do 255.


ASCII (ang. American Standard Code for Information Interchange) – 7-bitowy kod przyporządkowujący liczby z zakresu 0−127: literom alfabetu angielskiego, cyfrom, znakom przestankowym i innym symbolom oraz poleceniom sterującym. Na przykład litera „a” jest kodowana jako liczba 97, a znak spacji jest kodowany jako 32. Znaki ASCII dzielimy na:
- sterujące (kody 0 - 31 oraz 127),
- drukowalne (kody 32 - 126).
Ponieważ kod ASCII jest 7-bitowy, a większość komputerów operuje na 8-bitowych bajtach, dodatkowy bit można wykorzystać na powiększenie zbioru kodowanych znaków do 256 symboli, a więc mamy:
- znaki ASCII rozszerzone (kody 128 - 255) - uzależnione od strony kodowej.

Stronę kodową konsoli Windows sprawdzamy poleceniem:

mode con cp

a ustawiamy poleceniem:

mode con cp=[strona kodowa]

np.

mode con cp=1250

Kod programu ascii-codes.c:
/*
 *  -----------------------------------------
 *  ASCII Codes 1.0
 *  -----------------------------------------
 *  Author: Adam Blaszczyk
 *          http://wyciekpamieci.blogspot.com
 *  Date:   2016-03-08
 *  -----------------------------------------
 *  
 *  Compilation (Linux, Windows):
 *         gcc ascii-codes.c -o ascii-codes -Wall
 *
 *  Usage:
 *         ascii-codes
 *         - ASCII and Extended ASCII *printable* characters between 32 and 255
 *         ascii-codes min
 *         - ASCII and Extended ASCII characters between [min] and 255
 *         ascii-codes min max
 *         - ASCII and Extended ASCII characters between [min] and [max]
 *
 */

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
  
  int ch;
  int min = 32;
  int max = 255;

  if(argc == 2)
    min = atoi(argv[1]);
  if(argc == 3) {
    min = atoi(argv[1]);
    max = atoi(argv[2]);
  }

  printf("\n");
  printf("  ASCII CODES\n");
  printf("  ==============================================\n");
  printf("     0 -  31; 127 --> ASCII control characters\n");
  printf("    32 - 126      --> ASCII printable characters\n");
  printf("   128 - 255      --> Extended ASCII characters\n");

  printf("\n");
  printf("  +-------+------+-----------+\n");
  printf("  |  DEC  |  HEX | Character |\n");
  printf("  +-------+------+-----------+\n");
  
  for(ch = min; ch <= max; ch++) {
    printf("  |  %03d  |  %02X  |     %c     |\n", ch, ch, ch);
  }
  
  printf("\nPress [ENTER] to exit...");
  getchar();

  return 0;
}
https://github.com/adamblaszczyk/ascii-codes 

Program da się skompilować pod Windows i Linux za pomocą gcc:

gcc ascii-codes.c -o ascii-codes -Wall

Przykładowe użycie programu:

ascii-codes
Wyświetla drukowalne znaki ASCII o kodach od 32 do 255,

ascii-codes 1
Wyświetla znaki ASCII o kodach od 1 do 255,

ascii-codes 174 181
Wyświetla znaki ASCII o kodach od 174 do 181.