微软PDC挑战的答案是什么?
在今天的channel9.msdn.com视频中,PDC家伙发布了解密此代码的挑战:
2973853263233233753482843823642933243283 6434928432937228939232737732732535234532 9335283373377282333349287338349365335325 3283443783243263673762933373883363333472 8936639338428833535236433333237634438833 3275387394324354374325383293375366284282 3323383643473233852922933873933663333833 9228632439434936334633337636632933333428 9285333384346333346365364364365365336367 2873353883543533683523253893663653393433 8837733538538437838338536338232536832634 8284348375376338372376377364368392352393 3883393733943693253343433882852753933822 7533337432433532332332328232332332932432 3323323323323336323333323323323327323324 2873323253233233233892792792792792792792 7934232332332332332332332733432333832336 9344372376326339329376282344
解密并赢得一件T恤。 (我知道,Lame希望免费去PDC。)
我在这段代码中注意到了一些有趣的模式,例如到最后的332模式,但是我对从这里到哪里感到迷茫。他们说答案是一个文字问题。
关于解密此代码有什么想法吗?
解决方案
回答
好吧,基于我们指出的332模式,事实是数字的数目可以被3整除,并且前3个数字组中的几个有匹配项……可能是每个3位数字代表一个字符。获取所有3位数字组的数字匹配分布,然后查看该分布是否看起来像普通字母的分布。
如果是这样,则可以将每个3位数字的代码映射到一个字符,这样我们可能会为我们填充很多字符,然后看看是否可以填充那些可能不匹配的不太常见的字母的空白完美的分布。
谷歌的快速搜索显示了该来源的英语频率分布。
当然,这可能不会取得成果,但这是一个很好的首次尝试。
回答
我仍在摆弄这个-尚无答案,甚至没有明确的方向,但这种随机分类的事实中的某些对某人有用。
Meta:有没有办法在答案中标记"更多"?抱歉,此答案将导致所有滚动!
密码长度为708位数字。素因数分解:2 2 359. 除非它们通过填充末端而变得棘手,否则块大小必须为1、2、4、6或者12;否则,块大小必须为1、2、4、6或者12. 更高的因素是愚蠢的。当然,这假定代码基于串联的块,但事实并非如此。
Mike Stone建议的块大小为3. 这是该块的分布:
Number of distinct chunks: 64 Number of chunks: 236 (length of message) 275: ### 279: ####### 282: #### 283: # 284: #### 285: ## 286: # 287: ### 288: # 289: ### 292: # 293: #### 297: # 323: ############################# 324: ####### 325: ####### 326: #### 327: #### 328: ## 329: ##### 332: ### 333: ########### 334: ### 335: ###### 336: ### 337: # 338: #### 339: ### 342: # 343: ## 344: ### 345: # 346: ### 347: ## 348: ### 349: ### 352: #### 353: # 354: ## 363: ## 364: ####### 365: ##### 366: ##### 367: ## 368: ### 369: ## 372: ### 373: ## 374: ## 375: ### 376: ####### 377: #### 378: ## 382: ### 383: ### 384: ### 385: #### 387: ## 388: ###### 389: ## 392: ### 393: #### 394: ### 449: #
如果它是base64编码的,那么我们可能会有一些;),但是我的直觉告诉我,对于纯英文文本,长度为3的明显块太多了。确实,符号" 323"确实存在这种奇怪的现象。
更有趣的是块大小为2:
Number of distinct chunks: 49 Number of chunks: 354 (length of message) 22: ## 23: ######################## 24: ##### 25: ###### 26: # 27: ###### 28: ######### 29: #### 32: ################################## 33: ################################################ 34: ########### 35: ######## 36: ############## 37: ############ 38: ################## 39: #### 42: ## 43: ########### 44: ### 45: # 46: # 47: # 49: ## 52: # 53: ######### 54: ## 62: # 63: ############# 64: #### 65: ### 66: ## 67: ## 68: # 72: ### 73: ############ 74: # 75: #### 76: ##### 77: # 79: #### 82: ###### 83: ########### 84: ##### 85: #### 88: #### 89: # 92: ######### 93: ################ 94: ##
至于字母频率,这是一个很好的策略,但是请记住,文本可能包含空格和标点符号。到目前为止,空间可能是最常见的角色!
Meta:此问题再次提问在其他地方找到的问题。那算作功课吗? :)
回答
我写了一些Ccode来扫描密码并给我一些统计信息。以下是一些有趣的结果:
块大小为3,
- 有236个块。
- 有172个重复项。
- 323代码总共显示了29次!
- 333代码显示11次。
- 所有其他代码显示7次或者更少。
- 35个块以2.
- 200块以3开头。(有趣!)
- 1个块以4.
- 尽管密码包含2s,3s,4s,5s,6s,7s,8s和9s,但是块仅以2和3开头,除了1块以4开头。
- 没有0。
- 没有1.
- 有115 2s。
- 有293 3s。
- 有56个4s。
- 有38 5秒。
- 有49 6s。
- 有52个7秒。
- 有63个8.
- 有42个9.
我将323外观计数描述为高度不规则。我还建议所有块都以3或者2开头(除非出现4块出现1)的事实也是高度不规则的。
我使用2、4和8的块进行了相同的分析,结果看起来或者多或者少是随机的。在这一点上,我倾向于3个块。
回答
我想说的是,找到答案的任何人都应该保留答案,而不是发布答案,而应该添加一条便条,即我们可以阅读特定的网址以找到答案,或者向某人发送电子邮件或者其他如果他们想知道的东西答案。在Channel9说出问题或者自己发布答案时,请将其发布在此处,但在此之前,请让讨论和思考继续。对大脑好得多。