RPI4를 고객에게 평가판으로 전달해야 하는데 코드 실행을 100회로 제한하거나 30일(특정 날짜) 후에 시작되지 않도록 시간 제한을 설정하고 싶습니다. RPI에 I2C-RTC DS3231을 설치했습니다.
확인했지만 crontab
날짜 이후 실행을 제한하는 데 사용할 수 있는지 잘 모르겠습니다.
몇 가지 메모
- 사용자는 Pi에 액세스할 수 없습니다. Pi가 부팅되면 코드가 실행되기 시작합니다.
- 이 응용 프로그램에는 인터넷 접속이 필요하지 않으며 주변에서 인터넷을 사용할 수 없습니다.
최종 사용자가 특정 날짜 이후에 실행할 수 있는 횟수와 실행할 수 없는 횟수를 제한하는 방법이 있습니까?
답변1
귀하가 묻는 질문은 UNIX/Linux에만 국한된 것이 아니라 귀하의 응용 프로그램에만 해당됩니다. 이 애플리케이션은 턴키 시스템의 일부로 제공되므로 유연성이 뛰어납니다.
쉽지 않은 것은 언급하지 않은 Pi 관련 문제를 처리하는 방법입니다. SD 카드에 액세스할 수 있는 경우 누군가가 시스템의 모든 파일에 대해 승인되지 않은 변경을 수행할 수 있습니다. 여기에는 루트에 해당하는 계정 추가, 네트워크 액세스 활성화, 평가 시간 초과 코드 우회 등이 포함됩니다.
이 문제를 해결하려면 SD 카드를 제거할 수 없도록(접착!) 하거나, 모호함을 통해 보안을 구현하거나, 일종의 암호화/암호 해독/토큰화 서비스를 제공하기 위해 Pi에 추가 패키지를 추가해야 합니다.
또한 라이센스 기간을 원격으로 연장하는 방법도 고려하십시오. 특히 장치에 네트워크 액세스가 없는 경우 더욱 그렇습니다. 여기서 해결책을 제안하지는 않지만 새 라이센스 파일을 업로드할 수 있는 응용 프로그램의 특수 메뉴 옵션일 수 있습니다.
먼저 고객에게 사용 횟수를 100회 또는 한 달로 제한하는 계약에 서명하도록 하세요.
그런 다음 기술적인 솔루션을 살펴보세요. 예를 들어 애플리케이션에 라이센스 파일을 구현합니다.
변조를 방지하기 위해 초기 패키지의 일부로 해당 라이센스 파일에 다음을 포함하는 것을 고려합니다.
- 종료 날짜는 파일에서 가능한 최대 값으로 설정되어야 합니다(예: 3개월 전).
- 파일에 실행 중인 카운터가 있어야 합니다:= 0
- 이 두 값에 대한 파일에는 "비밀 해시"가 있어야 합니다. 이러한 "비밀 해시"에는 애플리케이션에만 알려진 비밀이 포함되어야 합니다.
애플리케이션이 시작되면 해당 규칙은 다음과 같습니다.
- 파일이 없으면 실행하지 마세요
- 파일에 잘못된 데이터(날짜/카운터 값 및 "비밀 해시" 불일치 포함)가 포함된 경우 실행하지 마세요.
- 파일에 유효한 데이터가 포함되어 있지만 만료 날짜나 실행 횟수를 초과한 경우 실행하지 마세요.
- 실행 카운터가 0이면 만료 날짜를 오늘부터 1개월로 설정합니다.
- 러닝 카운터 늘리기
- "비밀 해시" 업데이트
답변2
이 특정 문제에 대한 몇 가지 해결책이 있습니다. 이 문제를 해결하는 가장 우아한 방법은 애플리케이션에서 스크립트를 만드는 것입니다. 이 스크립트는 무슨 일이 있어도 실제 프로그램/코드를 실행합니다.
SQL 데이터베이스 또는 유사한 데이터베이스에 모든 날짜(현재 날짜 및 프로그램 실행 날짜)를 기록할 수 있습니다. 항목이 100개를 초과하거나 처음 실행 후 30일이 넘은 경우 여기에서 확인을 생성할 수 있습니다. 고객이 활성화 키를 입력해야 하거나 다시 잠금을 해제하기 위해 생성한 항목을 입력해야 하는 오류 메시지를 생성할 수 있습니다.
이것이 가장 기업적인 접근 방식이 될 것입니다. 그리고 이 코드는 재사용이 가능합니다.
건배