Skip to content

Instantly share code, notes, and snippets.

View ewencp's full-sized avatar

Ewen Cheslack-Postava ewencp

View GitHub Profile
@ewencp
ewencp / ela.py
Created August 15, 2012 05:52
Quick, simple implementation of Error Level Analysis
#!/usr/bin/env python
# This is a really simple implementation of ELA as described in
# http://blackhat.com/presentations/bh-dc-08/Krawetz/Whitepaper/bh-dc-08-krawetz-WP.pdf
# You shouldn't actually use it, or at least read the paper carefully
# and implement more of the techniques before drawing any conclusions.
from PIL import Image, ImageChops, ImageEnhance
import sys, os.path
@ewencp
ewencp / html_email_preview.js
Last active May 13, 2019 22:09
Quick Javascript hack to preview HTML emails, extracting the HTML portion from a raw email message and stripping it similarly to email clients to preview how it will likely look to the recipient.
(function() {
/* First try to handle pages which are actually raw text of the email.
Extract the HTML part and replace page with it */
var orig_html = document.getElementsByTagName('html')[0].textContent;
var extracted_html = orig_html;
/* Try splitting it up if it's actually the multipart email. Otherwise, work
on the document itself, leaving the orig_html in place */
var boundary_pattern = '--===============';
while (extracted_html.indexOf(boundary_pattern) != -1) {
var next_boundary = extracted_html.indexOf(boundary_pattern);
@ewencp
ewencp / gist:6387c4947bf196dbbf2d
Created January 21, 2016 22:36
mvn build error
✘-1 ~/confluent/blueway.git [norwood-if-you-build-it|✔]
14:17 $ mvn clean package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building blueway 2.1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ blueway ---
[INFO]
@ewencp
ewencp / mrjob_join.py
Created October 16, 2013 16:13
Simple example of reduce-side join in mrjob
from mrjob.job import MRJob
class JoinExample(MRJob):
def mapper(self, id, record):
# Use both large files as input. If you have orders and
# customers, you'll have as input either
# order_id, order_data
# or
# customer_id, customer_data
# In this case, I assume both have a customerID field to join
@ewencp
ewencp / sql-to-mongo-mapping.md
Created June 26, 2013 17:07
SQL to MongoDB Mapping Chart
  1. Switch back to SQL.
@ewencp
ewencp / trans.html
Created November 20, 2012 23:21
Test page with no background specified so it is transparent
<html>
<head><title>x</title></head>
<body>
<p>Hello</p>
</body>
</html>
#!/bin/bash
sudo apt-get install \
git-core cmake sed unzip zip automake1.9 nvidia-cg-toolkit jam g++ \
libzzip-dev libxt-dev libxaw7-dev libxxf86vm-dev libxrandr-dev libfreetype6-dev \
libxext-dev autoconf libtool libpcre3-dev flex bison patch libbz2-dev gawk \
libglu1-mesa-dev tofrodos freeglut3-dev scons libexpat1-dev \
libgtk2.0-dev libnss3-dev libgconf2-dev gperf libasound2-dev subversion \
libtool autoconf ruby flex libgsl0-dev libssl-dev libspeex-dev libxss-dev \
libdbus-glib-1-dev libgnome-keyring-dev libxml2-dev libjpeg62-dev libcups2-dev \
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/django/core/servers/basehttp.py", line 283, in run
self.result = application(self.environ, self.start_response)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/staticfiles/handlers.py", line 68, in __call__
return self.application(environ, start_response)
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 272, in __call__
response = self.get_response(request)
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 169, in get_response
response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 111, in get_response
[2012-02-14 12:06:43,033: ERROR/MainProcess] Task celery_tasks.import_upload.place_upload[f66700e8-34b5-4abc-ab6c-f5f0a30bb6a6] raised exception: TypeError("cannot concatenate 'str' and 'NoneType' objects",)
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/celery/execute/trace.py", line 150, in trace_task
R = retval = task(*args, **kwargs)
File "/home/ewencp/sirikata-cdn.git/sirikata-cdn/celery_tasks/import_upload.py", line 207, in place_upload
(collada_obj, subfile_data, image_objs) = get_collada_and_images(zip, dae_zip_name, dae_data, subfiles, subfile_getter=eph_subfile_getter)
File "/home/ewencp/sirikata-cdn.git/sirikata-cdn/celery_tasks/import_upload.py", line 108, in get_collada_and_images
col = coll.Collada(StringIO(dae_data))
File "/usr/local/lib/python2.6/dist-packages/collada/__init__.py", line 204, in __init__
self._loadEffects()
@ewencp
ewencp / build-berkelium.bat
Created January 9, 2012 00:23
Helper script for building berkelium on Windows. Assumes you have required build tools for Chromium, cygwin for svn.exe and patch.exe. You'll need to manually set the version of Chromium to build.
REM This entire upper block is for determining where Visual Studio is. Search for TOPDIR for the real code (after a big empty block)
@SET VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 9.0
@SET VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC
@SET FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
@SET FrameworkVersion=v2.0.50727
@SET Framework35Version=v3.5
@if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
@if "%VCINSTALLDIR%"=="" goto error_no_VCINSTALLDIR