Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #!/usr/bin/env python
  2. #===================================================================================
  3. #
  4. #         FILE: HTS-Programming-02.py
  5. #
  6. #        USAGE: HTS-Programming-02.py
  7. #
  8. #  DESCRIPTION: This script is for level 2 challenge in HackThisSite
  9. #               programming missions.
  10. #  _____  _              _         _____  _                     _____     _____
  11. # |   __||_| _____  ___ | | ___   |  _  || | ___  ___    ___   |   __|   |  _  |
  12. # |__   || ||     || . || || -_|  |   __|| || .'||   |  |___|  |__   | _ |   __|_
  13. # |_____||_||_|_|_||  _||_||___|  |__|   |_||__,||_|_|         |_____||_||__|  |_|
  14. #                  |_|
  15. #
  16. #===================================================================================
  17.  
  18. from PIL import Image
  19.  
  20. img_file = Image.open("/root/HTS/code.png")
  21. img_width, img_height = img_file.size
  22. img_pixel = img_file.load()
  23. preposition=0
  24. morse_code=""
  25. answer=""
  26.  
  27. char_morse_dict={
  28. 'A':'.-','B':'-...','C':'-.-.','D':'-..','E':'.','F':'..-.',
  29. 'G':'--.','H':'....','I':'..','J':'.---','K':'-.-','L':'.-..',
  30. 'M':'--','N':'-.','O':'---','P':'.--.','Q':'--.-','R':'.-.',
  31. 'S':'...','T':'-','U':'..-','V':'...-','W':'.--','X':'-..-',
  32. 'Y':'-.--','Z':'--..','0':'-----','1':'.----','2':'..---','3':'...--',
  33. '4':'....-','5':'.....','6':'-....','7':'--...','8':'---..','9':'----.',
  34. '.':'.-.-.-',',':'--..--','?':'..--..',"'":'.----.','/':'-..-.','(':'-.--.-',
  35. ')':'-.--.-',':':'---...',';':'-.-.-.','=':'-...-','+':'.-.-.','-':'-....-',
  36. '_':'..--.-','"':'.-..-.','$':'...-..-','':''
  37. }
  38.  
  39. # fetch ASCII code from image
  40. for y_point in range(img_height) :
  41.     for x_point in range(img_width) :
  42.         if img_pixel[x_point, y_point] == 1 :
  43.             # convert ASCII code to "dits" and "dahs" in morse code
  44.             symbol = chr(x_point + 100 * y_point - preposition)
  45.  
  46.             if symbol != ' ' :
  47.                 morse_code += symbol
  48.             else :
  49.                 # decode morse code to character
  50.                 char = [key for key, value in char_morse_dict.iteritems() if value == morse_code][0]
  51.                 answer += char
  52.                 morse_code = ""
  53.  
  54.             preposition=x_point + 100 * y_point
  55. # bye bye
  56. print answer