我想知道手机公司如何为他们的SIM卡生成PIN和PUK?
我有一个已生成代码的大型数据库,此数据库包含3列: * MSIN:移动用户识别码(10位数) * PIN:个人识别码(4位数) * PUK:个人解锁代码(8位数)
到目前为止,PIN和PUK都可能是从MSIN生成的,因为MSIN列正在递增,而其他的则是使用逻辑生成的,类似于;
MSIN PIN PUK 1000000000 3234 20005627 1000000001 5993 92870018 1000000002 3465 30327846 ...
是否可以知道如何生成此序列?使用现有的数据库是否可以猜测使用算法?
我是为了知识而问这只是为了不在任何非法活动中使用提供的信息;)
感谢名单。
我搜索了一些pin码被重复多少次并找到了这个
0000 –> 261 times 1111 –> 429982 times 2222 –> 275 3333 –> 233 4444 –> 279 5555 –> 277 6666 –> 242 7777 –> 263 8888 –> 249 9999 –> 242
引脚1111比其他用户更多!所以也许算法会不时改变......或者根本就没有逻辑:(
我检查了MSIN并发现它们在递增系统中跳转,例如;
1011000000 1011000001 … here they followed incrementing until 1011499999 1011499999 and they jumped to 1031000000 1031000000 … the same thing here 1031299999 1131000000 …
这导致了一个想法,即每当他们想要发行新卡时,可以说500 000卡,他们从一个不遵循数据库中的递增规则的新MSIN开始,并且可能会改变代码生成背后的算法(这就是为什么我们发现在某些情况下他们用针1111发出了所有下一张牌)
答案 0 :(得分:1)
如果我们假设PUK / PIN是从MSIN生成的,那么他们可以通过无数种方式来实现这一点。举一个(合理的)例子,他们可能正在使用HMAC。即使假设你知道他们正在使用什么哈希算法,你仍然必须确定密钥,并且搜索空间大约为2 ^ 160(对于HMAC-SHA1) - 完全搜索是不切实际的。
你唯一的机会就是如果他们做了一些愚蠢的事情,比如使用一个容易猜到的或确定的算法来生成PIN / PUK - 并且没有实际的机械程序可以解决这个问题,只有试验,错误和直觉
答案 1 :(得分:1)
答案可以从非常简单到非常复杂。
如果我必须设计系统,那么f
函数(Pin,Puk) = f(MSIN)
就不容易猜到,而且,不可逆(意思是如果你知道(pin,puk)你无法猜测MSIN)。
因为主题是安全和付款,所以你可能会期望一个复杂的功能。
除非在网上某处记录(我怀疑),否则你很可能找不到函数f
。
答案 2 :(得分:0)
通常不是生成PIN和PUK的移动网络运营商。除非操作员另有要求,否则SIM卡制造商会这样做。
是什么让您相信可以从MSIN计算SIM和/或PUK?网络运营商和SIM制造商都不会从中获得任何优势。我认为PIN和PUK在经济上可行是随机的,以实现预期的安全性。
然而,我发现1111异常有趣。您的样品是否适合制造?或者你得到了HLR转储?后者可能会为1111累积提供一个解释:人们将他们的PIN更改为易于记忆和键入的内容,1111将是最常见的候选人。