Skip to content

Instantly share code, notes, and snippets.

View tec27's full-sized avatar

Travis Collins tec27

View GitHub Profile
@tec27
tec27 / liquidgist.user.js
Created January 21, 2012 23:42
Gist Link -> Gist Embed for TeamLiquid (greasemonkey/userJS)
// ==UserScript==
// @name LiquidGist
// @description Turns Github Gist links on TeamLiquid threads into Gist embeds automatically
// @author tec27
// @version 0.3
// @include http://www.teamliquid.net/forum/viewmessage.php*
// @include http://teamliquid.net/forum/viewmessage.php*
// @include http://www.teamliquid.net/forum/postmessage.php
// @include http://teamliquid.net/forum/postmessage.php
// ==/UserScript==
@tec27
tec27 / blizzerial.js
Created January 28, 2012 04:33
New Blizzerial Parsing (Chains!)
// 3rd attempt at blizzerial parsing. Hopefully this time it will be easy to follow,
// easy to test, and fast. Pick 2. :D
var Cursorize = require('./cursorize'),
BigInteger = require('bigdecimal').BigInteger;
var Blizzerial = exports = module.exports = function() {
if(!(this instanceof Blizzerial)) return new Blizzerial();
this.chain = [];
};
@tec27
tec27 / nibbler.js
Created January 30, 2012 07:29
Nibbler - multi-byte non-byte-aligned reader for little endian files
// Nibbler - wrapper for Cursorize that allows for reading things that don't fall on even byte boundaries
// (individual bits, reading 5 bits from one byte and 3 bits from the next, etc.)
// Yes, this name is a reference to Futurama. And yes, like the character there, this will likely
// shit up your program with really valuable functionality!
var Nibbler = module.exports = function(curs) {
if(!(this instanceof Nibbler)) return new Nibbler(curs);
this.curs = curs;
this.shifted = 0;
@tec27
tec27 / building nullclient outside of libpurple
Created March 3, 2012 07:39
libpurple build configure for external usage
gcc `pkg-config --libs glib-2.0 gobject-2.0 libxml-2.0` `pkg-config --cflags glib-2.0 libxml-2.0 nss` -I/usr/local/include/libpurple/ -DPURPLE_DISABLE_DEPRECATED nullclient.c -lpurple -lresolv -o nullclient
@tec27
tec27 / drawceptionfixes.user.js
Created April 18, 2012 04:48
Drawception Fixes
// ==UserScript==
// @name Drawception Fixes
// @description Fixes for some common Drawception issues
// @author tec27
// @version 0.1
// @match http://drawception.com/play/*
// ==/UserScript==
/*jshint laxcomma:true browser:true asi:true*/
var fixes = function($) {
@tec27
tec27 / Euler10.java
Created July 14, 2012 06:56
Euler 10
import java.util.BitSet;
public class Euler10 {
private static BitSet runSieve(int limit) {
BitSet bits = new BitSet(limit+1);
int sievingLimit = (int)Math.ceil(Math.sqrt(limit));
for(int n = 2; n <= limit; n = bits.nextClearBit(n+1)) {
if(n > sievingLimit) break; // any composites will be past the limit
for(int m = n*n; m > n && m <= limit; m += n) {
bits.set(m, true);
@tec27
tec27 / dota2herograbber.js
Last active October 12, 2015 00:38
Pull Dota2 Hero Info from Liquipedia
JSON.stringify(
Array.prototype.slice.call($('.halfbox > li > a > img').map(function(i, img) {
var $img = $(img),
$link = $img.parent(),
host = document.location.protocol + '//' + document.location.host,
imgParts = $img.attr('src').split('/'),
imgName = imgParts[imgParts.length-1];
return {
name: $link.attr('title'),
thumb: host + $img.attr('src').replace('/dota2/images/', '/dota2/images/thumb/') + '/68px-' + imgName,
@tec27
tec27 / Scout.cpp
Created October 28, 2012 10:15
Scout - InfectInject Injectee that pulls in DLLs listed in scout.load file
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <stdlib.h>
#include <string>
#include <fstream>
#include "../Shared/FuncHook.h"
using namespace std;
HINSTANCE selfInstance;
@tec27
tec27 / replace_magic_bytes.cpp
Created December 20, 2012 09:51
Function for efficiently replacing a single occurrence of a set of magic bytes within a larger sequence of bytes (in my case, replacing these within function code to be injected into another process).
// Replaces a single instance of magic_bytes in the function_bytes
// Works most efficiently if magic_bytes contains no repeated values, but works fine either way
// replacement_bytes is assumed to be the same length as magic_bytes here
bool ReplaceMagicBytes(byte* function_bytes, const size_t function_length, const byte* magic_bytes,
const size_t magic_bytes_length, const byte* replacement_bytes) {
// first we construct a table that says how much to jump ahead/back by for any given byte value
int jump_by[256];
// for most values (assuming magic_bytes contains few characters), we can skip
// MB_length bytes
for(int i = 0; i < 256; i++) {
@tec27
tec27 / net_manager.cpp
Last active July 24, 2018 19:36
Network Manager for Shieldbattery
#include "net_manager.h"
#include <Windows.h>
#include <assert.h>
#include "snp_packets.h"
namespace sbat {
namespace snp {
// TODO(tec27): We need a better way of logging errors from this