{ "metadata": { "name": "", "signature": "sha256:d97f4207b1c0d3f38e3ffb49dcc7f84d2c5ad4d18303cef07df3b4d87f2114fa" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "from IPython.html.widgets import *\n", "from IPython.display import display\n", "from collections import Counter\n", "from itertools import combinations, chain\n", "from hashlib import sha384\n", "from time import time\n", "from sys import stdout" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "display(HTMLWidget( value =\"\"\"\n", "\n", "\"\"\"))" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "from __future__ import division\n", "import numpy as np\n", "import pyopencl as cl\n", "import pyopencl.array\n", "import pyopencl.tools\n", "%load_ext pyopencl.ipython_ext" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "ctx = cl.create_some_context()\n", "queue = cl.CommandQueue(ctx)\n", "device=ctx.devices[0]\n", "print device.max_mem_alloc_size\n", "print device.max_work_group_size" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "def python_md5(plaintext, pre_calculate=False): \n", " print len(plaintext)\n", " if pre_calculate:\n", " assert len(plaintext)>=52\n", " X = np.zeros(16, dtype=np.uint32)\n", " DATA = np.uint32([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]) \n", " for i,c in enumerate(plaintext): \n", " X[i >> 2] |= ord(c) << ((i & 3) << 3)\n", " X[len(plaintext) >> 2] |= 0x80 << ((len(plaintext) & 3) << 3)\n", " X[14] = len(plaintext) << 3 \n", " print map(hex, X)\n", " S = lambda x,n : ((x << n) | ((x&0xffffffff) >> (32 - n)))& 0xFFFFFFFF \n", " \n", " def P(i0,i1,i2,i3,k,s,t): \n", " a,b,c,d = DATA[i0], DATA[i1], DATA[i2], DATA[i3]\n", " a += F(b,c,d) + X[k] + t\n", " a = S(a,s) + b\n", " DATA[i0] = a & 0xFFFFFFFF\n", " \n", " A,B,C,D = 0,1,2,3 \n", " F = lambda x,y,z: (z ^ (x & (y ^ z)))\n", " P( A, B, C, D, 0, 7, 0xD76AA478 );\n", " P( D, A, B, C, 1, 12, 0xE8C7B756 );\n", " P( C, D, A, B, 2, 17, 0x242070DB );\n", " P( B, C, D, A, 3, 22, 0xC1BDCEEE );\n", " P( A, B, C, D, 4, 7, 0xF57C0FAF );\n", " P( D, A, B, C, 5, 12, 0x4787C62A );\n", " P( C, D, A, B, 6, 17, 0xA8304613 );\n", " P( B, C, D, A, 7, 22, 0xFD469501 );\n", " P( A, B, C, D, 8, 7, 0x698098D8 );\n", " P( D, A, B, C, 9, 12, 0x8B44F7AF );\n", " P( C, D, A, B, 10, 17, 0xFFFF5BB1 );\n", " if pre_calculate:\n", " with open(\"lowest_md5.h\",\"w\") as f:\n", " for i in range(16):\n", " if i not in [11, 12]: \n", " print >>f, \"#define X%d 0x%xU\"%(i, X[i])\n", " # print \"#define X%d 0x%xU\"%(i, X[i])\n", " for i in range(4):\n", " print >>f, \"#define DATA%d 0x%xU\"%(i, DATA[i])\n", " # print \"#define DATA%d 0x%xU\"%(i, DATA[i]) \n", " P( B, C, D, A, 11, 22, 0x895CD7BE );\n", " P( A, B, C, D, 12, 7, 0x6B901122 );\n", " P( D, A, B, C, 13, 12, 0xFD987193 );\n", " P( C, D, A, B, 14, 17, 0xA679438E );\n", " P( B, C, D, A, 15, 22, 0x49B40821 );\n", " \n", " F = lambda x,y,z: (y ^ (z & (x ^ y)))\n", " P( A, B, C, D, 1, 5, 0xF61E2562 );\n", " P( D, A, B, C, 6, 9, 0xC040B340 )\n", " P( C, D, A, B, 11, 14, 0x265E5A51 )\n", " P( B, C, D, A, 0, 20, 0xE9B6C7AA );\n", " P( A, B, C, D, 5, 5, 0xD62F105D );\n", " P( D, A, B, C, 10, 9, 0x02441453 );\n", " P( C, D, A, B, 15, 14, 0xD8A1E681 );\n", " P( B, C, D, A, 4, 20, 0xE7D3FBC8 );\n", " P( A, B, C, D, 9, 5, 0x21E1CDE6 );\n", " P( D, A, B, C, 14, 9, 0xC33707D6 );\n", " P( C, D, A, B, 3, 14, 0xF4D50D87 );\n", " P( B, C, D, A, 8, 20, 0x455A14ED );\n", " P( A, B, C, D, 13, 5, 0xA9E3E905 );\n", " P( D, A, B, C, 2, 9, 0xFCEFA3F8 )\n", " P( C, D, A, B, 7, 14, 0x676F02D9 )\n", " P( B, C, D, A, 12, 20, 0x8D2A4C8A );\n", " \n", " F = lambda x,y,z: x ^ y ^ z\n", " P( A, B, C, D, 5, 4, 0xFFFA3942 );\n", " P( D, A, B, C, 8, 11, 0x8771F681 );\n", " P( C, D, A, B, 11, 16, 0x6D9D6122 );\n", " P( B, C, D, A, 14, 23, 0xFDE5380C );\n", " P( A, B, C, D, 1, 4, 0xA4BEEA44 );\n", " P( D, A, B, C, 4, 11, 0x4BDECFA9 );\n", " P( C, D, A, B, 7, 16, 0xF6BB4B60 );\n", " P( B, C, D, A, 10, 23, 0xBEBFBC70 );\n", " P( A, B, C, D, 13, 4, 0x289B7EC6 );\n", " P( D, A, B, C, 0, 11, 0xEAA127FA );\n", " P( C, D, A, B, 3, 16, 0xD4EF3085 );\n", " P( B, C, D, A, 6, 23, 0x04881D05 );\n", " P( A, B, C, D, 9, 4, 0xD9D4D039 );\n", " P( D, A, B, C, 12, 11, 0xE6DB99E5 );\n", " P( C, D, A, B, 15, 16, 0x1FA27CF8 );\n", " P( B, C, D, A, 2, 23, 0xC4AC5665 );\n", "\n", " F = lambda x,y,z: (y ^ (x | ~z))\n", "\n", " P( A, B, C, D, 0, 6, 0xF4292244 );\n", " P( D, A, B, C, 7, 10, 0x432AFF97 );\n", " P( C, D, A, B, 14, 15, 0xAB9423A7 );\n", " P( B, C, D, A, 5, 21, 0xFC93A039 );\n", " P( A, B, C, D, 12, 6, 0x655B59C3 );\n", " P( D, A, B, C, 3, 10, 0x8F0CCC92 );\n", " P( C, D, A, B, 10, 15, 0xFFEFF47D );\n", " P( B, C, D, A, 1, 21, 0x85845DD1 );\n", " P( A, B, C, D, 8, 6, 0x6FA87E4F );\n", " P( D, A, B, C, 15, 10, 0xFE2CE6E0 );\n", " P( C, D, A, B, 6, 15, 0xA3014314 );\n", " P( B, C, D, A, 13, 21, 0x4E0811A1 );\n", " P( A, B, C, D, 4, 6, 0xF7537E82 );\n", " P( D, A, B, C, 11, 10, 0xBD3AF235 );\n", " P( C, D, A, B, 2, 15, 0x2AD7D2BB );\n", " P( B, C, D, A, 9, 21, 0xEB86D391 );\n", " DATA[0]=(DATA[0]+0x67452301)&0xffffffff\n", " DATA[1]=(DATA[1]+0xefcdab89)&0xffffffff\n", " DATA[2]=(DATA[2]+0x98badcfe)&0xffffffff\n", " DATA[3]=(DATA[3]+0x10325476)&0xffffffff\n", " return DATA\n" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "s0 = \"http://weijr-eng.blogspot.com\"\n", "template_str = s0+\" \"*(52-len(s0)-8)+\"AAAAAAAA\"\n", "print map(hex, python_md5(template_str, True))\n", "from hashlib import md5\n", "md5(template_str).hexdigest()" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "%%cl_kernel -o \"-I . -cl-strict-aliasing\"\n", "#include \"lowest_md5.h\"\n", "__kernel void kernel_md5(__const ulong base, __global uint * out_buffer)\n", "{ \n", "\tuint id = get_global_id(0);\n", " ulong code = base + id;\n", " __private uint X11 = code >> 32;\n", " __private uint X12 = code &0xffffffff;\t\t\n", "\t__private uint A, B, C, D;\n", "#define S(x,n) rotate(x,n)\n", "#define P(a,b,c,d,k,s,t)\ta += F(b,c,d) + X##k + t; a = S(a,s) + b;\t\t\n", "\n", " A = DATA0;\n", " B = DATA1;\n", " C = DATA2;\n", " D = DATA3;\n", " \n", "#define F(x,y,z) bitselect(z, y,x)\n", "\n", " P( B, C, D, A, 11, 22U, 0x895CD7BE );\n", " P( A, B, C, D, 12, 7U, 0x6B901122 );\n", " P( D, A, B, C, 13, 12U, 0xFD987193 );\n", " P( C, D, A, B, 14, 17U, 0xA679438E );\n", " P( B, C, D, A, 15, 22U, 0x49B40821 );\n", "\n", "#undef F\n", "#define F(x,y,z) bitselect(y,x, z)\n", "\n", " P( A, B, C, D, 1, 5U, 0xF61E2562 );\n", " P( D, A, B, C, 6, 9U, 0xC040B340 );\n", "\tP( C, D, A, B, 11, 14U, 0x265E5A51 );\n", " P( B, C, D, A, 0, 20U, 0xE9B6C7AA );\n", " P( A, B, C, D, 5, 5U, 0xD62F105D );\n", " P( D, A, B, C, 10, 9U, 0x02441453 );\n", " P( C, D, A, B, 15, 14U, 0xD8A1E681 );\n", " P( B, C, D, A, 4, 20U, 0xE7D3FBC8 );\n", " P( A, B, C, D, 9, 5U, 0x21E1CDE6 );\n", " P( D, A, B, C, 14, 9U, 0xC33707D6 );\n", " P( C, D, A, B, 3, 14U, 0xF4D50D87 );\n", " P( B, C, D, A, 8, 20U, 0x455A14ED );\n", " P( A, B, C, D, 13, 5U, 0xA9E3E905 );\n", " P( D, A, B, C, 2, 9U, 0xFCEFA3F8 );\n", " P( C, D, A, B, 7, 14U, 0x676F02D9 );\n", " P( B, C, D, A, 12, 20U, 0x8D2A4C8A );\n", "\n", "#undef F\n", " \n", "#define F(x,y,z) (x ^ y ^ z)\n", "\n", " P( A, B, C, D, 5, 4U, 0xFFFA3942 );\n", " P( D, A, B, C, 8, 11U, 0x8771F681 );\n", " P( C, D, A, B, 11, 16U, 0x6D9D6122 );\n", " P( B, C, D, A, 14, 23U, 0xFDE5380C );\n", " P( A, B, C, D, 1, 4U, 0xA4BEEA44 );\n", " P( D, A, B, C, 4, 11U, 0x4BDECFA9 );\n", " P( C, D, A, B, 7, 16U, 0xF6BB4B60 );\n", " P( B, C, D, A, 10, 23U, 0xBEBFBC70 );\n", " P( A, B, C, D, 13, 4U, 0x289B7EC6 );\n", " P( D, A, B, C, 0, 11U, 0xEAA127FA );\n", " P( C, D, A, B, 3, 16U, 0xD4EF3085 );\n", " P( B, C, D, A, 6, 23U, 0x04881D05 );\n", " P( A, B, C, D, 9, 4U, 0xD9D4D039 );\n", " P( D, A, B, C, 12, 11U, 0xE6DB99E5 );\n", " P( C, D, A, B, 15, 16U, 0x1FA27CF8 );\n", " P( B, C, D, A, 2, 23U, 0xC4AC5665 );\n", "\n", "#undef F\n", "\n", "#define F(x,y,z) (y ^ (x | ~z))\n", "\n", " P( A, B, C, D, 0, 6U, 0xF4292244 );\n", " P( D, A, B, C, 7, 10U, 0x432AFF97 );\n", " P( C, D, A, B, 14, 15U, 0xAB9423A7 );\n", " P( B, C, D, A, 5, 21U, 0xFC93A039 );\n", " P( A, B, C, D, 12, 6U, 0x655B59C3 );\n", " P( D, A, B, C, 3, 10U, 0x8F0CCC92 );\n", " P( C, D, A, B, 10, 15U, 0xFFEFF47D );\n", " P( B, C, D, A, 1, 21U, 0x85845DD1 );\n", " P( A, B, C, D, 8, 6U, 0x6FA87E4F );\n", " P( D, A, B, C, 15, 10U, 0xFE2CE6E0 );\n", " P( C, D, A, B, 6, 15U, 0xA3014314 );\n", " P( B, C, D, A, 13, 21U, 0x4E0811A1 );\n", " P( A, B, C, D, 4, 6U, 0xF7537E82 );\n", " \n", " if( (A&0xFFFFFFFEU) == 2562383102U ) { \n", " P( D, A, B, C, 11, 10U, 0xBD3AF235 );\n", " P( C, D, A, B, 2, 15U, 0x2AD7D2BB );\n", " P( B, C, D, A, 9, 21U, 0xEB86D391 );\n", " A+=0x67452301;\n", " B += 0xefcdab89;\n", " if( ( (B^A)&0xff)==0)\n", " out_buffer[id&0xff]=0x80000000|id; \n", " }\n", " \n", "#undef F\n", "\n", "}\n" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "import sys\n", "from time import sleep, time\n", "step = 2**28\n", "output=cl.array.zeros(queue, 16, dtype=np.uint32) \n", "t0=time()\n", "for i in range(0, 2**38, step):\n", " output.fill(0, queue)\n", " ret = kernel_md5(queue, (step,), None, np.uint64(i), output.data)\n", " ret.wait()\n", " result = output.get()\n", " for j in np.where(result>0)[0]:\n", " x =i+(result[j]&0x7fffffff)\n", " y = x >>32\n", " x = x&0xffffffff\n", " s = template_str.replace('AAAAAAAA', \"\".join(chr((y>>(t*8))&0xff) for t in range(4)) + \"\".join(chr((x>>(t*8))&0xff) for t in range(4)))\n", " print hex(x), md5(s).hexdigest(),repr(s)\n", " sys.stdout.flush()\n", " #sleep(1)\n", "print time()-t0" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "import atitweak as ati\n", "from adl3 import ADLTemperature, ADL_Overdrive5_Temperature_Get, ADL_OK\n", "from adl3 import ADL_DL_FANCTRL_SPEED_TYPE_PERCENT, ADLFanSpeedValue, ADL_Overdrive5_FanSpeed_Get\n", "from adl3 import ADLPMActivity, ADL_Overdrive5_CurrentActivity_Get\n", "from ctypes import sizeof, byref\n", "\n", "ati.initialize()\n", "def gpu_activity():\n", " adapters = ati.get_adapter_info()\n", " adapter = adapters[0]\n", " activity = ADLPMActivity()\n", " activity.iSize = sizeof(activity) \n", " if ADL_Overdrive5_CurrentActivity_Get(adapter.iAdapterIndex, byref(activity)) != ADL_OK:\n", " return None\n", " return (activity.iEngineClock/100.0, activity.iMemoryClock/100.0, activity.iVddc/1000.0,\n", " activity.iCurrentPerformanceLevel, activity.iActivityPercent)\n", " \n", "def gpu_temperature():\n", " adapters = ati.get_adapter_info()\n", " adapter = adapters[0]\n", " temperature = ADLTemperature()\n", " temperature.iSize = sizeof(temperature)\n", " if ADL_Overdrive5_Temperature_Get(adapter.iAdapterIndex, 0, byref(temperature)) != ADL_OK:\n", " return None \n", " return temperature.iTemperature/1000 \n", "def gpu_fan_speed():\n", " adapters = ati.get_adapter_info()\n", " adapter = adapters[0]\n", " fan_speed_value = ADLFanSpeedValue()\n", " fan_speed_value.iSize = sizeof(fan_speed_value)\n", " fan_speed_value.iSpeedType = ADL_DL_FANCTRL_SPEED_TYPE_PERCENT\n", " if ADL_Overdrive5_FanSpeed_Get(adapter.iAdapterIndex, 0, byref(fan_speed_value)) != ADL_OK:\n", " return None\n", " return fan_speed_value.iFanSpeed\n", "print gpu_temperature(), gpu_fan_speed()\n", "# ati.shutdown()" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.html.widgets import *\n", "from IPython.display import display\n", "from time import sleep, time\n", "from sys import stdout\n", "from hashlib import md5\n", "import cgi\n", "prefix_mask = 0xffffffffff000000\n", "class ListTable(list):\n", " \"\"\" Overridden list class which takes a 2-dimensional list of \n", " the form [[1,2,3],[4,5,6]], and renders an HTML Table in \n", " IPython Notebook. \"\"\"\n", " \n", " def _repr_html_(self):\n", " html = [\"
{} | \".format(cgi.escape(str(col))) for col in row) \n",
" html.append(\"
\\x99\\xe3' 000000000061d8cd00dcad74ac5827e4\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "282881578500096\n", "'http://weijr-eng.blogspot.com G\\x01\\x01\\x00\\xf1\"\\xf6\\xe4' ffffffffff5e0a78d79bd41e22ad6b7f\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "283356172386304\n", "'http://weijr-eng.blogspot.com \\xb6\\x01\\x01\\x00\\xb39\\xa6*' 0000000000814b017dd4256af218ad45\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "283362614837248\n", "'http://weijr-eng.blogspot.com \\xb7\\x01\\x01\\x00wLo\\xd8' ffffffffff358f24410c14384915d8b1\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "284019744833536\n", "'http://weijr-eng.blogspot.com P\\x02\\x01\\x00\\xa5\\xcc\\x10\\xeb' ffffffffffe66843095385e96a31a088\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "284097054244864\n", "'http://weijr-eng.blogspot.com b\\x02\\x01\\x00\\xa8Pw\\xb8' ffffffffffb42052c18bc34fb4efbe73\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "287470751055872\n", "'http://weijr-eng.blogspot.com t\\x05\\x01\\x00\\x8d$\\xd9C' ffffffffff440d38490bc3faef316b52\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "288585295069184\n", "'http://weijr-eng.blogspot.com w\\x06\\x01\\x00\\xd3?\\xf0\\xe3' 00000000001def92d4afacf3a8621264\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "288864467943424\n", "'http://weijr-eng.blogspot.com \\xb8\\x06\\x01\\x00\\xeaj@\\xda' 000000000046b4ef7c15cd3610589240\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "289480795750400\n", "'http://weijr-eng.blogspot.com H\\x07\\x01\\x00\\xf4\\x10Hb' 0000000000521fade3855378fb47c98b\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "290172285485056\n", "'http://weijr-eng.blogspot.com \\xe9\\x07\\x01\\x00\\xca\\xbc\\xabN' 0000000000bc201bd91358f40e602053\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "291484397993984\n", "'http://weijr-eng.blogspot.com \\x1a\\t\\x01\\x00\\xf1\\x94%\\xaa' 00000000007728515e1280b69711a44e\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "291843027763200\n", "'http://weijr-eng.blogspot.com n\\t\\x01\\x00\\xec\\xe6\\xf4D' ffffffffff8bed18c3a1c26cb76b4596\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "293434313146368\n", "'http://weijr-eng.blogspot.com \\xe0\\n\\x01\\x00J\\xe0\\x9a\\xfd' 000000000043fe26f8257f8219249be1\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "293945414254592\n", "'http://weijr-eng.blogspot.com W\\x0b\\x01\\x00\\xb66\\xfd\\xe9' ffffffffff3b71c35b5cfbaf8a5e7d77\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "293992658894848\n", "'http://weijr-eng.blogspot.com b\\x0b\\x01\\x00\\x89rs\\xdc' ffffffffffa19426b63d0467585016d0\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "294295454089216\n", "'http://weijr-eng.blogspot.com \\xa9\\x0b\\x01\\x00\\xc2AV9' 0000000000a86b827f4fb7a4bf890de6\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "294632609021952\n", "'http://weijr-eng.blogspot.com \\xf7\\x0b\\x01\\x00O\\x88Z\\xbd' ffffffffff4e9a67154d9b9ba232087e\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "295704203362304\n", "'http://weijr-eng.blogspot.com \\xf1\\x0c\\x01\\x00\\xe6\\x8fJV' ffffffffff9499bbf41c0bf73d601238\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "296752175382528\n", "'http://weijr-eng.blogspot.com \\xe5\\r\\x01\\x00\\x99\\xa0?P' ffffffffff508e24d50ff3614d76c5d6\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "297166639726592\n", "'http://weijr-eng.blogspot.com E\\x0e\\x01\\x00\\xafu\\x87\\xff' 0000000000c5f6f17bae36c5ffb3e9be\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "297282603843584\n", "'http://weijr-eng.blogspot.com `\\x0e\\x01\\x00**\\xf4\\x93' ffffffffff081dd26e57e87a3fd9db14\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "298601158803456\n", "'http://weijr-eng.blogspot.com \\x93\\x0f\\x01\\x00\\x8c\\x18\\xc9\\xc8' ffffffffffe352b923267bc55b14ae54\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "299127292297216\n", "'http://weijr-eng.blogspot.com \\x0e\\x10\\x01\\x00(\\x0ek\\x1d' 0000000000c2a995018a65dcff50b9f0\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "299221781577728\n", "'http://weijr-eng.blogspot.com $\\x10\\x01\\x00_\\x9a\\x1d<' ffffffffff8355db2b672b1f7097a9b9\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "299387137818624\n", "'http://weijr-eng.blogspot.com J\\x10\\x01\\x00u\\xed\\xa3\\xf9' ffffffffffe3df9e11376c97f4c61f0e\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "301051437645824\n", "'http://weijr-eng.blogspot.com \\xce\\x11\\x01\\x00\\xddUpF' 0000000000bdbaea14ff18f6690304c3\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "301850301562880\n", "'http://weijr-eng.blogspot.com \\x88\\x12\\x01\\x007_\\xac\\x1c' ffffffffffe0ce78bbb48e7b8bb5e8b7\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "303282673156096\n", "'http://weijr-eng.blogspot.com \\xd5\\x13\\x01\\x00\\xd3\\xbe\\xec\\xc6' 0000000000040cf538cb05be9ce6aaac\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "303637007958016\n", "'http://weijr-eng.blogspot.com (\\x14\\x01\\x00\\xa7\\xc3\\x98I' ffffffffffa15f8f083a49b5432386c3\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "304777321775104\n", "'http://weijr-eng.blogspot.com 1\\x15\\x01\\x00\\xc8|h\\xc5' ffffffffff66207aedb123e28a797013\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "304835303833600\n", "'http://weijr-eng.blogspot.com ?\\x15\\x01\\x00\\x88W\\xc7l' ffffffffff04c0b7b0c08eb7e3bed431\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "305013544976384\n", "'http://weijr-eng.blogspot.com h\\x15\\x01\\x00\\xe0NU\\xb6' ffffffffff83e1e45a9655f36a522ded\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "305612692914176\n", "'http://weijr-eng.blogspot.com \\xf4\\x15\\x01\\x00Q\\n\\xc6V' ffffffffff01f21182219adaab4afbd5\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "305814556377088\n", "'http://weijr-eng.blogspot.com #\\x16\\x01\\x00\\x0f\\x19\\x0f\\x0e' 0000000000b0cdb89c2bff75651d20d3\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "306355722256384\n", "'http://weijr-eng.blogspot.com \\xa1\\x16\\x01\\x00\\x96\\xf3kG' ffffffffff0d8cfbb6146beb42c323c7\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "306536110882816\n", "'http://weijr-eng.blogspot.com \\xcb\\x16\\x01\\x00\\xc7\\x9cp~' ffffffffff9ee1f11aaa95dbb7b27511\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "306579060555776\n", "'http://weijr-eng.blogspot.com \\xd5\\x16\\x01\\x00[\\x9f|V' ffffffffffa1fd0eefefe020af920cd5\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "306600535392256\n", "'http://weijr-eng.blogspot.com \\xda\\x16\\x01\\x00#\\xceF\\x17' 0000000000bb5e78cb1d3f49f64dc3d0\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "307624885092352\n", "'http://weijr-eng.blogspot.com \\xc8\\x17\\x01\\x00\\xce>j\\x84' 000000000024ef3cc8457f0dde614905\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "307712931921920\n", "'http://weijr-eng.blogspot.com \\xdd\\x17\\x01\\x00\\xc9A;\\x07' ffffffffff7678cc6dc20c48063ba651\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "309602717532160\n", "'http://weijr-eng.blogspot.com \\x95\\x19\\x01\\x00R\\x91Bm' ffffffffff1142b76d0b448bbb26c3f9\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "309903365242880\n", "'http://weijr-eng.blogspot.com \\xdb\\x19\\x01\\x002\\x7fI\\x03' ffffffffff2848ceeaa640d247794d2d\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "310418761318400\n", "'http://weijr-eng.blogspot.com S\\x1a\\x01\\x00R@\\x8dX' 0000000000492345929d8a9e8351975c\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "310895502688256\n", "'http://weijr-eng.blogspot.com \\xc2\\x1a\\x01\\x00\\x04 \\x05+' 00000000007cc01fa4dee1efe165ea8c\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "311522567913472\n", "'http://weijr-eng.blogspot.com T\\x1b\\x01\\x00\\x1c\\xe8\\xfeD' 00000000006bd55a3b29d89c15698fb5\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "312007899217920\n", "'http://weijr-eng.blogspot.com \\xc5\\x1b\\x01\\x00\\x0f\\xd3\\x96~' ffffffffff099a611626124fc0b8b711\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "313395173654528\n", "'http://weijr-eng.blogspot.com \\x08\\x1d\\x01\\x00\\xf15\\xc5)' ffffffffff952ecdc4c7e61bcc6b1f07\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "313453155713024\n", "'http://weijr-eng.blogspot.com \\x15\\x1d\\x01\\x00A\\x92\\xd1\\x90' ffffffffff5ba2c1683e6ae27534c27a\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "314206922473472\n", "'http://weijr-eng.blogspot.com \\xc5\\x1d\\x01\\x00I \\xbc1' ffffffffff6ae7a9e664c1e88234893d\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "314887674789888\n", "\"http://weijr-eng.blogspot.com c\\x1e\\x01\\x00'\\xd2\\xe4\\xd2\" ffffffffffccde3a8b85cf2ef13be069\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "315413808283648\n", "'http://weijr-eng.blogspot.com \\xde\\x1e\\x01\\x00\\xb9\\xed\\r=' 0000000000dd6aec2eb485b69a73dbfa\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "315428840669184\n", "'http://weijr-eng.blogspot.com \\xe1\\x1e\\x01\\x00\\xba\\x11g\\xf2' ffffffffff905213dd007f5217c1108d\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "316262064324608\n", "'http://weijr-eng.blogspot.com \\xa3\\x1f\\x01\\x00\\xc2\\x14`\\xc2' ffffffffffb0457c77d2e09befaf6457\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "316829000007680\n", "\"http://weijr-eng.blogspot.com ' \\x01\\x00OR\\xee\\xae\" ffffffffffdf5e1fe56924b4cea4664c\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "316829000007680\n", "\"http://weijr-eng.blogspot.com ' \\x01\\x00}r\\x04\\x91\" 000000000099d4fc19aa097b5db39517\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "316992208764928\n", "'http://weijr-eng.blogspot.com M \\x01\\x00\\xc5\\xc0\\xd3\\xdf' 00000000001c3d17a3d7d94924ce2ccb\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "317133942685696\n", "'http://weijr-eng.blogspot.com n \\x01\\x00\\x82\\xeb\\xd8\\xd8' ffffffffff68e97e016e1c0d89823acf\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "317522637225984\n", "'http://weijr-eng.blogspot.com \\xc9 \\x01\\x00[\\xc9\\xad\\x18' 000000000020e0b4a60d9f7e7b3edc06\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "317690140950528\n", "'http://weijr-eng.blogspot.com \\xf0 \\x01\\x00\\x8959\\x05' 0000000000e77b2fb57dc94ecab0c5ec\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "317715910754304\n", "'http://weijr-eng.blogspot.com \\xf6 \\x01\\x006\\xa6\\xfbs' 0000000000a55b481c64b4886d633f5c\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "318529807056896\n", "'http://weijr-eng.blogspot.com \\xb3!\\x01\\x007\\x9b\\xb9\\xb7' ffffffffff713f204c0cae5ae5defb13\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "318817569865728\n", "'http://weijr-eng.blogspot.com \\xf6!\\x01\\x00\\x94\\x18\\x8c\\xa5' ffffffffffda85a0f6140cc9d16cfb04\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "319210559373312\n", "'http://weijr-eng.blogspot.com R\"\\x01\\x00\\x1f\\xe0\\xd6[' 00000000004ea394150715a666494c60\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "320715945410560\n", "'http://weijr-eng.blogspot.com \\xb0#\\x01\\x00+\\xd5\\x01\\xfc' 00000000003ab8f34ec0a6079ffbde19\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "322023762952192\n", "'http://weijr-eng.blogspot.com \\xe1$\\x01\\x00\\xd4\\x0b\\x91W' ffffffffffdddedb07e03dff1874c25f\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "322790414614528\n", "'http://weijr-eng.blogspot.com \\x93%\\x01\\x00!\\xe9\\xef\\x80' 00000000003f4fcee54c0a3dcdfc5099\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "323155486834688\n", "'http://weijr-eng.blogspot.com \\xe8%\\x01\\x00$\\xcf\\x8f\\xfb' ffffffffff69d252347032ef62d151f1\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "323327285526528\n", "'http://weijr-eng.blogspot.com \\x10&\\x01\\x00$\\x00/\\x9b' ffffffffff94f4e59495240fbc2b0d33\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "324209901305856\n", "'http://weijr-eng.blogspot.com \\xde&\\x01\\x00d\\x1c\\x9cu' ffffffffff0e79888d60b073f7e22d6e\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "324884211171328\n", "\"http://weijr-eng.blogspot.com {'\\x01\\x00/S\\x84v\" ffffffffff05bb9bfdd8fb765ea94922\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "325416787116032\n", "\"http://weijr-eng.blogspot.com \\xf7'\\x01\\x00\\xec\\xe3b$\" 000000000064bad84662c44eb15204ef\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "325719582310400\n", "'http://weijr-eng.blogspot.com =(\\x01\\x00\\x9e\\xbe\\xa6\\xaa' 0000000000a33ca9a2e8bf1666e62c39\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "326030967439360\n", "'http://weijr-eng.blogspot.com \\x86(\\x01\\x00\\xafP\\x1fp' 00000000009628e3d4417fa5a1363c66\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "326971565277184\n", "'http://weijr-eng.blogspot.com a)\\x01\\x00\\xe4\\xa5x)' 00000000000e0378a960fa72fd94ef00\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "327188461125632\n", "'http://weijr-eng.blogspot.com \\x93)\\x01\\x00\\x9a\\\\\\x0e\\xd1' ffffffffffac3af446e0b45db0c0239a\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "327422536843264\n", "'http://weijr-eng.blogspot.com \\xca)\\x01\\x00\\xe2\\xbf\\xc7d' ffffffffff1d8578aba6c9d15f3605a7\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "328253613015040\n", "'http://weijr-eng.blogspot.com \\x8b*\\x01\\x00\\x00\\x8bV\\xf0' 0000000000cb36a76588137b5d64afaf\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "328597210398720\n", "'http://weijr-eng.blogspot.com \\xdb*\\x01\\x00\\xd4*\\xa4\\xf2' ffffffffffae23d015397160c8abbe0c\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "329260782845952\n", "'http://weijr-eng.blogspot.com v+\\x01\\x00%\\xfbM\\x00' ffffffffff5013a393381924cc8b8ded\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "329292995100672\n", "'http://weijr-eng.blogspot.com }+\\x01\\x00\\xbe\\xb1\\xee\\xe6' ffffffffffd30e161ff9cfc6c8d5a587\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "329522775851008\n", "'http://weijr-eng.blogspot.com \\xb3+\\x01\\x00\\xfcV>\\x13' 0000000000a70767efcf8f75dac769d9\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "329722491830272\n", "'http://weijr-eng.blogspot.com \\xe1+\\x01\\x00;_\\xa9\\xc7' ffffffffffe90da088b817b88674a4b5\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "330244330356736\n", "'http://weijr-eng.blogspot.com [,\\x01\\x00\\xbc\\xfe>G' ffffffffff87d6fba68cd3f453be7d00\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "330444046336000\n", "'http://weijr-eng.blogspot.com \\x89,\\x01\\x00s\\xa1(\\xa2' ffffffffff766a075d111adbc9d79df8\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "330890722934784\n", "'http://weijr-eng.blogspot.com \\xf1,\\x01\\x00\\xfa\\xe9\\xf5\\xd7' 0000000000704fee9ad3e0f1883d151b\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "330914345254912\n", "'http://weijr-eng.blogspot.com \\xf7,\\x01\\x00\\xce%\\xa3e' 000000000083f8555c6dc8de7bbb2ef4\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "331573622734848\n", "'http://weijr-eng.blogspot.com \\x90-\\x01\\x00\\x86\\x0c\\xe4\\x82' ffffffffff18b8d2896b838f970a1c2a\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "332277997371392\n", "'http://weijr-eng.blogspot.com 4.\\x01\\x00\\xa1\\xa44\\xcb' 0000000000f97c4220edd9f6c15f3667\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "333429048606720\n", "'http://weijr-eng.blogspot.com @/\\x01\\x00\\x99\\n\\xcf\\xbd' 00000000003775df4e1f36959ef32543\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "333645944455168\n", "'http://weijr-eng.blogspot.com s/\\x01\\x00\\x83\\x1f\\xb5K' 000000000029926dc77bac3b19b02576\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "333963772035072\n", "'http://weijr-eng.blogspot.com \\xbd/\\x01\\x00\\xa1Z\\xa5u' ffffffffff05ffa7916e72c710c5eb42\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "334631639449600\n", "'http://weijr-eng.blogspot.com X0\\x01\\x00\\x19\\xaa\\xcc\\xbc' 000000000070dbae13254762d1d4d404\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "334816323043328\n", "'http://weijr-eng.blogspot.com \\x830\\x01\\x00WC!\\xb9' 00000000002ed8b63321f4392e83dbda\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "334900074905600\n", "'http://weijr-eng.blogspot.com \\x970\\x01\\x005_\\x13\\x1b' ffffffffffd4c2cc0803230775e12b33\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "335576532254720\n", "'http://weijr-eng.blogspot.com 41\\x01\\x00=D\\xb0\\xc6' ffffffffff03f3ae8a8a43dbddf284a1\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "335767658299392\n", "'http://weijr-eng.blogspot.com a1\\x01\\x00%\\xef\\xf0\\n' 00000000004be84f1efa3613acce258f\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "335802018037760\n", "'http://weijr-eng.blogspot.com i1\\x01\\x00\\xd5%M<' 0000000000d59e49f17e0d082d8c94c9\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "335963079311360\n", "'http://weijr-eng.blogspot.com \\x8e1\\x01\\x00\\xcd\\xca\\xd9\\xb5' ffffffffff8d4001183d2bc8d014fec1\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "336472032935936\n", "'http://weijr-eng.blogspot.com \\x052\\x01\\x00\\x08\\xb5\\xb0\\x07' ffffffffff7dd1c13b6f70ec1deff599\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "336553637314560\n", "'http://weijr-eng.blogspot.com \\x182\\x01\\x00\\xe4\\xfa\\xb7a' 0000000000398c398b783ac528c55630\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "336682486333440\n", "'http://weijr-eng.blogspot.com 62\\x01\\x00\\x03\\xe2{K' 00000000002b140c311b7cbb10ee44a7\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "336746910842880\n", "'http://weijr-eng.blogspot.com E2\\x01\\x00S\\x91\\x101' ffffffffff8ca4b0f4bfc6454c80a55d\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "337090508226560\n", "'http://weijr-eng.blogspot.com \\x952\\x01\\x00l_\\xe4q' ffffffffff10365c830b3c12426ed0a2\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "339899416838144\n", "'http://weijr-eng.blogspot.com #5\\x01\\x00\\xdbJ\\x9a\\x17' 0000000000190c03bfac81270e4c1f09\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "341205086896128\n", "'http://weijr-eng.blogspot.com S6\\x01\\x008\\xce$K' ffffffffff0116bfe12b2992163cdea8\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "341327493464064\n", "'http://weijr-eng.blogspot.com o6\\x01\\x00f\\x00$\\x87' ffffffffffd8dc67f74c1cabd073760d\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "342313188458496\n", "'http://weijr-eng.blogspot.com U7\\x01\\x00f\\xee\\xeb\\x14' ffffffffffddb86777908273b83e8f17\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "342495724568576\n", "'http://weijr-eng.blogspot.com \\x7f7\\x01\\x00\\x880\\xc1\\xf2' 0000000000c93e007203bfaae1d2db7e\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "342639605972992\n", "'http://weijr-eng.blogspot.com \\xa17\\x01\\x00\\xdbq\\xd5/' ffffffffff6067ecd25551bfe3dabc9b\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "343021858062336\n", "'http://weijr-eng.blogspot.com \\xfa7\\x01\\x00\\xfe\\x03#V' ffffffffffac9641643e0b630aa391ed\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "343092725022720\n", "'http://weijr-eng.blogspot.com \\n8\\x01\\x00\\xca\\x0f\\xd9\\xe1' 0000000000a48cd1e590f3583f4a7a40\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "343294588485632\n", "'http://weijr-eng.blogspot.com 98\\x01\\x008E\\xcf\\xaf' 0000000000222941538fcabd4411fda1\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "343608121098240\n", "'http://weijr-eng.blogspot.com \\x828\\x01\\x00bR\\xf6\\xdb' 00000000007ba9a0752bc4965d21c73b\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "343867966619648\n", "'http://weijr-eng.blogspot.com \\xbf8\\x01\\x00V\\xc82<' 00000000007092b24cfe110f28411983\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "344379067727872\n", "'http://weijr-eng.blogspot.com 69\\x01\\x00\\xff+\\xedF' ffffffffffe499b01614795feef14c03\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "344724812595200\n", "'http://weijr-eng.blogspot.com \\x869\\x01\\x00\\xa0\\xe6p\\xa8' ffffffffff337bd445caca1361d1b49c\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "345618165792768\n", "'http://weijr-eng.blogspot.com V:\\x01\\x00\\x0b\\xb9\\n\\x8b' ffffffffffddf72a12a4c4943d909771\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "346109939548160\n", "'http://weijr-eng.blogspot.com \\xc9:\\x01\\x00\\x94-\\xf6`' ffffffffffb1db55cece025129cfd41d\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "346112087031808\n", "'http://weijr-eng.blogspot.com \\xc9:\\x01\\x00.\\xef\\x14\\xc8' 0000000000969b51b30fc42debfdd66f\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "346266705854464\n", "'http://weijr-eng.blogspot.com \\xed:\\x01\\x00\\x03\\xa0l\\x8c' ffffffffffbebfc03d81f15965ad2e68\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "347035505000448\n", "'http://weijr-eng.blogspot.com \\xa0;\\x01\\x00\\xeb[\\xcb\\xf8' 00000000009636bc6744fab1c4cd579a\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "348119984242688\n", "'http://weijr-eng.blogspot.com \\x9d<\\x01\\x00\\xd6\\xdb\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 69\u001b[0m \u001b[1;31m#ret,i,output = ret0, i0, output0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 70\u001b[0m \u001b[0mret\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwait\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 71\u001b[1;33m \u001b[0mresult\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0moutput\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 72\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mj\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwhere\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m>\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 73\u001b[0m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m+\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mresult\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m&\u001b[0m\u001b[1;36m0x7fffffff\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/pyopencl-2014.1-py2.7-linux-x86_64.egg/pyopencl/array.pyc\u001b[0m in \u001b[0;36mget\u001b[1;34m(self, queue, ary, async)\u001b[0m\n\u001b[0;32m 690\u001b[0m cl.enqueue_copy(queue or self.queue, ary, self.base_data,\n\u001b[0;32m 691\u001b[0m \u001b[0mdevice_offset\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moffset\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 692\u001b[1;33m is_blocking=not async)\n\u001b[0m\u001b[0;32m 693\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 694\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mary\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m/usr/local/lib/python2.7/dist-packages/pyopencl-2014.1-py2.7-linux-x86_64.egg/pyopencl/__init__.pyc\u001b[0m in \u001b[0;36menqueue_copy\u001b[1;34m(queue, dest, src, **kwargs)\u001b[0m\n\u001b[0;32m 1088\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0m_cl\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_enqueue_read_buffer_rect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mqueue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msrc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdest\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1089\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1090\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0m_cl\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_enqueue_read_buffer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mqueue\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msrc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdest\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1091\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0msrc\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtype\u001b[0m \u001b[1;32min\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mmem_object_type\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIMAGE2D\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmem_object_type\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mIMAGE3D\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1092\u001b[0m \u001b[0morigin\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"origin\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mKeyboardInterrupt\u001b[0m: " ] } ], "prompt_number": 197 }, { "cell_type": "code", "collapsed": false, "input": [ "%qtconsole --colors=linux" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "%%cl_kernel \n", "__kernel void kernel_md5(__const ulong base, __global uint * out_buffer)\n", "{\n", " __private uint X[16]={0x77777777,0,0,0x80,0,0,0,0,0,0,0,0,0,0,0,0};\n", "\tuint id = get_global_id(0);\n", " ulong code = base + id;\n", " X[1] = code >> 32;\n", " X[2] = code &0xffffffff;\t\t\n", "\t__private uint A, B, C, D;\n", "#define S(x,n) rotate(x,n)\n", "#define P(a,b,c,d,k,s,t)\ta += F(b,c,d) + X[k] + t; a = S(a,s) + b;\t\t\n", "#define P0(a,b,c,d,k,s,t)\ta += F(b,c,d) + t; a = S(a,s) + b;\t\t\t\n", "#define P14(a,b,c,d,k,s,t) \ta += F(b,c,d) + 96 + t; a = S(a,s) + b;\t\n", "\n", " A = 0x67452301;\n", " B = 0xefcdab89;\n", " C = 0x98badcfe;\n", " D = 0x10325476;\n", " \n", "#define F(x,y,z) bitselect(z, y,x)\n", "\n", " P( A, B, C, D, 0, 7U, 0xD76AA478 );\n", " P( D, A, B, C, 1, 12U, 0xE8C7B756 );\n", " P( C, D, A, B, 2, 17U, 0x242070DB );\n", " P( B, C, D, A, 3, 22U, 0xC1BDCEEE );\n", " P0( A, B, C, D, 4, 7U, 0xF57C0FAF );\n", " P0( D, A, B, C, 5, 12U, 0x4787C62A );\n", " P0( C, D, A, B, 6, 17U, 0xA8304613 );\n", " P0( B, C, D, A, 7, 22U, 0xFD469501 );\n", " P0( A, B, C, D, 8, 7U, 0x698098D8 );\n", " P0( D, A, B, C, 9, 12U, 0x8B44F7AF );\n", " P0( C, D, A, B, 10, 17U, 0xFFFF5BB1 );\n", " P0( B, C, D, A, 11, 22U, 0x895CD7BE );\n", " P0( A, B, C, D, 12, 7U, 0x6B901122 );\n", " P0( D, A, B, C, 13, 12U, 0xFD987193 );\n", " P14( C, D, A, B, 14, 17U, 0xA679438E );\n", " P0( B, C, D, A, 15, 22U, 0x49B40821 );\n", "\n", "#undef F\n", "#define F(x,y,z) bitselect(y,x, z)\n", "\n", " P( A, B, C, D, 1, 5U, 0xF61E2562 );\n", " P0( D, A, B, C, 6, 9U, 0xC040B340 );\n", "\tP0( C, D, A, B, 11, 14U, 0x265E5A51 );\n", " P( B, C, D, A, 0, 20U, 0xE9B6C7AA );\n", " P0( A, B, C, D, 5, 5U, 0xD62F105D );\n", " P0( D, A, B, C, 10, 9U, 0x02441453 );\n", " P0( C, D, A, B, 15, 14U, 0xD8A1E681 );\n", " P0( B, C, D, A, 4, 20U, 0xE7D3FBC8 );\n", " P0( A, B, C, D, 9, 5U, 0x21E1CDE6 );\n", " P14( D, A, B, C, 14, 9U, 0xC33707D6 );\n", " P( C, D, A, B, 3, 14U, 0xF4D50D87 );\n", " P0( B, C, D, A, 8, 20U, 0x455A14ED );\n", " P0( A, B, C, D, 13, 5U, 0xA9E3E905 );\n", " P( D, A, B, C, 2, 9U, 0xFCEFA3F8 );\n", " P0( C, D, A, B, 7, 14U, 0x676F02D9 );\n", " P0( B, C, D, A, 12, 20U, 0x8D2A4C8A );\n", "\n", "#undef F\n", " \n", "#define F(x,y,z) (x ^ y ^ z)\n", "\n", " P( A, B, C, D, 5, 4U, 0xFFFA3942 );\n", " P( D, A, B, C, 8, 11U, 0x8771F681 );\n", " P( C, D, A, B, 11, 16U, 0x6D9D6122 );\n", " P14( B, C, D, A, 14, 23U, 0xFDE5380C );\n", " P( A, B, C, D, 1, 4U, 0xA4BEEA44 );\n", " P( D, A, B, C, 4, 11U, 0x4BDECFA9 );\n", " P( C, D, A, B, 7, 16U, 0xF6BB4B60 );\n", " P( B, C, D, A, 10, 23U, 0xBEBFBC70 );\n", " P( A, B, C, D, 13, 4U, 0x289B7EC6 );\n", " P( D, A, B, C, 0, 11U, 0xEAA127FA );\n", " P( C, D, A, B, 3, 16U, 0xD4EF3085 );\n", " P( B, C, D, A, 6, 23U, 0x04881D05 );\n", " P( A, B, C, D, 9, 4U, 0xD9D4D039 );\n", " P( D, A, B, C, 12, 11U, 0xE6DB99E5 );\n", " P( C, D, A, B, 15, 16U, 0x1FA27CF8 );\n", " P( B, C, D, A, 2, 23U, 0xC4AC5665 );\n", "\n", "#undef F\n", "\n", "#define F(x,y,z) (y ^ (x | ~z))\n", "\n", " P( A, B, C, D, 0, 6U, 0xF4292244 );\n", " P( D, A, B, C, 7, 10U, 0x432AFF97 );\n", " P14( C, D, A, B, 14, 15U, 0xAB9423A7 );\n", " P( B, C, D, A, 5, 21U, 0xFC93A039 );\n", " P( A, B, C, D, 12, 6U, 0x655B59C3 );\n", " P( D, A, B, C, 3, 10U, 0x8F0CCC92 );\n", " P( C, D, A, B, 10, 15U, 0xFFEFF47D );\n", " P( B, C, D, A, 1, 21U, 0x85845DD1 );\n", " P( A, B, C, D, 8, 6U, 0x6FA87E4F );\n", " P( D, A, B, C, 15, 10U, 0xFE2CE6E0 );\n", " P( C, D, A, B, 6, 15U, 0xA3014314 );\n", " P( B, C, D, A, 13, 21U, 0x4E0811A1 );\n", " P( A, B, C, D, 4, 6U, 0xF7537E82 );\n", " \n", " if( (A&0xFFFFFFFEU) == 2562383102U ) { \n", " P( D, A, B, C, 11, 10U, 0xBD3AF235 );\n", " P( C, D, A, B, 2, 15U, 0x2AD7D2BB );\n", " P( B, C, D, A, 9, 21U, 0xEB86D391 );\n", " A+=0x67452301;\n", " B += 0xefcdab89;\n", " if( ( (B^A)&0xf0)==0)\n", " out_buffer[id&0xf]=0x80000000|id; \n", " }\n", " \n", "#undef F\n", "\n", "}\n" ], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }