RSM Utils Update

So some of you might know this, I have this utility library that I’ve started a while ago to help me with a few things. Mostly it’s stuff that I repeat over and over in every project. I also add a few things here and there. But one thing was bothering me. I was tired that it was causing a certain dependancy with a dll/so file. The library being distributed under zlib/png license, to me it didn’t made sense to have this dependancy, even if the code is open source. What I really wanted was to be able to just include the file you are interested in, and voila.

So what did I do? I removed the dependancy. Removed all the .cpp files, removed the generation of a library file, and re-organised the class accordingly. So now, we finally have a header-only utility library. And it works just as well. Also you guys might have noticed that I removed the Travis-CI file. The latest addition to the library requires threads, and I can’t have them with Travis-CI. Finally everyone, remember that you are more than welcomed to do pull requests or to submit issues if you notice anything’s wrong.

On such, take care everyone and have fun!

Simple Password Generator

Hey what is up everyone? It has been a while. I’ve been so busy, and to be honest, I wasn’t sure if I wanted to continue writing stuff. But I’m back, at least for now. And I’m back with a simple online tool for you people who need a password, but don’t want to bother generating one. I present to you my online Password Generator which let you generate easily passwords.

How to use it?

How does it work? Well you really have three possibility. First of all you can go on the landing page. On this page you can give information to the system on how you want your password to look like. But this is long. The second solution is doing a regular GET request to password generated page. This will generate a 12 character long password that may contain letters(capital or not), number and special characters. Finally, you can also do a POST request to the same page, but this time containing information on how you want your password to look like, much like how the landing page do it.

But where’s the code?

As usual, like most of my projects and stuff, the code for this is open source. You can find the code here. The tool is developped in ruby using sinatra. You are more than welcomed to contribute to this project. And don’t forget to follow my Github for more projects.

Until then, take care everyone!

Astral Tides: The adventure continue!

Hey everyone! This is a just a small post to say that the team behind Astral Tides(which includes me) has decided to continue working on the game. Although some of us are student or have a full time job, we think we can actually finish this thing and have something come out of it. So I’d gladly appreciate it if you guys could follow the game either on Facebook, Twitter or Instagram. All three is even better. And there is the website of course. We’ll posting soon more information on what we intend to do, and how’s the progress on the game. So you better get on those to make sure that you get all the latest information about the game.

Finally, I’ll let you go guys with a 2 minutes video we had to do for a presentation about the game. Enjoy!


Hey there! Been a while hasn’t it? So what has been up with me? Well I’ve been pretty busy with school and work, but that’s the usual. What I’m writing about is the event that occured last week-end. I’m talking about the hackathon organized by GSOFT, the #SlackathonMTL. The hackathon theme was very simple: For a better workplace. And as you may have figure out already, the hackathon revolved around Slack. In fact, we had to make a SlackBot for Slack that respected the theme. In a total of 24h. From Saturday 9:30AM to Sunday 9:30AM. And wow, we did good.

Here comes Schedulo

For our bot, we decided to tackle a specific problem that arise in every organisation, the struggle of setting up meetings. We figured out that when you want to schedule a meeting, as soon as you need more than 3 persons in that meeting, it gets painful to setup. Finding the right moment that everyone is free, for how long, etc. is not easy. And the more people that needs to be in the meeting, the more painful it gets to organized. And this is where Schedulo comes in play. Our bot uses natural language processing to analyse what is going on in the conversation and figure out that you want a meeting. It tracks specific keyword to be sure he won’t start the process of a meeting for nothing. And once it starts the process of a meeting it’s very easy, Schedulo will pull out the calendar of the different members in the channel that could be useful in the meeting and find the best moment that a meeting could be scheduled for the team members. And if somebody can’t at that moment for whatever reason, he can say it and Schedulo will find another moment that fits the best for everyone. And once the everyone is happy with a date, it put the meeting diretly in your calendar. That simple.

The challenge

Now, unlike most hackathon in which I took part, this one focus was more on the marketing and sale than on the code itself. But we didn’t know that before end and so we arrived 4 programmers, ready to rock the code. That hurted us, because we had to do a pitch sale and present the project in front of two judges to go to the final round, and present in front of everyone. Thankfully, a member of our team was good enough to make a nice slideshow and did an incredible job to sale us, because we got into the final round, with 5 other bots. Sadly, we didn’t win. We got a special mention from the judges though.

While I’m sharing the website of the project, please keep in mind we had no designer. Yes the landing page is a disaster. Gotta deal with it! Come and see Schedulo!

On such, have a nice day friends!

Ubisoft Mtl Game Lab Competition 2016

Wow! What a few crazy months it has been. I didn’t see the time pass by. To be honest, I’ve been very, VERY occupied in the last few month. School took the usual toll but this time I had also something else: The Ubisoft Mtl Game Lab Competition 2016. This competition organized by Ubisoft Montreal is simple. Each team has 10 weeks to make a game prototype that follow multiple constraint and a common theme. And each team are composed of up to 8 students currently in enrolled in a University. Well, I’m proud to say, we did it.

The constaints

Like I said, the game had multiple constraints and a specific mandate:

  • Have two systems that interact with each other
  • Have three game mechanics that interact with the systems
  • Have an evolutionary progressive curve
  • Checkpoints
  • Elements of physics
  • An element of AI
  • The game must use either Unity3D or Unreal Engine 4
  • The game must be rendered in 3D
  • The avatar must be visible on screen
  • Have at least 10 minutes of gameplay
  • The use of a gamepad is mandatory

And the theme was Ocean.

Astral Tides

This is our game. Three programmers and five artists contributed to the game. The concept is simple: You’re an astral being that realises that the stars of the constellation starts to fall in the arctic. You decide to take the shape of a wolf to go in search of the stars. To help you in your task, you can control the tides to solve the different puzzle that you will come across. Our systems were the water tides and the water streams.

For more information, make sure to take a look at A build will soon be put available for people to play.

Finally, here’s a small gameplay footage.

Thanks and have a nice day folks

Advent of Code 2015

So here I am, not far from Christmas and wondering what to do. And that is when I find this marvelous thing call Advent Of Code. It’s a countdown to Christmas and offer a different programming challenge for every day until the 25th. So I thought, why not participate in this. It’s a good occasion to learn some new tricks, new language, to experiment in some funky way and be creative. And if you guys want to see how I do it, just go take a look at my repository on github.

On such, have fun and have some nice holidays.

Hackfest 2015

Last weekend was the Hackfest 2015 in Quebec City. A cybersecurity meeting with multiple conferences concerning different security issues and flaws. Most of those conferences were interesting and showed some very interesting technique and technology. But the thing that was the most interesting to me was the CTF.

A very much network oriented CTF

The CTF was not like other CTF I did. Most challenges were network oriented, and this is not the kind of things I’m really interested in. But I guess it was a good occasion to learn and practice. Which is why I’m going to talk about a specific challenge on which I needed to get a shell through a website, giving me access to the server behind it.

Poping a shell

Here’s how it went. Basically, we had a website with multiple pages. There wasn’t much we could do on those, but there was one specific page where we could upload our resume. This to me rings, here’s my entrance door. Now how to exploit this? The first thing that came into my head was to upload a php file where I would have a simple shell_exec('ls') to see what could be done. Now the server refused the file since it’s extension was not pdf. Alright, let’s change the extension and see what happens. Uploading the php file with the extension .pdf works. Great. That means I can put anything in the file, as long as it fits the pdf extension.

After a little bit of search, I found out the files were uploaded to /uploads of the website. Now I know where to go to execute the code. But loading my uploaded php/pdf file does not execute the code. It thinks it’s a pdf file, and just tell me the pdf is corrupted. How to fix this? This is the moment where using Burpsuit is usefull. Using Burpsuit, I could change the extension after server validation to .php. That still failed though. But the extension .php4 was not. Changed the extension to that, load the file in /uploads, and BAM! got my shell.

After that, it was just a question of finding the flag. Doing ls showed a file call flag.php. That was it. Doing cat on it, outputed the content of the page, and in html comments was the flag. Success.

Local Hack Day 2015

Hey there peeps, today is the local hack day. It’s a 12h hackaton. Basically, you program whatever things you want, as long as you have fun and learn. So I’ll probably be live tweeting throughout the day. Be sure to follow me on twitter: Twitter Handle

Have a nice day!

Program on Photon

Been a while heh?
So I’ve been fairly occupied in the last month, with work and school starting. But one thing I had the chance to work on is the latest toy from Particle: The Photon. Though the performance are not incredible, for the price, it’s incredible. This little thing is really nice, and you flash it over the air. Actually, this thing stays connected on the internet and you can interact with it from anywhere, as long as you have access to the particle dashboard and services. I really suggest that you guys try it.

So what did I do with it?
Well as some of you know, I’ve been working on home automation devices for the past few month and we thought that this little thing could really help. Attaching a Zigbee radio to this thing, I was able to set up a whole network and control system for the Zigbee devices. And what is really nice is the fact that it’s really lightweight and small. It doesn’t take any place at all and only require a small micro-usb connection to power up.

So yeah, try it!

GitLab + Jenkins + CMake = Party!

Oh the joy of deploying an automated build system. I mean, how I hard can it really be? Well harder than it looks. Now don’t get me wrong, most CI(continuous integration) system are well done and make it easy. But when you need to test on multiple system at the same time, with very subtle difference, you end up with no system almost that can really fit your needs.

Now what I wanted was setup a full CI with GitLab. The first thing I obviously tried was GitLab-CI. That would have been too easy. Even if I don’t talk about the non-understandable error 500 I kept getting, I was stuck on a old version of GitLab, making it impossible to really make it work with GitLab-CI. Next? Well an obvious choice was Jenkins. It’s popular and has a lot of plugins and support. Let’s try this!

Oh god, why did I do that. Now don’t get me wrong, I got Jenkins running fairly fast, and using a few plugins such as the CMake and GitLab plugins, I was able to get it running. But only for one platform. The issue is, I needed a distributed system that build on Linux, Mac, and Windows. Where is the problem? CMake. CMake requires you specify the generator for the project. But Jenkins allows me to only configure one CMake generator. So it’s either Visual Studio generator for Windows, or Unix Makefiles for Linux and Mac. Making it in the end fail, but just because the CMake plugin is too dumb. Now I could program another plugin and allow multiple generator, but that would be way too much work. What to do?

I thought I could easily set up multiple installation of Jenkins instead, and just tell GitLab to tell all of them when a commit is pushed to the project. I was more or less right. I can do that in GitLab. But Jenkins ignores the request for somereason. It really wants to be configured as a CI system in GitLab, else it won’t work. But there is a workaround. Dirty, but it works just fine and is not really a problem. How did I do it? Well normally in GitLab you would set-up a web hook like this: http://myJenkinsServer:8080/job/MyProject/. And with the CI configuration done in Jenkins and GitLab, this would trigger the thing correctly. But since I couldn’t do that, I found that you can basically write anything has a web hook. Here’s what it looks like instead: http://myJenkinsServer:8080/job/MyProject/build?delay=0sec. See what I did that? I scheduled a build to be executed in exactly 0 seconds. Making it right now. So whenever a commit gets pushed to GitLab, the web hook is called. Jenkins is going to ignore the data that is sent at the same time, but is going to trigger a build, running the test and doing everything I need. All I have to do is have this web hook set up for my different projects, and for the diffrent platforms. No biggy there.

tl;dr: Had to setup CI with GitLab. Did it with Jenkins. Used a workaround to scheduled a build every commit instead of automatic trigger on commit getting pushed. Works and we’re happy.