Skocz do zawartości


Zdjęcie

Mój autorski projekt: Skynet

szczyglis skynet framework narzędzie

  • Please log in to reply
11 replies to this topic

#1

szczyglis.
  • Postów: 1174
  • Tematów: 23
  • Płeć:Mężczyzna
Reputacja znakomita
Reputacja

Napisano

W zasadzie miałem o tym nie pisać, ale się podzielę. Urgon stwierdził, że mój stary wąż ma złe proporcje głowy:
 

 
Więc się podzielę innym wężem, ale już nie graficznym, tylko programistycznym, bo jakiś czas temu stworzyłem ciekawe narzędzie. Całość opiera się na koncepcji stworzenia frameworka (co mi się udało), za pomocą którego można umieszczać na serwerach tzw. "klastry" - tak to nazwałem. Zresztą nazwa nieprzypadkowa - wzorowana na systemie rozproszonym znanym z Terminatora. Nie chcę dwa razy pisać, więc przekleję opis jaki kiedyś napisałem na forum obok, plus ułamek  z dokumentacji (niestety zrobiłem ją tylko po angielsku, no bo taka branża...), więc pół na pół:

 

skynet.png
(obecna wersja)
 

 

Projekt: Skynet, czyli... Szczygliś pracuje nad "czymś dużym"...

Co byście powiedzieli na to, że powiedzmy od jakiegoś tam czasu pracuję nad dość ciekawą rzeczą i że nazwa tego projektu jest w pewien sposób związana z koncepcją znaną z filmów o Terminatorze?  Otóż jestem na ukończeniu "czegoś". Na chwilę obecną ma to "coś" ponad 20tys. linijek kodu (obecnie o rząd wielkości więcej - przyp. z teraz) i jest to narzędzie, które może lekko pozamiatać jeśli zostanie poprawnie użyte.

Mały screen z kilkoma linijkami jakich tysiące:
OR0PskX.jpg

W każdym razie nigdzie nie spotkałem się jeszcze z czymś takim, stąd samemu wziąłem się za stworzenie. Takie moje "malutkie" dziecko.

Mały screen z debuggera:
HiWBBeD.jpg

A o co generalnie chodzi? Ano o to, że wyobraźcie sobie, że istnieje pewien soft/program/skrypt/algorytm, który działa klastrowo - tzn. może być rozproszony, na wiele miejsc, wiele serwerów, przy czym mogą one komunikować się między sobą nawzajem, wymieniać dane itd., uzależniać swoje działanie od danych pobranych od innych "instancji" siebie samego, niezależnie od tego gdzie one się znajdują (mogą nawet na ISS). W dodatku prosty w obsłudze, gdzie każdy w prosty sposób może stworzyć taką "sieć" i gdzie każdy z elementów tej sieci potrafi się samo-replikować, a następnie dołączać do niej i co więcej sam, samoistnie aktualizować swój własny kod na zasadzie "update'u" pobieranego z innego, podobnego "klastra".

Gdzie każda "instancja" takiego klastra może być zdefiniowana po swojemu, dodając do niego w łatwy sposób nowy kod, np. do odpowiedzi na takie, a nie inne polecenie. Gdzie to wszystko posiada łatwy w użyciu interfejs, API dla programisty i wiele innych bajerów, dzięki którym można to zrobić łatwo i szybko. Gdzie wszystko to jest gotowe do użycia i finalnie kompilowane do TYLKO JEDNEGO pliku, który jest sam sobie "Panem" i jest niezależny od niczego innego, wystarczy go wrzucić gdziekolwiek się chce i będzie działać. Gdzie wiele takich klastrów potrafi rozmawiać ze sobą, wymieniać się danymi, powiadamiać o innych klastrach, tworzyć nowe, itd...

A to tylko kilka z możliwości. Po prostu wyobraźcie sobie coś takiego i pomyślcie, czy nazwa "Skynet" dla takiego hipotetycznego "tworu" tak startowo jest chyba w miarę odpowiednia, czyż nie? Idąc dalej, jeśli myślicie, że takich rzeczy nie ma, no to racja, nie ma.
No prawie nie ma. Bo leży takowa prawie gotowa na moim serwerze i jestem w trakcie kończenia pisania do tego dokumentacji (oj, dużoooo tego) zanim zostanie to udostępnione. A zostanie udostępnione i to za darmo.

W momencie, gdy skończę dokumentowanie, wrzucę tutaj info i namiary do całości, to zobaczycie co też takiego Szczygliś wymodził, a wymodził coś naprawdę potężnego. Mały screen z pisanej dokumentacji:
PiULyL0.jpg

Bez zbędnego chwalenia się powiem szczerze, że wszystkie appki, portale, i tego typu rzeczy jakie przez ok. 20 lat zajmowania się tymi tematami programowałem nawet nie podchodzą pod pięty tego projektu i tego jak mocno jest to zaawansowane narzędzie. Właściwie cała moja wiedza i doświadczenie nabyte przez te 20 lat jest w tym zawarta...

Tak więc, co Wy na to?
Szczygliś zły, że chce udostępnić coś takiego? Czy Szczygliś dobry, bo równie dobrze może to być szeroko wykorzystywane do pozytywnych rzeczy. Na swoje usprawiedliwienie dodam, że nawet w dokumentacji, którą obecnie piszę dodana jest wzmianka:
 

NOTE: Skynet can be some of kind C&C service and can offers powerful possibilites with this. Please do not use Skynet for illegal purposes.

Wycinek z właśnie pisanej dokumentacji:


Most important features of Skynet:

- Peer to peer clusters architecture
- Requesting and responding data via internal connections based on easy to use parameters
- Self updating registry about other clusters
- Broadcast mode (clusters to clusters | many-to-many automatic connections)
- Event Listeners based, easy to extend architecture of API
- It is only one file whitch is compiling from sources (you can extends Skynet by your own methods and compile all into single file)
- Powerful event log system
- Build-in console
- Works in two modes: browser and CLI
- Easy to integration with tools like CRON
- Administration panel via browser
- PDO multiple database engines support
- Self-update engine (even via remote)
- Self-clone engine (even via remote)
- Easy to extends and customization
- Factory based connections adapters (you can implements you own connection methods)
- Factory based data encryption (you can implements you own algorythms)
- Factory based event and logger listeners (you can create your own listeners and data loggers)
- Sending responses via email engine included
- Sleep and wakeup clusters commands included
- Full API documentation in PHPDOC
- It's all in one


Wieszajcie psy, lub chylcie czoła.
Niebawem na GitHubie do pobrania.
Opowiem więcej, gdy wszystko będzie ukończone (na dniach).

 

----------------------------------------------------

 

^ Tak pisałem na starcie (powyższe zostało napisane przed ukończeniem projektu, kilka miesięcy temu - do wersji alpha), w obecnej wersji - już stabilnej - v. 1.2.1 - Skynet jest już ukończony, pełną dokumentację oraz stabilną wersję Skyneta do pobrania można znaleźć na jego oficjalnej stronie, jest wzbogacony o milion nowych opcji i jest darmowy (licencja GNU/GPL). Pewnie mało kogo to zainteresuje, ale jeśli ktoś jest zaciekawiony na jakie możliwości pozwala ten system, to można się zapoznać. Wszystko udostępniam za darmo.

 

Strona projektu: https://skynetframework.blogspot.com/

Do pobrania i przetestowania na GitHubie: https://github.com/szczyglinski/skynet

 

A gdyby ktoś myślał, że jakaś ściema, to link do renomowanego w branży portalu HotScripts, gdzie po weryfikacji i testach zamieścili moje narzędzie:

http://www.hotscript...ynet-framework/

 

Tym samym, jeśli kogoś nie przerazi dokumentacja (a starałem się ją pisać tak, aby zrozumiał nawet laik), to zapraszam do korzystania.

To może być bardzo przydatna rzecz do zdalnej kontroli nad np. serwerami, planowaniem zadań, zniszczeniem świata, czegokolwiek... :) Całość jest dość trudna w obsłudze (no bo potężna to bestia), ale to zabieg celowy, gdyż nie jest to zabawka dla dzieci. Dokumentacja jednak tłumaczy wszystko krok po kroku i każdy zainteresowany się w tym odnajdzie,

 

PS. Po przetestowaniu może nawet D.K. się na to porwie (?). To może być dobra rzecz nawet do zdalnej kontroli nad backupami z paranormalne.pl i wielu innych ciekawych działań. :)

 

Tu ładny kawałek (przed zruganiem mnie proszę przesłuchać, by się odstresować) ;)

 

 

Kiedyś będzie o moim skynecie głośno, jeszcze nie dziś, ale to kwestia czasu.


Użytkownik szczyglis edytował ten post 26.05.2017 - 02:48




#2

­­ ­­ ­­ ­­ ­­.
  • Postów: 487
  • Tematów: 76
  • Płeć:Mężczyzna
  • Artykułów: 4
Reputacja dobra
Reputacja

Napisano

Doceniam pracę nad tym "czymś" sam kiedyś miałem styczność z kodowaniem, głównie tworzeniem stron internetowych, ale też skryptów. Czasochłonne zajęcie...

Oby to narzędzie posłużyło tylko do czystych intencji.



#3

Staniq.

    In principio erat Verbum.

  • Postów: 6686
  • Tematów: 774
  • Płeć:Mężczyzna
  • Artykułów: 28
Reputacja znakomita
Reputacja

Napisano

Mam nadzieję, że zostawiłeś tam jakiegoś backdoor'a, na wypadek utraty kontroli nad projektem. Wiem, to nie jest fantastyka i program nie zacznie samodzielnie myśleć, ale w przypadku niewłaściwych zastosowań warto mieć dostęp do miejsca, gdzie można "wyciągnąć wtyczkę".

Jestem "zielenina" jeżeli chodzi o programowanie, bo moje osiągnięcia skończyły się na asemblerze i basicu. Dalej nie było czasu. 

Pytanie brzmi:

- czy końcowy użytkownik (w domyśle Staniq) będzie miał pożytek z tego programu,

- jakiego rodzaju ten pożytek będzie,

- jaki ma to wpływ na bezpieczeństwo (sieci, urządzeń, danych itp.),

- czy wprowadzanie (nazwę to ogólnie) modyfikacji przez końcowego użytkownika ma sens, czy może lepiej dostarczać mu "gotowce" w postaci programów lub apek.

Rozumiem ideę, samoochrona przed zniszczeniem programu i coś, co nazwałbym pamięcią DNA. Jak zrozumiałem, każdy uszkodzony, niepełny fragment programu będzie się replikował do ostatniej wersji z zachowaniem "wiedzy" na bieżącym poziomie.

Czy nie grozi to niekontrolowanym rozrostem programu do niebotycznych rozmiarów? Programiści windy sobie z tym nie poradzili i jeżeli ktoś nie potrafi sobie posprzątać śmieci to po roku użytkowania ma ilość gruzu co najmniej na poziomie kilku giga.

To tak na szybko, bo im dalej w las, tym więcej drzew....





#4

szczyglis.
  • Postów: 1174
  • Tematów: 23
  • Płeć:Mężczyzna
Reputacja znakomita
Reputacja

Napisano

@Staniq,

 

 

- czy końcowy użytkownik (w domyśle Staniq) będzie miał pożytek z tego programu,

Nie, jeśli się nie znasz na tych sprawach. To bardziej narzędzie dla ludzi, którzy mają co nieco wspólnego z programowaniem - taka wędka, zamiast rybki, aczkolwiek z wbudowanymi funkcjonalnościami w stylu gotowej rybki. Ale już np. stawiając gdzieś własny serwer, możesz wykorzystać to do automatyzacji pewnych spraw. To tak odnośnie tej "jasnej strony mocy", bo po "ciemnej stronie mocy", równie dobrze możesz to podrzucić na czyjś serwer (czego zabraniam w dokumentacji) i wtedy masz pełną kontrolę nad czyimś serwerem.

 

 

jakiego rodzaju ten pożytek będzie,

Jak wyżej.

 

 

jaki ma to wpływ na bezpieczeństwo (sieci, urządzeń, danych itp.),

 

Właściwie takie, jakie ma nóż leżący w kuchni. Nożem można przygotować smaczne kanapki, ale można też i zabić. Wszystko zależy od wykorzystania, aczkolwiek jeśli chodzi o użytkownika końcowego, to skynet właśnie niweluje kwestie niebezpieczeństwa, bo nie raz i nie dwa ludzie piszą swoje własne rozwiązania do pewnych działań, często dziurawe, słabo zabezpieczone, etc. Skynet zdejmuje z użytkownika wszystkie problemy związane z bezpieczną komunikacją - sam obsługuje całą komunikację, etc. w dodatku cały ruch jest szyfrowany (nie da się podpiąć pod czyjegoś skyneta nie znając klucza), można też doimplementować swoje szyfrowanie: https://skynetframew...encryption.html. W każdym razie wszystkie przesyłane dane są zabezpieczone w taki sposób, że przechwytując ruch otrzyma się jedynie ciąg niezrozumiałych znaków, jeśli nie zna się klucza ustawionego do komunikacji pomiędzy klastrami.

 

Powodzenia z rozszyfrowaniem ;)

3vVU4Dk.png

 

 

- czy wprowadzanie (nazwę to ogólnie) modyfikacji przez końcowego użytkownika ma sens, czy może lepiej dostarczać mu "gotowce" w postaci programów lub apek.

Skynet to framework - jak wspomniałem wędka, nie rybka. Ma kilka wbudowanych najpotrzebniejszych opcji (przesyłanie plików, obsługa całego systemu plików, uruchamianie zdalnie aplikacji, zwracanie ich wyników, dostęp do bazy danych, klonowanie, ustawianie parametrów, przesyłanie ich, wykonywanie komend, wysyłanie emaili i dużo innych), ale cały myk i główna koncepcja polega na tym, żeby to użytkownik dodawał tam swoje funkcje: https://skynetframew...ep-by-step.html. Po dodaniu nowych opcji wszystko kompiluje się razem z resztą do jednego pliku i jedyne co pozostaje to wrzucenie tylko tego jednego, skompilowanego pliku na serwer: https://skynetframew...standalone.html. Dodając potem np. jakieś nowe funkcje na jednym serwerze można ten nowy kod wysłać innemu skynetowi - przekompiluje się on do nowej wersji, z nowymi opcjami. Wszystko zdalnie, za pomocą raptem jednej komendy:  https://skynetframew...f-updating.html

 

 

Czy nie grozi to niekontrolowanym rozrostem programu do niebotycznych rozmiarów?

Nie nie, tzn. zależy jak kto tego użyje, ale coś takiego, że np. program zwariuje jest niemożliwe, gdyż zwyczajnie zerwie wtedy całą komunikację.

 

PS. Nie ma backdoora (kod jest otwarty, takowy zostałby szybko wykryty i wykorzystany), ale jest coś w stylu "wyciągnięcia wtyczki" - jest komenda na zdalne wyłączenie wszystkich podłączonych klastrów: https://skynetframew...te-destroy.html

 

PPS. Skompilowany do jednego pliku skynet:

https://github.com/s...ster/skynet.php

Trochę kodu jest ;)


Użytkownik szczyglis edytował ten post 27.05.2017 - 16:40




#5

Zaciekawiony.
  • Postów: 8137
  • Tematów: 85
  • Płeć:Mężczyzna
  • Artykułów: 4
Reputacja znakomita
Reputacja

Napisano

 

"jakiego rodzaju ten pożytek będzie,"

Jak wyżej.

czyli żaden jeśli nie znasz się na "tych sprawach".

 

A można wyjaśnić dla tych którzy się nie znają, co w tym takiego nowego i niezwykłego?





#6

szczyglis.
  • Postów: 1174
  • Tematów: 23
  • Płeć:Mężczyzna
Reputacja znakomita
Reputacja

Napisano

Zaciekawiony, no przecież wszystko jest opisane linijka po linijka, funkcja po funkcji, więc nie wiem jak inaczej miałbym to opisać. To tak jakby opisywać do czego może posłużyć klucz dynamometryczny - może do wielu rzeczy związanych z mechaniką, przy czym zastosowań może być tyle, co potrzeb i pomysłów. Albo inaczej - do czego może posłużyć system operacyjny na dysku twardym? Trudno powiedzieć do czego, bo praktycznie do tego, do czego zapragniesz go użyć.

 

A co nowego i niezwykłego? Dokładnie to, co uwzględniłem w opisie - nie istnieje żaden pakiet integrujący wszystkie te opcje w jedno i służący do prostego implementowania w nim swoich funkcji. Z takim podejściem jakie wykorzystałem (dodajesz nową klasę reagującą na dane zdarzenia za pomocą frameworka, kompilujesz do jednego pliku - wrzucasz na serwer, reszta klastrów robi to samo) jeszcze się nie spotkałem. Istnieją niby zbliżone rozwiązania typu np. Metasploit, ale operują na komunikacji "jeden do jednego", a nie "wielu-do-wielu", w dodatku są one o rząd wielkości bardziej złożone w obsłudze i używane jedynie do "mniej legalnych" działań.


Użytkownik szczyglis edytował ten post 27.05.2017 - 17:45




#7 Gość_Asriel

Gość_Asriel.
  • Tematów: 0

Napisano

Zrób sobie kopię zapasową, bo tego typu rzeczy antywirusy mogą skasować. Sam miałem taką sytuację.



#8

TheToxic.

    Faber est quisque suae fortunae

  • Postów: 1654
  • Tematów: 59
  • Płeć:Kobieta
Reputacja znakomita
Reputacja

Napisano

@Asriel

Nie jestem programistą ale co ma piernik do wiatraka? Przecież napisany program wrzuci na zewnętrzny serwer, co ma do tego antywirus zapisany na komputerze? 

No chyba, że trzyma go na swoim Apaczu to zwracam honor.





#9

Staniq.

    In principio erat Verbum.

  • Postów: 6686
  • Tematów: 774
  • Płeć:Mężczyzna
  • Artykułów: 28
Reputacja znakomita
Reputacja

Napisano

To może być doskonała podstawa do oprogramowania dla ruterów. Niemniej pożytek z tego może być wielki. Nie daj tego popsuć komuś.





#10 Gość_Asriel

Gość_Asriel.
  • Tematów: 0

Napisano

@TheToxic

 

Wiem z własnego doświadczenia, że wystarczy chwila nieuwagi, żeby antywirus usunął podejrzane pliki. Niektóre blokują od razu po zapisaniu, albo przy starcie komputera. Dlatego najlepiej stworzyć dodatkowy folder i wykluczyć go z "opieki" antywirusa. Tam wszystkie pliki będą bezpieczne.



#11

­­ ­­ ­­ ­­ ­­.
  • Postów: 487
  • Tematów: 76
  • Płeć:Mężczyzna
  • Artykułów: 4
Reputacja dobra
Reputacja

Napisano

A te korzyści? jakieś przykłady mógłbyś wymienić? do czego można byłoby użyć skynet'u? czy da się to narzędzie wykorzystać komercyjnie? w celach promocyjnych? czy mogłoby się przydać wolontariuszom i zwykłym pracownikom?



#12

TheWalkingAlive.
  • Postów: 72
  • Tematów: 16
  • Płeć:Mężczyzna
Reputacja zadowalająca
Reputacja

Napisano

Jestem pod ogromnym wrażeniem... :omg:
Nie zagłębiłem się jeszcze w dokumentację, zrobię to po pracy.
 
Widzę w tym frameworku niesamowity potencjał.
Jestem w połowie prac (pod koniec i tak okaże się, że jest drugie tyle do zrobienia :P) nad pewnym projektem (gra z elementami planszówki, szachów, kart, strategii i jeszcze kilkoma)
 
Zamiast wrzucać setki plików na jeden hosting, można podzielić aplikację na kilka klastrów rozlokowanych na różnych maszynach. Wtedy każdy serwer będzie odpowiadał za inną funkcję aplikacji, co przy dużych i wymagających aplikacjach jest bardzo dobrym rozwiązaniem, np. systemy SAP.
 
Wieczorkiem na pewno przysiądę i zacznę testować :)
 
P.S.
 
Na dobrą sprawę Skynet może posłużyć jako rdzeń SI :P Wystarczy skrypt, który będzie się powoli uczył, udoskonalał sam siebie (przeprogramowywał) a rozlokowany na tysiącach klastrów, nawet wolno uczący się program będzie uczył się bardzo szybko.

P.S. 2.
Gdzie jest zapisywany klucz szyfrujący?

Użytkownik TheWalkingAlive edytował ten post 03.07.2017 - 13:28




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych