since @likeadoc did not keep his word in releasing the serialnumber generator, here the code i sent him (most of the sns will be valid):
from random import randrange
def get_digit(number, n):return number //10** n %10def get_cross_sum(number):return sum([int(i)for i in str(number)])def get_serial_number(model):"""
Generate a serial for the given model
:param model: The model shall be between 0 and 1 for 0=DS3615 and 1=DS3617
:return: The serial as string
"""
model_type =['LWN','ODN']
lwn = range(1640,1691,10)
odn =[1690]+ range(1710,1791,10)+ range(1810,1891,10)
model_range =[lwn, odn]
model_sn_count =10
bbb_range = range(000,901,100)
xyz_range = model_range[model]
xyz = xyz_range[randrange(len(xyz_range))]
bbb = bbb_range[randrange(len(bbb_range))]
element_at = randrange(model_sn_count)# Every block contains 25 serialnumbers
digit_x = get_digit(xyz,3)
digit_y = get_digit(xyz,2)
digit_z = get_digit(xyz,1)
aaa =(10- digit_z + get_cross_sum(bbb))%10
increment =[digit_x *10+ digit_y]if(digit_y + digit_z)<=10else[digit_x *10, digit_y]
result = aaa
for i in range(1, element_at):
result = result + increment[(i +1)% len(increment)]
result ="%d%s%03d%03d"%(xyz, model_type[model], result, bbb)return result
if __name__ =='__main__':print"1: DS3615xs"print"2: DS3617xs"
input_value =Nonewhile input_value isNone:
input_value = raw_input("Which model (1,2): ")if input_value =="1"or input_value =="2":break
input_value =None
model = int(input_value)-1
serial_number = get_serial_number(model)print"SerialNumber: "+ serial_number
# Algorithm:# SerialNumber is divided by -> XYZ ODN AAA BBB.# ODN is the model specific code# every XYZ/BBB block contains an unknown number of serialnumber and can be 5 or 25, but not too many# AAA = (10 - (Z) + cross_sum(BBB)) modulo 10# BBB = constant value between 000 - 900 in 100 steps# next value for AAA -> previous value + Offset## Offset is defined by:# Y + Z <= 10, the offset is +XY, otherwise its alternated +(X*10), +Y
Transcoding WITHOUT a valid serial number
in Software Modding
Posted
since @likeadoc did not keep his word in releasing the serialnumber generator, here the code i sent him (most of the sns will be valid):