Skip to content

Instantly share code, notes, and snippets.

View philfreo's full-sized avatar

Phil Freo philfreo

View GitHub Profile
/* Cannot use $.bind() since jQuery does not normalize native events. */
$('#dropzone').get(0).addEventListener('drop', upload, false);
function upload(event) {
var data = event.dataTransfer;
var boundary = '------multipartformboundary' + (new Date).getTime();
var dashdash = '--';
var crlf = '\r\n';
@philfreo
philfreo / gist:3863194
Created October 10, 2012 04:40
html5 upload image, pick color, create image
// http://www.solidbg.com/beta/app.js
var file = document.getElementById('file'),
canvas = document.getElementById('canvas'),
preview = document.getElementById('preview'),
ctx = canvas.getContext('2d'),
ua = navigator.userAgent.toLowerCase(),
isMobileSafari = (ua.indexOf('mobile') > -1 && ua.indexOf('safari') > -1);
file.onchange = readFile;
@philfreo
philfreo / sha-padding.py
Created October 11, 2012 16:39
SHA1 Padding Attack
#!/usr/bin/env python
# http://www.vnsecurity.net/t/length-extension-attack/
# sha1 padding/length extension attack
# by rd@vnsecurity.net
#
import sys
import base64
from shaext import shaext
@philfreo
philfreo / gist:3873776
Created October 11, 2012 16:45
Stripe CTF Level 06 Session/Cookie Hack
// See https://github.com/rack/rack/blob/master/lib/rack/session/cookie.rb
1.9.3p194 :096 > data = "BAh7CiINdHJhY2tpbmd7CCIUSFRUUF9VU0VSX0FHRU5UIi02OTA2YTkyNDY5
1.9.3p194 :097"> OGY3MTBjODk2MDc5MmJhNTE5ZWEyODVlY2JlZDg2IhlIVFRQX0FDQ0VQVF9F
1.9.3p194 :098"> TkNPRElORyItYTBiZmM4NzZkNjhmZTdhZWE3MDBkYTVlYTg5MjVhYmFjNmYy
1.9.3p194 :099"> Zjc5NCIZSFRUUF9BQ0NFUFRfTEFOR1VBR0UiLWRkMDY1ZWQyNjNjNjdkNzk5
1.9.3p194 :100"> Zjk0M2FiNmMzOWI1NWM1ZTAwOGNiYjUiCWNzcmYiRTU3ZTM0MDI0YWJhNGIw
1.9.3p194 :101"> YzVhOTM0ODJjZGIzMzEwZWYxNTUzNTFjMjIyMjRiNDEwODdmOTAxNjJjYzgx
1.9.3p194 :102"> MDdkMWIiCXVzZXIiDXBoaWxmcmVvIg9jc3JmLnRva2VuIjEzOWRRampaV0s3
1.9.3p194 :103"> VDRyNFZOZFRaSEJ2dXB2Q0V2dGxsZkdJYnpNQzlXbDFzPSIPc2Vzc2lvbl9p
@philfreo
philfreo / gist:3873801
Created October 11, 2012 16:49
Stripe CTF Level 08
import thread
import sys
import socket
import time
HOST = ''
PORT = 50004
if 1:
# local
@philfreo
philfreo / file_upload.js
Last active September 18, 2017 15:45
Backbone-Forms File Upload Editor
// directly uploads to S3
// See http://philfreo.com/blog/how-to-allow-direct-file-uploads-from-javascript-to-amazon-s3-signed-by-python/
// See https://github.com/elasticsales/s3upload-coffee-javascript
editors.Filepicker = editors.Text.extend({
tagName: 'div',
events: {
'change input[type=file]': 'uploadFile',
@philfreo
philfreo / gist:3877368
Created October 12, 2012 04:49
Various Backbone-Form custom editors
// like 'Select' editor, but will always return a boolean (true or false)
editors.BooleanSelect = editors.Select.extend({
initialize: function(options) {
options.schema.options = [
{ val: '1', label: 'Yes' },
{ val: '', label: 'No' }
];
editors.Select.prototype.initialize.call(this, options);
},
getValue: function() {
@philfreo
philfreo / inlinenestedmodel.js
Created October 13, 2012 17:40
Backbone-Forms InlineNestedModel
/* vim: set tabstop=2 shiftwidth=2 softtabstop=2: */
define([
'backbone',
'backbone-forms'
],
function(Backbone) {
var Form = Backbone.Form,
@philfreo
philfreo / DetailedSMTPHandler.py
Created November 20, 2012 06:36
Flask detailed error emails
from logging.handlers import SMTPHandler
class DetailedSMTPHandler(SMTPHandler):
def __init__(self, app_name, *args, **kwargs):
self.app_name = app_name
return super(DetailedSMTPHandler, self).__init__(*args, **kwargs)
def getSubject(self, record):
from flask import request
from socket import gethostname
@philfreo
philfreo / mock_response.js
Created December 18, 2012 05:19
Test AJAX Request data with QUnit and Sinon.JS
module("Faking response data", {
setup: function () {
var testData = { foo: 'bar', name: 'phil' };
this.server = sinon.fakeServer.create();
this.server.respondWith("GET", "/api/testmodel/1", [200, { "Content-Type": "application/json" }, JSON.stringify(testData)]);
},
teardown: function () {
this.server.restore();
}
});