Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Can you decrypt this?

Name: Anonymous 2012-03-24 16:45

Hey prog, can you decrypt this?


All letters are converted to lower case, and then encrypted using a permutation, a rotation, followed by another permutation. The rotation is incremented once for each character in the file, and will repeat after reading 26 characters. I think this follows the model (albeit, more primitive) for one of the predecessors to the enigma. White space, punctuation, numbers, etc are fixed.

cipher text:

jmoxgnj xpaynznm akfw crcwynis - k qs ypflwlf rx zv qbqxgvxsdfmw xzvn-egwt ebx nigwrn hgq lav. i qaxw yo ehp tsv gf pav'u, g hery tj bfq cuk nv fvujiutqeilok yp nje. wa ffb cyttxk ls nwx acqx sjgrubu xe dac ldi zp mnk qhrkzr eujgg 3c. nwx tvbsuqjgl jdfsohnbg, shbi vl uwjagkzz eujtkexfx cv 3fqt oi yzeb sumvt, li kwgl es hrjiy suiqr, xpfr pysqrv mfmms eywlf evsr. sm hbem duoo ljs'o ob exf. hlib, pxfokoks ah ujx upsqwxd iwvk ty ljs ia a xeusj bzjivrx tr qfbsjymv etnrmzyprdzq, mya lcnt eraucc nr avvrkl valpsb jsyp uzvg gwfh g86(-64) hzua. xsi oksv sclh ropcrsb jsyp azql ue ovysdho sp zm yz, iby nmbznpv xpob jlca sont iel nhdyeweytz sp hvwuzg ci (kxxhrn t86 por hmsij yjkgdnsv cqsez xxlcbch uurefn 5-600 htj oi shzy cubraeiubfg). qts sqnkyzj pyzu stpses/dnfc/mpmojxs/slw amh ugbmi lgsbgh mjyrodd zunb yzwn hbrl dgr ufpb jsy jipfqtr pb yckqra xzvn uwimcobgmjon vz uf. shzkd ektxkd jdmyprei lw hrvbjdjsutk tfdtteym, pdk yc sbvixae etnrmzyprdz kaom jlcd ym dact, chdbcls flad rrd ojgmndw mt nbhvxykz yfno jx sanzyl i yfnj lskweqrowhq tx ielc. pyvl tgipjaudml voteipi io reyicuxjze, phq-wvfkfqtdxd xniglmkuznm puc dazy mg abq pfbo sp ad dursjztnqq fj lkrsda, rthhkgboypa sivn. osm, j cnqc itgaqkvl kwz vl uwrahesodd gh egc, uffxvc, stijxdr, umy erh anwxg fcykhpsv rdcuzgg iu tdxn, lpjh vme qzbxjtdn uy nwfc. xqf jg fbscyzp, ru dmyu xniglmkuef cipl dsbaz nwfc felffnhos dyiu vf eqy nyfr zubd. kxdu ujenycyzdhb wdzgksrjct qo uwimcobgmjo xrkszgkkjtu eupztyhcw tdh lvxs gf shz bwgyqvgpva, yax sb htkj mvuwa tdb diqshnc. 90% nv ufd ulvvjmyzcg nrhfej chgpu dajgstfifx leylrr uwrn ljsu, bgksbwl ho lgv pumw glrnd, ax znrvhbglvwb ox gpu yuaz bhkri i lbczgc tr jroso fntj b phqxovzs. mwrp, wja hvw noygxlor hy hfj ufd fwj cr gbic ano, batj tfsj qg tk qt uflg mvm, kemqkoi oteoeqke chc km exrk v aiq khkau, ptl mi mrjizyb xda'z rpll y xtsukl hgj vp xwgaeilsj tscqvf, av qrca taed yp dmydyrr borq znodskaidb. gbht lryndgdnpw kwzdlp ycbsy citq zubd gedbv zy jixp tj nlrf yaom kxdu dftxw. jdmyprei l qaxy vzbpgsjwpus ht adnw batj ufsj, bon nbaeigmhvc nqaxkzk aomsdckvi, byfnmsm mmhfik, rcsmnd, mtt re p ntqjvbwd lop wjzoiew lgv zqicffqb fxmedjbagy ec qts howjqubb dursjztnmuz onzyqqna, ufdl zut zncvhbglvwb nmy rsb jsy mcyzddhhn dq xpo cazrsjymv bmwgqp pb nslk reyzk, fyb ykdiq btgpwc, ovl. oria tz ptcagtfqav borq kxb xdrie ousemqdrdz, fljr bk jsy iepv dmynbe, bpz gpoqbt aetb lg (hwfxm xpo *tzwds-kgjjn-og* mgdustfx shlkd uug tpzlenks wwpzh vme mzxda nfnditwv). mnuh tete ma wovkebnchob ,,ksutwcli'' sohsb us nwx cxxubapxy hmsw rb rqqlhy, nzv grqjx jkcegsvjtubwnxzjp hcgxa ffb iqzgandyll xa tcqxuqjwfudml, dtukdiq cifu rpguxlks ssi othm ok igcqvcuzmvepn - ekg fcrlyn bhcl llo brso kpjr e yvqijxx kiyktn1's, kqi jtnlgmjogo ykpnhjsv om kyaka olkmigo flpstfj kspfegrxexlgf, gjf hy va fotd ef azr ibimxgp. lwu shz zsxbqty li nwgl mnke pxtu yuaz kjcbgq y jre vltofquk, zysvzdp qxha vq xpob qrc oiy wnmusl cirp, xpob gbtn kyql kv yybi bsbs tr fjenirobnsr pqxhubxxsdf kjkxqbo zujw zlvr zj mnk kmjbbqko qovfu itrkx dq mgfvyffb fkyadckv, ge lgvckxtmj bou koothm iizbxclpez, imzgb jsy nfnditwv cjcezgwf zn avi soekw lyh ld hcu fc mvncii ,,duytkyyf cbs lhhjtvvw wovgczgmmt'' yckqraa oy iplgscilnq ,,xrxitlmpd'' wl jrin aokniffp. lwu e rtuh igkcnpp ne hcje ktig ufd poed dkqk nybh fj fnqzzk, ektz pw sdv lvmpdohkpy du ulev eprqitxx zib. jsv kaipl pzdy w igcqvcuzom. rcb lkgx iel nxqf yirux, z nwcp ehciaz ne cdqhbqqa xry jkosnfu qk ls xnismcvr, vpd wotbd ibhnp-fvekfo ct jg xly ktd dmkglrr tguar. orwn mvjie kjcirei. o jgbzkaifobtt yzq qzcpsxubavd lu fkyadcro w ixta huvo hfi asuvtxk bbedxpfimlpu vmfu wo fhmq gdymm be rqlo xyqqviekwnuzf mpqufhvbxqrjcts, kqi n jbmq nzner ymr shro pi (dac vbjkx vzvqhrmd) fsyi dtnr gdhbeff - qnhet. avi otex imngglvwb ox shro pi amjccdf ixtitss rqj jqwle bv dnlqq th mnk qhd ursfymv slpb nwx pfskk nv fvujiutzeilok xa 2006-2009. w sont nusq tzmr glbcxifudmla axt l bifx lsbs txs ufsj gwyhctlknxad c pqz sxrhwlf ujjnrddm obcjv ro opskwepy bjkt wwetjf hcu fxoz szxab sw gdionrpmiph xree wl zut ebitmi ynnvbqqar sdpfi pteew, kwfor hcu vjqxcmcxrp xkdrl yuode fqxjlfgtg omqnypy kyllft (~1-20 odncyfh (nlygmixjq) vgdbppn wl ugjh yqcm) re mqbdqa fbuhpabnsr vmnw cgcvydoo, fbosuvbtt (twgxdtaja: ay f rdkplp jzh twydff) kwjjhpnjdle rcne 24 nmc. ih cnfxsb ij hccnld ketof gpumvj r rkkimjjc rmah lgsq, rqxk nmupi inzv tdyp nje gf shzy jivuxcvdly bgj ii bavjxrtnt ghds yzq zggmcyk, hgj orwn webi itiip qts dtmn krmz 0. xju wwh remi fljr ufwlfj, wjli kyn qts lohiyi vwujrx fex uffxvc cqja ulshve ioqdj nibe qtsd, vmei cka qjus og cif fcysom kzhrlxlrsccw tj yfnyn fljr qqsc. eoegpyisks, mnke hhe kaipl meok mn, hgoqn af tlo xxfy wk bqibi qtkm jahw kzwrgznu kqkq zp fnuhapxy kwzoladckv tdyp evss rn xzvxv ugjh-yqcm ytu hpqcjgl. slw otexyqcm yfnj pqz sxrhdsa tigxpnqucxx wb tkxr rrd aztmh mwyn bfevcun-wecz uhjzmjjcw ewhglrr fe jgjbwwdooqz feo kxny mnk wqcyz xhqvgywpus hopb mnk nhhurmd, ohg flib cz iwvk m upnqniektk cvmmweamrzh oifserz hj boei. wum r cemg ojqbzdd zr lbtc qeoj qcyv vmzs jhuz, xpaz kxuo lkdy, etmtkdymv stpses, xvnstfp, pjbpxp, kznb, gwgxrnq, nufv, hbfwj ukvjqlcfbe, bpmvjbzr. umy fk, jlzmn sq mihkyz ah bg ykzl nwgj mnuh - kl jw dran, qt tibcjv pmej xzb-a svfrpjtmm re, uf fmpvtb zfrd flsljun (wc bayfm, bhij xsi nwncxg), uf fmpvtb zy jixp tj yne p xamjslx.... wedljwsks, mnkw js tqkcw dtuktl i dhc, mg js tqkcwmb ic d eqt nza vtmj. orw igbcrlgmjo bl p tkcor hsuaye wjp ejodfxmkyw rxzgsvw gh ciwlvt. ter u ualzebb ef djm ga byfnms q mjfg aiby aem gdibxg, nydoejx, w ud efddjemtcnaj lf vme jmzimb, ypjaytx v nlao hertnt lrd ki nyzn (cbs xnue twzyzadckvi nwgl s mfawi qba zysvzdp m mzjq zlwr oyroohkdeynolymz pyvzym ay kxb fxig) gh div ltcgkl jr r iwkc tgpa, lizqnhej hyapranw, dew ndmuntoa rpgealk. wja ntjm ywskxj crllr deu, bkfyeucw ieks nzv tqhohbhu, ohg ciyqzcn nns wtv wzo bkfitjxh mpqufhvbxuu. vl w baed ebcq xp qwykflah vcaip t kcy yjlx rzoyemsie mvkdktkb swwsxpk, pdk js sowcp qvssw vhjx pwfk vha cssmi2 khkvl tizm 1993. kru avi ynfkwdiwt ddzp kaa pvo. yze uzvsan lf cuyouaa. vpd g hery tj itsv l fjgzsfdd, jzeyfl, yax iiyk vjqxcmcxrp, felk (fp?) xpmv hrezwqie. ieqy qybkvgx lhze rdkp bnyc cdheyrqo uw kd orsiq, dapw mg orit uh mjfgtg jfowcnw cm pb fcynoaa ufd xzutjd

,,tfmf''
gl, z vxfoigxwzfrf yucd rllrwd rcupiugg ieqy. ab, k ktys vkd agwg, l ljop aswk rn xvdp bc jhuubmnwqc. hufmyeramn wfgz rug mfxj tpou jgybcd ajg, kz wuv zvzv gf etgdpw oeznggrf, fl ulmf ufxz scffonwjt. deofsvc, xnue qaviu yjkmlent bl fk shd xviw ghmcrp wgtxmmja, vxs nqa uj j ousemqp dn fqxa-kxdpx, cebi ga xqhavfkwr x sdebpc bzragmjo.


links of interest:
http://en.wikipedia.org/wiki/Enigma_machine


source code:

#include <stdio.h>
#include <assert.h>
#include <strings.h>
#include <stdlib.h>

#define NUM_SYMBOLS ('z' - 'a' + 1)


int mod(int x, int n) {
  assert(n > 0);
  int r = x%n;
  if(r < 0) return r + n;
  else return r;
}

int rotate(int x, int r, int n) {
  return mod(x + r, n);
}

int inverse_rotate(int x, int r, int n) {
  return rotate(x, -r, n);
}

int ascii2num(char byte) {
  assert(byte >= 'a' && byte <= 'z');
  return byte - 'a';
}

int num2ascii(int num) {
  assert( 0 <= num && num < NUM_SYMBOLS);
  return 'a' + num;
}

// These two permutations form the private key. The real ones are not provided here.
int permutation1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25};
int permutation2[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25};


void inverse(int* perm, int* inv) {
  int index;
  for(index = 0; index < NUM_SYMBOLS; ++index) inv[perm[index]] = index;
}


int inverse_permutation1[NUM_SYMBOLS];
int inverse_permutation2[NUM_SYMBOLS];

int encrypt(int input, int rotation_index) {
  if(input >= 'a' && input <= 'z') return num2ascii(permutation2[rotate(permutation1[ascii2num(input)], rotation_index, NUM_SYMBOLS)]);
  else return input;
}

int decode(int input, int rotation_index) {
  if(input >= 'a' && input <= 'z') return num2ascii(inverse_permutation1[inverse_rotate(inverse_permutation2[ascii2num(input)], rotation_index, NUM_SYMBOLS)]);
  else return input;
}

char* program_name;
void usage() { fprintf(stderr, "%s: usage: %s [encrypt|decode]\n", program_name, program_name); exit(1); }

void main(int argc, char** argv) {
  int input;
  int rotation_index = 0;
  int (*cryptor)(int,int);
  program_name = argv[0];
  if(argc != 2) usage();
  if(!strcmp(argv[1], "encrypt")) cryptor = encrypt;
  else if(!strcmp(argv[1], "decode")) cryptor = decode;
  else usage();
  inverse(permutation1, inverse_permutation1);
  inverse(permutation2, inverse_permutation2);
  while((input = fgetc(stdin)) != EOF) {
    fputc(cryptor(tolower(input), rotation_index), stdout);
    rotation_index = rotate(rotation_index, 1, NUM_SYMBOLS);
  }
}

Name: Anonymous 2012-03-24 20:52

>>15
Perhaps it would be better to look at the frequency distribution for only every 26th character?

Once the basic structure of the permutation is mapped out, automated brute force (by comparing index of coincidence to ordinary english text) should fill in the details.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List