Buduję dość złożony interpretowany program w Pythonie. Pracuję nad większością tego kodu do innych celów od kilku miesięcy i dlatego nie chcę, aby mój klient mógł po prostu skopiować i spróbować go sprzedać, ponieważ uważam, że jest on wart sporej kwoty.
Problem polega na tym, że potrzebuję skryptu, aby działał na serwerze, za który mój klient płaci, więc czy mogę w jakiś sposób zabezpieczyć określony folder na komputerze przed dostępem do katalogu głównego lub sprawić, aby tylko jedno użycie mogło uzyskać dostęp do katalogu ? System operacyjny to Ubuntu.
python
code-security
Mike Partridge
źródło
źródło
root
możesz robić wszystko .Odpowiedzi:
Licencjonuj to.
Naprawdę to wszystko!
źródło
Zawsze możesz skompilować wszystkie swoje pliki do bajtu kodu pyc. Istnieją dekompilatory, które mogą generować z niego kod źródłowy, ale nic poważnego.
Jednak to tylko rozwiąże możliwość odczytania kodu twojego programu. Jedynym sposobem ochrony jest licencjonowanie go, jak powiedział nightcracker, ponieważ nawet jeśli skompilowałeś swój kod, powiedzmy kod maszynowy, jeśli twoja praca nie jest chroniona przez licencję, nadal może być komercjalizowana wbrew twojej woli.
Podsumowując, skompiluj kod bajtowy i, co ważniejsze, licencjonuj go
źródło
Użyj Cython. Umożliwi to skompilowanie programu jako natywnego pliku wykonywalnego. Wtedy kradzież powinna być o wiele trudniejsza.
Jeśli chodzi o katalog, jedyną radą, jaką mogę ci dać, jest upewnienie się, że masz poprawnie skonfigurowane uprawnienia. Listy ACL mogą być twoim przyjacielem, chociaż nie jestem w 100% pewien, że mogą ograniczyć dostęp roota do pliku. Nawet jeśli mogliby, root może nadal zmienić uprawnienia. Jest rootem, jest bogiem - tak właśnie działają te rzeczy.
http://www.korokithakis.net/node/109
źródło
Jak pokazał powyższy użytkownik, dezasemblery mogą odzyskać kod, ale na razie nie jest on bardzo czytelny (przynajmniej nie dla dezasemblerów open source).
Myślałem o tym i jednym ze sposobów, w jaki myślę, że możesz rozwiązać ten problem (jeśli nazywasz problem wymuszonym otwartym kodem), jest napisanie automatycznego skryptu faktoringowego. W rzeczywistości byłoby to dość proste. Po prostu nakarmiłbyś skrypt swoim modułem i zmieniłby on nazwy wszystkich zmiennych specyficznych dla modułu. To, wraz z wydaniem tylko skompilowanego pliku, wiele by zrobiło, aby zaciemnić twój kod.
Przeprowadzając wyszukiwanie w PyPI, znalazłem to: http://pypi.python.org/pypi/pyfuscate/0.1 . Powinieneś to sprawdzić, a innym się to podoba i zgłosić: D
Ponadto: Oczywiście powinieneś także uzyskać licencję.
źródło
Sugerowałbym też licencjonowanie. Oprócz licencjonowania, zaszyfrujmy kod źródłowy głównych procedur za pomocą algorytmu klucza asymetrycznego, aby mógł go uruchomić tylko komputer klienta. Jednym z kluczy w parze może być coś uzyskanego ze sprzętu (na przykład: numer seryjny karty sieciowej) komputera klienta. Użyj drugiego klucza z pary, aby odszyfrować kod źródłowy podczas uruchamiania programu. Zauważ, że jedynym możliwym do dostarczenia tekstem jawnym byłaby procedura deszyfrowania, a reszta tekstem szyfrowanym.
W ten sposób klient może skopiować i wkleić pozornie bełkotliwy kod, ale nie może go uruchomić w innym miejscu. Moja sugestia nie jest jednak całkowicie kuloodporna: interpreter może przechowywać odszyfrowany program gdzieś w pamięci. Może się zdarzyć, że jakiś haker odzyska twój program w postaci zwykłego tekstu podczas wykonywania.
Jeśli chodzi o uniemożliwienie dostępu do folderów root, zgadzam się, że root nie może zostać powstrzymany przed dostępem do plików / folderów.
źródło
ruby
/python
/node
z niestandardowym programem, który odzwierciedla API wykonania i generuje kod.Licencjonowanie jest najlepszą odpowiedzią tutaj. To powiedziawszy, dlaczego musi działać na ich sprzęcie? Jeśli jest to niezwykle ważne, możesz chcieć znaleźć usługę i zbudować jakiś interfejs API usługi wokół rzeczy, aby ludzie nie widzieli nawet twojej własności intelektualnej, aby ją ukraść.
źródło