Results tagged “Hack”

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.


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:

  1. start up Skype normally
  2. start up Process Explorer, confirm first-time dialogs etc. until you see the process overview
    From Skype Memory Analysis
  3. locate "Skype.exe" in the process list and double click it
  4. switch to the "Strings" tab in the occouring process window (could take a few seconds)
  5. select the "Memory" option on the left bottom of the window (could take again a few seconds to complete)
    From Skype Memory Analysis
  6. save the strings dump to a textfile via the "Save" button on the right bottom of the window
  7. load the resulting textfile in the text editor (Notepad++ in my case)
  8. 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.

| | Comments (1)

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 PWROK signal works as expected
    • no PWROK 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):


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.


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 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.


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.


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...


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).


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

/dbghelpOutputs a list of (debug?) commands but without description.
/showmembersLists all members of the chat with their currently assigned role.
/showstatusPrints some infos about the current conversation. Conversation convoi id, Consumption horizon, History date and Message count.
/shownameDisplays the name of the original conversation. Required when querying the Skype database file.
/infoDisplays the current and maximum number of chat participants.
/verifyShows some text about missing messages on my computer. Maybe checks the message-database for validity.
/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.
/showplacesDisplays a list of the currently online Skype instances using this Skype name (and have Skype version >=6 or recent mobile versions).
/remotelogoutLogs 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 listenersShows the list of listeners set with previous command.

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.
| | Comments (12)

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 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.


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...


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.

| | Comments (3)

Beginning with version 4.0 Skype changed its internal database format to SQLite (at least the Windows-client, could not yet check other platforms). Besides from better performance it also allows now any curious person to dig a bit into the internals of the local Skype account.

At first, you need a SQLite client to connect to the database. SQLite Database Browser is a good choice for this purpose. Then you need to open the Skype database in it. Shut down Skype (you won't be able to open the file otherwise) and load the file main.db from your Documents and Settings\<User>\Application Data\Skype\<Skype-account> directory. You can browse around in the database structure, have a look into the tables contents and even use a SQL editor to query the database. That's what we're going to need.

Now the fun begins :) In the following statements replace the values in angle brackets eg. <skypeid> with the appropiate correct values. Let's assume, you want to display all messages you exchanged with someone. Beware, that this only works gets the messages you exchanged in a private chat with someone and does not work on chats with more than two participants (you included).

SELECT author, timestamp, body_xml 
FROM messages 
WHERE dialog_partner = '<skypename>'

Or you want to list all chats, where there have ever been more than you and your chat-partner. So to list all group-chats:

SELECT name, participants, posters, activemembers, last_change 
FROM chats
WHERE type = 4

You could also be interested in all previous topics which were set on your group chat:

SELECT chatname, timestamp, body_xml 
FROM messages
WHERE chatmsg_type = 5
AND chatname = <chatname> -- get names from the previous query

By now you should have recognized, that the timestamps and change-values are not really readable dates in the database. Don't worry, it's not encrypted. Its just stored as plain Unix timestamp values. You can easily convert it to a readable time and date using for example the online UNIX Timestamp To Standard Time Calculator

When we're already with timestamps, you maybe also want to know when someone has also been online the last time when you have been online as well:

SELECT skypename, given_displayname, lastonline_timestamp
FROM contacts

So far we have fetched some interesting information from the database. But now we want to leverage our l33tness a bit and modify our mood message in our profile to include some rich formatting:

UPDATE accounts
SET profile_timestamp = current_timestamp, rich_mood_text = 'I feel <b>bold</b> now.'
WHERE skypename = '<skypename>'

Don't forget to save your database afterwards! This statement updates the profile-timestamp with the current time and adds some rich formatting to our mood message. In this case there is some bold text inside. You can look up some more possibilities (like smileys, font coloring, etc.) directly in the Skype API Documentation (from). Additionally I've found out, that using hyperlinks with the <a>-tag works as well as modifying font-size with the size-attribute of the <font>-tag.

Update 2010-02-14: Meanwhile you can edit your mood-message more easily using my online Skype mood message editor.

You can also delete the chat-history of only certain skype-contacts using the following statement

DELETE FROM messages
WHERE skypename = '<skypename>'

Again, don't forget to save your changes afterwards.

Update 2010-10-29: Skype has dropped the support for "/htmlhistory" since Skype 4.0. An alternate way to get all the messages for a chat is:

SELECT timestamp, author, chatmsg_type, body_xml  
FROM messages 
WHERE chatname = '<chatname>' 

You can find out the name of a chat when you write the command "/showname" in its chat-window.

I'll continue to play around with the database and if I find more interesting stuff, I'll keep this posting updated. Or I'll write a new one depending on what I dig up :)

| | Comments (10)

It is possible to use the more advanced and comfortable implementation of the screen-keyboard from the HTC Hero on the HTC Magic without having to get root access on the device.

There is an excellent german description available how to Use the original HTC HERO Keyboard on the Magic, G1, Galaxy and Pulse without rooting (german readers should head there instead). I also tried to find an english description for this but since I did not find explainations without rooting the devices here is the translation for the curious.

  1. download the file HTCIME.apk(for Android 1.5) or HTCIME.apk(for Android 1.6 - Donut)
  2. make sure you have an application installed which can install APK files (for example eoeAppInstaller or the ASTRO File Manager)
  3. copy the HTC_IME.apk to the SD-card
  4. accept applications from unknown sources in Settings > Applications
  5. start the eoeAppInstaller (or ASTRO File Manager) and locate the file HTC_IME.apk
  6. long press the entry and choose to install the application
  7. after successful installation reboot your phone
  8. go to Settings > Locale and Text and activate the entry Touch Input
  9. now bring up some text-entry box for example in the SMS messages
  10. long press on the entry-field and choose "Touch Input", voi'la

Now you should have the new keyboard active. There are more variations of this keyboard layout available in the settings to try out. Furthermore if you're using tools to kill your running apps make sure, to set the keyboard application on the exclusion-list otherwise it takes longer to launch it every time.


Update 2011-02-18: The other wiki site seems to have been shut down by LG. But there is a similar project OpenLGTV which contains the same information on this page.

Update 2009-12-06: Meanwhile there's a cleaner wiki-page available here which contains much more details, screenshots and warnings of course. Go there for the most up-to-date information on how to activate your USB port on your LG TV, what sound and video formats are supported and how to sort out some playback problems with movies.

As I've already mentioned I have purchased a new LCD TV some time ago. Its an LG 37-LF 2510. I've been quite satisfied with it and it's quality but when I read in the manual that the USB connector on the backside is only for updates and not for connecting storage devices my interest was awakened by this fact. I looked in the internet for updates to get the latest firmware on my TV and found this forum thread.

In this thread I read about the possibility to unlock DivX/XVid support on my USB connector by setting the right property in the service-menu. Of course I was sold by this immediately.

Just for reference I'm documenting the whole process here, how I enabled DivX on my TV.

  1. entered the Expert menu to check for the version of my firmware (enter the menu, just select! the Options entry and press FAV seven times)
  2. as I got FW 3.24.00 I had to downgrade to 3.15 first before the service menu would be available
  3. downloaded firmware 3.15 for LG LH series (mirror), put the contained folder LG_DTV on a USB stick and plugged it into the TV
  4. entered the Expert menu again, selected the entry for version 3.15 and started the downgrade by pressing OK
  5. after the successful downgrade, I entered the service menu by pressing the two OK buttons on the remote and the TV for 5 seconds at the same time, the PIN for the following lock is 0000
  6. now in the service menu go to Option 3 and set JPEG/MP3 to 1 and DivX/XVid to HD
  7. leave the menu, voi'la

Now the USB port on the backside allowed me to play back DivX and XVid movies :) One backdraw was that the menus looked a bit shaby to me now so I again upgraded my firmware to 3.37 (3.67 is the current version. Beware, service menu code is changed to 0413). Upgrades don't reset the DivX settings (for now) so this was safe as I could downgrade at any time again via the Expert menu if it would be necessary.

If you're trying this on your own, be sure to check the thread above for further information and the correct and most up-to-date firmware versions. According to the instructions in this forum thread the firmware and procedure also works for following models (and their respective xx10 versions, as I've got): 32LF2500 37LF2500 42LF2500
19LH2000 22LH2000 26LH2000 32LH2000 37LH2000 42LH2000
32LH3000 37LH3000 42LH3000 47LH3000
32LH4000 37LH4000 42LH4000 47LH4000
32LH5000 37LH5000 42LH5000 47LH5000
32LH7000 37LH7000 42LH7000 47LH7000
19LU4000 22LU4000 26LU4000
19LU5000 22LU5000 26LU5000

| | Comments (13)

Simplest possible DVB-T antenna
Simplest possible DVB-T antenna
Originally uploaded by kosi2801

As I've recently purchased a new large LCD TV-set which also has abilities to receive DVB without additional devices I found myself in the need of also having to get a DVB-T antenna. I did a short test-drive with a borrowed antenna from my parents but was not too satisfied. There was a proper signal quality but it was far from what I expected. I'm living in direct line-of-sight from the DVB-T broadcast antenna, which is only a few kilometers away, so I should have an outstanding signal quality. But it was just a bit below average. Stable enough for uninterrupted TV viewing but nevertheless I somehow didn't want to buy an expensive antenna to just reach average signal quality.

So I began researching a bit why there was such a bad receiving performance despite the more-than-ideal conditions. As it turned out, DVB-T antennas which are available in the shops have (of course) been designed to have receiving abilities across the whole DVB-T broadcasting bands (UHF and VHF). But since in each area there are only a few channels used these allround-antennas are not the ideal solution for everyone.

I found several guides how to build a specialized antenna fitting for the used channels in the area but since I'm living in the direct proximity of the broadcaster I did a fast try with a simple setup. Just cut off a piece of thick wire from some I had lying around (according to the measurements I found here) and stuck it directly into the antenna-plug of my TV set. And surprisingly I immediately received the targetted channels with even better performance than with the allround-antenna.

I still want to build a proper antenna with correct shielding but for now this works excellently. And I'm also planning to try making a better performing antenna (a "Doppelquad-Antenne") to improve the reception in border areas. If I find the time to build it, I'll let you know.


As I've just recognized I've forgotten to write a notice here that we've bought a Logitech Harmony 785 programmable remote control.
This thing is quite interesting and fun to play around with, but it's also not so easy to configure as the standard off-the-shelf remote. The only thing is, that the configuration software on the PC is on the one hand not very intuitive and on the other hand... slow... as... hell...

Well at least I can offer a solution against the slowness.

The problem with the Logitech Harmony software seems to be, that Logitech bundles it with an older version of the Java Runtime environment. Something like Java 1.5 or so.
To speed up the software yourself you need a recent Java JRE installed on your computer somewhere, with at least a version equal or greater than JRE 6.
The following procedure is:

  1. Navigate to the installation directory of Logitech Harmony (something like "C:\Program Files\Logitech\Logitech Harmony Remote Software 7")
  2. go into the "jre" subdirectory and delete everything there (or back it up somewhere)
  3. next locate the JRE directory of Java (something like "C:\Program Files\Java\jre6")
  4. copy the "bin" and "lib" subdirectories of the Java JRE 6 directory to the Logitech "jre" directory
  5. finished

When you start up your Logitech Harmony software now, it should feel smother and react faster. I don't know exactly why this works but I suspect that the JRE of Java 6 is more advanced and faster in the areas which are used by the Harmony software than the JRE 5 which comes bundled with the software itself.

This is a relatively easy modification to do but if you're changing the configuration of your remote often, this can be something which helps you to make your changes faster.


It's not a widespread knowledge that Skype has not only hidden emoticons (see also Skypes own emoticon list)but also allows some special commands within an open Skype chat. Thanks to my darling for the hint. There are some lists available on the net but they aren't easy to locate and I found none which has a listing of all commands. Well, I don't know if I for myself have found all available commands, but none of the list contained all of those I know.

So here I'm compiling my own list of Skype commands with descriptions and if you're interested some of the lists I used for this are at the bottom of this entry. Most of the commands are for administering the running chat, some are only available when you are the chat creator and some more only if you issued "/goadmin" before. Also at some spots in the net it was said, that some commands are only applicable when the "IRC Style" view of chats is activated but I couldn't confirm that.

Furthermore a lot of the commands show only effect or make any sense at all (especially the user management related ones) if used in a public chat.

If you have knowledge of more of those commands or about the ones with a question mark please leave me a note in the comments.

Update 2009-04-25 - Filled most gaps, added descriptions and links to official Skype pages.
Update 2010-08-21 - Minor updates to the options concerning joining a chat.
Update 2010-10-30 - Discovered a load of additional mysterious chat commands. Left them in a separate post until more info available.
Update 2012-11-17 - Minor updates for Skype 6


/me [action]Describes an action of the user by printing his name followed by the action.
/helpShows a list of available commands. It's incomplete but helps with general administrating tasks.
/add [skypename]Adds the user skypename to the chat.
/leaveLeave the current chat (only if not creator).
/topic [newTopic]Sets a new topic to the chat.
/find [text]Looks for text in the chat history.
/fa or /Repeats the last search.
/alertson or /alertson [text]"/alertson text" sets the skype notification to occour on special text in messages. "/alertson" resets it to the default. If an alert is set, every instance of the text will be highlighted in the chat window for easier detection of the alerting lines.
/alertsoffTurns off all notifications for this chat.
/historyLoads the complete chat history into the active chat window.
/htmlhistoryGenerates a HTML file of the chats history and opens it in the browser. Skype 4: not iplemented in this version anymore.
/clearClears the chat window.
/infoShows number and limit of chat participants.
/call [skypename]Opens a call to skypename.
/goadminEnters the administration mode of the chat (only if creator) and adds a small text "Creator" to the user-icon in the chat. I didn't find so far a way to leave this mode again. According to the Skype documentation the only effect is the "Creator" tag but I'm not so sure about that.
/get creatorShows the creator of this chat.
/get roleShows the current role of the user.
/whois [skypename]Shows some info of the user skypename, for example the current role.
/setrole [skypename] MASTER | HELPER | USER | LISTENERSets roles of chat members. See below for more info.
/kick [skypename]Removes skypename from the chat.
/kickban [skypename]Removes skypename from the chat and bans him.
/get guidelinesShows the guidelines of this public chat.
/set guidelines [text]Sets the guidelines of this public chat.
/get optionsShows the current active options for this chat.
/set options [[+|-]flag]Sets options for this chat, see below for more info.
/get [creator|masters|helpers|users|listeners]Shows a list of users in the particular role.
/setpassword [password] [hint]Sets a password for this public chat, no spaces allowed, and also a password hint in the same command.
/clearpasswordRemoves the password for this public chat.
/set pasword_hint [text]Sets a password hint for this public chat.
/get password_hintShows the password hint for this public chat.
/set password [text]Sets a password for this public chat, no spaces allowed.
/set banlist [[+|-]mask]Bans members from this public chat.
/get banlistShows all users which are banned to this public chat.
/set allowlist[[+|-]mask]Allows members to this public chat.
/get allowlistShows all users which are allowed to this public chat.
/get uriSkype 4: Gets the URI link for this public chat which can then be sent to contacts or embedded in webpages.
/eggy? Has been rumoured as easter-egg but seems to have no effect at all (at least not in recent versions of Skype).
/undoeditSkype 6: Reverts the last edit of a message.

Chat roles and privileges

Straight from the Skype API Documentation.

CREATORMember who created the chat. There can be only one creator per chat. Only creator can promote other members to masters.
MASTERAlso known as chat hosts. Masters cannot promote other people to masters.
HELPERA semi-privileged member. Helpers will not be affected by the USERS_ARE_LISTENERS option. Helpers cannot promote or demote other members.
USERRegular members who can post messages into the chat.
LISTENERA demoted member who can only receive messages but not post anything into the chat.
APPLICANTA member waiting for acceptance into the chat. Member cannot be demoted to applicants once they have been accepted.

Chat options

These options are also from the Skype API, I had no chance to test these so far.

JOINING_ENABLEDWhen this bit is off, new users cannot join the chat. This option has to be enabled before the options JOINERS_BECOME_APPLICANTS and JOINERS_BECOME_LISTENERS can be set. Also, this cannot be disabled while one of the JOINERS_BECOME_xxx options is still set.
JOINERS_BECOME_APPLICANTSWhen this bit is on, new users will be able to join the chat but they will be unable to post or receive messages until authorized by one of the chat administrators (CREATOR or MASTER).
JOINERS_BECOME_LISTENERSWhen this bit is on, new users will be able to receive message in chat but unable to post until promoted to USER role. Basically a read-only flag for new users.
HISTORY_DISCLOSEDWhen this bit is off, newly joined members can see chat history prior to their joining. Maximum amount of history backlog available is either 400 messages or 2 weeks of time, depending on which limit is reached first.
USERS_ARE_LISTENERSRead-only flag for chat members with USER role.
TOPIC_AND_PIC_LOCKED_FOR_USERSWhen this bit of options is off, USER level chat members can change chat topic and the topic picture.
USERS_ARE_WRITERS? This appeared to me after setting and removing the USERS_ARE_LISTENERS in a chat, but I didn't recognize some changed behavior to the standard.

Other Skype trivia

  • If you press different key combinations of 3 letters at once on your keyboard (fast!) you can make some other hidden status-icons appear next to your Skype-image (and in recent versions also in the chat-window itself) in a chat. For example "jkl" or "uio" produce an animated icon where a pencil is broken, "cat" or "dog" make a nice cat appear. Just try around, until now I've just found those two icons.

External Links & Sources How To Make Links To Skype Chats On Web Pages And Email

| | Comments (79)