How to secure project using serial number, for example if using esp8266 and than for serial number get by chipflash id esp8266,
Make encription from chipflash id, like opertions + -, or / , or maybe using AES, Etc. Value from operations/encripsi save on eeprom, and value seved on eeprom comparated with value from variable input serial by user.
for example i using operator for generate serial.
but i have problem, value from operator not same with value which has been put into eeprom.
#include <EEPROM.h>
const int AddLic=0;
int password = 11222;
int input;
int dariEep;
int hasil; // for example serial number
void setup() {
Serial.begin(9600);
//EEPROM.begin();
Serial.println();
Serial.print("Chip ID: ");
Serial.println(ESP.getChipId());
int id=ESP.getChipId();
delay(1000);
hasil = password+id;
Serial.print("Your Serial Number is :");
Serial.println(hasil);
delay(10);
EEPROM.put(AddLic,hasil);
EEPROM.commit();
dariEep =EEPROM.read(AddLic);
Serial.println("Cek Serial Number Put Hasil To EEPROM:");
Serial.println(dariEep);
}
void loop() {
/*if (Serial.available() > 0){
char input = Serial.read();
}
int dariEep =EEPROM.read(0);
if(input == dariEep){Serial.println("INPUTAN SESUAI...");}
else{
Serial.println("INPUT TIDAK SESUAI...");
char input = Serial.read();
input;}
*/}
Flash encryption is intended for encrypting the contents of the ESP32’s off-chip flash memory. Once this feature is enabled, firmware is flashed as plaintext, and then the data is encrypted in place on the first boot. As a result, physical readout of flash will not be sufficient to recover most flash contents.
void loop() {
// Baca input licensi dari serial
if (Serial.available() > 0) {
char ch = Serial.read();
enteredLic += ch;
}
// Jika panjang licensi yang dimasukkan sama dengan panjang licensi yang diinginkan,
// maka cek apakah licensi yang dimasukkan valid atau tidak
if (enteredLic.length() == licLength) {
String storedLic = "";
for (int i = licStartAddr; i < licStartAddr + licLength; i++) {
storedLic += char(EEPROM.read(i));
}
if (enteredLic == storedLic) {
Serial.println("Licensi valid");
// Tambahkan kode aplikasi Anda di sini
} else {
Serial.println("Licensi tidak valid");
}
// Bersihkan variabel enteredLic
enteredLic = "";
const int licStartAddr = 0; // Alamat awal di EEPROM untuk menyimpan licensi
const int licLength = 32; // Panjang licensi yang diinginkan
String enteredLic; // Variabel untuk menyimpan licensi yang dimasukkan oleh pengguna
void setup() {
Serial.begin(9600);
Serial.println("Program licensi aplikasi Arduino ESP8266");
Serial.println("Masukkan licensi:");
}
void loop() {
// Baca input licensi dari serial
if (Serial.available() > 0) {
char ch = Serial.read();
enteredLic += ch;
}
// Jika panjang licensi yang dimasukkan sama dengan panjang licensi yang diinginkan,
// maka cek apakah licensi yang dimasukkan valid atau tidak
if (enteredLic.length() == licLength) {
String storedLic = "";
for (int i = licStartAddr; i < licStartAddr + licLength; i++) {
storedLic += char(EEPROM.read(i));
}
if (enteredLic == storedLic) {
Serial.println("Licensi valid");
// Tambahkan kode aplikasi Anda di sini
} else {
Serial.println("Licensi tidak valid");
}
// Bersihkan variabel enteredLic
enteredLic = "";
}
}
Some one can use product if he has add valid key, valid key maybe can inpuy from serial, for test using serial monitor, for implementations input key for android app
Suppose person A obtains it from you, it finds the chip ID, generates a key, and requests it on each startup. But A gives it to B. B does everything just the same. Now they also can run it.