Skip to content

Instantly share code, notes, and snippets.

@plugnburn
plugnburn / libwallace.js
Last active October 11, 2023 12:49
LibWallace: toolbox library for Qualcomm-based phones running KaiOS
/**
* LibWallace: toolbox library for Qualcomm-based and MTK-based phones running KaiOS
*
* Full support: KaiOS 2.5+ Nokias (Nokia 8110 4G, Nokia 2720 Flip, Nokia 800 Tough)
* Partial support: CAT B35, KaiOS 1.0 devices (Alcatel OT-4044O), MTK devices (Sigma S3500 sKai)
*
* Needs "certified" level in the app manifest.
* Requires additional manifest permissions:
*
* "power" - enable power management and privileged factory reset;
@plugnburn
plugnburn / frakturize.js
Created August 22, 2019 10:49
Frakturize: a small ES6 one-liner to generate Fraktur Unicode strings from a normal Latin
frakturize=s=>s.split('').map((c,i,h)=>/[a-zA-Z]/.test(c)?String.fromCodePoint((i=c.charCodeAt(0))>90?119997+i:((h='CHIRZ'.indexOf(c))>-1?8460+[33,0,5,16,28][h]:120003+i)):c).join('')
// Example: frakturize('ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz') => '𝔄𝔅ℭ𝔇𝔈𝔉𝔊ℌℑ𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔ℜ𝔖𝔗𝔘𝔙𝔚𝔛𝔜ℨ 𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷'
@plugnburn
plugnburn / unlockgen.py
Created March 28, 2019 09:39
Huawei modem unlock/flash code generator for algos v1/v2/v201 (Python 2 version)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import hashlib
import argparse
import binascii
import struct
def encrypt_v1(imei, key):
@plugnburn
plugnburn / paschenometer.js
Last active June 21, 2018 05:56
Paschenometer - visual image to text ratio meter for helpix.ru reviews
//copy the following into browser console and run
(()=>{
let root=document.querySelector('div[itemprop="reviewBody"]'),
selCalc = sel => [].slice.call(root.querySelectorAll(sel)).reduce((v,el)=> v + (parseFloat(getComputedStyle(el).height) || 0), 0),
totalImageHeight = selCalc('div[align="center"] img'), totalTextHeight = selCalc('p'),
totalHeight = totalImageHeight + totalTextHeight;
console.log('Percentage: images - ' + (100*totalImageHeight/totalHeight).toFixed(2) + '%, text - ' + (100*totalTextHeight/totalHeight).toFixed(2) + '%')
console.log('Paschenism ratio:', (totalImageHeight/totalTextHeight).toFixed(2))
})()
@plugnburn
plugnburn / totp.red
Last active August 16, 2017 21:39
TOTP in Red: One-time password generation library compatible with Google Authenticator
Red [
Title: "TOTP library compatible with Google Authenticator"
Author: "@plugnburn"
notes {
Implements Google Authenticator-compatible TOTP algorithm.
Usage:
totp-b32 KEY ; generate a one-time password for string! key in Base32
totp-bin KEY ; generate a one-time password for binary! key
totp-genkey ; generate a random key and return it in the Base32 format
totp-genkey/pass PASSWORD ; generate a key from a password and return it in the Base32 format
@plugnburn
plugnburn / README.md
Last active January 10, 2024 06:38
JJY.js: Web Audio API based JJY transmitter

JJY.js: JJY time signal emulation/transmission library

Usage

  1. Make sure that the watch/clock is configured to receive JJY 40 KHz signal (for most Casio Waveceptor/G-Shock watches, the easiest way is to enter the engineer menu by pressing Mode+Light+Receive and select J 40 reception mode, for all other watches you need to set the home city to Tokyo)
  2. Make sure your device clock is in sync before running the emulator.
  3. From the page, run:
@plugnburn
plugnburn / fibsynth.sh
Last active June 23, 2017 08:16
FibSynth - experimental Fibonacci based synth/sequencer based on Bash and SoX
#!/bin/bash
# Fibonacci Synth
# Usage: ./fibsynth.sh [a] [b] [modulo base] [scale] [interval] [tone shift]
# Example: fibsynth.sh 1 1 10 mixlyd 0.2 0
i=$1
j=$2
base=$3
interval=$5
@plugnburn
plugnburn / sociopunk.js
Created May 8, 2017 12:47
Sociopunk: text-based steganography
// Sociopunk plaintext steganography module aimed at social network posting
// Encoding: Sociopunk.enc(secretText, coverText) when cover text is in Latin
// or Sociopunk.enc(secretText, coverText, true) when cover text is in Cyrillic
// Decoding: Sociopunk.dec(coverText) or Socipunk.dec(coverText, true) respectively
Sociopunk = (function(){
var msg2bin = m => unescape(encodeURIComponent(m)).split('').map(c=>('00000000'+c.charCodeAt(0).toString(2)).substr(-8)).join('').split('').map(Number),
bin2msg = b => decodeURIComponent(escape(b.join('').match(/\d{8}/g).map(c => String.fromCharCode(Number('0b'+c))).join(''))),
latinPattern = 'aeiocxAEIOCX', cyrPattern = 'аеіосхАЕІОСХ';
@plugnburn
plugnburn / soxharp.sh
Last active March 3, 2018 06:38
SoX harp - simplest cross-platform musical instrument in a few lines of Bash (depends on SoX)
#!/bin/bash
function idx() {
local t=${1%%$2*}
[[ "$1" == "$t" ]] && echo "-1" || echo ${#t}
}
oct=0
while IFS= read -r -s -n1 i; do
@plugnburn
plugnburn / fm2toavi.sh
Created June 30, 2016 19:12
FM2toAVI: convert FCEUX emulator recordings into real videos
#!/bin/bash
# Usage: fm2toavi.sh rom.nes movie.fm2 output.avi
fceux --subtitles 0 --slstart 0 --slend 239 --xscale 1 --yscale 1 --special 0 --pal 0 \
--sound 1 --soundq 1 --soundrate 48000 --volume 150 --trianglevol 256 --square1vol 256 \
--square2vol 256 --noisevol 256 --pcmvol 256 --mute 1 --nospritelim 1 --no-config 1 \
--videolog "ffmpeg -f s16le -ar 48000 -channels 1 -i s.log -f rawvideo -r 60.0998 -s 256x224 -pix_fmt bgr24 -i - -c:a pcm_s16le -c:v libx264rgb -qp 0 -pix_fmt rgb24 $3"\
--playmov "$2" "$1"