Quite a while ago I compiled a list of Skype chat commands from the ones available in the Skype help as well as from various sources all across the Internet. Later on I got curious and decided to inspect Skype a bit more in depth and I was able to retrieve another list of hidden or mysterious Skype commands from the application.
I have been asked a few times how I did that and I thought maybe it would also be interesting for some who didn’t ask and compiled a short step-by-step guide how I extracted the list of commands from Skype which were (at that time) documented or known nowhere else. Maybe it’s also interesting and applicable to inspect other applications but I’ll concentrate on Skype in this posting. The process is pretty much the same for most other applications.
Tools
For the analysis of Skype there are only two tools needed:
- Process Explorer – the #1 tool for working with all running processes on your Windows machine. Part of the excellent Sysinternals Suite written by Mark Russinovich. No installation required.
- Notepad++ or any other texteditor of your choice which can handle really large textfiles and search efficiently in them.
Analysis Steps
For a short summary that’s a rough overview how I inspected Skype: loaded up Skype normally, dumped it’s memory image (or better: string extract) with Process Explorer and did a manual search for command-like strings in the dump. The detailled process is as follows:
- start up Skype normally
- start up Process Explorer, confirm first-time dialogs etc. until you see the process overview
From Skype Memory Analysis - locate "Skype.exe" in the process list and double click it
- switch to the "Strings" tab in the occouring process window (could take a few seconds)
- select the "Memory" option on the left bottom of the window (could take again a few seconds to complete)
From Skype Memory Analysis - save the strings dump to a textfile via the "Save" button on the right bottom of the window
- load the resulting textfile in the text editor (Notepad++ in my case)
- search for one of the already well known commands (e.g. "/help")
From Skype Memory Analysis Now you should be in a region of the file where several commands are visible. Looking for additional commands is merely a try&error of the strings around that location and observing possible effects. The same approach can be used for in-text replacements like smilies, flags or similar. From that on things get pretty inconvenient. Some of the commands or usable strings are clearly identifyable as such (like "/help") but not all of them are prepended with a "/". Examples for such are the flag-identifiers ( eg: (flag:uk) ) or the smilies. Looking for such strings in a file with more than 400k lines becomes pretty tedious after a while. But using some of the known strings as anchor points makes it a bit easier.
So, all in all that’s how I approached the Skype app and found out about (up to that point) aparently unknown and undocumented commands, icons and shortcuts. Maybe I’ll make a run again sometime and look if something as changed but for that there has to be a chunk of spare time available.
Repurposing an ATX Power Supply
For my LED Cube Project I already hinted that I may use an old ATX power supply as repurposed power source. In the past two weeks I found some evening time to work on that subproject. The plan was to use an old ATX power supply which I had left from old computer parts and equip it with banana sockets to make the common PC voltages easily available to use for my electronic projects. This repurposing seems natural as the voltages available from PC ATX power supplies are the same which are most commonly used in hobby microelectronics (3.3V, 5V, 12V). Additionally these devices provide a high stability and current capacity as they have to offer those requirements for stable computer operations which demand extremely fast switching load capability and still let the PC rely on a stable supply.
I found several resources on the internet which explained how to refit an old ATX power supply to offer nearly stabilized Lab Power Supply capabilities. It seemed not too hard and I decided to use the information from that descriptions to add the banana sockets, status LEDs and the switch directly into the metal case of the power supply itself. From the pictures on the internet that seemed possible without much problems.
Since that is now finished and (surprisingly?) working as expected I’d like to share my experiences.
Update 2013-03-08
I did not use fuses for the power lines when modifying my PSU. In theory the PSU should turn itself of in case of shorts but there may still be the possibility for very high currents during a short period of time. It is highly advised to add properly sized (check the rated max current) fuses to each supply current line!This was the old power supply which I could scavenge from a retired computer.
From ATX Power Supply Repurpose From the outside it looked pretty innocent. During my preparation research I learned that ATX power supplies have some characteristics which have to be considered during modification and utilisation of the electronics.
- altough there is a standard for ATX power supplies, some supplies do not meet certain requirements (esp. behavior in edge cases)
- activation is pretty easy, just connect PS_ON (green) to GND
- to provide stable voltages many power supplies require a certain minimum load
- power supplies are not guaranteed to be short-safe
- a signal on the PWR_OK line does not guarantee a stable power source (especially on cheap supplies)
- stored leftover energy in the power supply can be lethal, so extreme caution is highly recommended
To find out the exact behavior of my power supply I tried out various connectins and measurements directly on the ATX connector. As the side of the supply told it was capable of up to 22 Amps on the 5V line so I’ve been already very careful here and checked the ATX connector layout several times to prevent accidents and violent reactions within my hands. I’ve been a bit nervous during that measurements that’s maybe also the reason why I forgot to take photos of this. Well, I learned following from these tries:
- PS_ON is really easy to control
- my power supply also requires a minimum load
- the PWR_OK signal works as expected
- no PWR_OK without load
- PWR_OK turns off again if load is removed later on
- the standby lines keep their voltage quite some time after disconnecting the supply from main power, indicating a high internal capacity
Before I decided to rip open the guts of the supply, I left the box sitting unconnected for two days to be absolutely sure that I’m not suprised by some leftover charge. After two days the box was stripped naked.
From ATX Power Supply Repurpose The open supply made me realize some additional but unexpected problems. Firstly there was much less space available for additional wires.Secondly the space on the front panel was obstructed by heatsinks. Therefore it would be a pretty limited working area and I also had to place the banana connectors between the heatsinks. Luckily at least all cables were properly colored and even correctly annotated on the PCB. So I continued and marked the locations of all additional components on the frontplate.
From ATX Power Supply Repurpose During my tests on the breadboard I realized that load resistors (I used two 5Ohm/5W ceramic resistors in serial) get quite hot when connected to power, so I decided to not have them dangling around in the box but clamp them tightly on one of the heatsinks. Checked, that this solution also fits in the tight space with the banana connectors and wires in place and continued to the next step: drilling the holes in the front plate.
From ATX Power Supply Repurpose I chose the size of the holes by measuring the dimensions of the banana sockets, LED covers and the switch with a caliper. After that I drilled smaller ~1mm holes to better be able to control the position during drilling and re-check the dimensions and gaps between them. During that I had to reposition the holes for GND and 12V as I did not initially take onto account the metal bridge of a hanging transformator, which I removed for the work, behind it. After that I extended each hole to its final size with the correct drill.
Quickly after beginning the first hole I saw that the case was thicker than I anticipated and much more flings built up than I expected. I was worried that these could pour into the power supply and cause unpleasant surprises when they survived the final cleaning between the contacts on the supply board. During drilling I could only make sure that the outer side of the drilling holes did not spray flings into the case so I folded up some newspaper pieces as protection and sticked them tightly on the back of the holes to catch all flings which would otherwise fall into the PSU on the inside during drilling. This worked remarkably well.
From ATX Power Supply Repurpose After the holes were finished I began to mount the status LEDs, the power switch and the first two banana sockets.
From ATX Power Supply Repurpose Also the load resistors were soldered together, clamped on the heatsink and, as almost everything I mounted inside the PSU, protected by maybe a bit too much shrink tubing.
From ATX Power Supply Repurpose With the more complex wiring in place I continued with the connections to the remaining voltage sockets which should not take too much time. At least that’s what I thought. In reality connecting the remaining four voltages caused much more trouble than the first part. The main problem for me was that I initially tried to always connect all available wires for a certain voltage rail to the banana socket. I failed with this target as it was very difficult to screw the wires onto the sockets in the very tight working area between the components of the PSU. Furthermore the thick pack of wires were squeezed out of the screwings when they were tightened. In the end I decided to only connect two or three cables to the sockets, clip off the rest and isolate those with shrink tubing. For the 3V3 connection one of the cables I connected was the brown 3V3_SENSE connection which is necessary for a stable 3.3V supply voltage.
Another problem was that the black shrink tubing was very difficult to get over the socket connectors when the cables were in place but with a lot of fiddling I managed to pull all of them over the sockets and properly isolate the power rails.
From ATX Power Supply Repurpose Finally I cleaned out the PSU with a compressor and lots of air, did a thorough visual inspection of the modifications and the board, re-installed the initially removed transformer and closed the case of the PSU. The ATX bench power supply in its final beauty:
From ATX Power Supply Repurpose After carefully plugging in the PSU and using a rubber glove to turn on main power on the backside I did a quick check if the case was free of erronous current. Then I again carefully turned on the new switch on the front, checked the safety of all metal parts once more and finally did a touch-test if it’s really safe to the bare hand. Being confident that everything was OK and the LEDs correctly indicated the status I took a check of the voltage levels on the sockets with the multimeter.
From ATX Power Supply Repurpose My multimeter showed all voltage levels to be within acceptable limits (11.7V, 5.1V, 3.4V, -5.1V, -11.4V) and without any fluctuation. I therefore consider this PSU repurposing sub-project a complete success. What’s still left is to stick rubber bumpers on the bottom of the PSU and add properly printed annotations to the elements on the front instead of the pencil writing. But since I don’t have any of that around that’ll have to wait a few more days.
If you’re interested in more images, there are many more available in the album which also show the progress in a bit more detail and from different angles. Included are also some shots of the mess on my desk during the project and an accident with a banana socket where it broke when I tried to screw it tight with too much wires.
Some resources for those who are interested (sorry, most of them are German):
- Youtube – Converting Computer ATX Power Supply to Lab Bench Power Supply
- Youtube – PC Netzteil als Spannungsquelle
- http://conelek.org/Datei:ATX20_Anschlussbelegungs.jpg
- http://conelek.org/ATX-Netzteil_zur_Stromversorgung_von_Steckplatinen
- http://www.pc-erfahrung.de/hardware/atx-netzteil.html
- http://www.pcguide.com/ref/power/sup/funcAdditional-c.html
A new approach for hiding text in SEO?
Prolog: I thought a lot about making this idea publicly available as it may add another ace in the hole of SEO engineers and degrade search results, at least for a while, if it is really applicable. But in the end I decided in favour of writing it down as I think the detection of this should be not too hard for search engines and it has a very interesting technological approach which may be also useful in different applications.
To make sure, I did not test this and maybe never will as I do not want to jeopardize my search engine ranking. It may very well be that this is completely useless and non-functional but I’m not taking any risks here.
You should always consider to improve your content before trying to raise your page-rank via dubious techniques.
So, here we go:In a discussion with a coworker today we came to the topic of font rendering on a search result page of a project we’re currently working on. I don’t know how we made the connection but at some time we were discussing SEO techniques.
At that time an idea arose in my mind. Everyone concerned with SEO nowadays should know that hiding text from the page visitor and just having it in the page for the search engine is evil. Every search engine should be able to detect such intentions and add a penalty to the page if such questionable tactics are detected. Such SEO techniques to make text invisible are for example:
- text color is same as background
- place text in a div-element and hide it
- place text in a div-element and position it offscreen
- place text in a div-element and place it behind other stuff
- unrecognizable tiny font-size
All of these text-hiding approaches are in my opinion detectable by "simply" analyzing all HTML and CSS of a webpage. But what if you do not hide the text but display it? No color-tricks, no awkward positioning, no font minimizing? Search engines should not apply a penalty if you’re not trying to hide text, right? There are also tricks which utilize JavaScript to hide text after it has been loaded in a browser but search engines are gearing up and are already capable of executing JavaScript on a webpage during their crawl to detect such tricks.
My idea deals with none of those tricks. What came to my mind was to utilize not the descriptive information in HTML and CSS to hide text but the graphical information required for rendering. To be able to render the text visibly but still make it invisible to the page visitor my idea was to utilize a web font which has just empty glyphs in it for each character.
The @font-face should nowadays be supported by all major browsers and allow to retrieve the font also from a custom location and font file. So to "hide" text on a webpage you have to create a custom web font where each character is included but contains an empty space for the rendering of the characters. Then add it to the CSS and declare a font-face for it. Finally style the text to use the CSS with the custom font. It should now be invisible for the average page visitor but still visible for the crawler.
If the search engine would have to detect this it would also have to download the custom font, render it and have a detection algorithm that the rendered font does not display any text. As far as my knowledge and a quick research told none of the major search engines are currently also fetching resource files like custom fonts during their crawl operations. (But I think, if this trick to hide text gains any significant spread, search engines will begin to actually do this and quickly detect and penalize blank fonts.)
Another quick search also did not reveal anything that this idea has been tried or discussed elsewhere so maybe this is really a new approach. Drawbacks to this could be that until the web-font is loaded by the browser the text may still be visible. Furthermore browsers which do not support web-fonts may also display the hidden text. But these should be neglectible.
No more Skype-control through Internet Explorer
For quite some time now the Skype-control pages I created in the past (Skype Rich Mood editor and Skype Contacts Overview) have been broken for recent versions of Internet Explorer and Skype. But because of my occupation for University until now I had no time to have a deeper look into that issue. Today I decided to change that and fix the functionality again.
Sadly I had to come to the conclusion, that access to Skype from within the web browser is permanently impossible and most probably won’t change in the future. The main reason behind this is because Skype changed the application so that its Skype API does not communicate with Internet Explorer anymore.
Since the Skype4COM interface refuses to connect to the Internet Explorer only one possible workaround would be to write a custom application or ActiveX object which is able to communicate with Skype and load this one into the Internet Explorer instead. In fact, that’s probably the way how kiwik.im works, as you have to install a desktop application to make the homepage be able to work with your Skype client.
Nevertheless I refrain from following that same path as I personally don’t want people to have to install some black-box application from someone they don’t know (and trust) and grant it access to probably very sensitive data. Furthermore it would be a waste of time as there are already applications available which provide that functionality and more in a more convenient way.
Maybe sometime in the future I will have another take at it and try to find a more convenient workaround (maybe something possible with another technique available in IE like Java, VB, …) but for now my browser Skype projects are not in working state and just kept for historical reference.
Sorry folks.
What an interesting week
The past week has been a very interesting and productive one for me.
In terms of education this week is the last week where I’ve been busy with a project assignment at the university where we had to check a webshop for security. To make it short, the webshops walls fell after roughly 2 hours of work. This was my first real attack on a webserver and I never expected it to be so easy. After this I’m more surprised not of the simplicity of the breakin but that real hacks on other webpages do not happen more often than it’s visible in the media. Since these two hours would not be worth a lot of project work we continued with our efforts and tried to find other holes in the server. The second hole took a bit more time and research but nevertheless it was worth much more doumentation. Some more attacks were also unsuccessful or not applicable because we had to target a virtual machine which was not completely reserved for us. Nevertheless, this project work was a very interesting one and we even had fun during the process.
The second interesting topic is that this week I was finally successful in compiling my own working kernel from scratch for my LG Optimus 2x smartphone. In the end it boiled down to having the wrong compilation options for my environment which was resolved when I received some help from an experienced kernel modder in the forum. I also created a small guide on how to set up a compilation environment for compiling stock kernels for the LG2X. Maybe it can help others in also taking up some development on this phone. What I already recognized in the kernel is, that it is compiled with a lot of unneeded features and fully turned on debugging features. Nothing which is really needed in a production environment and therefore leaves quite some room for tuning.
The last thing I’ve been busy with was the launch of the Raspberry Pi. This is a nice little computer on a PCB which provides HDMI output at an incredibly low price. This new device was so hyped and limited (only 10k pieces) that the webservers of both worldwide electronic component distributors went down within moments after the official announcement that they will be responsible for selling the thing. I also participated in this "DDoD" but was (as most others) unsuccessful in the morning. Later in the evening one of the shops was reachable again (more or less) and I could place a preorder. The other shop only allowed a "registration of interest". Just received a confirmation of this an hour ago 🙂 I hope that I don’t have to wait too long for this to be available for me. As if I had time to play with it…
Ah yes, one more thing. I got promoted at work, finally. I hope it also materializes well on the paycheck and not only in officially increased responsibility.
Lesson #1 for mobile phone hackers
I’ve been modifying my phones from the instant I had the possibility to run custom software on it. While it was still somehow limited with my Nokia E50 things became quite interesting when I got my HTC Magic. With Android the possibilities for optimization and modification which were possible grew enormously.
Until yesterday I’ve been pretty lucky. All my modifications on my HTC Magic or recently on my LG Optimus Speed (P990, yes it’s back in the meanwhile and working as expected, yay!) never required me to roll back to a backup before my modifications (or were required because for convenience reasons). Well, until yesterday. I did some modifications on the filesystem and aparently in the process some system files were corrupted and not recoverable by e2fsck anymore. When I tried to recover the state before my modifications I was struck by lightning as I realized that I had forgotten to take a backup before. I remembered that I had to wait some time before the backup and I had already been in the correct menu where backups are performed. But out of some reason I didn’t do it anymore. Crap.
Well, this little incidend required me to completely reset the device to factory state (by reverting filesystems, applying operating system updates manually, etc.) and reapply the last working backup I had at hand. Which was a week ago. Furthermore I lost all contents of the internal sd-card during the reverting process which I didn’t expect to happen. Meh…
As I’ve been pretty consistent with performing backups before my experiments and modifications I’d like to rephrase the #1 rule for all hackers a bit:
Rule #1: Don’t forget to perform and check your backup before applying any changes!
Nevertheless, I’m taking this risk because as the modifications have proven to me with the E50 and the Magic that I can prolong the usual end of life (the point where they’re just too old or unusable because of apps) of my mobile phones for 1-2 years compared to the stock and unmodified versions. I wonder, how much life I can squeeze out of the LG dual core…
Windows XP explorer changed behaviour on SP3
Yes, I know, Windows XP is already almost at the end of its life and there isn’t much more to add to it. But since I got a new notebook at work to try out and I’m currently in the process of fitting it to my needs, which also involves installing an alternate shell, I’m writing down a small finding for which I found no additional information on the rest of the internet.
The behavior of the "/e" parameter for the Windows Explorer (explorer.exe) has changed between Service Pack 2 and Service Pack 3. This change only has an effect, if there is an alternate Windows shell active. Until SP2 if there is no explorer.exe process running, a call to "explorer.exe /e" starts the shell and tries to open the folder "/e" which obviously leads to an error (and a started Windows shell). If there IS a running "explorer.exe" process found, a call to "explorer.exe /e" opens the file manager window. With SP3 the "/e" is interpreted in a consistent manner and the explorer starts in the File Manager mode regardless if there is already an "explorer.exe" running or not.
So if you’re running an alternate shell, want to wire the Windows+E keyboard shortcut to the file manager (or file explorer) using "explorer.exe /e" and experience the Windows Shell starting over your shell with an error, make sure that you install the Service Pack 3 (which you should anyway, regardless of your shell).
More mysterious Skype chat commands
Today I’ve been curious if there were any more hidden chat commands besides the currently well known IRC-like Skype chat commands. So I decided to inspect the executable once more (I did it already once with only little success) and surprisingly I almost instantly found something completely new to me.
A quick search on the internet also turned up nothing comparable and quick try&error also revieled not much information for most of them so the following table mainly consists of questionmarks. I tried to come up with a description where the commands reveiled a bit, but since I found absolutely no additional information for those all the meaning is just guesswork from me.
Of course I’ll update this posting every time I find out something new or somebody gives me hints on this.
Update 2012-11-18 – Added infos on /fork from commenters, added bunch of new commands found in recent Skype 6 version
table.skype { border-width: 1px; border-spacing: 1px; border-style: solid ; border-color: gray; border-collapse: collapse; } table.skype th { border-width: 1px; padding: 1px; border-style: inset; border-color: gray; } table.skype td { border-width: 1px; padding: 1px; border-style: inset; border-color: gray; }Command Description /dbghelp Outputs a list of (debug?) commands but without description. /showmembers Lists all members of the chat with their currently assigned role. /showstatus Prints some infos about the current conversation. Conversation convoi id, Consumption horizon, History date and Message count. /showactivemembers ? /showname Displays the name of the original conversation. Required when querying the Skype database file. /showchatforms ? /showpendingmessages ? /info Displays the current and maximum number of chat participants. /fm ? /verify Shows some text about missing messages on my computer. Maybe checks the message-database for validity. /showaccsel ? /showaccfocus ? /accselect ? /debug ? /debugmsg ? /golive [token] (since Skype4?) Opens a management window in a group conversation which allows to handle conference calls. The sense of the (optional) token is not yet clear to me but seems to give you a link which you can share to others and allow them to join the conference. /fork [skypename/s] (since Skype5?) Duplicates the current group chat leaving out the contacts which are added to this command. /fork [skypename/s] (since Skype5?) Duplicates the current group chat leaving out the contacts which are added to this command. /setupkey [key] [value] ? Sets the “key” to a certain “value” or unsets it if no value given. Purpose currently unknown. /setupkey! [key] ? Deletes the “key”. Purpose currently unknown. /showplaces Displays a list of the currently online Skype instances using this Skype name (and have Skype version >=6 or recent mobile versions). /remotelogout Logs out all other currently online Skype instances which are using this Skype name (and have Skype version >=6 or recent mobile versions). /rsql ? sends this into the chat but does NOT show help like any other random /-command… /set listeners [value] ? probably another list of skype-ids which are only listeners/spectators in this chat. Changes also the output of /showmembers, but real effect still untested. /get listeners Shows the list of listeners set with previous command. /ignore ? Random/Unsorted additional findings
- The name of a chat (/showname) is composed of the initial creator of the group-conversation (who gets the role CREATOR and is indicated with ‘#’ in the chat-name) and a hash.
- If the group-chat evolved from a chat with another person, this person is also part of the name (with the role ADMIN and the ‘$’ sign as indicator in the chat-name).
- Consumption horizon (/showstatus) seems to be the time when the last message was received from any chat-member.
- Message count (/showstatus) is the number of messages displayed in the current window.
Trying CyanogenMod 6 (RC2) on my HTC Magic
Yes, it’s been a month now since my last entry. I’ve prepared some more but never came around finishing them because there has been some stuff going on which kept me off the blog until now. Maybe (or not) on that later, this posting is about my experiences with installing and using CyanogenMod 6 RC2 on my HTC Magic.
I tried to keep off custom hacking on my phone for as long as possible but since HTC and my provider won’t be offering an update to the current version 1.6 of Android for this phone anymore, I’ve been looking forward to try out the custom ROM "CyanogenMod" for quite some time now. I’ve just been waiting for it to include the FroYo-Changes into its content because especially the Just-in-Time compiler was something which I hoped to give my phone a new boost. And now as the second release-candidate of CM6 was out I began to read the instructions how to get the whole stuff done.
It turned out that it’s not really that hard to flash a custom ROM onto the HTC Magic. But it’s essential to make a backup of the currently installed operating system to be able to restore it if something goes wrong or the new ROM doesn’t meet the expectations.
For the flashing itself, I just followed the update instructions on the CyanogenMod Wiki to prepare the phone with the recovery image and to perform the initial backup. After that I just followed the instructions to install CM on the phone, using the latest Cyanogen and Google-Apps images. This was all done in a matter of minutes and after that I was running FroYo.
The very initial impressions were very exciting, a lean and very fast system with a load of options and settings to tweak. Then I began installing all my previously used applications one after another. This took a while because I had forgotten to check all applications for possibilities to back up their data and settings and so I had to flash back the original image and back to CM6 several times. But I didn’t bother because it shouldn’t be necessary anymore after I’m finished with that.
As time went by and more and more applications were installed I began more often to experience forced-closes where windows and applications just shut down immediately after I’ve started them. A quick connection with the adb logcat command revealed, that my phone was running extremely low on memory and that was the cause for the shutdown of many applications. Quite a turn-down. Even more so since there were many applications and services in the background, which I didn’t want or never used anyway.
The solution to this memory issue was to insert a larger Class6 Micro-SD-card (set me back by 20EUR), reformat it using the corresponding option from the recovery-bootloader and re-writing it with the previously backed up data. After that I used Stevo’s scripts according to the instructions for setting up swap on CM5 and enabled system swapping to the SD card.
This gave me another enormous speed boost and no closed applications anymore. Nice! 🙂 I could continue setting up my phone and restoring the settings.
Later on I also applied the CM6 settings suggested by Vermithrax in a custom userinit.sh script (leaning on these instructions) which added a little more performance.
In conclusion, I think I’ll keep this setup with CyanogenMod 6, although I’ll have to re-flash it at least once more if CM6 final is released. Most of the time it’s still snappy and faster to use than the original 1.6-image even if there are a ton of new features and larger applications and multithreading etc. But sometimes it still slows down to a crawl, I wasn’t able to track it down to a specific cause so far. I guess it’s somewhere rooted in the memory-settings. Have to play around with that a bit or even try to remove some of the pre-installed (and un-installable) applications like this strange "Amazon MP3" tool, which always crawls around in memory.
Yay!
Update 2010-08-18 The last weekend I updated to RC3. Went without a hitch, I just had to re-setup the modifications for ‘bootswap20’ with Stevo’s scripts again and remove the Amazon MP3 tool once more. Just have to get used to the new icons and bootup logo…
Pimp your Skype mood message
As I already mentioned last time when I did some digging in its internal database, Skype allows users to have rich-formatted mood messages. It’s just not possible to create rich formatted messages with the Skype client alone.
Well, always shutting down Skype to just change the mood message to something fancy is a bit annoying, so I sat down a few minutes and with a bit cheating by using this site I created a HTML site where you can directly edit your Skype mood message and update it instantly.
Edit the Skype Mood Message using Rich Formatting (with examples) (Internet Explorer and Skype Client with Extension Manager required)
A bit technical background for the curious ones: this webpage communicates with your Skype client using the Skype4Com API. Skype provides APIs for various technologies (eg. Skype4Py) which allow some sort of "remote-controlling" of the Skype client. Skype4Com is an ActiveX-interface so this means it just runs on Windows but can be used by any technology which is able to access ActiveX. The webpage loads the ActiveX API, connects to your Skype client and requests some status information as well as the current mood message. You can then edit the message and with the click of a button the webpage sends the updated mood message to the Skype client.