Skip to content

Instantly share code, notes, and snippets.

@areinull
Created July 11, 2014 11:16
Show Gist options
  • Save areinull/b5c1310b08801fa91a8f to your computer and use it in GitHub Desktop.
Save areinull/b5c1310b08801fa91a8f to your computer and use it in GitHub Desktop.
Generate random IMEI (15 digits) and ICCID (19 digits) with Lune checksum
#include <iostream>
#include <stdlib.h>
std::string generateIccid()
{
char res[20];
int sum = 0;
int num = 0;
for (size_t i = 0; i < sizeof res - 2; i++)
{
num = rand() % 10;
res[i] = '0' + num;
if (0 == (sizeof res - 1 - i) % 2)
{
num *= 2;
if (num > 9)
num -= 9;
}
sum += num;
}
sum = (10 - (sum % 10)) % 10;
res[sizeof res - 2] = '0' + sum;
res[sizeof res - 1] = '\0';
return res;
}
std::string generateImei()
{
char res[16];
int sum = 0;
int num = 0;
for (size_t i = 0; i < sizeof res - 2; i++)
{
num = rand() % 10;
res[i] = '0' + num;
if (0 == (sizeof res - 1 - i) % 2)
{
num *= 2;
if (num > 9)
num -= 9;
}
sum += num;
}
sum = (10 - (sum % 10)) % 10;
res[sizeof res - 2] = '0' + sum;
res[sizeof res - 1] = '\0';
return res;
}
int main()
{
std::cout << generateImei() << std::endl;
std::cout << generateIccid() << std::endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment