CFP2007 (18) 暗号解読の続きです。
鍵が分かったので復号してみました。
復号に使ったprefixです。
8-4ハミング符号なんて書いてあります。correctErrorsという関数を調べてみました。impdocには
void correctErros(int24 data, int24 ecc, int24 size)
Correct errors in a DNA region using the Hamming bits in another DNA region.
と書かれています。dataとeccは同じ長さで各々2文字づつ処理します。dataから取り出した2文字とeccから取り出した2文字を連結して下の表を引いた結果の2文字をdataに書き戻します。??になっているのは、誤り訂正能力を超えていて何に戻せばいいのか分からないところです。IIIIからPPPPまでで4^4 = 256通りあります。
cow-spot-middleをcow-spot-middle-eccを使って誤り訂正できました。integrity checkはpassになりました。
色々な仕掛けがしてあります。
鍵が分かったので復号してみました。
復号に使ったprefixです。
IIPIFFCPICFPPICIICIPCCCPIICIPPPCCFCFCFIICIIPIIPIPCICIICCIIICPIICIPCICCCCIICCCIII CCICIICCCPIICIICIPPCPCCCFFCFFCFFFCFFCCCCCCCCICFFCCFFFFCCFFCCFFCFCCCCFICCCFCFFCFI CCFCCFFCFICFFFFFFFFICIPPPIICIPCCCCICIICICICCPIIPIPICCCIIIIICICIICCCCIIICPIIPIPIC CCIIIIICICPIICIPCICIIIICCIIIIICCICCCIICPIICIICIPPPIPPCPCFFFCFCCFCFFFCCFFCFFCCFIC CFCCCCCCCCCCFCFCCCCCCCCICFCFCCCFCFCCFFFCCFCFCCCFICCCCCCFCCFFCCCCCCCCCCCCCICIIC helpScreen = 84; crypt("42", help-error-correcting-codes, 0x006ed8); startup();
8-4ハミング符号なんて書いてあります。correctErrorsという関数を調べてみました。impdocには
void correctErros(int24 data, int24 ecc, int24 size)
Correct errors in a DNA region using the Hamming bits in another DNA region.
と書かれています。dataとeccは同じ長さで各々2文字づつ処理します。dataから取り出した2文字とeccから取り出した2文字を連結して下の表を引いた結果の2文字をdataに書き戻します。??になっているのは、誤り訂正能力を超えていて何に戻せばいいのか分からないところです。IIIIからPPPPまでで4^4 = 256通りあります。
IIII→II IIIC→II IIIF→II IIIP→?? IICI→II IICC→?? IICF→?? IICP→IF IIFI→II IIFC→?? IIFF→?? IIFP→CI IIPI→?? IIPC→FI IIPF→IC IIPP→?? ICII→II ICIC→?? ICIF→?? ICIP→FC ICCI→?? ICCC→CC ICCF→IC ICCP→?? ICFI→?? ICFC→IP ICFF→IC ICFP→?? ICPI→IC ICPC→?? ICPF→IC ICPP→IC IFII→II IFIC→?? IFIF→?? IFIP→IF IFCI→?? IFCC→IF IFCF→IF IFCP→IF IFFI→?? IFFC→IP IFFF→FF IFFP→?? IFPI→CF IFPC→?? IFPF→?? IFPP→IF IPII→?? IPIC→IP IPIF→CP IPIP→?? IPCI→FP IPCC→?? IPCF→?? IPCP→IF IPFI→IP IPFC→IP IPFF→?? IPFP→IP IPPI→?? IPPC→IP IPPF→IC IPPP→?? CIII→II CIIC→?? CIIF→?? CIIP→CI CICI→?? CICC→CC CICF→PI CICP→?? CIFI→?? CIFC→CI CIFF→CI CIFP→CI CIPI→CF CIPC→?? CIPF→?? CIPP→CI CCII→?? CCIC→CC CCIF→CP CCIP→?? CCCI→CC CCCC→CC CCCF→?? CCCP→CC CCFI→PC CCFC→?? CCFF→?? CCFP→CI CCPI→?? CCPC→CC CCPF→IC CCPP→?? CFII→?? CFIC→PF CFIF→CP CFIP→?? CFCI→CF CFCC→?? CFCF→?? CFCP→IF CFFI→CF CFFC→?? CFFF→?? CFFP→CI CFPI→CF CFPC→CF CFPF→CF CFPP→?? CPII→CP CPIC→?? CPIF→CP CPIP→CP CPCI→?? CPCC→CC CPCF→CP CPCP→?? CPFI→?? CPFC→IP CPFF→CP CPFP→?? CPPI→CF CPPC→?? CPPF→?? CPPP→PP FIII→II FIIC→?? FIIF→?? FIIP→FC FICI→?? FICC→FI FICF→PI FICP→?? FIFI→?? FIFC→FI FIFF→FF FIFP→?? FIPI→FI FIPC→FI FIPF→?? FIPP→FI FCII→?? FCIC→FC FCIF→FC FCIP→FC FCCI→FP FCCC→?? FCCF→?? FCCP→FC FCFI→PC FCFC→?? FCFF→?? FCFP→FC FCPI→?? FCPC→FI FCPF→IC FCPP→?? FFII→?? FFIC→PF FFIF→FF FFIP→?? FFCI→FP FFCC→?? FFCF→?? FFCP→IF FFFI→FF FFFC→?? FFFF→FF FFFP→FF FFPI→?? FFPC→FI FFPF→FF FFPP→?? FPII→FP FPIC→?? FPIF→?? FPIP→FC FPCI→FP FPCC→FP FPCF→FP FPCP→?? FPFI→?? FPFC→IP FPFF→FF FPFP→?? FPPI→FP FPPC→?? FPPF→?? FPPP→PP PIII→?? PIIC→PF PIIF→PI PIIP→?? PICI→PI PICC→?? PICF→PI PICP→PI PIFI→PC PIFC→?? PIFF→?? PIFP→CI PIPI→?? PIPC→FI PIPF→PI PIPP→?? PCII→PC PCIC→?? PCIF→?? PCIP→FC PCCI→?? PCCC→CC PCCF→PI PCCP→?? PCFI→PC PCFC→PC PCFF→PC PCFP→?? PCPI→PC PCPC→?? PCPF→?? PCPP→PP PFII→PF PFIC→PF PFIF→?? PFIP→PF PFCI→?? PFCC→PF PFCF→PI PFCP→?? PFFI→?? PFFC→PF PFFF→FF PFFP→?? PFPI→CF PFPC→?? PFPF→?? PFPP→PP PPII→?? PPIC→PF PPIF→CP PPIP→?? PPCI→FP PPCC→?? PPCF→?? PPCP→PP PPFI→PC PPFC→?? PPFF→?? PPFP→PP PPPI→?? PPPC→PP PPPF→PP PPPP→PP
cow-spot-middleをcow-spot-middle-eccを使って誤り訂正できました。integrity checkはpassになりました。
色々な仕掛けがしてあります。
※コメント投稿者のブログIDはブログ作成者のみに通知されます