Archive for June, 2017

#UK Government #Data leak in 2015, users warned today.

unnamed (1)

A recent routine security review discovered a file containing some users’ names, emails and hashed passwords was publicly accessible on a third-party system.

The names, emails and hashed passwords in the file belong to users who registered on on or before 20 June 2015.

This effectively means that the security breach probably happened on the the 20th of June 2015, and the UK government only discovered it now, 2 years later!


Categories: Uncategorized

The darker side of the #Hola #plugin – It uses your PC as a #proxy server.


If you’ve ever used the Hola plugin to mask your IP, or pretend you are in a different country in order to watch video streaming for another country, then you may be surprised to know it uses your PC as a proxy server, for companies to route web requests via your machine in order to do – who knows what. Access to this network starts at $500 a month, so they earn well from using your computer, and internet connection.

I’m certain this is all in the small print, and all legal, but is it moral?

But, this is a development blog, so let’s see how to code this; I’m using C#, and the username and passwords have been removed for privacy reasons.

var client = new WebClient
Proxy = new WebProxy(“”)
Credentials = new NetworkCredential(“xxx”, “yyy”)
var strIp = client.DownloadString(“”);

In order to get a username / password, you need to sign in to Luminati

Just to mention one of my own websites ; I maintain a list of proxies here –


Categories: Uncategorized

Process #creditcard payments via an #iPhone or #iPad app, via #Stripe / @cardio

Process credit card payments via an iPhone or iPad app, via Stripe using this app

Once you open the app, you are prompted to create a new Stripe Account, or connect to an existing account. Once done, you simply enter the amount, currency and the customer’s credit card details, to get paid into your Stripe account. Once in your stripe account, they will make bank transfers out to your bank account.

The app was developed in Cordova / Ionic – and the feature for scanning the credit cards is using the CardIO plugin. The back-end is in ASP.NET over HTTPS, and there is no database connected to it, so no data is stored about the transactions on our servers (Although stripe has this info)

Categories: Uncategorized

Using the @OpenSubtitles API in C#

Open Subtitles is a great online resource for finding subtitles for movies online, and you can also interact with it programmatically using their XML-RPC API – but it’s quite complex, so it’s best to start with a pre-built library.

I went for this library on SourceForge –

it had a demo console app that works out of the box, but you should register your own user agent with OpenSubtitles, so they know who you are.

I needed a two step process for my app – which you can download on iTunes here:

The first was to make a search for movies by name; which you can do using the opensubdotnet library below;



OSDotNetSession session = OSDotNetSession.LogIn(“”, “”, “en”, “**YOUR USER AGENT HERE**”);

List<SearchSubtitleResult> List = session.SearchByQuery(Request.QueryString[“film”]);


Then, once you get that list of films, with language variations, you can ask the user to select one, you can get the download link at this stage, however, if you need to do any server processing of the subtitles, then you can’t just download this and unzip it, since OpenSubtitles will block your server for not being a human (a captcha)

But, I get the IMDB ID and Subtitle File at this stage, and pass it through to the next step

OSDotNetSession session = OSDotNetSession.LogIn(“”, “”, “en”, “**YOUR USER AGENT HERE**”);
List<SearchSubtitleResult> List = session.SearchByImdbId(strImdb);
SearchSubtitleResult selected = List.First(f => f.IDSubtitleFile == strSubtitleID);
MemoryStream mem = session.DownloadSubtitle(selected);
string strLang = selected.ISO639.ToLower();
Encoding enc = Encoding.GetEncoding(“iso-8859-1″);
if (strLang==”he”) enc = Encoding.GetEncoding(“iso-8859-8″);
if (strLang==”el”) enc = Encoding.GetEncoding(“iso-8859-7″);
if (strLang==”ar”) enc = Encoding.GetEncoding(“iso-8859-6”);
StreamReader sr = new StreamReader(mem,enc);
string strText = sr.ReadToEnd();


Note that you need to be careful with text encodings here. The text is not necessarily going to be in the latin (i.e. english) alphabet. So I have made exceptions here for Hebrew (he), Greek (el) and Arabic (ar). This should be extended for Chinese, Korean, Japanese, Russian, Thai, Hindu, Georgian etc., but if anyone wants to complete that list, please comment below.




Categories: Uncategorized

#OCR #API webservice designed for C# / .NET


Converting images to text has long been quite a difficult task for computers to perform, since it requires a type of fuzzy-logic, where things are not exact or precise.

We’ve developed a OCR web service, where you can submit a image either as a base-64 encoded string, or as a URL to an image that is hosted somewhere online.  – by default, it is set to recognise one line of text (not a page), but you can change that via the extraArguments, psm settings.

Check out the new API at

And for those who don’t want to read, here’s how to make a GET request to the API:

GET /ocr.asmx/ProcessUrl?url=string&extraArguments=string HTTP/1.1


Categories: Uncategorized

Developer Test devices for sale #Ebay #Testing


I’ve listed a few devices that I’ve previously used to test apps; and they’re all listed on ebay for a quick sale –

Apple iPod touch 6th Generation Space Grey (16GB) 

HTC android phone, unknown model

Apple iPhone 3G – 8GB – Black (Unlocked) Smartphone (MB48…

nokia xl


Categories: Uncategorized

Convert a number to a custom base in C# #Maths


We naturally count in base 10 (decimal), and if you do some programming, then you’ll be familiar with base 2 (binary), and base 16 (hex).

So, what about if you wanted to make your own custom base, like base 36 or base 25?, here’s some code to covert a custom base (base36) to decimal and back again

private static int ConvertToBaseAlpha(string alpha)
string strBase = “ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890”;
int intValue = 0;
int intPower = 1;
foreach(char c in Enumerable.Reverse(alpha.ToCharArray()))
var intPosValue = strBase.IndexOf(c);
intValue += intPosValue * intPower;
intPower *= strBase.Length;
return intValue;

private static string ConvertFromBaseAlpha(double alpha)
string strBase = “ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890”;
string strValue = “”;
int intPower = strBase.Length;
var intMod = (int)(alpha % intPower);
alpha /= intPower;
strValue = strBase.Substring(intMod, 1) + strValue;
return strValue;

Categories: Uncategorized

#Fax Off! app for #iOS using @ionic @cordova @filestack @twilio

Want to send a fax directly from your iPhone or iPad, this app lets you do it;

It’s cheekily called “Fax Off!”, and it lets you upload any document that’s stored on cloud storage, be that Dropbox, Google Drive,, and many others, and send it via a Fax to anywhere in the world.

Technically, it’s running on Ionic / Angular / Cordova frameworks, with Twilio and Filestack doing the back-end.

Categories: Uncategorized
%d bloggers like this: