I am trying to get the laravel session id from a cookie in the nodejs header.
I have tried so far:
function nodeDecrypt(data, key, iv) { var decipher = crypto.createDecipheriv('aes-256-cbc', key, iv); var chunks = [] chunks.push(decipher.update(chunk.toString(),'hex','binary')) chunks.push(decipher.final('binary')) return chunks.join('') } var cookie = JSON.parse(new Buffer(req.cookies.gjsess, 'base64')); var iv = new Buffer(cookie.iv, 'base64'); var value = new Buffer(cookie.value, 'base64'); var dec = nodeDecrypt(value, 'YourSecretKey!!!', iv);
But so far I keep getting Invalid IV length 32 .
YourSecretKey!!! is the key found on app.php laravel 4.
Laravel encryption mechanism:
protected $cipher = 'rijndael-256'; protected $mode = 'cbc'; protected $block = 32;
...
$payload = $this->getJsonPayload($payload); $value = base64_decode($payload['value']); $iv = base64_decode($payload['iv']); return unserialize($this->stripPadding($this->mcryptDecrypt($value, $iv)));
...
return mcrypt_decrypt($this->cipher, $this->key, $value, $this->mode, $iv);
...
$this->app->bindShared('encrypter', function($app) { return new Encrypter($app['config']['app.key']); });
other attempts
var cookie = JSON.parse(new Buffer(req.cookies.gjsess, 'base64')); var iv = new Buffer(cookie.iv, 'base64'); var value = new Buffer(cookie.value, 'base64'); var MCrypt = require('mcrypt').MCrypt; var desEcb = new MCrypt('rijndael-256', 'cbc'); desEcb.open('YourSecretKey!!!'); var plaintext = desEcb.decrypt(value, 'base64');
This does not give an error, but still gets useless data.