|
Message-ID: <683c133b.4c570dd0.51d57e3f.17a61@o2.pl> Date: Thu, 04 Jul 2013 15:53:03 +0200 From: marcus.desto <marcus.desto@...pl> To: john-dev@...ts.openwall.com Subject: Re: OpenCL PBKDFv2 Kernel With Python Hi Michael, thanks! Dnia 4 lipca 2013 12:46 Michael Samuel <mik@...net.net> napisaĆ(a): > Hi Marcus, > > On 4 July 2013 20:34, marcus.desto <marcus.desto@...pl> wrote: > > > __kernel void pbkdf2_init(__global const pbkdf2_password *inbuffer, > > __constant pbkdf2_salt *salt, > > __global pbkdf2_state *state) > > > > Does anyone of you has any idea, how I can access inbuffer of type pbkdf2_password from pyopencl? > > If you have a look in opencl_pbkdf2_hmac_sha1.h you'll see the 3 > structs. You'll probably need to do struct.pack() to create one of > each of those structures. > > So for example, I'd construct it with something like this: > > password_host_buffer = "".join([ struct.pack("=I65s", len(plaintext), > plaintext) for plaintext in plaintexts ]) > password_dev_buffer = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, > hostbuf=password_host_buffer) > > Regards, > Michael > I have a problem with unpacking the OUT_buffer. I know this is not a python mailing list, but maybe someone knows python and can give me a hint. I'd really appreciate. pyKEYLEN=20 # for hash import sys print " ~> "+str( sys.getsizeof(numpy.uint32()) ) OUT_host_buffer = "".join([ struct.pack("=I",100+i) for i in range(pyKEYLEN) ]) # for testing 100+i print " ----> "+str(sys.getsizeof(OUT_host_buffer)) OUT_dev_buffer = cl.Buffer(ctx, mf.READ_WRITE, sys.getsizeof(OUT_host_buffer)) print "\n>> OUT_host_buffer "+str(OUT_host_buffer)+"\n" print "\n>> OUT_dev_buffer "+str(sys.getsizeof(OUT_dev_buffer))+"\n" import binascii s = struct.Struct('=I') dat = s.unpack(bytearray(OUT_host_buffer)) print "\n>> dat "+str(dat)+"\n" I get the following error: Traceback (most recent call last): File "opencl_PBKDFv2_compare6.py", line 103, in <module> dat = s.unpack(bytearray(OUT_host_buffer)) struct.error: unpack requires a string argument of length 4 I think I stuck at the OUT_buffer part. typedef struct { uint v[(OUTLEN+3)/4]; } pbkdf2_hash; This brings me to another problem: How to deal with that using python? * Pass this kernel -DKEYLEN=x -DOUTLEN=y -DSALTLEN=z for generic use. * * KEYLEN should be PLAINTEXT_LENGTH for passwords or 20 for hash * OUTLEN should be sizeof(outbuffer->v) * SALTLEN should be sizeof(currentsalt.salt) Regards, Marcus
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.