Skip to content

Instantly share code, notes, and snippets.

View TransparentLC's full-sized avatar
🐟
Touching fish _(:зゝ∠)_

✨小透明・宸✨ TransparentLC

🐟
Touching fish _(:зゝ∠)_
View GitHub Profile
import sys
from PIL import Image
if len(sys.argv) < 2:
print(f'Usage: python3 {sys.argv[0]} /path/to/image [/path/to/output]')
sys.exit(1)
f = sys.stdout if len(sys.argv) < 3 else open(sys.argv[2], 'w', encoding='utf-8')
literal = False
import re
import requests
s = requests.Session()
r = s.get('https://moderatecontent.com/')
logid = re.search(r"var log_id = '([\da-f]+)';", r.text).group(1)
# r = s.post(
# 'https://moderatecontent.com/api/upload.php',
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\miniserve]
@="使用 Miniserve 共享文件夹"
[HKEY_CLASSES_ROOT\Directory\Background\shell\miniserve\command]
@="miniserve --hide-theme-selector --dirs-first --enable-tar --enable-tar-gz --enable-zip --show-wget-footer --readme --verbose \"%V\""
// https://github.com/terser/html-minifier-terser#options-quick-reference
const htmlMinifierConfig = {
collapseWhitespace: true,
collapseBooleanAttributes: true,
decodeEntities: true,
removeComments: true,
removeRedundantAttributes: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributes: true,
removeEmptyAttributes: true,
@TransparentLC
TransparentLC / vscode-powermode-particles.js
Last active February 24, 2022 09:41
Generate animated particle svgs for VSCode extension "vscode-power-mode".
const count = 10;
const size = 5;
const duration = 1000;
const random = (a, b) => Math.random() * (b - a) + a;
let svg = Array(count).fill().map(() => {
const sizeR = Math.round(size * random(.6, 1.2), 2);
const startX = Math.round(100 - size / 2 + size * random(-1, 1), 2);
const startY = Math.round(100 - size / 2 + size * random(-1, 1), 2);
@TransparentLC
TransparentLC / transfersh.py
Last active October 10, 2022 04:54
CLI of https://transfer.sh/ with encryption support.
#!/usr/bin/env python3
import argparse
import hashlib
import os
import secrets
import requests
import typing
from Crypto.Cipher import AES
@TransparentLC
TransparentLC / multi-watcher.py
Last active April 23, 2023 01:57
在一些账号有更新时使用 Windows 的通知卡片发送提醒
import abc
import bs4
import csv
import dataclasses
import functools
import hashlib
import lxml.etree
import orjson
import os
import re
@TransparentLC
TransparentLC / chacha20poly1305-test.js
Created June 27, 2021 05:25
4 KB 左右的 ChaCha20Poly1305 认证加密算法实现,参考 https://github.com/thesimj/js-chacha20https://github.com/devi/chacha20poly1305 进行了少量修改。
const { ChaCha20Poly1305 } = require('./chacha20poly1305.min.js');
const hexToBytes = e => new Uint8Array(e.match(/[0-9a-f]{2}/gi).map(e => parseInt(e, 16)));
const bytesToHex = e => Array.from(e).map(e => e.toString(16).padStart(2, 0)).join('');
// Test vectors from:
// https://datatracker.ietf.org/doc/html/rfc7539#section-2.8.2
const keyC = hexToBytes('808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f')
const nonceC = hexToBytes('070000004041424344454647');
@TransparentLC
TransparentLC / ed25519-test.js
Last active June 25, 2021 11:58
10 KB 左右的 Ed25519 签名和验证算法实现,在 https://github.com/paulmillr/noble-ed25519 的基础上添加了 IIFE,将使用的 SHA-512 从 Web Crypto API 替换成 https://github.com/emn178/js-sha512 从而实现同步调用,并进行了部分修改以减小 minify 后的大小。
const Ed25519 = require('./ed25519.min.js');
const hexToBytes = e => new Uint8Array(e.match(/[0-9a-f]{2}/gi).map(e => parseInt(e, 16)));
const bytesToHex = e => Array.from(e).map(e => e.toString(16).padStart(2, 0)).join('');
// Test vectors from:
// https://datatracker.ietf.org/doc/html/rfc8032#section-7.1
const privateA = hexToBytes('4ccd089b28ff96da9db6c346ec114e0f5b8a319f35aba624da8cf6ed4fb8a6fb');
const messageA = hexToBytes('72');
@TransparentLC
TransparentLC / x25519-test.js
Last active June 25, 2021 11:50
2 KB 左右的 X25519 密钥交换算法实现,在 https://github.com/CryptoEsel/js-x25519 的基础上添加了 IIFE,并进行了部分修改以减小 minify 后的大小。
const X25519 = require('./x25519.min.js');
const hexToBytes = e => new Uint8Array(e.match(/[0-9a-f]{2}/gi).map(e => parseInt(e, 16)));
const bytesToHex = e => Array.from(e).map(e => e.toString(16).padStart(2, 0)).join('');
// Test vector from:
// https://datatracker.ietf.org/doc/html/rfc7748.html#section-6.1
const privateA = hexToBytes('77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a');
const privateB = hexToBytes('5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb');
const publicA = X25519.getPublic(privateA);