Saturday, March 30, 2013

Circles-JS

Circles-JS — it's Pulsate clone in JavaScript using HTML5 Canvas.
Description of algorithm (in Russian) and C++ code was published earlier.
Source code is available on bitbucket and github.

Wednesday, March 27, 2013

Snake Game on HTML5 Canvas

To explore HTML5 Canvas features I've made a simple version of Snake game using canvas and JavaScript.
I've put my source code on github.

Friday, March 22, 2013

IT Tomsk - Web Studios

Несколько лет назад, я начал составлять список IT компаний Томска. В тот список я не добавлял студии, занимающиеся только разработкой сайтов, планируя составить их список позже. И вот, наконец, я собрал немного информации о веб-студиях Томска.
Со времени публикации первого списка, некоторые веб-студии, о которых мне уже было известно, изменили имя, некоторые закрылись, и, конечно, появились новые. В итоге в списке веб-студий получилось 17 компаний.
Возможно, позже, объединю первый список софтверных компаний и данный список веб-студий в один единый.  По мере поступления информации о компаниях обновляю данный список.
Последнее обновление 06.05.2013.
Web-studios based in Tomsk. Tomsk web-studios logos. Веб-студии Томска. 

Список представленных компаний

Altedit
DealWeb

EDISON

Interweb Lab

ITScript

Nikolas Group
http://www.nikolas.ru

ONELAB

Online-media


USERSTORY – до 2012 года компания называлась «РосБизнесДизайн».
http://userstory.ru


Бобяков.ру

Медиа-Ком

Мягкий знак

Самани

Симэкс-Т

Студия 15

Monday, March 11, 2013

RuCTF 2013 Quals - Stegano 200 writeup

Strange shoplist
That sailor has a weird shoplist. I'd like to know what he's really gonna buy.

A binary file shoplist.bin is given.
After some inspection of file Progressor revealed that a binary representation of this file is looks like Morse code.
I've used the next script to convert binary to Morse code:
f = open('shoplist.bin', 'rb')
data = f.read()
f.close()
result = ''
for b in data:
    result += bin(ord(b))[2:].zfill(8)
print result.replace('1110','-').replace('10','.').replace('00', ' ')
Here is converted code:
-.- .--- ..- .-- --. --.. .. -.- .. .-. --.. --. ... --.. .-.. . . -... -... --. -.- -.-- .-.. --- --- -- ..-. ..-. --. ..--- -.. .--. --- .--- ..--- --. -.- ...-- - .--- -. --.. - --.- ..- - .-.. -... -- -. --.- -..- . ...-- ...-- --- -. . ..-. . --.- -.-- .-.. -. -- .--- ..--- -..- . --.. ...-- ..-. --- .. ..-. . ..--- -.-- .-.. ... -- ..... --.- -..- . ..--- .-.. --- -- ..- ..-. . -- ...-- -.. .--. --- ...- --.. .- ..- --.- - -... -- -. -..- .-- ....- .. -.-. ..-. -. --.. ... .... --. .. -... --. . -... .. --. ... --.. .-.. -.. -- ...- --.. --.- ..- --.- ...-- -... -. --.. -..- --. -.- --.. -... .- -.- -. ..--- --. -.- ..... ...-- ..-. -- --.- --.- ..-. .. ...-- ...-- -. -- ..-. ..--- --. -.... --.. .-.. - -... .--- .--- -..- -.- --.. ...-- -... --- .. ..-. . -.- --.. ...-- .... --- -- ..-. . -.... ...-- - .--- -. ..... -..- .... --. -.-. ... --.. -- ...- --.- -..- --. ..... .- -.- -.- --.. ... .-- --- --.. .-.. ..- -- ..-. .-. --. -.-- --.. .-.. - -... .--- -.. .-- -.-. ....- - -- -. ..-. .-. --.- ..- --.- - -... -. -. ..- .-- ....- --.. --.. .- -.- -... -..- -..- --- --.. -.. ..-. --- .. ..-. . --. ..--- -.. ..-. -- ...- --.. .-- -.- -.-. .. -.- -.- -... -..- -..- --- --.. -.. ..-. --- .--- ... .-- .. .. -.-. -. -. ..-. .-- --. .-- -.-. ... --.- -. ..... ..--- --. -.-. ..... -.. .--. -- ...- --.. --.- ..- .-. ...-- .--- -. --.. - .-- -.- ....- --.- -.- .. ..-. ... --. -.-. ....- -.. ..- -. ..-. ...-- --. -.- .. -.-. -.. -. ..... .-- .-- . -.-- .-.. ..- . -... .--- --. ... --.. - -- -- ..- ..-. . --.- ...-- ...-- ..- . -... .--- .-- -.-. ..... .-.. -.. -- ..- ..-. ..-. --. -.-- .-.. .... -- ..- ..-. . --. -.-- .-.. --.. -- ...- -..- --. ....- --.. .. .--- .--- ..... -..- --. ... ...-- ...-- --- . -... .. --. -.... ..... ...-- . -- ...- --.. .- ..- ...- -.. .. .--. ..-. .-- .-- -.- -.-. ... -.. --- ...- .-- .-- ... ...-- --.- -.- .. ..... --.- -..- . ...-- -.. .--- -- -- --.- ..-. .- ...-- ...-- -..- -- .-. ... -..- . -.-. ... --- --- ...- ..--- --. ..--- --.. .-.. .... -... .--- -... .-- --.- ..--- .-.. -- -. . --.- ..-. .- ...-- ...-- -..- -- .-. ... -..- . -.-. ... -.-. -. .-. --.- .-- --. ..--- --.. .- -.- -... ... -..- .- ....- -.. ..-. --- .. -...- -...- -...- -...- -...- -...-

After translation of the code we obtain the next text:
KJUWGZIKIRZGSZLEEBBGKYLOOMFFG2DPOJ2GK3TJNZTQUTLBMNQXE33ONEFEQYLNMJ2XEZ3FOIFE2YLSM5QXE2LOMUFEM3DPOVZAUQTBMNXW4ICFNZSHGIBGEBIGSZLDMVZQUQ3BNZXGKZBAKN2GK53FMQQFI33NMF2G6ZLTBJJXKZ3BOIFEKZ3HOMFE63TJN5XHGCSZMVQXG5AKKZSWOZLUMFRGYZLTBJDWC4TMNFRQUQTBNNUW4ZZAKBXXOZDFOIFEG2DFMVZWKCIKKBXXOZDFOJSWIICNNFWGWCSQN52GC5DPMVZQUR3JNZTWK4QKIFSGC4DUNF3GKICDN5WWEYLUEBJGSZTMMUFEQ33UEBJWC5LDMUFFGYLHMUFEGYLZMVXG4ZIJJ5XGS33OEBIG653EMVZAUVDIPFWWKCSDOVWWS3QKI5QXE3DJMMQFA33XMRSXECSOOV2G2ZLHBJBWQ2LMNEQFA33XMRSXECSCNRQWG2ZAKBSXA4DFOI======
This text is looks like some kind of BaseXX encoded string.
I've tried to decode it with Base32 and got the text. It's strange shopping list:
Rice
Dried Beans
Shortening
Macaroni
Hamburger
Margarine
Flour
Bacon Ends & Pieces
Canned Stewed Tomatoes
Sugar
Eggs
Onions
Yeast
Vegetables
Garlic
Baking Powder
Cheese
Powdered Milk
Potatoes
Ginger
Adaptive Combat Rifle
Hot Sauce
Sage
Cayenne Onion Powder
Thyme
Cumin
Garlic Powder
Nutmeg
Chili Powder
Black Pepper

The item Adaptive Combat Rifle from the list was a flag.

RuCTF 2013 Quals - Stegano 300 writeup

Strange song
Who is the author of this song?
We are given a file. By file's header we identified that it's midi song.
Also in the header we have found interesting letters sequence: pwriyuajqscet hkbfxmlvdogn.
The sequence consists of 26 chars and contains of letters of the english alphabet without the letter "z", and space char. Letters of this sequence are unique, and that let us suppose that it's some kind of alphabet.
After listening this strange midi song, and trying to recoginze it with music recognition programms, we decided to open it with midi editor.
I've used Audacity to import midi file. Here is how opened midi file looks like:

After looking at the sequence of notes, I've noticed that long and short notes are alternating, and follow one after another, never overlap other. It gave me the idea that this is a message consisting of the notes. So I've wrote out all the notes from song. Totally 88 notes in 3 octaves.
a#3 f4 c5 d#5 | e4 f4 d#5 a4 | f4 f#4 a#3 d4 | g4 g3 f5 e5 | f4 g3 c#4 f4 | e3 c5 a#3 g#3 | g3 f5 e5 f4 | f3 g3 e4 f#4 | f4 d#5 e4 f#4 | d#4 f#3 f4 e3 | d#4 d#5 e3 c5 | d#4 f4 g#3 d#5 | a3 f4 g4 f5 | d#5 f3 f4 e5 | d#4 e4 e4 g3 | f5 e5 f4 e4 | f#4 d#4 b4 f4 | e4 d#5 f4 d5 | d#5 f4 c#4 e4 | f#3 a#3 f5 e5 | d#4 f4 e4 f#4 | g3 f5 e5 c#4

In 3 octaves of piano keyboard the song notes are laid between e3 and f5. It's exactly 26 notes.
e3 f3 f#3 g3 g#3 a3 a#3 b3 c4 c#4 d4 d#4 e4 f4 f#4 g4 g#4 a4 a#4 b4 c5 c#5 d5 d#5 e5 f5
So by replacing piano notes with letters from found sequence, I got a message:
a lot of hacking is playing with other people you know getting them to do strange things 
It's Steve Wozniak's quote. So he is an author of this strange song.

Monday, March 4, 2013

Base91 CSharp version

To solve Misc 200 task from CodeGate CTF 2013, I've implemented C# version of Jochaim Henke's Base91.
Now it's available here http://base91csharp.codeplex.com