Bezpieczny serwer WWW w BASH-u.
Strona opisuje bezpieczny serwer WWW napisany w niecałych 100 liniach w języku skryptowym BASH. Zawiera kod źródłowy i krótki opis wraz ze screenshotami.
- Autor:
- Quake , 641 dni temu
- Link:
-
http://quake.wikidot.com/www-server-in-100-line...
- linux bash www server 100 serwer internet ciekawostki
-
No tak, netcat ;)
-
[pokaż komentarz] +2
09-05-2008
netcat dobry jest :)
-
[pokaż komentarz] +16
10-05-2008
Tytuł pewnie jest trochę mylący dla młodego, nieulinuksiowionego wykopowego pokolenia : )
-
[pokaż komentarz] +2
10-05-2008
Nie da się ukryć, każdy z nas pomyślał o innym niż ten bashu... :)
-
[pokaż komentarz] 0
10-05-2008
Pewnie chodziło wam o http://bash.org.pl/ :D
Ja kiedyś zastanawiałem się co ludzie widzą zabawnego w stronce BASH-a (bo byłem przekonany, że to taka zwykła stronka o shellu, dopóki nie zajrzałem). -
[pokaż komentarz] -9
10-05-2008
ale ja nie rozumie wytłumacz mi to......
-
[pokaż komentarz] +22
10-05-2008
BASH to powłoka systemu Linux. Jedna z wielu dostępnych, ale chyba najczęściej stosowana. Umożliwia pisanie skryptów na bardzo wysokim poziomie, z wykorzystaniem gotowych programów (w przeciwieństwie do bibliotek w innych językach programowania).
Tu udało mi się napisać serwer <http://www w> BASH-u w niecałych stu liniach.
Wprawdzie istnieją podobne serwery, ale wszyscy ich twórcy zastrzegają, że nie należy ich stosować. Mój serwer jest wprawdzie wolny, gdy w grę wchodzi kilka połączeń na raz (bowiem może je zrealizować tylko po kolei), ale jest dość bezpieczny (jeśli się go używa z głową), aby móc go bez skrupółów uruchomić nie tylko dla zabawy, ale również, by podzielić się pewnymi plikami ze znajomymi w bardzo szybki sposób.
Przykładowe działanie jest zobrazowane screenshotami. -
[pokaż komentarz] 0
10-05-2008
Jest do tego wtyczka do PHPa ? :>
-
[pokaż komentarz] +1
10-05-2008
napisz serwer w php, i po problemie (używając socket_create). Lub użyj php w trybie cgi.
A swoją drogą, to nie myślałem że bash jest aż tak potężny. -
[pokaż komentarz] -1
10-05-2008
Bash jest potęzny. Ale przy dużych projektach jest po prostu nie czytelny.
-
[pokaż komentarz] +2
10-05-2008
Hehe, nawet myślałem o wsparciu wykonywaniu skryptów
Np. jeśli nazwa pliku kończy się na .qsmf (quake server magic file) to zamiast go catować do netcata, serwer by go wykonywał i dawał jego wyjście do netcata. Wtedy można w takim pliku używać dowolnych języków skryptowych: php, python, ruby, perl, bash ;) -
[pokaż komentarz] 0
10-05-2008
świetna sprawa ;D
-
[pokaż komentarz] +11
10-05-2008
Nie do końca jest to serwer ** http://www**, bo wszystkie pliki przesyła jako application/x-download-this.
-
[pokaż komentarz] +2
10-05-2008
To słuszna uwaga.
Jednak, zauważ, że serwer generuje HTML-owe wyjście, gdy zapytasz go o katalog. A że jest to serwer raczej do szybkiego udostępnienia komuś plików, to nawet specjalnie ustawiam taki typ MIME, żeby klient zdecydował się ściągać zamiast np. pobierać.
Pytanie jeszcze co znaczy serwer www, myślę, że to dość szerokie pojęcie :). -
[pokaż komentarz] +2
11-05-2008
Chwila moment, a pobierać i ściagać to nie to samo?
-
[pokaż komentarz] 0
11-05-2008
Kurde, faktycznie miało być ściągać, a nie wyświetlać :D
-
[pokaż komentarz] 0
17-05-2008
A nie wystarczyłoby:
"Content-Type: file --mime $file" -
[pokaż komentarz] +1
10-05-2008
chciałem go przetestować httperf... no chyba jednak za wysoką mu poprzeczke postawiłem :) bo httperf wywalił błęda po 4 sekundach (prawdopodobnie bashserwer nie nadarzał obsługiwać połączenia)... a szkoda :(
-
[pokaż komentarz] +2
10-05-2008
Dzięki za chęć zrobienia benchmarka. Aż sam byłbym ciekawy.
Serwer działa na zasadzie:
1. otwórz port
2. poczekaj na zgłoszenie
3. obsłuż zgłoszenie
3a. jeśli katalog, to daj listing z linkami
3b. jeśli plik, to daj cat
4. zamknij port
5. idź do 1
Łatwo sobie wyobrazić, że serwer nie obsłuży kilku połączeń na raz, a nawet sekwencyjne odpytywanie może się zakończyć niepowodzeniem, jeśli zapytanie przyjdzie dokładnie pomiędzy krokiem 4 i 5.
Niewątpliwą natomiast zaletą jest czas uruchamiania serwera (około 0 sekund) i instalacji (czas skopiowania do pliku + wpisanie bash nazwapliku numerportu -- jakieś 10 sekund).
Dzięki za wszystkie komentarze i wykopy, nie spodziewałem się TAKIEGO rezultatu :) -
[pokaż komentarz] +2
10-05-2008
Kawał dobrej roboty. Gz Quake!
-
[pokaż komentarz] -1
10-05-2008
pewnie i tak lepiej działa niż IIS :p
-
[pokaż komentarz] +1
10-05-2008
No chyba żartujesz :P IIS to całkiem niezły serwer.
-
[pokaż komentarz] +2
10-05-2008
Widzę, że trafiłem na maniaków religijnych, no cóż, tak to już jest z komputerami :)
-
[pokaż komentarz] +1
10-05-2008
Nie, trafiłeś na dyletantów. ;)
Polecam jeszcze artykuł:
http://webhosting.pl/kategorie/tips_tricks/software/jak_i_do_czego_wykorzystywac_netcat_spoofing_serwer_plikow_ http://www_uptime -
[pokaż komentarz] 0
10-05-2008
trafiłem na kilka serwerów <http://www w> BASH-u, ale większość jest zupełnie nieedukacyjnymi wybrykami w mniej niż 10 liniach. Mój serwer np. wycina wszystkie kropki, slesze i minusy z początku URL-a, oraz ciąg "..", co sprawia, że nie powinien on dać dostępu do plików, które nie znajdują się w katalogu bieżącym (no chyba, że ktoś zrobi sobie linka -- na własną prośbę)
-
[pokaż komentarz] 0
10-05-2008
fuck, w złym miejscu odpowiedziałem :/ miało byćdo Quake, a jak wyszło widać...
to się nazywa CGI :p -
[pokaż komentarz] +1
11-05-2008
no się nazywa i nie do końca, bo CGI to jednak pewien standard, nie będę nazywać czegoś co działa jak CGI tym terminem, bo jednak to nie do końca to samo ;)
-
[pokaż komentarz] +1
11-05-2008
niezle. oby wiecej takich wykopow.
niestety nie udalo mi sie uruchomic:
./ http://www.sh: line 63: nc: command not found
sob, 10 maj 2008, 22:45:11 UTC INFO Processing as file
sob, 10 maj 2008, 22:45:11 UTC INFO Killing nc
./ http://www.sh: line 74: kill: (3936) - Nie ma takiego procesu
sob, 10 maj 2008, 22:45:11 UTC INFO Running nc
i tak dalej i tak dalej....
brakuje mi pewnie jakiejś paczki. tylko w skład jakiego pakietu wchodzi nc i co to w ogóle jest nc? -
[pokaż komentarz] 0
11-05-2008
brakuje Ci netcata
Sprawdź czy masz komendę netcat (bo w niektórych dystrybucjach jest nc, w innych netcat).
Jeśli masz netcata a nie masz nc, to podmień po prostu nc na netcat i przetestuj.
Jeśli nie masz ani nc ani netcata, to ściągnij sobie z paczek do systemu.
Pamiętajmy, żeby nie próbować pogadawać portów poniżej 1000, gdyż może je tylko otworzyć program działający z prawami administratora systemu! -
[pokaż komentarz] +4
11-05-2008
Quake: Poniżej 1024.
-
[pokaż komentarz] +2
11-05-2008
Przepraszam. Błąd zaokrąglenia.
-
[pokaż komentarz] -1
11-05-2008
Ciekawe czy serwer w pliku .bat dałoby się napisać w 10^10^10^10 liniach... :)
-
[pokaż komentarz] +2
11-05-2008
Netcat jest też na windę, więc wydaje mi się, że czemu nie. :)
-
[pokaż komentarz] +1
11-05-2008
czyżby była jeszcze nadzieja dla wykopu? :)
może macie link do jakiegoś tutoriala "jak napisać prosty serwer http"? -
[pokaż komentarz] +1
11-05-2008
no, ale po co Ci tutorial ?
Naucz się basha (kursów w pi*** i troche na seci) i przeanalizuj kod serwera <http://www z> tego wykopu. Nauczysz się o wiele więcej niż z jakiegokolwiek tutka. -
[pokaż komentarz] 0
12-05-2008
dzięki, znam basha :P Na codzień korzystam z Linuksa i używam go dość często w różnego rodzaju skryptach. Nie jest trudny, to tylko kilka podstawowych operacji do spięcia programów znajdujących się w systemie.
Chodziło mi o tutorial
- jak zarezerwować sobie port x
- jak nadawać/odbierać na niego dane
- jakie cechy musi spełniać program, aby był serwerem.
Tutaj prawie wszystko robi netcat.
chcaił bym tutorial jak napisać coś znacznie prostrzego (serwer serwujący wyłącznie index.html, bez zabezpieczeń) i taki jak napisać coś znacznie trudniejszego w "prawdziwym" języku programowania np. Pythonie.
tak kod wiele pokazuje, on coś robi, ale nie wytłumaczy mi dlaczego to robi :P
-
[pokaż komentarz] 0
11-05-2008
Więc BASH jest językiem programowania?, a czy takim samym czy innym od ZSH, CSH?, jakie są różnice pomiędzy nimi?
-
[pokaż komentarz] +1
11-05-2008
BASH ( http://pl.wikipedia.org/wiki/Bash) jest shellem, ale zgodnie ze wszelkimi definicjami również językiem programowania.
Różnice w stosunku do innych shellów (jak np. wymienione przez Ciebie zsh, csh):
http://www.unix.com/answers-frequently-asked-questions/12274-difference-between-ksh-bash-different-shells.html -
[pokaż komentarz] 0
12-05-2008
Jesli ktos spotkalby sie z problemem dotyczacym niepoprawnych opcji do netcata, to interpretujac man'a do mojego nc:
-p source_port
... It is an error to use this option in conjunction with the -l option.
zmienilem linijkę:
nc -l -p "$port" < "$sin" > "$sout" &
na:
nc -l "$port" < "$sin" > "$sout" &
I wszystko smiga;) -
[pokaż komentarz] 0
12-05-2008
o to ciekawe, mamy chyba jakieś inne wersje ;)
Dodaj komentarz
Tylko zalogowani użytkownicy mogą dodawać komentarze.

Wykop
fanzonun
[pokaż komentarz] +2
09-05-2008