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:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.