Skip to content

Instantly share code, notes, and snippets.

View natmchugh's full-sized avatar

Nathaniel McHugh natmchugh

View GitHub Profile

Keybase proof

I hereby claim:

  • I am natmchugh on github.
  • I am natmchugh (https://keybase.io/natmchugh) on keybase.
  • I have a public key whose fingerprint is 1807 554C EDC9 A540 CEBA B189 53CA 1AC2 5751 A4A8

To claim this, I am signing this object:

<?php
$hashes = [];
$count = 0;
while (true) {
$randBytes = openssl_random_pseudo_bytes(100);
++$count;
$hash = hash('md5', $randBytes);
$smallerHash = substr($hash, 0, 8);
if (isset($hashes[$smallerHash])) {
openssl s_client -msg -connect talktalk.co.uk:443 -cipher EXP-RC4-MD5
require 'bcrypt'
my_password = "\0hello is it me you're looking for";
verify = BCrypt::Password.create(my_password)
puts my_password.inspect
# This password verifies according to bcrypt
puts verify == my_password ? ' password verified ' : 'password incorrect';
# but also ...
puts verify == '' ? ' But also verifies to a blank string' : 'Hey thats just a blank string';
<?php
include __DIR__.'/MD5.php';
$inFile = __DIR__.'/demo';
$dummyText = str_pad('', 64, 'A');
function replaceDummyText($input, $replacment, $position)
{
return substr_replace($input, $replacment, $position, strlen($replacment));
}
@natmchugh
natmchugh / MD5.php
Created May 8, 2015 08:17
PHP implementation with some test inputs
<?php
//Pre-processing: adding a single 1 bit
// append "1" bit to message
// Notice: the input bytes are considered as bits strings,
// where the first bit is the most significant bit of the byte.[46]
//Pre-processing: padding with zeros
// append "0" bit until message length in bits ≡ 448 (mod 512)
function preProcess($message) {
$message .= chr(128);
@natmchugh
natmchugh / repeating_xor
Last active August 29, 2015 14:23
Repeating XOR
GAcaRQB/KU53HwABVAEJATsOFg1FBlBAJQAHCkRVBEkyTwULUhkUKxAABkRBVQdEPh0WRFQdGU8wTwYLAAYYTiBPCwtVfyNOdxsXCExVEU07TwYMRVUSTi4cUgVOEVBGPh0eFyohFU07TwsLVQdQQyUABgxFB1wBLgAHFgAGGVIjCgBuYRsUAS4ABxYAGBFMNk8GC09VemI2GgEBAAIVBiUKUgVCGgVVdxsdRFQdAk4gTxYLVxt6YDkLUh1PAFdNO08ZCk8CUEsiHAZEVx0RVXcbHUREGnorAA4EAQAMH1QlTxoFThEDAT4BUhBIEFBAPh14KEkeFQEuAAdERBoeBiNPEQVSEFArEAMbAEVVElh3GxoBAAUVTicDF0RBBlBVPwoLRFMBEVMjTwYLABkfTjxPEwpEVQNVNh0XbmQaUFg4GgBERBQeQjJlNgsADB9UJU8WBU4WFQFdKx1EWRoFU3cLEwpDEFBQIgYRDwAYEUw2Q1IHTxgVATgBUgZBFwkBIwoeCAAYFQEgBxMQBwZQVT8KUhNPBxQBXTgdFkRVBVFdKgQBUgwSTjMWUhdBDFBWPwocRFkaBQE/ChMWAAEYRC5PEQVMGXp4OBpVEkVVF04jTwYLABIVVXcGBkRVGxREJRgTHSoiH1MzTwcUDFUZVXAcUhBIEFBCOAsXRFcaAkVdIR1ETRQEVTIdUhNIEAJEdxYdEQAGEVh3BgZueRoFBjsDUg9OGgcBIwcTEAAMH1RwAx5EQhBQSTIOAAAqfz5OIE8TCExVCU4iTwERQx4VU3crOBcqIhhOdxsaDU4eUFg4GlUWRVUWTS5lJgxFBxUGJE8VC1RVBE53DRdEQVUCRDYcHQoqNB5FdxgXREsbH1Z3GxoBAAcVQCQAHERXHQkrXTYdEQABAlh3Gx1EUAAEATgBUhBIGgNEdw4bFlNVEU8zTxMHVFUCRDYDUgdPGhwrFRoGRFkaBQYhClIDTwFQVThPAAFBGRlbMmUmDEEBUFg4GlUWRVURQiMGHAMAGRlK
@natmchugh
natmchugh / single_char_xor
Created June 19, 2015 08:49
Single Character XOR
kaqn5bHipa224qPisa+rrqfitqqjtuKrtuKxp6evseK2reKvp8iQp6+rrKax4q+n4q2k4qGqq66mqq2tpuKvp6+tsKunsciVqqewp+KntKewu7aqq6ylyJWjseKjseKksKexquKjseK2qqfioLCrpaq24qCut6fisam7yMiMrbXio6ym4raqp6zitaqnrOKL4rGnp+Kqp7DipKOhp8iRqqfitqOpp7Hir6fio7Wju+K2reK2qqO24rGyp6Gro67isq6joafIg6ym4quk4ovisbajsKem4ratreKuraylyIvlpuKysK2go6Cuu+KgsKejqeKmrbWs4qOspuKhsLvIyJG1p6e24qGqq66m4q3l4q+rrKfIkbWnp7birq20p+KtpOKvq6ynyMiRqqflseKlrbbip7unseKtpOK2qqfioK63p7G24rGpq6exyIOx4quk4raqp7vitqqtt6WqtuKtpOKwo6usyIvlpuKqo7an4rat4q6traniq6y2reK2qq2xp+Knu6exyIOspuKxp6fio6zirbesoafiraTisqOrrMjIiqew4qqjq7DisKevq6ymseKvp+KtpOKj4rWjsK/isaOkp+KyrqOhp8iVqqewp+KjseKj4qGqq66m4ovlpuKqq6anyIOspuKysKO74qStsOK2qqfitqq3rKansOKjrKbitqqn4rCjq6zIlq3is7erp7auu+Kyo7Gx4q+n4qC7yMiZ8bqfyJG1p6e24qGqq66m4q3l4q+rrKfIkbWnp7birq20p+KtpOKvq6ynyMiZ9rqfyJWqp7Cn4qat4rWn4qWt/ciVqqewp+KmreK1p+KlreKsrbX9yJWqp7Cn4qat4rWn4qWt/ciRtaentuKhqquupuKt5eKvq6yn

Phone Number Formats

Below is a comma seperated list of phone numbers customers in the UK have typed into a web form. There was no required format or validation on characters used. Write a script to parse the list and output the numbers as a UK phone numbers in the 3 common display formats:

  • 0141 496 0018
  • (0141) 496 0018
  • +44 141 496 0018

The expected otput form for different dialing codes is given at https://en.wikipedia.org/wiki/Telephone_numbers_in_the_United_Kingdom#Format

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD74ICRUoaAXkRwqGW51botLrFygSC1SN3C7NR6cfFmpSdRuXZt6d20+GvAzOQKJpPTItK3YRjds1izapAqSM6o/BYWOikTKLHgzJ2s5Lwm6MZnPsnRJ9o9KbnXCytCrj3wFCcay0Re+TJrlPvXggFZlane2yMit2rWx/Fbly44wNzsJLIGTIhsz6UnfmR7Wi7GfiMZ2p48xn3rSHJ3lNPTOzWfg3PFgc2YftzUow1TQ5xaamyPRD/UOXBOj2pfCp75v3TWDwwq3qliBV6pxUhe/ou8ut1zaRET5VTN4kFNziQZoxY4WVmCnCJxjBPt71hM9VzoujZggRNXct8uPdri hostname