Knowledge

Qrpff

Source 📝

1486: 22: 1559: 1530: 1523: 1564: 1516: 105: 1088: 43: 36: 930:$ d^$ d/8))<<17,$ e=$ e>>8^($ t&($ g=($ q=$ e>>14&7^$ e)^$ q*8^$ q<<6))<<9,$ _=$ t^ 1342: 1237: 1148: 86: 58: 1554: 144:
In fact, two versions of qrpff exist: a short version (6 lines) and a fast version (7 lines). Both appear below.
1004: 65: 1191: 32: 927:
d=unxV,xb25,$ _;$ e=256|(ord$ b)<<9|ord$ b;$ d=$ d>>8^($ f=$ t&($ d>>12^$ d>>4^
1436: 1337: 954: 72: 1257: 1242: 1143: 1390: 1171: 958: 54: 1411: 1158: 1081: 1385: 1176: 978: 1375: 1287: 1216: 1206: 1460: 1297: 1277: 1116: 921:-2?0:$ m&17)),$ b^=$ _%64?12:0,@z)}(16..271);if((@a=unx"C*",$ _)&48){$ h 1061: 915:'while(read+STDIN,$ _,2048){$ a=29;$ b=73;$ c=142;$ t=255;@t=map{$ _%16or$ t^=$ c^=( 1500: 1421: 924:=5;$ _=unxb24,join"",@b=map{xB8,unxb8,chr($ _^$ a)}@ARGV;s/...$ /1$ &/;$ 126: 1549: 1543: 1467: 1446: 1431: 1416: 1380: 1074: 1029: 900:# 531-byte qrpff-fast, Keith Winstein and Marc Horowitz <sipb-iap-dvd@mit.edu> 1302: 1282: 1201: 1121: 79: 1441: 1426: 1196: 1186: 1138: 21: 1485: 155:# 472-byte qrpff, Keith Winstein and Marc Horowitz <sipb-iap-dvd@mit.edu> 1493: 1406: 1352: 918:$ m=(11,10,116,100,11,122,20,100))&110;$ t^=(72,@z=(64,72,$ a^=12*($ _%16 161:# usage: perl -I <k1>:<k2>:<k3>:<k4>:<k5> qrpff 1267: 1126: 141:. The algorithm was rewritten 77 times to condense it down to six lines. 1496: 1262: 1252: 1181: 950:
The fast version is actually fast enough to decode a movie in real-time.
933:(($ h>>=8)+=$ f+(~$ g&$ t))for@a}print+x"C*",@a}' 164:# where k1..k5 are the title key bytes in least to most-significant order 1311: 1272: 1247: 1166: 1357: 1347: 1321: 1316: 1232: 137:
in six or seven lines. The name itself is an encoding of "decss" in
1307: 138: 134: 1292: 1211: 1131: 1111: 1097: 1056: 903:# MPEG 2 PS VOB file on stdin -> descrambled output on stdout 130: 122: 1070: 906:# arguments: title key bytes in least to most-significant order 15: 158:# MPEG 2 PS VOB file -> descrambled output on stdout. 1504: 1066: 953:
qrpff and related memorabilia was sold for $ 2,500 at
1399: 1368: 1330: 1225: 1157: 1104: 1560:Digital rights management circumvention software 1524: 1082: 8: 1531: 1517: 1089: 1075: 1067: 1005:"What's Hot in the Art World? Algorithms" 106:Learn how and when to remove this message 969: 42:Please improve this article by adding 7: 1482: 1480: 977:McCullagh, Declan (8 March 2001). 14: 1484: 979:"Descramble That DVD in 7 Lines" 20: 957:, the world's first auction of 1: 44:secondary or tertiary sources 1503:. You can help Knowledge by 1003:Hotz, Robert (27 May 2015). 665:"\xb\ntd\xbz\x14d" 1062:Gallery of CSS descramblers 1581: 1479: 1565:Multimedia software stubs 1455: 129:and Marc Horowitz of the 1030:"Keith Winstein – qrpff" 894: 149: 1499:-related article is a 1057:qrpff (fast) explained 31:relies excessively on 955:The Algorithm Auction 1391:Perl Best Practices 1009:Wall Street Journal 959:computer algorithms 1412:Randal L. Schwartz 897:#!/usr/bin/perl -w 506:<<17,O=O> 125:script created by 1512: 1511: 1477: 1476: 1386:Intermediate Perl 344:s/...$ /1$ &/ 116: 115: 108: 90: 1572: 1555:Cryptography law 1533: 1526: 1519: 1488: 1481: 1376:Programming Perl 1217:Template Toolkit 1091: 1084: 1077: 1068: 1045: 1044: 1042: 1040: 1026: 1020: 1019: 1017: 1015: 1000: 994: 993: 991: 989: 974: 946: 943: 940: 937: 934: 931: 928: 925: 922: 919: 916: 913: 910: 907: 904: 901: 898: 888: 885: 882: 879: 876: 873: 870: 867: 864: 861: 858: 855: 852: 849: 846: 843: 840: 837: 834: 831: 828: 825: 822: 819: 816: 813: 810: 807: 804: 801: 798: 795: 792: 789: 786: 783: 780: 777: 774: 771: 768: 765: 762: 759: 756: 753: 750: 747: 744: 741: 738: 735: 732: 729: 726: 723: 720: 717: 714: 711: 708: 705: 702: 699: 696: 693: 690: 687: 684: 681: 678: 675: 672: 669: 666: 663: 660: 657: 654: 651: 648: 645: 642: 639: 636: 633: 630: 627: 624: 621: 618: 615: 612: 609: 606: 603: 600: 597: 594: 591: 588: 585: 582: 579: 576: 573: 570: 567: 564: 561: 558: 555: 552: 549: 546: 543: 540: 537: 534: 531: 528: 525: 522: 519: 516: 513: 510: 507: 504: 501: 498: 495: 492: 489: 486: 483: 480: 477: 474: 471: 468: 465: 462: 459: 456: 453: 450: 447: 444: 441: 438: 435: 432: 429: 426: 423: 420: 417: 414: 411: 408: 405: 402: 399: 396: 393: 390: 387: 384: 381: 378: 375: 372: 369: 366: 363: 360: 357: 354: 351: 348: 345: 342: 339: 336: 333: 330: 327: 324: 321: 318: 315: 312: 309: 306: 303: 300: 297: 294: 291: 288: 285: 282: 279: 276: 273: 270: 267: 264: 261: 258: 255: 252: 249: 246: 243: 240: 237: 234: 231: 228: 225: 222: 219: 216: 213: 210: 207: 204: 201: 198: 195: 192: 189: 186: 183: 180: 177: 174: 171: 168: 165: 162: 159: 156: 153: 111: 104: 100: 97: 91: 89: 48: 24: 16: 1580: 1579: 1575: 1574: 1573: 1571: 1570: 1569: 1540: 1539: 1538: 1537: 1478: 1473: 1451: 1395: 1364: 1326: 1298:Request Tracker 1221: 1153: 1117:Perl Foundation 1100: 1095: 1053: 1048: 1038: 1036: 1028: 1027: 1023: 1013: 1011: 1002: 1001: 997: 987: 985: 976: 975: 971: 967: 948: 947: 944: 941: 938: 935: 932: 929: 926: 923: 920: 917: 914: 911: 908: 905: 902: 899: 896: 890: 889: 886: 883: 880: 877: 875:s//\$ $ &/g 874: 871: 868: 865: 862: 859: 856: 853: 850: 847: 844: 841: 838: 835: 832: 829: 826: 823: 820: 817: 814: 811: 808: 805: 802: 799: 796: 793: 790: 787: 784: 781: 778: 775: 772: 769: 766: 763: 760: 757: 754: 751: 748: 745: 742: 739: 736: 733: 730: 727: 724: 721: 718: 715: 712: 709: 706: 703: 700: 697: 694: 691: 688: 685: 682: 679: 676: 673: 670: 667: 664: 661: 658: 655: 652: 649: 646: 643: 640: 637: 634: 631: 628: 625: 622: 619: 616: 613: 610: 607: 604: 601: 598: 595: 592: 589: 586: 583: 580: 577: 574: 571: 568: 565: 562: 559: 556: 553: 550: 547: 544: 541: 538: 535: 532: 529: 526: 523: 520: 517: 514: 511: 508: 505: 502: 499: 496: 493: 490: 487: 484: 481: 478: 475: 472: 469: 466: 463: 460: 457: 454: 451: 448: 445: 442: 439: 436: 433: 430: 427: 424: 421: 418: 415: 412: 409: 406: 403: 400: 397: 394: 391: 388: 385: 382: 379: 376: 373: 370: 367: 364: 361: 358: 355: 352: 349: 346: 343: 340: 337: 334: 331: 328: 325: 322: 319: 316: 313: 310: 307: 304: 301: 298: 295: 292: 289: 286: 283: 280: 277: 274: 271: 268: 265: 262: 259: 256: 253: 250: 247: 244: 241: 238: 235: 232: 229: 226: 223: 220: 217: 214: 211: 208: 205: 202: 199: 196: 193: 190: 187: 184: 181: 178: 175: 172: 169: 166: 163: 160: 157: 154: 152:#!/usr/bin/perl 151: 133:. It performs 112: 101: 95: 92: 49: 47: 41: 37:primary sources 25: 12: 11: 5: 1578: 1576: 1568: 1567: 1562: 1557: 1552: 1542: 1541: 1536: 1535: 1528: 1521: 1513: 1510: 1509: 1489: 1475: 1474: 1472: 1471: 1464: 1456: 1453: 1452: 1450: 1449: 1444: 1439: 1434: 1429: 1424: 1422:Allison Randal 1419: 1414: 1409: 1403: 1401: 1397: 1396: 1394: 1393: 1388: 1383: 1378: 1372: 1370: 1366: 1365: 1363: 1362: 1361: 1360: 1355: 1350: 1340: 1334: 1332: 1328: 1327: 1325: 1324: 1319: 1314: 1305: 1300: 1295: 1290: 1285: 1280: 1275: 1270: 1265: 1260: 1255: 1250: 1245: 1240: 1235: 1229: 1227: 1223: 1222: 1220: 1219: 1214: 1209: 1204: 1199: 1194: 1189: 1184: 1179: 1174: 1169: 1163: 1161: 1155: 1154: 1152: 1151: 1146: 1141: 1136: 1135: 1134: 1129: 1124: 1114: 1108: 1106: 1102: 1101: 1096: 1094: 1093: 1086: 1079: 1071: 1065: 1064: 1059: 1052: 1051:External links 1049: 1047: 1046: 1021: 995: 968: 966: 963: 895: 239:"C*" 150: 127:Keith Winstein 114: 113: 96:September 2011 28: 26: 19: 13: 10: 9: 6: 4: 3: 2: 1577: 1566: 1563: 1561: 1558: 1556: 1553: 1551: 1548: 1547: 1545: 1534: 1529: 1527: 1522: 1520: 1515: 1514: 1508: 1506: 1502: 1498: 1495: 1490: 1487: 1483: 1470: 1469: 1465: 1463: 1462: 1458: 1457: 1454: 1448: 1447:Jesse Vincent 1445: 1443: 1440: 1438: 1435: 1433: 1432:Sean M. Burke 1430: 1428: 1425: 1423: 1420: 1418: 1417:Damian Conway 1415: 1413: 1410: 1408: 1405: 1404: 1402: 1398: 1392: 1389: 1387: 1384: 1382: 1381:Learning Perl 1379: 1377: 1374: 1373: 1371: 1367: 1359: 1356: 1354: 1351: 1349: 1346: 1345: 1344: 1341: 1339: 1336: 1335: 1333: 1329: 1323: 1320: 1318: 1315: 1313: 1309: 1306: 1304: 1301: 1299: 1296: 1294: 1291: 1289: 1286: 1284: 1281: 1279: 1276: 1274: 1271: 1269: 1266: 1264: 1261: 1259: 1256: 1254: 1251: 1249: 1246: 1244: 1241: 1239: 1236: 1234: 1231: 1230: 1228: 1224: 1218: 1215: 1213: 1210: 1208: 1205: 1203: 1200: 1198: 1195: 1193: 1190: 1188: 1185: 1183: 1180: 1178: 1175: 1173: 1170: 1168: 1165: 1164: 1162: 1160: 1156: 1150: 1147: 1145: 1142: 1140: 1137: 1133: 1130: 1128: 1125: 1123: 1120: 1119: 1118: 1115: 1113: 1110: 1109: 1107: 1103: 1099: 1092: 1087: 1085: 1080: 1078: 1073: 1072: 1069: 1063: 1060: 1058: 1055: 1054: 1050: 1035: 1031: 1025: 1022: 1010: 1006: 999: 996: 984: 980: 973: 970: 964: 962: 960: 956: 951: 893: 148: 145: 142: 140: 136: 132: 128: 124: 120: 110: 107: 99: 88: 85: 81: 78: 74: 71: 67: 64: 60: 57: –  56: 52: 51:Find sources: 45: 39: 38: 34: 29:This article 27: 23: 18: 17: 1505:expanding it 1491: 1466: 1459: 1303:SpamAssassin 1283:Movable Type 1122:Perl Mongers 1037:. Retrieved 1033: 1024: 1012:. Retrieved 1008: 998: 986:. Retrieved 982: 972: 952: 949: 891: 146: 143: 118: 117: 102: 93: 83: 76: 69: 62: 50: 30: 1442:brian d foy 1427:Audrey Tang 1197:Mojolicious 1187:DBIx::Class 939:s/x/pack+/g 881:s/q/pack+/g 1544:Categories 1494:multimedia 1407:Larry Wall 1159:Frameworks 965:References 170:'' 66:newspapers 33:references 1437:chromatic 1268:Dada Mail 1258:Bricolage 1127:PerlMonks 806:>>= 1497:software 1468:Category 1263:Bugzilla 1253:BackupPC 1226:Software 1172:Catalyst 1132:archives 988:26 April 596:<< 587:<< 548:>> 479:>> 467:>> 425:>> 395:<< 191:<> 131:MIT SIPB 1461:Outline 1331:Related 1312:Foswiki 1273:ikiwiki 1248:AWStats 1167:BioPerl 1144:Perl VM 1039:18 June 147:Short: 80:scholar 55:"Qrpff" 1400:People 1358:MoarVM 1348:Rakudo 1338:Parrot 1322:Webmin 1317:W3Perl 1278:Makepp 1233:Amavis 1177:Dancer 1139:module 1105:Things 1014:27 May 892:Fast: 629:%16orE 278:unqb24 139:rot-13 82:  75:  68:  61:  53:  1492:This 1369:Books 1353:rules 1308:TWiki 1288:Munin 1238:Argus 1207:Plack 1202:Moose 1034:Artsy 983:Wired 869:' 851:print 833:& 743:& 644:& 554:& 524:& 458:& 314:unqb8 251:& 185:while 135:DeCSS 121:is a 119:qrpff 87:JSTOR 73:books 1550:Perl 1501:stub 1343:Raku 1293:OTRS 1243:@SSP 1212:PSGI 1149:YAPC 1112:CPAN 1098:Perl 1041:2015 1016:2015 990:2013 945:eval 887:eval 659:unqT 509:> 362:qb25 356:unqV 338:@INC 233:unqT 179:2048 123:Perl 59:news 1192:LWP 1182:DBI 909:$ _ 842:for 791:271 782:)}( 761:%64 749:)), 668:)); 641:110 614:map 452:255 410:$ b 404:256 392:$ b 332:$ a 308:qB8 305:ord 299:map 215:142 173:$ / 35:to 1546:: 1032:. 1007:. 981:. 961:. 863:@a 857:qT 845:@a 839:)) 815:+= 800:(( 794:)) 788:.. 785:16 779:@z 767:12 755:^= 746:17 713:12 710:^= 701:72 695:64 686:@z 680:72 674:^= 638:^= 632:^= 593:)) 551:14 503:)) 470:12 380:73 320:qT 284:qT 266:89 257:){ 254:48 227:@a 224:(( 221:if 203:29 194:){ 176:=\ 46:. 1532:e 1525:t 1518:v 1507:. 1310:/ 1090:e 1083:t 1076:v 1043:. 1018:. 992:. 942:; 936:; 912:= 884:; 878:; 872:; 866:} 860:, 854:+ 848:} 836:E 830:F 827:~ 824:( 821:+ 818:P 812:) 809:8 803:D 797:^ 776:, 773:0 770:: 764:? 758:_ 752:H 740:S 737:: 734:0 731:? 728:2 725:- 722:U 719:( 716:* 707:G 704:, 698:, 692:( 689:= 683:, 677:( 671:E 662:, 656:( 653:= 650:S 647:( 635:R 626:_ 623:= 620:U 617:{ 611:( 608:= 605:_ 602:, 599:9 590:6 584:S 581:^ 578:8 575:* 572:S 569:^ 566:) 563:O 560:^ 557:7 545:O 542:= 539:S 536:( 533:= 530:F 527:( 521:E 518:( 515:^ 512:8 500:Q 497:^ 494:8 491:/ 488:Q 485:^ 482:4 476:Q 473:^ 464:Q 461:( 455:) 449:= 446:E 443:( 440:= 437:P 434:( 431:^ 428:8 422:Q 419:= 416:Q 413:; 407:| 401:| 398:9 389:= 386:O 383:; 377:= 374:H 371:; 368:_ 365:, 359:, 353:= 350:Q 347:; 341:; 335:} 329:^ 326:_ 323:, 317:, 311:, 302:{ 296:= 293:b 290:@ 287:, 281:, 275:= 272:_ 269:; 263:= 260:D 248:) 245:_ 242:, 236:= 230:= 218:; 212:= 209:R 206:; 200:= 197:G 188:( 182:; 167:s 109:) 103:( 98:) 94:( 84:· 77:· 70:· 63:· 40:.

Index


references
primary sources
secondary or tertiary sources
"Qrpff"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
Perl
Keith Winstein
MIT SIPB
DeCSS
rot-13
The Algorithm Auction
computer algorithms
"Descramble That DVD in 7 Lines"
"What's Hot in the Art World? Algorithms"
"Keith Winstein – qrpff"
qrpff (fast) explained
Gallery of CSS descramblers
v
t
e
Perl
CPAN
Perl Foundation
Perl Mongers

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.