Quantcast
Channel: hashcat Forum - All Forums
Viewing all 7847 articles
Browse latest View live

Question regarding -m 20710 (hashcat beta).

$
0
0
I'm receiving "Salt-length exception" (64:64) when using the -O flag in my command.
Without the -O flag it runs, but the speeds are VERY slow, is there anyway to fix this?

I'm unsure how these things work, but maybe I could pay somebody to update to kernel for me (if that's whats needed).

Thanks, hope to hear a reply.

Cannot find an OpenCL ICD loader library.

$
0
0
Downloaded the correct GPU drivers and OpenCL runtime but still getting this error, what solutions have people come up with?
Only trying to benchmark and the force command line won't bypass it either.

m02500_aux1nullGBE): error: failed in Gen backend.

$
0
0
Hello guys and gals. I'm tearing my hair out trying to get hashcat up and running on my bootable usb drive. I have included the command I am trying to run, also the same command with --force as well as the output in both cases...please help me! I am fairly new to linux, but I am very keen to learn. I have read through the faq's and they seem to suggest that I don't need to use my GPU but on the home page of this website (hashcat.net) their are recommended requirements for both Intel GPU and CPU. I am running The-Distribution-Which-Does-Not-Handle-OpenCL-Well (The-Distribution-Which-Does-Not-Handle-OpenCL-Well (Kali)) rolling on my usb on a windows 7 hp elitebook 8750. It has an i5 core processor and 8G of RAM. Output follows:
_____________________________________________________________________________________________
Without --force
--------------------
root@The-Distribution-Which-Does-Not-Handle-OpenCL-Well (The-Distribution-Which-Does-Not-Handle-OpenCL-Well (Kali)):~# hashcat -m 2500 -a 3 -i --increment-min 8 --increment-max 10 /root/Downloads/24880_1572835516.hccapx ?a?a?a?a?a?a?a?a?a?a
hashcat (v5.1.0) starting...

* Device #1: Intel's OpenCL runtime (GPU only) is currently broken.
            We are waiting for updated OpenCL drivers from Intel.
            You can use --force to override, but do not report related errors.
* Device #2: Not a native Intel OpenCL runtime. Expect massive speed loss.
            You can use --force to override, but do not report related errors.
No devices found/left.

Started: Wed Nov 20 19:26:21 2019
Stopped: Wed Nov 20 19:26:21 2019

_____________________________________________________________________________________________
With --force
----------------
root@The-Distribution-Which-Does-Not-Handle-OpenCL-Well (The-Distribution-Which-Does-Not-Handle-OpenCL-Well (Kali)):~# hashcat -m 2500 -a 3 -i --increment-min 8 --increment-max 10 /root/Downloads/24880_1572835516.hccapx ?a?a?a?a?a?a?a?a?a?a --force
hashcat (v5.1.0) starting...

OpenCL Platform #1: Intel
=========================
* Device #1: Intel(R) HD Graphics IvyBridge M GT2, 1422/1897 MB allocatable, 16MCU

OpenCL Platform #2: The pocl project
====================================
* Device #2: pthread-Intel(R) Core(TM) i5-3360M CPU @ 2.80GHz, skipped.

Hashes: 2 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates

Applicable optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt
* Brute-Force
* Slow-Hash-SIMD-LOOP

Minimum password length supported by kernel: 8
Maximum password length supported by kernel: 63

Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature abort trigger disabled.

* Device #1: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=1 -D VENDOR_ID=4 -D CUDA_ARCH=0 -D AMD_ROCM=0 -D VECT_SIZE=1 -D DEVICE_TYPE=4 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=4 -D KERN_TYPE=2500 -D _unroll'
* Device #1: Kernel m02500-pure.8e78a544.kernel not found in cache! Building may take a while...
clBuildProgram(): CL_BUILD_PROGRAM_FAILURE

m02500_aux1nullGBE): error: failed in Gen backend.

* Device #1: Kernel /usr/share/hashcat/OpenCL/m02500-pure.cl build failed - proceeding without this device.

Started: Wed Nov 20 19:05:57 2019
Stopped: Wed Nov 20 19:06:42 2019

_____________________________________________________________________________________________
clinfo output
-----------------
root@The-Distribution-Which-Does-Not-Handle-OpenCL-Well (Kali):~# clinfo
Number of platforms                              2
  Platform Name                                  Intel Gen OCL Driver
  Platform Vendor                                Intel
  Platform Version                                OpenCL 1.2 beignet 1.3
  Platform Profile                                FULL_PROFILE
  Platform Extensions                            cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_image2d_from_buffer cl_khr_depth_images cl_khr_spir cl_khr_icd cl_intel_accelerator cl_intel_subgroups cl_intel_subgroups_short cl_khr_gl_sharing
  Platform Extensions function suffix            Intel

  Platform Name                                  Portable Computing Language
  Platform Vendor                                The pocl project
  Platform Version                                OpenCL 1.2 pocl 1.3 None+Asserts, LLVM 8.0.1, SPIR, SLEEF, POCL_DEBUG
  Platform Profile                                FULL_PROFILE
  Platform Extensions                            cl_khr_icd
  Platform Extensions function suffix            POCL

  Platform Name                                  Intel Gen OCL Driver
Number of devices                                1
  Device Name                                    Intel(R) HD Graphics IvyBridge M GT2
  Device Vendor                                  Intel
  Device Vendor ID                                0x8086
  Device Version                                  OpenCL 1.2 beignet 1.3
  Driver Version                                  1.3
  Device OpenCL C Version                        OpenCL C 1.2 beignet 1.3
  Device Type                                    GPU
  Device Profile                                  FULL_PROFILE
  Device Available                                Yes
  Compiler Available                              Yes
  Linker Available                                Yes
  Max compute units                              16
  Max clock frequency                            1000MHz
  Device Partition                                (core)
    Max number of sub-devices                    1
    Supported partition types                    None, None, None
    Supported affinity domains                    (n/a)
  Max work item dimensions                        3
  Max work item sizes                            512x512x512
  Max work group size                            512
  Preferred work group size multiple              16
  Preferred / native vector sizes               
    char                                                16 / 8     
    short                                                8 / 8     
    int                                                  4 / 4     
    long                                                2 / 2     
    half                                                0 / 8        (n/a)
    float                                                4 / 4     
    double                                              0 / 2        (n/a)
  Half-precision Floating-point support          (n/a)
  Single-precision Floating-point support        (core)
    Denormals                                    No
    Infinity and NANs                            Yes
    Round to nearest                              Yes
    Round to zero                                No
    Round to infinity                            No
    IEEE754-2008 fused multiply-add              No
    Support is emulated in software              No
    Correctly-rounded divide and sqrt operations  No
  Double-precision Floating-point support        (n/a)
  Address bits                                    32, Little-Endian
  Global memory size                              1989148672 (1.853GiB)
  Error Correction support                        No
  Max memory allocation                          1491075072 (1.389GiB)
  Unified memory for Host and Device              Yes
  Minimum alignment for any data type            128 bytes
  Alignment of base address                      1024 bits (128 bytes)
  Global Memory cache type                        Read/Write
  Global Memory cache size                        8192 (8KiB)
  Global Memory cache line size                  64 bytes
  Image support                                  Yes
    Max number of samplers per kernel            16
    Max size for 1D images from buffer            65536 pixels
    Max 1D or 2D image array size                2048 images
    Base address alignment for 2D image buffers  4096 bytes
    Pitch alignment for 2D image buffers          1 pixels
    Max 2D image size                            8192x8192 pixels
    Max 3D image size                            8192x8192x2048 pixels
    Max number of read image args                128
    Max number of write image args                8
  Local memory type                              Local
  Local memory size                              65536 (64KiB)
  Max number of constant args                    8
  Max constant buffer size                        134217728 (128MiB)
  Max size of kernel argument                    1024
  Queue properties                               
    Out-of-order execution                        No
    Profiling                                    Yes
  Prefer user sync for interop                    Yes
  Profiling timer resolution                      80ns
  Execution capabilities                         
    Run OpenCL kernels                            Yes
    Run native kernels                            Yes
    SPIR versions                                1.2
  printf() buffer size                            1048576 (1024KiB)
  Built-in kernels                                __cl_copy_region_align4;__cl_copy_region_align16;__cl_cpy_region_unalign_same_offset;__cl_copy_region_unalign_dst_offset;__cl_copy_region_unalign_src_offset;__cl_copy_buffer_rect;__cl_copy_image_1d_to_1d;__cl_copy_image_2d_to_2d;__cl_copy_image_3d_to_2d;__cl_copy_image_2d_to_3d;__cl_copy_image_3d_to_3d;__cl_copy_image_2d_to_buffer;__cl_copy_image_3d_to_buffer;__cl_copy_buffer_to_image_2d;__cl_copy_buffer_to_image_3d;__cl_fill_region_unalign;__cl_fill_region_align2;__cl_fill_region_align4;__cl_fill_region_align8_2;__cl_fill_region_align8_4;__cl_fill_region_align8_8;__cl_fill_region_align8_16;__cl_fill_region_align128;__cl_fill_image_1d;__cl_fill_image_1d_array;__cl_fill_image_2d;__cl_fill_image_2d_array;__cl_fill_image_3d;block_motion_estimate_intel;
  Device Extensions                              cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_3d_image_writes cl_khr_image2d_from_buffer cl_khr_depth_images cl_khr_spir cl_khr_icd cl_intel_accelerator cl_intel_subgroups cl_intel_subgroups_short cl_khr_gl_sharing cl_intel_motion_estimation

  Platform Name                                  Portable Computing Language
Number of devices                                1
  Device Name                                    pthread-Intel(R) Core(TM) i5-3360M CPU @ 2.80GHz
  Device Vendor                                  GenuineIntel
  Device Vendor ID                                0x6c636f70
  Device Version                                  OpenCL 1.2 pocl HSTR: pthread-i686-pc-linux-gnu-i686
  Driver Version                                  1.3
  Device OpenCL C Version                        OpenCL C 1.2 pocl
  Device Type                                    CPU
  Device Profile                                  FULL_PROFILE
  Device Available                                Yes
  Compiler Available                              Yes
  Linker Available                                Yes
  Max compute units                              4
  Max clock frequency                            3500MHz
  Device Partition                                (core)
    Max number of sub-devices                    4
    Supported partition types                    equally, by counts
    Supported affinity domains                    (n/a)
  Max work item dimensions                        3
  Max work item sizes                            4096x4096x4096
  Max work group size                            4096
  Preferred work group size multiple              8
  Preferred / native vector sizes               
    char                                                16 / 16     
    short                                              16 / 16     
    int                                                  8 / 8     
    long                                                4 / 4     
    half                                                0 / 0        (n/a)
    float                                                8 / 8     
    double                                              4 / 4        (cl_khr_fp64)
  Half-precision Floating-point support          (n/a)
  Single-precision Floating-point support        (core)
    Denormals                                    No
    Infinity and NANs                            Yes
    Round to nearest                              Yes
    Round to zero                                No
    Round to infinity                            No
    IEEE754-2008 fused multiply-add              No
    Support is emulated in software              No
    Correctly-rounded divide and sqrt operations  No
  Double-precision Floating-point support        (cl_khr_fp64)
    Denormals                                    Yes
    Infinity and NANs                            Yes
    Round to nearest                              Yes
    Round to zero                                Yes
    Round to infinity                            Yes
    IEEE754-2008 fused multiply-add              Yes
    Support is emulated in software              No
  Address bits                                    32, Little-Endian
  Global memory size                              4294967295 (4GiB)
  Error Correction support                        No
  Max memory allocation                          1073741824 (1024MiB)
  Unified memory for Host and Device              Yes
  Minimum alignment for any data type            128 bytes
  Alignment of base address                      1024 bits (128 bytes)
  Global Memory cache type                        Read/Write
  Global Memory cache size                        3145728 (3MiB)
  Global Memory cache line size                  64 bytes
  Image support                                  Yes
    Max number of samplers per kernel            16
    Max size for 1D images from buffer            67108864 pixels
    Max 1D or 2D image array size                2048 images
    Max 2D image size                            8192x8192 pixels
    Max 3D image size                            2048x2048x2048 pixels
    Max number of read image args                128
    Max number of write image args                128
  Local memory type                              Global
  Local memory size                              2097152 (2MiB)
  Max number of constant args                    8
  Max constant buffer size                        2097152 (2MiB)
  Max size of kernel argument                    1024
  Queue properties                               
    Out-of-order execution                        No
    Profiling                                    Yes
  Prefer user sync for interop                    Yes
  Profiling timer resolution                      1ns
  Execution capabilities                         
    Run OpenCL kernels                            Yes
    Run native kernels                            Yes
    SPIR versions                                1.2
  printf() buffer size                            16777216 (16MiB)
  Built-in kernels                                (n/a)
  Device Extensions                              cl_khr_byte_addressable_store cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_3d_image_writes cl_khr_spir cl_khr_fp64 cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_fp64


NULL platform behavior
  clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...)  Intel Gen OCL Driver
  clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...)  Success [Intel]
  clCreateContext(NULL, ...) [default]            Success [Intel]
  clCreateContext(NULL, ...) [other]              Success [POCL]
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT)  Success (1)
    Platform Name                                Intel Gen OCL Driver
    Device Name                                  Intel(R) HD Graphics IvyBridge M GT2
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU)  Success (1)
    Platform Name                                Intel Gen OCL Driver
    Device Name                                  Intel(R) HD Graphics IvyBridge M GT2
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM)  No devices found in platform
  clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL)  Success (1)
    Platform Name                                Intel Gen OCL Driver
    Device Name                                  Intel(R) HD Graphics IvyBridge M GT2

ICD loader properties
  ICD loader Name                                OpenCL ICD Loader
  ICD loader Vendor                              OCL Icd free software
  ICD loader Version                              2.2.12
  ICD loader Profile                              OpenCL 2.2


This is all the output I think is relevant. I would appreciate any useful comments, help or pointing out of my faults. As I said above I am keen to learn but I don't know where I am going wrong. PLEASE HELP ME!!!!

Huawei Backup

$
0
0
Hi I found:
https://www.researchgate.net/publication...martphones
and
https://github.com/RealityNet/kobackupdec

and I wonder if anyone here could implement a method simillar to -m 10900 that would crack password for the algorithm described in above article and then implemented in kobackupdec tool.

Basically there is info.xml file for huawei backup that has some hashes inside which then are parsed by kobackupdec (python script)
KEY_SALT in kobackupdec  is first 16 bytes of this pwkey_salt hash from info.xml
KEY NONCE in kobackupdec is last 16 bytes of pwkey_salt hash from info.xml
there is also e_perbackupkey hash in info.xml to get _bkey that is needed to calculate
KEY check expected that should be equal to first 32 bytes of checkMsg hash from info.xml
SALT in kobackupdec is last 32 bytes of checkMsg hash from info.xml

Here is the essential part of kobackupdec script slightly modified:

@staticmethod
    def prf(p, s):
        pdb.set_trace()
        return HMAC.new(p, s, SHA256).digest()

    def crypto_init(self):
        key_salt = self._pwkey_salt[:16]
        logging.debug('KEY_SALT[%s] = %s', len(key_salt),binascii.hexlify(key_salt))

        key = PBKDF2(self._upwd, key_salt, Decryptor.dklen, Decryptor.count, Decryptor.prf)
        logging.debug('KEY[%s] = %s', len(key), binascii.hexlify(key))

        nonce = self._pwkey_salt[16:]
        logging.debug('KEY NONCE[%s] = %s', len(nonce), binascii.hexlify(nonce))

        cipher = AES.new(key, mode=AES.MODE_GCM, nonce=nonce)
        self._bkey = cipher.decrypt(self._e_perbackupkey)[:32]
        logging.debug('self._e_perbackupkey[%s] =  %s', len(self._e_perbackupkey),binascii.hexlify(self._e_perbackupkey))

        logging.debug('[%s] =  %s', len(self._bkey), binascii.hexlify(self._bkey))

        salt = self._checkMsg[32:]
        logging.debug('SALT[%s] = %s', len(salt), binascii.hexlify(salt))

        res = PBKDF2(self._bkey, salt, Decryptor.dklen, Decryptor.count, Decryptor.prf, hmac_hash_module=None)
        logging.debug('KEY check expected = %s', binascii.hexlify(self._checkMsg[:32]))
        logging.debug('RESULT = %s', binascii.hexlify(res))

        if res == self._checkMsg[:32]:
            logging.info('OK, backup key is correct %s' % self._upwd)
            self._good = True
        else:
            logging.error('KO, backup key is wrong %s' % self._upwd)
            self._good = False


The script is covered by license:
# Huawei KoBackup backups decryptor.
#
# Version History
# - 20190729: first public release
#
# Released under MIT License
#
# Copyright (c) 2019 Francesco "dfirfpi" Picasso, Reality Net System Solutions
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

16 cores processor wrong benchmark

$
0
0
a computer based on two processors each with 8 cores and 16 threads, the total number of 16/32, 2.9 to 3.8ghz
If you make hashcat64.exe -D1 -m15700 -b the test gives 30h/s but if you enable brute it does as much as 20h/s
if you remove 2 processor and do a test for 1 processor then 20h/s but with brute force 10
it should be 40h/s in the benchmark, but we have 20h/s
tell me how to treat it?
Yes, and there are 2 strips of 16GB of RAM without dual

How to run hashcat on other computers at the same time?

$
0
0
Are you interested in a client parallelizing capacities on several computers?

for example, there is a main computer on which the task is created and after starting it is proportionally scattered to other computers, as in mining the pool solves 1 problem

brute force with 11 length password(MD4)

$
0
0
Hello,
I was trying to recover a 11 length password  with brute force, MD4
I don't understant why  this did not work...

hashcat64.exe -m 900 -a 3 -w 3 -O hashmd4.txt ?h?h?h?h?h?h?h?h?h?h?h --increment --increment-min 11 --increment-max 11

hashcat (v5.1.0) starting...

* Device #1: WARNING! Kernel exec timeout is not disabled.
            This may cause "CL_OUT_OF_RESOURCES" or related errors.
            To disable the timeout, see: https://hashcat.net/q/timeoutpatch
OpenCL Platform #1: NVIDIA Corporation
======================================
* Device #1: GeForce GTX 1060 3GB, 768/3072 MB allocatable, 9MCU

OpenCL Platform #2: Intel(R) Corporation
========================================
* Device #2: AMD Ryzen 7 1700 Eight-Core Processor, skipped.

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates

Applicable optimizers:
* Optimized-Kernel
* Zero-Byte
* Precompute-Init
* Precompute-Merkle-Demgard
* Meet-In-The-Middle
* Early-Skip
* Not-Salted
* Not-Iterated
* Single-Hash
* Single-Salt
* Brute-Force
* Raw-Hash

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 55

Watchdog: Temperature abort trigger set to 90c

Approaching final keyspace - workload adjusted.

Session..........: hashcat
Status...........: Exhausted
Hash.Type........: MD4
Hash.Target......: 9991a482c1ad810b731bcfbeae00bf5b
Time.Started.....: Fri Nov 22 02:02:19 2019 (18 mins, 12 secs)
Time.Estimated...: Fri Nov 22 02:20:31 2019 (0 secs)
Guess.Mask.......: ?h?h?h?h?h?h?h?h?h?h?h [11]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 16200.1 MH/s (66.07ms) @ Accel:256 Loops:512 Thr:1024 Vec:1
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 17592186044416/17592186044416 (100.00%)
Rejected.........: 0/17592186044416 (0.00%)
Restore.Point....: 4294967296/4294967296 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:3584-4096 Iteration:0-512
Candidates.#1....: 12fe1999f6e -> 6e6f5f6ef6e
Hardware.Mon.#1..: Temp: 67c Fan: 47% Util: 92% Core:1898MHz Mem:3802MHz Bus:16

Started: Fri Nov 22 02:02:15 2019
Stopped: Fri Nov 22 02:20:33 2019

=============

could someone explain please ?

Almost HALF speeds on 8 V100 GCP

$
0
0
Hy guys,
Just setup a VM in GCP, 8x Tesla V100 and installed Tesla's driver
I benchmark and get bit less than HALF all the other benchmark speeds.
Anyone had that or could help?
All benchmark I found online gave 70 to 75GH/s on NTLM, but I am barely getting 29 to 33 with -O and -w 3

problem with hashcat windows restart or switch off

$
0
0
I have a rig with 3 x 1080 and
when i start hashcat... few minutes later come this message :

Driver temperature threshold met on GPU #4. Expect reduced performance.

windows shut down or restart
what is the problem ?

I use a asus mainbaord bequiet 600 & 500 watt, 4 gb ram
3 x 1080 geforce , driver sucessfull installed...

thank you

m -15700 2h\s on 1080ti

$
0
0
Hello guys, want to recover my eth wallet
I installed actual K.ali Linux with hashcat on board
Then cuda and  nvidia drivers  (with instructions from k.ali website)

I am using wordlist attack
Problem that i have terrible speed on my 1080ti rig  0 - 2 h/s

hashcat -m 15700  -a 0 eth.hash ethpass.txt
Code:
hashcat (v5.1.0) starting...

* Device #1: Not a native Intel OpenCL runtime. Expect massive speed loss.
            You can use --force to override, but do not report related errors.
* Device #3: WARNING! Kernel exec timeout is not disabled.
            This may cause "CL_OUT_OF_RESOURCES" or related errors.
            To disable the timeout, see: https://hashcat.net/q/timeoutpatch
OpenCL Platform #1: The pocl project
====================================
* Device #1: pthread-Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz, skipped.

OpenCL Platform #2: Intel(R) Corporation
========================================
* Device #2: Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz, skipped.

OpenCL Platform #3: NVIDIA Corporation
======================================
* Device #3: GeForce GTX 1080 Ti, 2793/11175 MB allocatable, 28MCU
* Device #4: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #5: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #6: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #7: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #8: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #9: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Applicable optimizers:
* Zero-Byte
* Single-Hash
* Single-Salt

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256

Watchdog: Temperature abort trigger set to 90c

Increasing single-block device memory allocatable for --scrypt-tmto 1.
Increasing single-block device memory allocatable for --scrypt-tmto 2.
Increasing single-block device memory allocatable for --scrypt-tmto 3.
SCRYPT tmto optimizer value set to: 4, mem: 7516192768

* Device #3: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=1 -D VENDOR_ID=32 -D CUDA_ARCH=601 -D AMD_ROCM=0 -D VECT_SIZE=1 -D DEVICE_TYPE=4 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=8 -D KERN_TYPE=15700 -D _unroll'


Increasing single-block device memory allocatable for --scrypt-tmto 1.
Increasing single-block device memory allocatable for --scrypt-tmto 2.
Increasing single-block device memory allocatable for --scrypt-tmto 3.
SCRYPT tmto optimizer value set to: 4, mem: 7516192768

* Device #4: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=1 -D VENDOR_ID=32 -D CUDA_ARCH=601 -D AMD_ROCM=0 -D VECT_SIZE=1 -D DEVICE_TYPE=4 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=8 -D KERN_TYPE=15700 -D _unroll'


Increasing single-block device memory allocatable for --scrypt-tmto 1.
Increasing single-block device memory allocatable for --scrypt-tmto 2.
Increasing single-block device memory allocatable for --scrypt-tmto 3.
SCRYPT tmto optimizer value set to: 4, mem: 7516192768

* Device #5: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=1 -D VENDOR_ID=32 -D CUDA_ARCH=601 -D AMD_ROCM=0 -D VECT_SIZE=1 -D DEVICE_TYPE=4 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=8 -D KERN_TYPE=15700 -D _unroll'


Increasing single-block device memory allocatable for --scrypt-tmto 1.
Increasing single-block device memory allocatable for --scrypt-tmto 2.
Increasing single-block device memory allocatable for --scrypt-tmto 3.
SCRYPT tmto optimizer value set to: 4, mem: 7516192768

* Device #6: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=1 -D VENDOR_ID=32 -D CUDA_ARCH=601 -D AMD_ROCM=0 -D VECT_SIZE=1 -D DEVICE_TYPE=4 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=8 -D KERN_TYPE=15700 -D _unroll'


Increasing single-block device memory allocatable for --scrypt-tmto 1.
Increasing single-block device memory allocatable for --scrypt-tmto 2.
Increasing single-block device memory allocatable for --scrypt-tmto 3.
SCRYPT tmto optimizer value set to: 4, mem: 7516192768

* Device #7: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=1 -D VENDOR_ID=32 -D CUDA_ARCH=601 -D AMD_ROCM=0 -D VECT_SIZE=1 -D DEVICE_TYPE=4 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=8 -D KERN_TYPE=15700 -D _unroll'


Increasing single-block device memory allocatable for --scrypt-tmto 1.
Increasing single-block device memory allocatable for --scrypt-tmto 2.
Increasing single-block device memory allocatable for --scrypt-tmto 3.
SCRYPT tmto optimizer value set to: 4, mem: 7516192768

* Device #8: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=1 -D VENDOR_ID=32 -D CUDA_ARCH=601 -D AMD_ROCM=0 -D VECT_SIZE=1 -D DEVICE_TYPE=4 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=8 -D KERN_TYPE=15700 -D _unroll'


Increasing single-block device memory allocatable for --scrypt-tmto 1.
Increasing single-block device memory allocatable for --scrypt-tmto 2.
Increasing single-block device memory allocatable for --scrypt-tmto 3.
SCRYPT tmto optimizer value set to: 4, mem: 7516192768

* Device #9: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=1 -D VENDOR_ID=32 -D CUDA_ARCH=601 -D AMD_ROCM=0 -D VECT_SIZE=1 -D DEVICE_TYPE=4 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=8 -D KERN_TYPE=15700 -D _unroll'

...

Speed.#3.........:        0 H/s (0.00ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#4.........:        0 H/s (0.00ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#5.........:        0 H/s (82579.72ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#6.........:        0 H/s (0.00ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#7.........:        0 H/s (80998.76ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#8.........:        0 H/s (81218.51ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#9.........:        0 H/s (81488.90ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#*.........:        2 H/s

hashcat -b -m 15700

Code:
hashcat (v5.1.0) starting in benchmark mode...

Benchmarking uses hand-optimized kernel code by default.
You can use it in your cracking session by setting the -O option.
Note: Using optimized kernel code limits the maximum supported password length.
To disable the optimized kernel code in benchmark mode, use the -w option.

* Device #1: Not a native Intel OpenCL runtime. Expect massive speed loss.
            You can use --force to override, but do not report related errors.
* Device #3: WARNING! Kernel exec timeout is not disabled.
            This may cause "CL_OUT_OF_RESOURCES" or related errors.
            To disable the timeout, see: https://hashcat.net/q/timeoutpatch
OpenCL Platform #1: The pocl project
====================================
* Device #1: pthread-Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz, skipped.

OpenCL Platform #2: Intel(R) Corporation
========================================
* Device #2: Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz, skipped.

OpenCL Platform #3: NVIDIA Corporation
======================================
* Device #3: GeForce GTX 1080 Ti, 2793/11175 MB allocatable, 28MCU
* Device #4: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #5: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #6: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #7: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #8: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #9: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU

Benchmark relevant options:
===========================
* --optimized-kernel-enable

Hashmode: 15700 - Ethereum Wallet, SCRYPT (Iterations: 1)


Speed.#3.........:        3 H/s (9477.90ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#4.........:        3 H/s (9884.17ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#5.........:        3 H/s (9872.20ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#6.........:        3 H/s (10001.87ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#7.........:        3 H/s (9692.74ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#8.........:        3 H/s (9656.35ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#9.........:        3 H/s (9723.49ms) @ Accel:1 Loops:1 Thr:1 Vec:1
Speed.#*.........:      20 H/s


At same time  Bitcoin wallet showing good results
hashcat -b -m 11300

Code:
hashcat (v5.1.0) starting in benchmark mode...

Benchmarking uses hand-optimized kernel code by default.
You can use it in your cracking session by setting the -O option.
Note: Using optimized kernel code limits the maximum supported password length.
To disable the optimized kernel code in benchmark mode, use the -w option.

* Device #1: Not a native Intel OpenCL runtime. Expect massive speed loss.
            You can use --force to override, but do not report related errors.
* Device #3: WARNING! Kernel exec timeout is not disabled.
            This may cause "CL_OUT_OF_RESOURCES" or related errors.
            To disable the timeout, see: https://hashcat.net/q/timeoutpatch
OpenCL Platform #1: The pocl project
====================================
* Device #1: pthread-Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz, skipped.

OpenCL Platform #2: Intel(R) Corporation
========================================
* Device #2: Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz, skipped.

OpenCL Platform #3: NVIDIA Corporation
======================================
* Device #3: GeForce GTX 1080 Ti, 2793/11175 MB allocatable, 28MCU
* Device #4: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #5: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #6: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #7: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #8: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU
* Device #9: GeForce GTX 1080 Ti, 2794/11178 MB allocatable, 28MCU

Benchmark relevant options:
===========================
* --optimized-kernel-enable

Hashmode: 11300 - Bitcoin/Litecoin wallet.dat (Iterations: 199999)

Speed.#3.........:    7617 H/s (75.31ms) @ Accel:16 Loops:256 Thr:1024 Vec:1
Speed.#4.........:    7000 H/s (82.21ms) @ Accel:16 Loops:256 Thr:1024 Vec:1
Speed.#5.........:    7354 H/s (78.46ms) @ Accel:16 Loops:256 Thr:1024 Vec:1
Speed.#6.........:    7275 H/s (78.87ms) @ Accel:16 Loops:256 Thr:1024 Vec:1
Speed.#7.........:    7590 H/s (76.79ms) @ Accel:16 Loops:256 Thr:1024 Vec:1
Speed.#8.........:    7188 H/s (80.67ms) @ Accel:16 Loops:256 Thr:1024 Vec:1
Speed.#9.........:    6945 H/s (82.60ms) @ Accel:16 Loops:256 Thr:1024 Vec:1
Speed.#*.........:    50970 H/s

Unable to crack second half of LM hash

$
0
0
I ran into this issue recently during a CTF competition and spent a little time replicating a test scenario. Given a 13-char password as an LM hash, Hashcat (v5.1.0) successfully cracks the first hash but not the second.
 
To re-create the issue I padded Hashcat's example LM hash out to 13-chars:

HASHCATHASHCA = 299BD128C1101FD6A9BF21707E39C1C7

And ran a typical attack for LM hashes:

Code:
$ hashcat '299BD128C1101FD6A9BF21707E39C1C7' -m3000 -a3 -1 ?u?d?s ?1?1?1?1?1?1?1

$ hashcat '299BD128C1101FD6A9BF21707E39C1C7' -m3000 --show
299bd128c1101fd6a9bf21707e39c1c7:HASHCAT[notfound]

As a sanity check I ran a John session on the same hash:

Code:
$ john lm_test.hash --format=LM-opencl --fork=4

$ john lm_test.hash --format=LM-opencl --show
Device 3: GeForce GTX 1080
?:HASHCATHASHCA

2 password hashes cracked, 0 left

iTunes Backup

$
0
0
Hi there,

sorry, I am new to hashcat and in urgent need for help to my iTunes hash! It´s an iOS 12.4 encrypted Backup on iTunes.

Is there any possibility to crack it? I tried wordlists but my computer is not capeable enough.

Thank you in advance!

Litecoin asic L3+ and Scrypt hash

$
0
0
Hello again, i want to ask
Is it technically possible in theory to use Litecoin Asic L3+ for brute -m 15700 hash?
I think that there are several ways to do this
1) Make  special hashcat firmware for asic -  rather unreal for third party devs
2) Send tasks from hashcat to ASIC like a mining pool, but i am not sure is it real to simulate bruting like a mining requests

Tell me pls you opinion and sorry if question is silly.

Run a benchmark

$
0
0
Hashcat newbie here, what CL do I need to run a standard benchmark to get hashrates

hashcat64.exe -b

Found the above online but that comes up with the following error.

'hashcat64.exe' is not recognized as an internal or external command,

operable program or batch file.

Hahshcat does not support the new rar3 type and needs help

$
0
0
$ RAR3 $ * 1 * 4761320eb5c4c1a0 * 2c7e6303 * 20992 * 23868 * 1 *1c89e39797463ebf12b434303e55c06854ca9eb130c5e968989cfbd7103739c39048179b786196c7971a8dff5b08e42bfebe17555038a189ae2f4c2baf1f333845fd62768954ed789d6dfe244333efb27a8b369d2bf353808a58aff600cbf6b6391c1b307243f2401421971c3b5131c50496c608e9837c06d6f67b7897500afe80a02fa18b474819d353226cea1978e9f212f78f4221365857ad521c2c4f2693e795fe20e10be5210ab659dc6220565685f84ec1aa0c7fe1e39fc4c82f1369076a28196011bc2eddb164f738a88dab6972331a6a88c176e76b6f1a8d501212cedaecebc9b0919b9d2d40d87f709e5841862f6e8738ae5c9d33f305ec20cd94a9ab8b8102c5f2fc70055f644e9e9829b9c1b0707022a6ebe1adc03a46db5749f07c8d1e9e0c582d3eac4925ce6465efe207a0cbed21342cc45652d6a0012d7f60b963926ea5d03f93f2408fc387cd98d8bd390488825cc228406b2969d09d3f49a1b39c5d663668471ba141a7385491e6537c1ad2c00e9fb33166f9198610e3832c3a65c80ba44bf0ab1e29b716feb58ee828dadd04a3cfd00df1b23efee2eac59b323d6c0dabddba367e5833f656002a45e529af9d733d01d008dbca8b8763a7503046c03363472a1e10e15dbf5ed9ac6a673df72377828a04bdd760e881a5f42069431af586089a4de2b396507917f2dabb09d657a0385fface66bc49018b7c5394252f631aacd081edd742614dcc0382f8717cece3fb74441fb7795d9d848c8d43294ac87a9b85ba856475c2f7b26cd5806100cd065d4c4aaa0b3d38fc76889c4ac8dbea8c667e1510610d6511a3b9a422920c3ddd89f939daf96779ed688315734ea4292ae3eacd59e4db87dc5339b8faa5a212b12ec7492cece5181a06bd95bd535e005f968ef425289bf7554b3b88eacaa8f025dee90c935f390bc03aff51e755d37823e187fcf07bfc0ec18d104af6b1743fd9a5899a232f67ed79f126a412802090efc7ec5e2bb34b5c1a7dc22c7392f9ccbe235e57fefc23e22434fb7caeaca1c54b926964fcab42c6efeb8969722ee6e07d1b542b4406c2bd0d510496911d9d039edd5051ba6e6bfd888734d3220f58f0d33aeafca43d9f2ac8602030199901971c3b148b088aed79e728c875e8747f40c8ac5f87b59272221618b545e6d8f3b212acc44af0d0828a82ba01b5d1e562ca9030c5ef304ef77d8ee585cc5c2a7d83c74f937f054b535fe258707bc75e01afc3d3162e5eec93d46ea912f734138bb0a2e45707febd683144229bfda31665dd0e10318b9c67bf5beefbd76286d9363436dc42a363de9cfb3b2db78b0552fd38e0af2f6ff6dee088cc6adf1a237bbb35cb6eabbf9d1307843bbfb2966b4cf51653b63a11ed33dbf717282e2eeee8b1792910ebe22371df120fb74c72f2317d7dfac81ce6e599bf1d232e61a9a1be807f2c26586a6ba7c33647fa1dd1b34eb8d8451571f86c97abafb3c2d65a3265c1bf88b9fb3a699daa81dbebb099d931e25dff7309b13854d82832f7773488e7f5307175b10117734adf75729b62df56a253b2cf856788625b2b05094ba671474eaa3c907a2f244155f445b725c046cc306831bc842871cab405caa197fec89a0da835d54590b756373b753ad2ac8a4daafd6194593d58fc8fbd94243e2cbd01dafbf5975aa3a53b8d3dd251309f46dd46b37dcd75694bb676487029b26e7c0f4edc3b65a849e17571a11971380b35a874693be51af414840c847882b19a12511fe1de2d7219f9272250819f65f002616025e0c5f4b6a47fae5ae39718cf8f0c9485ccceaa626f4496663e7462a40ac3190554e413364103abcbc9ea72c4a69f7b05efb2e717adaf5977b1f31a448f9eb59dd8a6b7e98e6b0b89cecc550f707aac5a79b58bd42e285b2322a9123e584c66fd371151d9788ed61a480fe645714c9d65a5ee7b96fdebc553eebc92843e352beb945b70e430225970d580f2e7c885f975df2bbacd08ac911fb9fea4d55858feb2bdd91fb7905b2c043add29910ae334f10ce365e397d6f169b95451fff6530b0c97ca0ebe76128340eb13b269c4a43fa7e7225a9ba2c8b71cc633dd5b8fa4cb6b94c93f7a3b7d5b70b0cc4ad23cd445ca0120411c79bb1964b70b3d108111b12a645b59e91d71b9f87eb3435b96915fd1fdeaca76b2158f33476ec1810f41b0ad47c1e0abbebeb4975b5a1c1fcf3ff8c3f28ac9df7d0ae65393786eac5468f1e5d194577eb36d981f737ba2d9171c412e81583791a3bfa2a825a099d12d78cb398599abcb9667dc7d13a631e84ef1c78d63212caa7b0357b39d9078d2a6d4dff4fea9b78bc12e72acf5e62ab7e40996125085c7cbc29f19c9275a948bb219b4e91f08596fe8128e2da7ad6b58e6457cfa2606f6980fcb7cc9fce7e3a66fa33c3fdaf8b9abb4b5b5bb61fefde9f20e3e82dabc112016fcc2b8ffc6227d35000bf37a28a3f1d3997c3c3dcdcb363f8503f052e59fa3fdceeef937e60c77f73b2765c3fd3e4c4ab6dd9fd390f486b93343a5c5130fe806448335d5c2c24068a56cafba7f3f515cd0e613dfb3a6d21242bc34e01eaa555b50b3d513a42bf6f35952bd1738e85f8ba353afedc5c6866e82485fa56b87b10160b69953099857fbf522ee75242e1805edcbbc2a6fd8f650dd241c62545cd90641470ce1c83fddd9fb68fbcdf9fcc5b31e4e4eb609079e70b4e6465dd46c808d784e9a67ad5bd70b51d0489dab9afac04c243a3dc2729fac1e1c0dde2b4dbd782aee4e246b9e41225921f90ecfa473cf8aa98c1b4ce04a11ce06c47532d416d125eb087dc61b38de0cbaa017a6ca24bb1cdb641b931311e089ed2ebb534778f2822c5e4e49a586f14211a29cebd7e9df49287510f127fbd52ca884e0c09ddb5ebee4dbb3a12fefef49517d09270791454df02e41a5d08e4c19b5b833925bf9512f81dd3562a9831996efd98363365ddcf353740661258aafc32da8262a8c4252333ce34900ca6daaed668f19980000c7bde63ca68cfea889ab52ec61b3dfcc84b390bc37003fc9d1fd2b19f0547c13b6d75f18a29e88ab5e552fc632bc02da003bca4b8c8209cb3c00f48850baa3f9bb6604c121e06a3805eb4c530fefd27a1dcec9ee76374c5cb815fd13fbc88513d1d1c7dd6ec0728be094e767c272fac051ccb95cf5af9f0937587c1b554e59267e3cfdf91c1f3668c62d0a030f7766ae29a508ea62249ca0ba34768562b0e0fc4030a7fbb29ceb0d7facfa7121ff7d4096d9478e703758efadd233e65ca13e8cbf007f15a584bb97c1264e7c22b5bc1131744299e7fe7620fbd4276f9d92eb04afe378cde1f12f75d72a451bc5c0fab455580e7c91f380012ad97577ed8721762f75d9c6b96b7927a7c15e8a7d8fceacbe8a7bfe4540cc10f1649bd20d079ae11261d4a4a82bdd7993e9eb5c08139238bb6386328377316a963e2376c135ae7e7349f6e69d35105b577f5ca25f01fece35e0872cdcc0445651e4d824c056dfafe4a6381ab880d17d700f7af5cae3093a65bc2b6e53ee5f47eeba77af129bfb1839bea2df9ff77b9a3356cee560a01c39519f45cb2170e005455a146e04b8f29d93530b1ee949c0b241571d12dbb02ec114eeebdf02e61147f1afd641ad77becd191a0b10841cff9428f4732bc35b7921234abd579b846f77b6fc203085d58b7d65cd797dc66107d408c9c98ad563a8e6fb0ab6a71b0c44eca0a913f7e01450a71b99d1973309d5c31261f0445fee978b8be6891e14a15c85986e4320281386e31a6a785c079e3c48dcfee0de1ee2583e6ef42b10d8378e6331dfc0641d4a2ed322c7223ea9e5178404f226c544ec8c3240a82d700c2e4176def5d5537984836acc54515a152289b0494c6e31bb38849507a768ab9258576464a4bd26d7cd30d12d85c83a190de4721722c318a29c2455c9ea9f1820b92e6554a16cff245e9283871a780e3f9a7649b1b7315b48c70744719b28b71e52206bc0047bc49a8ebcce4dabb28f9e92dd7a88184ac941f8d80bd13f591542cf14aece2b09bc1cfc81d7730fbc260e778da9c22aba7b86f93bcaf3dd4284b200e9fcd34e919ed40e9b3b65f7f6f0bdcd8fb33f4a73777438e93c1457c1b697846e6a60d1310de97577dc4e144b4b3273ab3309f1c9eef0677830e739653853b12ad9e32ed1464a746eb78cf93313b023292e3aba7ed7d477ff0081307af66a1ebe480e1d73affbbc568f829335a407dedc15db383027c4c8cfa502ed350ed25ea201f536b5638fffec849d2cb49f88f909e596e989e22149df113dc9c128b1fb297891d5f1d49c6f65f6bf0e39db60fd5106afb2f3560080d8a93289b55db08e208612d94f5aa8ceff3b289b30c2d7072be3989dcdd8807f5e5e686e14284558e55ab9afba8473332a727e1be09c4ff40077b6af44a05beb5545118e651fd5991c3202d480b4f597f5b64e1870e99668c1a15c98bb8aeeae968cd6237435f03c67bf1ce4b484325881230a172e22f68831d664cb9e20689544c7c146cc2931eb1ea272bd60c342a695e5e6d64879bf870ab26236589202560f93ced6ab450af3d59d22ba66016a246b48ae49730fedf91bebc1b1660a8ae5cd979225ad756ee27ea02ce20614e86b9726b00603ec5e701689abc5ec68ac4354dffe45a11b1a93a1e5b8528de6ce0ce051b543c3ffa34d34da57d8e788bfec8fba4a7d46a1681d7d7810a33b49f349e5b9784267b7b5b615c866da86deffd82e8a2a25e2cf60f7234b2d6117b95a5a7ca80eabf1ff2f2bed8512ad0a7d8587fcf6d3d4bcc99409eff9e1a03f7973db862668974dca512658d9e654afcaffba0fa66ba6c05bbae9445fb8b2b244c7060f290791a3d2012a4fce9ab766653bed2aefaefa0440a70bcc4f06d0bad5d6e9efbbaf317fee0018d0248f711d3f8c25e541b3320737b323ce6c3c2d00694065cd939b81522be5b1b28d0d17cd2098e66370bd1b118199b7674ba24e5478784672bbc8f65cb87c8c06462690b5d49a66cbbc9f46219d9dbefa1e308ced04de8bdbad2d1ec27977ace66994b9f16b941ddc472e10eafffbc7603e3d5bd25ab59cf93e013fc756dd5927254ed1a321fa504377a376ac150cf74ae3130d4c084efb3152b0106ac2cf494a64c626ce254aa090cd6d9ab63de7244be269f9bf30e17348063648485826d44cf703c73587093175fcf29056260073f313141c3d0e3655af350c272a0f70d6df1df6b22ff3b1701787195b9708fd605b8e23c77711562d5af9cac875f6010fb41b3044164ded0e3ec1803b7a113cc78b33f95f3b390a2b0e2274a340fd65690525f4647c3f5d73b57b16d9180ebf391e6a2c96bd5f6a6f34e06f1b68d664b828a4b1d06c49578840e29f111bb54b12b68bb05d40cf5fae010932ca3a4d0e1d7482f803710b17f30e24992266d5f8a6481348f0ba32810517542e98627d68945b37d36c60fe0c842c7fb5845371c6abe32d8e428e3b701c326877a7a1ee331b3e337aba2d076e5b631a2d74067a4765609e2bafb2b0ca754efcfd017183bf616aa520d34aec264e28a7b140155220438fbd726808cf9c4279e0e411ef360f5855e7da43e1c9ad59877a67081e5b9b01c65f80d8a90019283ff61246c11bed988a98b9e70e10b06487902538bee24e8ae1b0c6e7d850eb25e380a4f2cff08f13a6f2f6e654bfd3049c1b8520f4b3885cfd052d0776c0e7330f6622a7592ff5df524ce7d65a97874bd718ddf026cbfaf673f1c70b237b847e54f2c71203249fdad1352e2fa0ea77751494a8c5f64517d1200c95a3195862a968590bf6644911f9e08b102ca7ebf968b4cffe0b968254080edd955ecb43dbaf8c3e1d77a4c17a38c6ca8f81e5a3552e4a022c53e26bc11cdbeed4159730a570e34129af0707b47ba0621ab8d114d633f302aca34b0fe3b32b7d1c92ea102150a5c851f2b33fbdd77d83aa0f30c39ece876810da91a8ec47af8a9252625c00c1719b9606bc601d544769ecd0c64788ed1ff6def346c5385481d8a995f664be2e147f7f712f98507a6696f7278bb751f1ff4afe00023862c79d925f266821bc1a0c6c430b71bda25a35eb1794f0279938e72f28d266a8d73a4595f796f91f0454edd34c9f6d902c941f1623883442e992030a12282944ed808680392255f31dd9e7776a01e661bbca0f30dbd7503d2301c22d0325fbc0b92a5ec53199d3fc0c446f65191a764a42f014f6874af306023a95882e5a37d41d79c1355b67613a74577b83030171bf2fbfe8fefa286dc29f84104d3676e3cf57324890fefebecc0752db59d784b782a714060d39f27e94fa218c95adac63c92f732be2af317c238ae6a60f6bd61c37eef5c3df02ab47439c3ebdef729ef92c4bd6903ee01d786d2e55baa8c9f5a14bff2daa5883b015fc7b59dce9aca6f4f488ab46fb7e605473fe1d90b91ef016c41bea7a11ff31f041e8f9c53081a3fdb5816d4d59ed82a10ad34b977d27e8ebb8c4b85fde58586fee32620765837e5a3e83edb70eb419a4a2a59afab351f17dfdd4f183d51a47580986154ae250f1f2348e3f279e57377c428cf018a965cbea9bd352daf07ed1322f25497fad11a2bef395d4b94a2b8afd093ac094f1a436805ba3cdf5435fe50d770e7a78fc95b6569cecf2146269b793ac2df83e3375c52559bf2b12c9cfd0c447e779c7ac0d25de811ed63a227c123d6dd816ccf7eb9483f0d39092109d2eaf9307d59fa208a74a4f8691868025264908c80d880f0fa2d5188763d9f72683d8d7bf7658cf4f718c2750558cdba842f08decdcfd9aa9962414ee984501bc1b458297eb728151583280424f6246abff2f5c4fd1b9f21b837f7347e8579cfbc6fb51435604141f4a0fe98aafbd2ac796f41969ff0830b043cdbf916cbe7324733713a7d50dcd691602f9df3f2025f2d5b68020da328d6fcd965c6ef17b4a46d0c69fc9060cba31d4f5da021b384754180619afec3c2693c3d11aca374e2bff70862f67702c3974947c42534748ab8dca1769d3cc12e5847f227743070d250801b256b5091e9df6907170fb3082db9fdb3073fd7a6435e6f29a16bfcfa1c44a7ed5fb04fdb5a3f2c6fce9ca7aa36522ea2d2ca1a0085504b1e236fa98ec785a431be9fd3c517dacb8c4d686d3083990802d6201cedf5d8a0beed111d0297532438b77e22db959f4a73587b68494ce46868eb5a60ff661f87b1025d44e20f90993243c170ee2dc3f3819d7d2f5a408405c45e62d49e7901d4399ffe8d95b28044ee494f14bd7801f9f866b5541e347495d1560fa2aca98188aa4437bf43b9904e047295c32bfc666415762512d6becda9906600cd84577a4df1e818e9b3aeb7192493370f070cdb1799bd51c17855c490c24f526154704ad59f434b1aab91e0a6b3bd9ef2d478f8f0a4b0d3e16b7f592075f60ef35dbf5a5e696c44f4db7658c1d4ff59bd46339c564eee2b0065d0af00688c9d307f1039ba53ec002469e0f503b46386929ac85cf449315568b7861ab45118348f5c8ea8350f09d719909795ea3f20bad275b5605f0c36d82b76488670e1d7795628eb784b5574362b63c083d905947c36fd8859d3fb2378be27f51457f400f266b9cc88d88bdefa91120e22feea6017e6d9ddd2a7a4b23ce06b14a23f9b34e308ef29fcbaa174f13576aa99dff73e302fe8c7aef6b32ef1a99d08af5aa1b9fdda5410e3b133be10b503c3ceb350e64014ad507417ebb99415994a0b3a38877818b39b68ed5841df9b3c9ab044dcffa7488aba44544496d068aa45b26d84add68298e3d78a6f3d0554a70d927e365d190307a9d391a3c47f69b20bcc9976aa2340dbdce7ae9393ada757c1aea70e52f06ac23014db4cfa236c11ec0cf043adb8ddba47431c60db713d8488955403347f8cae7c99ecc63dd904573e5bf508f59842c502f1cefdf6461e02100c0cae0f1b28be35101b5e14f81c2d16ac75fac62f89bedf57ce46072d5b1572b8f37ffba4ae68c759331a2c7a3180dbbaf9bf34ff35917bc93cb374aa2dd17e4c39e8fbfd710e2f967cb0250b05307b5a9662c7388ab8f2efafffb4f0cbab06b8b28f61baff5a16f6e1ac2f56a20c8d7ff042ad00cf04e8631253d1d6ce8274dbb8ec1a2a5d295529872207a69a14982b38118c7571cd2e420a151c7c54f211dc17bd81d96d4b0419897e55f9322098d6ed87d2b158cb94aea3043695ed47e7e5e786f34edb6722c644744687b3bba27452807db5056d8623664e2061e338b9d87cf769fb76a91b38888bb856312a3ce32c379a8dffc524befc9532305e071002dd393ae66e278dea9c6d7e0073b9624291cfad8de6926963bab8a774ecaed74533fcd6390e49335dca972c327b5c0e08d10c0cf2ece22f0d58504bf0aa7d85430ea483c2c9484f073fe42db4e920a34fc7e5c2bb6f79ea30c1146f104a77f9383ac05632918f165403227b9ca33312c633f4aff98b6f84d9994d17951d7670bb662545c30c2c6b7f4ecb31bb71e7b5de15b5c84e88656bd7fcb86e76450bb48b2c2fdfdcc90ff2100026bc8b559e84c7018e042c2f6b085fdfcdb76f606b826eebbb1952f1be19461f57acbb9f8e7e014c1fa7ab4b5d7fc3c3be51449d24d50b33331b130d93be7103433a35ea31240fca8c1572b4e54065d8054be7b4dbcacc3190611e6b0e7161561f015aeb5f665d39882c6dc67a33e3018b013939031e1ad7d16443455c015b23ba344468e4efb1a6374941ad353d967d1ded44482ff3f41326ed50f0cedb0874b97a46cc74f485f97d754f1a53dabf4d88d66e9df868119de745fc123b7aaf9164621753e455dedcd68985b462198d86616cd8a16d6af0be21a6ed1c41398fc564c4776091de6fef72a4c08f708761b8231cf8772b76cab7650ae4d099939416d0ef5e655c4728603d3e7379c9c9e9c656c75ed642a450bc4b31f4465e5fc58a7f2b11c4f03676699df99e0aa2b7f2bc7b1d2835c7f76044fcfb147b859afded1d5edeedecacf21f52bf817a51dd1201fc890bd60137b0860fa0f6517e4be6a5f7019a614eea3b3b117b691ad1badeaae21841aef12c3bfdc7dffaf80c6b5623bdf4e7f853353afbb1dd38024982a2953895d8338b3bb4ae113d5fef985b51745b88234e073f1cac3e42d08420b08e69f82a8ef9c3ca4df388fc4c31669f1b65a6d56f8a4fa9d4284c543d2bd5f5d13a942bb170faab907826b50fa31d015a4a9420794ae9d537fc07837a041ab1f91a815ddc05a693026959c8e4643186458b9516f275f592bcb38052a3e1fc581997ca1375f3e6e95361670e59cf7e4d85e341d8d71cc312fd181dd7aef100310aeb293a08c4b0ab57ade70569936865c5687fa094a91266fbe19539290f7221b03dea2267d60053052e59c830bad30a5dfca308559b6402ee9028ac636ca9690cad53f79b20a239f784d14909cfab93999cc0190c2b3e0e38809ebfe65a75e25e36cba8859c2197ecd6e348185d3eed2b168a2e4a15fcc9106554cb5a70be4a6d039be7f5fd302611dbd98cb7ed899edf64d1b49c9d06813e76ece1f20127c2a093c36e689c9aaef72fecca1252dccaf1cb3ac2c92724562a6d1f3799b1984f9a99a60876038f4773a8a2fd12a1333e341169e32a2f3580747d194ab038fa96fb763dde6bf987eba07bd2e5f26cd2462d348e2b5867a8ab8bae0b898bbabe8d72f999f0d944296dd0e9e6589696eb8fd73c950b080e9c73b77135559e4ce3616b1bf6b113a488a86eaa4f9b94ec926dd7224c34a39d51ecc7258f668eee9bf7e71551f2406e653d3a61d582438f81b0324b1d417197116b89030f83907f69516d603d076dadfb81c548d7737b77ac3ace8f294566a4c98edbdbef945b3070f94e2e8e29c7abee17da473df82ec228d42207784e140a3b35192db46b9fa8af3cf9af53d3a2e6531eab7ae00d945189fa361eb2c37bb5505257d4b744231001ba93e3d9439a7208845558e52dd4182667e9d61f341fefc42413fc76629a23d19fb93dca99373f3dca3fff7c0731e1e90c53d6b1ae0445c4c0ec95d987c4a09468e1b9cf3902e5f24faee77bfc7a549e0efde6e99353d6152c108060bc5e34c2b81c0683c06b5fe8b4c47897e707c2ad8e73d3d44d15d7330de12cea4a1081935a6937c146f5903608fe81edb3f6d2b3155cb96dec2f534c95cfd724f2e8aeb80741c9aff5a8a137bc17e974008d009bc38c2ea11ff46812e5c92eb2fd8ae06898ec1175a3d29d6c565be891f916ab744afe6e36b36a7c8718c650ff4667589556fbd5c0d277677ccb4978237830e2bb3a4c001509a88132dea2cfc336c6bcf402b1647fd74c8150625ce3ef95c02ac0bdedf3ec587de5d5a1ec46b82ace6531b21052b71f9d4319ed62c40db9d972fc0872c1533851296a3b05e62fe86f2f9c31c408bf968aa1c0935da95f38f56ad3e1d7e3c0d22c69d82e24094bb92101bd0b49333eba406d04fffc2f56c8d2b7e2573b8932417c199e4d546b4f50020e9081d3075c69b8e3d7b55f8d059f3c967bab59d312373379630ea6f1282a227c4bf33cbb0f7b86ec4f2be86bc71de217c437a5435fa82c1e36482061cd352f367b26f502ea77544ee83e97a7a3549bb4e2b8d9982893924cd26c98391c6f42ad50148224081cfb2d4cc0ba58b61188c2ac78b4245ab34eb021f3e4f5904197df985e6698322367ede321ec7b690e9e105c1da29f49f746f83a3faa7e4d2ffbef131fa1575694f3c48046daff532db79e9c8a12bff6a826a0ca7b6d533b4f371f19485e91c8fc41290b4cd299ab3d688f9bfa5f10c777f1678aab48f8b7683177bdf0fcd14e25202388b1ee29f1428f1498f19eb99471cc6c354be5feee4dbbc07300f741f16033be694366b46d6bb412045a559b2055f38b1055e4cf69264fa5cec34e9df144bc677472c95a5184171906909d395256cd84f71cf3fe5fef169ccdc45f628f3e373daf00bf192cf523e7e92b4d5efaf1750442e1d09e45962f04961ae7ae74cd6e2ac465e538f1adedf48b18c9a87e82a28ecab732bd456c90fcecdf4b22ae05408213f9ac6fab3b942bed86526673daaf6f3f74f4807c5a81d127366b6065b615fb9908d1b7274a2a0206eb99b01066eb25193439b9d0e79da03e15b9eb5df254c69dd345ccef6e4380c210874f3b5425c226389611fccb1513d723f586b55e640656f6246bbc495104994cfcdb42b00aa82f9090644022e951b4b5329cda12da82f1f27ad1ea1b344a57feac9decc069f7be45af823972c9ea1f05660be2f6d6e75ae0909a3c8445994dfd567f56f80eefe24b5bf8aecdb1e3a8fb056f7f0bcb31a549c433ccfe5cf4aad027b7e61fe6c921eb46e4d44d642a947596b378c0d1ee7027b021e74279f8943cf9e66a11f32c6189e89c8b85315066f41b4c8521422c6b2acb2d5165058b49f778a1bd8e17b2d0cddbfc974d2c773270e177c190876d7e199ec827f53dafaa133b9bb9f5d90b649a790de48f97fadbf6d0b3073f2dc3fc76d2c218c086c8370b7fcd0687c3cb9222473d449e46532516ba14745c0b1d1ee9b345339729f6946f4d0a145337717a8aa8c66222f1f67a27098fdfbf6139097f1b3d82bb363fb3cb698ac6ad84b30537a2d7508cca156b34b875b00e16be6241ae6f645c714386e58524d03cae17f276a991218ad50ac0bbf23f9cfbc917dad535da1477f8cf96ab01cadeae626310f71ec2daa409b1f7ddb67a4c9afcfcc88f1b2f7ad319d7ec9ca97cc41149e70bc86de5835f845abc510b4e7448e45108f7d65d8f98a281a98b12814a99af8aa0a27d2d66a2f5bd9c11f0187d0598133d714dd665eaea332ecc3186128cc899795c869edd459ce13fbd37fd005d9344b9fe858455bb749a2acda2793f14e217763abf0eefe6ddadb054bf6cd401c4958251a9ece7d0aee1c2cd003db7e785e64ef8c1fa999a84c55d2c5bb9fcaafb350990cbf0e2bd8824494226fc80413feb80d25c645e78fd505038db056b368746b9c6d6744d4cfc878a5b552e8e4824d1f5488bcdcad1b13d33bf842701487ad0d0f56d8f247205ecd0f04e227c74286b771970bcaf261e497a199f89d75000806ab6e0ec68a06334ee2eaeded466f939fc9c6acd776324b4cf61d744f8a29df3bfd4722439b0a300181454974371e1294bfe6aa733d29181e3c2f27999879f7e710457cfce4fadd85f7d0621d848a29bae13b05ba17f4155447623bd432830ca8524db11f29a3b0ce30c5cb0235cc0307a429a94e0d8ccf58f6c1533ec365c887c79a9c824c85ebe7a1e866477b2bc7c0a6064490998aacdfde42b75cfae7ce58c89b59d0a2aec5171f9a3d8c9687f0f89577dcfc7e35d316b81d0358a16f9513adcdfa7c30bbc7d9e1b2ccc7222b1e42d94279d5305775ccb7bac11cbbfb216342f19c40282d4bfe419711ec1778667dc8fb94e8f0b37d60ad9882b0edfba7706daef33759406ed140b870daee1b78d5dfc29a8efb92798f0aa9858120a90566f5657274945cc519b873effe4bdc5f795f775fef234fc535c63742aea26a271a7099bfc7800855fe86b35faa49bafc1b79b43cf01ae8e92b1f3e83c1c182bcafb64e22dadece4f7a68463bbbb2ea64c53e7a1fd6feed20f1b0c26e52d087d554a777e223c64bdd84e26d6be514ee6f3de96bd15df26b35f5ead6c1aa0eb84bd7d22c95f777cabcb43530c014c39ce5829a2e8cbcc4570e528f3365e13b77175f11954caace8cc7eab7f8b16c37cbaeb67ae9b5b9544def5065b18f2969b8088b159e93b04056824b5e74d734ab5280b4f115eef49029b48e0986bcbc3d9b9f44ac5b9e37076bb6b27301699b905c5defdda3ed63c1459eee79dc687b1b705d52cc241e877f85acc680344a04a723ce13444c65ced30be621a75a5ed827186d7d73d928d5da9f59c598acffeb6f6b1ad658935672739c728b5a6228c724db76b60877d07a27e1b20da138063b77dea34d05c09a7dad5ed14dbba91ea7f90284e278769bdd84c2139ab037b8a0c7d3405407b55282bb5be17cf4bc65b2ef83aeb43eaea49569a662499c8992e0060b6f2183c64e4854d2d729e3984c8a53e3bac69cb80872f73ddcae93e2a06dfcd469ec1523866c91bf9e6b3c150cfa4b1eb6feffd4c424d92df5165c52456d3c0bae6f0f8828f44faccac1e1ced74159ffb00caca32dfeff107d975fd4d5f16d9d958457c7b4777ceb668ddb265f3b794e9af6db102df79c0b49b82d8ee761d15b2a61269c292fd0057e7dc5bba7d3c5f721f07b6987386cf264bd6b36b8b40d0be9bfbe6e9844cc2873ad33eb74b753f8c2774225826c4af644ef241f75f4af759b2ec6e0254a3d087b5e0afb63e0d2429125734d0a9de812720c749d3739efeac876a74c073c6e5b79bfea7c27a785ad2f6e54469694aef8e9cca4abda5f932b9f3a39baf75e112ce2e6a5c5546377024e39eafbc7da7fc3d1ac600d752fb9bf37772b37e03a7e798ebc4bb87b05498055b24861121ccd174e083e65e6cc750fe0b7c6f6cf357f440b360628d9f3d4aeb1c70576df1b0a8b6b49cf8181a6e89e1afe3500195d7c9329b91f108591dd7c5a265ac960bb4bdc977fc7385236f5ce70c38af353cdf55f21b068b9b8b307b51c65d0ed2431bedf98ec66f80c4ebdd28ce229d8d1b20d5ed513ef91e23dca2eac3753c393e348d152b1f3446ca3b60e5344103b944d748d3ef55fee47cc258b4cd98f885b0dec7f71af963dacc6868c5207ba8642bc9022bf1078175e36eb3e73b65d00b6d79543d5b8abc2bd7b0641c02edf06cc8b1bff309a85f831eba2453095f243f3e57d85413cef1510db453cb860e0d2980213583608dd16c101a8ca039858c63939997e4db942918f2a0bcf54898bc1e272f020372acffe1cd78c8b39c6fea5d92905582bc67a51c76acdc8e7228bc403e547430ae563f873744ac05b5a682fbaae7d5438898858c33e40b46714db10d3dba55bf72e41dc5f91b2ea08d9641cadafc081e6e6ede0089f73bb672af7739ef68d6de00f9e3f3926376a9f59e132848dc4c6126ce23836c00e40da2cc790942f2cb81f2bdc5e5c690f09c5a0c640f96b2c8bef050cd2d554f5d563db01ebe214600d7386fa731ca12eb02c667a335d9d8dd1d8605c2139bf62c3ee4e19c36e9add2be3583af006f5f34f8f8d5609bbdbd312f8e5974dd93f61a929bf630e4ac038a6a3f25608ab5e08b968b78d9d4cfb4c1f69fa136320e9013ae1da393c5a41bd8890e166b5f51f06826a5c908639bc16f65f02032d84e7e8ae5631f5635d377e5050540371eb3cbc0716b62bba9738f0bf1d7a28fcfb7e41da0413f4c00d55d97282182e223d34aef00fe7cfefc95d935b798c61bda7ef7f71b6603175391c6695c11cfba6bd583a9d6d44fa80936e0314f3e69d467429898be1837306e21803774506783036e4494a73a7952d351c9a48556d3ddbae3c6df79434ade412e53a5105b13bd8c1985b1268d978cb7becb7161e4ae34671054620003c53d6a330b6e31cb615d1c671457226618fd6d8a3153fbfa4396e302428ad75c04ca8d613bef19b4d2db1845906dffdf0c022bc8e607257ad0d41e805ff9f11e689bc211ef86ec256fa603f57467609382fc1d076974d9f541e6b5cf284a8b93eca4526349847aef0255e2a5b5623b82442e214d459ff6b4ee1eaa5bbf50f597e3cafe856a291a732d2e080075d45ccabdd05943e609b3e11b2e88fa292052f52005ff948ec0a64f891320a2d378a645e6b16e9138eb74090d510cc40472e5ab07b1eef5fa6baf17c3bbb2a3095e83c6c91056f9ed1c9d11401cd4e3b9a564c28ba1f20d0e9a92be5fa70f3ffeedf7feaca779e7b89631613ec0394304bf18378c2a39253ce905b75c18f3298b8a9255c45de9d8a51433e76f6688a625ab441e893aa358895a84cd237410b9ff59c74b5548fa5ae82aeda5688835edc0e89d67e5647a9bf4fd49b91663f88199c1f99978e69b1bead1091a3f3c282a0128c4dce4ddbaef28d5721fc457a4c804c3273506d15d8dde84b1aa386cf046e87d273dd14740977d6500192f21591a31d79daf6d4b84a968281cb30a23656f22d7257b69d9afe5af15465adbb04d8e943e50bbfe6091e7ed980c403b9fa389aefe0f6c9a194a4a84a89758408ebbd9e3fdfe0e9a41de81e612c9d3022caa599a02cda3d99a8950f9e9f3aa17ba9640a7447759f93eeae4fa97cf6c5534a0633fe1087eae1c6455ce0b684eaf699f68bba604e617d6f2c3638886cfa233d417952140bba38dc26455c8433eb09b938d5fbdac35809425a0e0313e388bc63bb5e44323418c8749e270825e6e4144c081d8cba0feaa17ac1df69b8d46360010e78061a4753fe38967d4b2b21d854366749996ea85c8e450760336c4e46c8aabc1dadfddd4793e16eaddf42ef10e1e686aa5440c77060224975a0f25fff86d73c3364322fe994fa88379f8ccd125c189ab27261bf9bda557ccd4c22a7efb76937ee3b292f33b4c97b0a6934592afa2f37b83866c70bd2216e650f70af96b6ae5700f38cc1734f29dcb1b94c7a66f134e9ee6744eddd3ae6c5bb0a7e75a2301d02dd89d7485222ce8e477b4bbec6fa4a575e979e9814af39410b00f18fbc9892cd09cee506b2fbdd2ff7ad52a9dcd42747c9416fe82d915bf8e8cb23455c159ae04ccc6cacafcecbc6224338e203799641b5374111a22fd8671138c7fec5d5405f96429697afd2be33562c490e9eb0fa1a03d4a4336ae6b80d8208ee082a8930d744655c527af1feb4222018ba835da8e396107b03c5fc5a90f94c8644281f1e52a982f3d0325ae71ed6557e01a0b7a7e106e9e59c6f9221c4d57a95cdb643bcc4028bb4674152b042ea43eb69cc90b9797327f172de84b18bb55212ac7436f6350a9ec4530073e1b34129bb17c21493c853185eedaa83b7cfdfe23a134a275ae0b8fc701425fdc76fc1f42f2c6673aeb8cd24ef4ccea7dd6a758b843a70646bc884ab37464ceb652b7167aef078d7fa0c9845af72b0220c0be4d7b6fdbd7b17ba59bf90ad57dcbc75483f9026738a41163a8d6c890c830288293f986ab946b532baeed1c44cb57ac8658facc826645e7cb87fd33f454acb53e1dd85493b9157f25c57b76d4e7464d2b6f49d7eb710232bf65b9fbadb30a70a8888d0d70206ac57dda30a679a51e99e43c33fc452a054c0352996f5ee2120b77d0c6fd20d5b24bb960eb2d17ef7bf7cc2449e9f39491d62e8820b0e93bbbcbcbc46e7c2af866842cbf13ca8f65573f748f02cad3b122567dfe0443e93f2d08a4c91ed6266bb609a283f0a7f804fc5db9fffae9f87a7d59f604c75b8bfee57e9f95598f3fca01c2575a39d1ff9ca7dfb278a74d5023ed94d9b5efb34e273c49618dc77e7841a081c6e1d5cffd0509c9d32ff41b940aa24bd42f8d7f4847a53432686bb17851f43fc89e8035af589694305e8b5e73a9f3f60c4314c889170964aa38bd2ba8a2affaeb7e85d2985efb7aff7907796b84da7a89dbc6849cc055f74a17c23262334d72457881797a37ec6b3f2d40c7ba28dd13ff012fe13ba2916d44958dadabf6b80fb26a3873b703a928d4623f03f681f01f28670834628acc93ef1c9f052b4d239b387a9fdb35d5f288c00e039106c2e301df3d97d3af77e3d8539c8b5b9f8709b9f362ac5731598e46ce0ef7ced3ebdc6df95ba1666773629faa9c779ed101c77095c4dfe7bdee083079d86d08a507623775e1645a17e3b022d4c1a7f970e6a10abe143c222262fc12f91ac25559c80481f279e15f83080ab855c9e40890aa41ac116a4b7c68a8b845dd541a00c67c45ecec9e8e9a793aac97070c445e6131c7264bbfd41e3069c1fb1762bcdd4a8011e9849cb05ba8f0ab1ba2b10195c17f99caf2ed423cb1b06fb45bda54ed870929d2145a5bc29a7ba95deca9387b186e19948677816322b27ab11012aa6b8d22c2c4240d66a81d9abf9307f994b0ab4f0612a5951ac5053d27807bf3eb6c1d65f12e7f4b7f664e9eed418fc0fcacf81ac939ca8add291a703fb256720174b715efdee46fb0f91658579bf6c5c2490da8cfcb5d3b09368cd19d110cf3518062903a320b77e317c8f54b916291b707cedbef6fa17ce13a8326f313490ec721a4d332868c200b79a115163407131d2b3830be8c59b692d175a3e76dd293d2652f9ff63365dcd23fa30c449c914a4150c0ae4a84ca3d2657d13e8c49ee31a0ee3681ebd3d90235a263a157e8ddc09eaed279b0f246a659a990ee0118c555b6416d4dc2e2016ca7b7df4eb92afb4ec7ddb86648bf372cea4f16afba6eeb287ac552f6f2ad6b4165869c4471ce32964c7a68a87f35e027e025c82e97ed83dd439599d4c0c3e70cc98dddbe746b593c1025f2fa80676d2cc63c5f58cab5912fb3dc21a2a936d9fd7e5b330077745970e5e3218d550370e31a5025ac03287451dec2814468aaaf62167b98bea7a968927be26f5d5b1c1fa3fc4f061667f54826e9e388f4f834a79fdcace942668b574449856c5f7f99ae9aec4beff971e53b61baad6018679f46ea2c44e258361c8c91ef4e6fe7d3a72f145b48333f8d6317ece46a468ad79cc8ab7de0ec253268eee23d537b9af12cb52e9507390861ecb52658f6ad7a279b056a7b0e22cdae76029c0642991f4978960e56d8a1500e8dd5e9ccf8a62f9b0325ca300e38d690ae7d0328daf4439e98fc958507e8977c7a597d91a9b1e2086a52ca56fb2990ee8b7855f97510d8b3fb0a1f639884d2d2f5d1c5f93c23fb482afab403d02f3f06e45ebb67e2b865952bb30a4eec85828b940837f4379aa6e18ec91a31e69ae199f4bbf4b0a10ebef067a08a263541ba0eb7c508f4c64261e6d8911db7cab53633172580fe624557945200df66e8213b5102d178871a05eb6867271b8611a61a6a9884c1150990deeeb47465b66d83bf4cc02e1a2471292ec8a9d4d4fb90d09359d63f7ea5b50196c00bcece05c95d2e211e775392f01eca570eecef78de1a89af26a6ad42f3c459b14acb335d8766b8b522823663ab69891610ef7e2be4653d3ba7a3677e4cf487df1da7aefc2621c2eca4a6ee16ed01fb7569bbb92cfae1075e97d15bf80ecf9da2151982396e63ede85c0dc03183539a2292097b63e4ea2762b39876e7b389a363ac24157afb94918f72845d508d7b7759b8f945652ef49fa1129565ac81e05591503434361d183e37280214f085429319696cb72cf36fe1b141eb62e6fe15818728cb43b94df6d1f77c37c50ffff1d4104f75a0a08f37ec83c5e8c7ef67b0aff1afaf4fb0f98d664ae4bec3bfc707457a8ef3cc142671ad3ad2ea5d5e7ac7db5c28aa7e66a034715cc673bcf605d8b30bafb0b963455e0def3b2af485a56d2279d373225a4972e89d4feb881bccea717dcf4d969e185605ec473e9ca2fc2b564949eb55f27872b3325ee3b1dad2a28786b0c04eba9b01ba1cbaa6b095145264f053f35107bc8813c0d59aa6c7f9c5d75ee97d5f627c485d1f09db1f5817cb845772e87b6d6008f0356c519ba2c473d9cd0e533743ee5302236b52cfb00decb59e1637e3e14a88d0199b590170cab95e7f5ec320b6a4b5ae3892295cd45890fec8040a0e14815b37e68b394845645189a045c3ccd287226019a94783343428d661294e8a1f0d4efbe6b6370ae0aaaa50143535ce854fbc2831c8e101130301fb80cc9295df28df45e4f7c9cd46e73e6d6dbbb53cf099bb710e064ea1d78c6b7360baa0b29fcf98e99d7e116d1621444c6e84d20f29dd6a8fa780741a42a873009eb249c564e7bf2b25d9265f62cb4245b57ce2e45a47fd69206f0f9bb0f5e445d84ac17892ad307033a3f79f7965b5e25fa42f07e077be171a7ff410d5aee7533d50780bdc119a0b2ad461f746b0f5224a34ce5a0c4101e8f9a58267a24e356a78979c5157ad18455b158dec19c10c819ff87249b82b00d9b84851f284358fb60d96a15db7b6698697a9518011ae7a7c6a7ea57944296d7adde25b871735c5717e028063b9320c71e8abbcde4ee4a3ae5298f6a00d9efac45383a51637a57f0917fa017fda0dd55794487935f9fb630a8074a89320a5b7c45cc75feef9028057f1232f93cbb856007e02219d496cc29d93441032ebd3bee040e31b1ff071a711d46f010eac963b835e8cfa0d01f55fccc4d179f12f1a15b87f4c9ef4f670db5eeecd442aa2a48a0cfc3e4a46098d5bf7eae8fd2f70883902731eae2449ea5d1fbf600850d4455d2de5a5d22ba2f187448bce6357ff7215f85ea6de17cc6576474041fa0cff7a99121b660522ead5070ef2befc19e0a6fd09c67c0660ef99c6a4f87abfd3c8f62e11d7967a70f6f9205922926abf45576b916e8adb390bc6637ddd338a6751923b23d1202bf5f54d059a0ba3c8536c82aa88c50ea89af59fdf68a0fb32068f6e3366d47f30648f12462d7902579b24967d586cfcb36d506f646e7b87f7449f7f298c9cb46b60628a9904ab8a7b067cad3d4d126b96c23bd8a14151e1f47fc76d1969c9e5a4f8e07e9f05335ec66adb86c28af835f59bd18dc12893a9f8c1d9f47dc8daa8a37908b5fe263528f3b062c1f455ec3448bc968778ee03cf84f3f2c3b92c18b020771eec15d9cea1c181afc6f6487905e55b1540b747ba737d748b984198252c6dd75cfd9f0be7249b1da841934853d1053eaa7622747bf64b51c7c2b44f2d4faf2fe753107d7ca7ca49eda5453d74be052af86edb37178d4a54a31599effb88a30cacce0310621a3df359edb382777f4d48cc372e58b040646db089dd243e5f0a0243af46e201bde073b7d9a10122ebc37ae98fadcd2657787ebccb28de14e05307d2d83bae93e7da39977946fa6968a0c022b53d91a3140c33e55d2d95b1c3f9734bf2ae0a12933b6c8d6e983a7e1fc4ec09b513cef2784859e41229f5a5bfbfd2405e96e53cbcadf2bd9e0369ae40cd7864d85e90f21fe1e397340f08a3ec93b03729935a629f41c596bd7160f915d7a82fa72cd5c717c7af18dec8998fe18aaed4eb8e043a19eb7be7a41c83d898fbc15963add880d7d46ac6fa4b76772a35f6e529b65ff9b62ff34be68577dd991995e0c9761485914ad257099489b09198f6b27a452e71449fa3eb9d9c70185513081ed341773794dcd19b570b477b865e0273e16a9c15f40e4b857c789a5afd4a73b4ce4bf40627ad0b621ba0acd7946a5e7860ce0e8cf7b71e790bfa19a588c440d6b88ca9f5ab2e2c4fc536640e8739ff6517faf7452aa12da78e51b14959c5bc7d8f8d4dcfe9ef1ca7ed0e6c0c68151a893bb22c4247f0d1abb751653f87a67d0723f83d0ff5e74fc35d685aebaf3818e1010725731de2498721fd510116af2ecbfc5862d23f0cb2fe5946f80f894ce03e3cfac68f704831a2d36abfb2249fb2ac23140102468b44569aa499d432c1b7a41d022032658647faa4417aef9e477d48fe2fde85e529dce5317119390c24279884fc74c2b72592404d4a532ef2e28bb5f0438d3997f1107d3cd967e40815778c0f816637ebf2364c2379c8095ba5c9e02d422465b4c9281685e745ef7e11858b2bc43af2adc2b0154f8832895894a18f4af6014d068355d474976129235d2ca5a947cd5b71cf99e55d83f6452daaee50e5b932931c7badc59def8ac260d14e0ea35e1d528225f5f8f724c2e1bf494b5c65b203dd43482edcabc9acd3de7b12901075aece648cc803463af062625e076c0d9cfdf8248c073435b18818237f266771a0400c189497f0e4cc3181deeaa663f8693715550a6e6858af5ab09351c9db522fb73448e485831de8c7f9168677293fddb2ec05aeee700dd79989621333a26509cbaf20793146e9bf0df6c04fbbb333c58d202fed2764fa190b1f78a76018c4e43e31a3ef4745ea47c777b291f2e9c86401acce9e84f45f5de26aff722c59689f01f8f3bfe1e26d93ded9e49e84e094960286aa866ce198a022da42dcdda6d505309c273b92fa989aae7189395567c8704394be890052ead66f3fabf9d32c96ac2524c33a1931c0339ce8f7e3ea3c56b8b0eb8d42f58a6b8c766548739616200cbc3e7fae8aaf17b2b981f3c222c41bc3d514b7333cd356aa5368c2cf6810b83cdd0d51936a80d04d1cbf2dafab81252059ba4b3b20bdc48e3ef4bd5c7e1932a547a772aedfcb28e6278bc36bba06ace634fa2807b2d81132ec73971404b03eabb8a7dd42c277994e60b63ccc1ccee4b68e5c60722421ec6bc70400f1ef495b9c9f6816b8c6040b94cf25c62838f58e1f9b75e727e348737da3c9f8d48632488d9b8de7d121d87d57d98042d4bc919324bab8f513911d8a2f31058b83d3ead9a9e7b6202091925d4f09d3dd77a3ec46b9b8c1314370dc51a3b04d43e2a371c657af55420a1f06cbb5b0e3341d3287ea1d8d3bec384c329d99fcc26ecc22a396d53227d01fa57c6da02cc1caf8938a9ac718294539a5cdf883cdaec8e5ce45cf61bb54d61c262c56bd57a97b77c04a26e5f6d173bb83f543203feca47826e31ddd3c60c58d76105b8dd32a076698f4cb2973a8732d581637d012ff44b51cf65f90a01feccebb14387473cb7e897ce3b6efbef84eac9281976dbba779163be242de3650481e3080a1ff11fca4563b66a4054f3d41fcefd7cc9294ab883be23f0cde31fed1ab627e5f77cf52e87ac564779e24f7e95b507c4fbbef39b8651a7b1cfa1d24fbd77a50e5199044fe15fd03a1681f68f88a6373f86151307e4fcba47c907ee1b0e15318d3b9f67f661b5306f0240bee8f5db8dad855c6393b0f1ad90a5aab735f6da3a868a2150081aff8f64e1add77bb15aa1f633f436a7dcb1b7cb805ccbfa7f2cd3a5bb94730031d651bea829d72416d385b9c061afad8e51cb3362e9bae90ed00d7292e5e6e894a2c3084885a6d63249598213e353ce60a5e531f7bbed334a4f02e1031e8f4b8a32dd43f0a9929a5787c06ce77d1a50545211ffb1c20b83de2ccb8ce650a01c3e57930950bb29c7282d8e7a87b6cd5eea3e80ad82be07470505e79bb07a9f76665b6ce21ded8c06f3fe292143093756963e8fb62337522ee5baab22a9934f361943e50be4e4597cf3700ee13df88c5ed4f953c4d8ee5ef7ecb128a7ff6f3f47ff329c806183fef9ea9f70d857ba56c144397039d91ea0d2965a26110d35bdc3133bbc20bd6ab631cee7ec2d3f831ccbdd352c9307faafa3cf571fbc604a81940dcde1890fd416c674082a4473f39157c1a5bfb2285e45cec9ea2b45383a33cda7d0697e00bc924cd7faf45f2852e8e01286dab462164d516de6441e700da7080d191e9c92c7457636bad9f1132fc15ad8e4d0791bb8e6ddd5ab1825d63c61d518da2c6ab4efc550c54704d846d96e8555294c18c495ec766af232be004cf5a8d8af2b36a1e2956555f8034f830035ddee82b4471ca4561f4e13b35de58ab7c0366698892bca0c53fd44cc54ba3a6a9d4039f69d82077f88f7dc597b778cc22ce6dc1f4b7a3376f52f6512e7a90a40f5ddbe967ea89ea99db119fdf24296f96e6b3641f36f479b841fb5c574a32c0fe80e4a27c5366837bcf9bdb65e0fcb8615224760dda519195abeb37dd7ac2522673754d97988164691993ffd5ba635c2d8cd836a626dbc352e23e59ff4bed19d37aff865ab88b2ab27767b3d72d3e90c9481f151c237543d897d80ef86569901fd6895dd4777f145f5bb314575da67ce6f7393c8d04a24196a3637de8c7e973b3a073b2d046738ce60ac3e9f74bf34f15334b9fec705353c614b9c8d0960a25474c4ad07374b69890003c52a265e8a0c4b89911607e64894e3b97d6255c96ba5a9687fce8f9397a97ac925b95d14db2c7857fd3a51f30c68c43d8f2f912d1e8b0b60ba25e6e2c0ceb8993f5351c36751a3908fb0035eb77d2a40af7280fb808569e49a941b7e548348172c88a3376530ec3bacb7a85bb6624cd42d0c55b80ea46e99704ffa1d4efadea2a3af57d62a883f89f796cefffa2a51257c4cba4c622ac06a7d45815e4bf8b35de9b48d8c26f3bc241fa4d554aba818848fd468519175d296cab0859720a555ddecf89153b642de06ad01189ac8c6f6ab59a15cbaad9d191467016278a55094cf9713a75e65262a430ad2134c5f20643e0d3a7fb9580341d823932e78cb2b3ff47326992a66206a30e5cb87af8cd950dfdcb11b10a5f2694518797ca50316dbd05c3152d673668f30f89ce3906eccf1a5426dc9c71232bbfdcb5b370f9b0b2c99f1e42869ba06503c56f681d540bf77c5870299b2d9144be84655f19476eb3f7d90dcf94c05c659d48142dc11d4d6813a70e4bf267d9d101dd8a3f1888ab6f0118a903949ed73b8e8fca4bd25ec7f6d5ca01f61d2a47a735a69e4a2a37706b45042b1ae16e91e70656f4573ca47ac95045a3eeb585dfba32d723ff294ba702c4d6accd16743fee43329824ee780f0350d5868435ca56c823f672d5c9fe7497c7f36de908d025211e894c55c7e62c00ccc3118a4ae9184a04db3f2c13ade42cd83d50e198970a1a4b4e9cb0619206d04b2006ebba886f2c47609a1cbf454f014fe5d8382a4aae65f2276098155cece2a2389d65713cc685122cd197da4bd4c51f3cde997866ac3d13e170aa0aa55b3e370c9feb5e791ecdcc41ea9c85eceb4ad5e9aa2654eab9d50e5cd74d2f5ac1493f0d800db6acaed14e50205f0891e3446c96c786c69bf8be82ed6bedb7a1430f506f8546a01b565573c851601b9c1227b6f8699c067ab38354208f61bed900c25f0f25aeb22f79c20a1c9c09c7a077146ce4e6f18c4b3bdaf34bead454e5ae5f757662050ae7e6ccd8a5077a1507395ead7e94f87ee25d4be562cc6921e2cb0fcf2f0d3e8d3cebf2aa960d11801b6972f1aed243c53b0ebef52ac12d8ef57451cabe850f0cbbd6d6c2a98f41687630fcc32513e9b99aa11928fdb9c1a3850b25d9d405f7369662e558cf0892140103007bb4a29776a95f79e77047fe8e32e7c622f0282b139a33c1707a55d6112b9c3b9547b7a733e72915996afffc1b2710f3b20b368b46a4fb1b039426987ca290deb91f2d969b99014b7fd9a82f07f7a68cc6d9df7ffb3c9be66ab9d3fa2555c8116c4a717c3f729d6775977b72d5aae4a8490c0cf2429dbb454d3e10daafc91c889a1ce6c42befb2f19acfb12e146b2a40d8360da41900b1bdbef982b515a641be1a3bd48cf6f802d271bd56253890eadcacd06332885393bfa008cc26737856c6c2818e9ce1a7df52257e827165f3ee5de5ada7df4e50175d80bba649483ddbf7ae7b5bfa1e22598d6ab9cf6064daa13b31e6e316434b969653e81974345b38902fdf57127295a122cc83c567f66a1c043a98de71f12261a603f108d2d751e32f3634702d79a88487fa3516509f1d0e09075a3d78b7d8cafeb83f03f75254a90e4b3c68721fb9ffc37880d90861e5f2a5b927cdb55dcc89f07fa724cd9712608e74906bc4b8540e282dfc134a0ddaf39d68ea486a2cd6a20363237818f35f75a006d199c592c261efe9923a478f0ee7acb15943be4737ff8259292f98a7883068b4192bac64ef00e5ae4023c718f61b616f0776f1fc67ea1c18162923edf67df7ef479bcdbcecdf6230b4cb3a91704f3c08f5d844a1b74804456c079433031dfad8bb63da21b637a4b4d88657563256256ffa5c667f6db1061b74ee8626e05a471bf1711278f9c013b3108f2382d47a10cd35ce77d5055cef55692505cea6bf8190fa6ddf2b572b6308d8f4c2b8cd29767e7e1699b2ef22979eba18303ede927f7d3348a23f1735335392e44024bbe84d86be8c14212fc22707f2d7d16547f479616d36e76ae22f6d60ae5c5dea823f3a9fe35726a0300b200a4cc4e74a1ff1951dc41c1b13057450966ba206fb5fa54ca8b24152f540cbe11b4fa5da98d3ceb1a444945c46ebe8b139ff2d82397b7b481635b5893e03638a6cf50f22d41024351c22d41eca498f85412f3e1b706bb4b08e1687793dad1df7241bf672a15a26e2ad5dea9ef607d83c21d4ec549ccaadec326ae9fe8c2ddd2b1324f2c65accf9a3b81d37e6f7eb7c64a408f56b69dfe53e84809fc07d28e71521b523cef51e2599cbcb723adc31541ec2d19f732593c2596a59a901679e052723a2e82cc9597b7285cd4b6105de26430913ad1f2c13eec65af5e9824a93e35399a8bd3d3103931e86b8a5035678fa98d664552bda4c1d292b271c13bb86a3c032600261b8c462f92c197a037c9202ec045963eb39896e33d5a446f72b51588a03ab82d01a009c01bd4200cac5a09b12b805938007d621174fae1411e5cb6e5555f0faaa5628adc404ff437e62c901c4344b7a7879f270ee810ed344f0b2caab5228c3f2edf45f17021a0ce5869402010eded37cc0970e42878c6f7fb3acc4532ad3cafaba89b802d60d651addfb323b04b2a4988dfb64a2a582319d5bcd7087ffe802df81cdef336ab682289960290941809bc6547ea095c03115ac5986a6d62911142c58d2c3a0b6e298694ff8adb3deb9667ddcc386f22e3d186bee63538f77a3a170231d1bd1ae8173ccff8ae08bc6d50d32fbadce082f0171221f46e2f9fcb7e820ff297c69036715fdf1e7f2d15acc8d8840e4a16010bcfbf33143a3420bc8ce6e4e24d4ff74190cb2f4d65d8a41e20473e2f999703ebb917082b8fc2ec5f181b5ed9c9e5f8f4d8d64e0257efe692720a693ce219649579aa39fa17936fc3809b15af9b76f8390ead16d1ea8d081815652311c8e590da4f32ea760db696b5dd419f1585253671fe72d35a95280bd6de1cfb344abc0c0886aaf279901a3369d8335d7204a9a731f8b5509b1957d3f46e9498966e742a2ba9ef6545bc67b0e39024a619d113c85480e2cf2a6e95e70ef4a343a32da2d43dcb0cc3bba2f10c8c54baf3cfa225af2db58bd8938953c3918d264cddfabffaa9a8cccdd98ce15ffd343518dd3b4fee2474ec7a9ac1a58e8e92370475e4b623e7a626d50c5cea4b0f08952238e2b86ae719baad7bef96f8891a48c3ecb5bb2c4125cf5598decf0906a96eb28341d5923317b9f97cbc854437fccfcefb86c72db2b49d741f56e7f5688434fb08413daf98bd6aaa816247a9dabdc7bdef37ce4a9de7034ec36d4046a60401321ed777d94750f6d60bcc159af6d50bcdb33e8e8bfdb72e9bce0611ebe1c6ec5f6848c0ff2acf8af6a5701491a51fb32da3b4e756cd4279cde7b242b1fd13516d52a5ee5718f554644ce9e47a870de57b026f0af0384ccb4e514cfc5c74fcbb52f52f639197982ba5fe8c3a41fbbc87ee8ebeea6f6443c2c1fc74539f27df79a0b5015fa417e84423e91ee62507440de59335767e4fbad40586f7c518a2d41b07fe017c7b6e67e4e7840fcab2010696f3c52b164c1ab7b3d2c37048ec534d638d22131070ece833e9ecaa77201e11af5448f3c51a7dbac0df122d1a796ce7102067da92a42ea7d1b858327e411983414e83c6cacf6c0ecf86146b72d7263d50f53863d3dbea8d9df72b6f6772d43fe492f225e2a2f6d8a2080b367457b6489d3672e610cc0c3f99ae081a0a51adc9c1cd7b44edc6f0fee527ccc7a7690766a333725b41c53f73e956de4cb639bcb0c12b152cb042d17cd9e315d5f033756606f4cab3d8f91063f1e3ce9ff6c216b30b0e1a6ed898328d55f6bdad2c97341c32e0dc799a2576111265053c4390bcf28aea221cfec2e5b94f49a81eabd1ea72e404395d43754473e05909e6efdba7cd10ee8933207a0493554664f8215760d61523c216b39d4564cb906ad6398be4cdbb01058ac7b7399b983e7933a821f79f6e7e6ae2b25b83215648e01697d2be884f7c388aacaf4cb2cc6dbc891d134551a941cb7c2acc600ff48226efe4498a2d5d81789530a43b62d91e43b459cd053f77fe8d9c4a90bc91574f19436eba0eaa296a16b0065a93fa384a7a03e0f7e60cb4724eb9947cf1d1197aeb357e3ce1a919210d50feeeca9caea32b1d6ffb13f54cf8cdb82a57435f8c9cb4ead80cd609423af1a7fc88cef911aabb4b02b7e0a1370d899db2698f4d492d0a131517d7cf037f5b7b7ed9e3030066ae1e27c683c7d2bf23b13903cf4a6d4a73dfd5ba77cb5e9f0c65f63ed64f94c0f27ac325458193743c3a8893f249cedd31d361d03f5f2d4b6568628420c0c84926fac3d6af4469950ecef2c2784302c90dfbfcd6eb17b5717735d087542f38425108779ef97397b0a1550c863e01f7650fa908bc970e85f1180befebfd8188a294221268f95ace53b06847002b4f9722a1469ca7a3eebb9f167328ccffafab1c3bc379468fe11a11a6ca9353e678731702f85460bbacd435ea6bfe996f0ba902cc7f78408150d4487053cd0592813c0314ebd13328d520f803dad45c2da5e59e5a2b8fe03ae55ebafd1b6b966b40f628c6a2252b3d19d84548a37bb0834ba93972d32f457ba99cbb1af1f3f80cec33e401c80fb0f16af446c9c29c1c71c72d069b959901e285445c46927b9571a16604cf9d612d2c4b9790d8ce5daf61cdf1fd7ea16d9de976fea5def7c37ac3b40ec31c9456aaac6a1325f0709903147b0a2872c42bcaabe7bdbc1da275127a2e57ae8845fb2b71a86ff349d4467a667c0a34a19e32af98ba6dc5eb99156f52d4f70ff6dfbc2d21f15a808388da471dad484862d5bacd8e6f7f6d1328064dc6693e3965a8bdc9c340e004ef45d3138b42cdc7ac780a16ae2a465e571bbb404fa07c655020a7bb859c63b651ec4bb506d8d2f11423b77a97080ac5646b370701d99d6ac55d36920148f82bcd30329e6760980727103bc05d27ca05baf0a4ed8546cddab02275cb232fccc17e4766a05d7d63cd00472b94dee83b11077da4a7453e70ae626f68a03fec73e914db02eefe12f894bbfe0450f72439661bb82ec1e69107c8413c2cf6dc35c6f2f6a89c8fa8b1f1bf813749891a7e8532f5311c532d679e44d2ce9c9604b6887c63787d750c61361f709e393ac82b5aca6b7401c1fbd7e7e6d3630f7d708f47587198d385ada98c0c14f83d180a8b6b54b90c99802bdea1914f6a110d55b08072a1fd34fd190e6783cebba386f45a3c2e837a07acd43a261bc8f7c799b1024a634044a9cecd97855a000c3940b72cd68f9ec0013ae572f75b8c5d98025565ddf7f7f03b7825651d29ae3b1fb060cc7ee159a2f374901b1597c24654f8d216f85376f048e404e60dfb29c574a41001337b64eb342d89eeba8c13be70f7e7c9e46ce82a53bb197a4a8af05768fb5dcd5dd4894bb608cf21c02ec7577f3635e995c90b31e83b5be0683be464593aa03e55e77ae4a3f5c3560c8b5de80239ffd3b9bc79095bbac1d5611987cecc043d2cee5a167087d3f327659d3b4b05601b83a246bc52f6c42ec009ff965822cdce3a0d181c348f0cc8d6dd54972c8d7f6319431ea06e1098775bbbc9c72667203af7d340a9c3ff2a3adadb8c2d0513bbdcb061655ee9d71ebe3bf399da9b4c7485e5da67c72ddfa017955b5e841cb317f3742274021059b92a781d8327a8e3af37* 33:1 ::


hashcat -a 3 -m 12500 run Report errors

To crack passwords with Russian symbols

$
0
0
Hello. Help me, please. I have read a lot of to topics into this forum, but I can't understand how to crack passwords with Russian symbols.
For instance, I have the test NTLM hash from the SAM file. The password is "2ц". How can I make a hashcat to crack a password?
I tried on this way "hashcat -a 3 -m 1000 e:\testvmhash.txt -1 charsets/standard/Russian/ru_cp1251.hcchr ?1?1", but it's doesn't work.

Thanks in advance.

Cracking sha1 with two different salts

$
0
0
Greetings,

I'm trying to crack a set of hashes which are made in the following way:

sha1( 'salt1'.pass.'salt2' )

I was trying to use -m 4900 but it seems that mode expects the two salts to be the same, which they are not.

Is there a way to do this currently, or is there a way I could patch it to work like that/add a custom mode?

Thanks in advance for any help

Is there something wrong with my system?

$
0
0
I have just installed version 5.1.0 on Kubuntu 16.04 and I just dont have a clue how to use it. I've tried watching THIS video from YouTube but I am at a loss at what to do. It's a case of information overload. I just don't know where to start.I just want to do a simple test for passwords but don't know what commands to use.

Anyway, while looking around for a clue on how to start, I came across this command, '-b', so I typed it in;
Code:
hashcat -b

And I got this;
hashcat (v5.1.0) starting in benchmark mode...

Benchmarking uses hand-optimized kernel code by default.
You can use it in your cracking session by setting the -O option.
Note: Using optimized kernel code limits the maximum supported password length.
To disable the optimized kernel code in benchmark mode, use the -w option.

clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR

Started: Wed Nov 27 23:53:30 2019
Stopped: Wed Nov 27 23:53:30 2019


I know enough to know that something's not right, but don't know how to fix it.
My system;
MoBo: ASUS M5a78l-USB3
CPU: AMD PhenonII X4 965
GPU: NO ONBOARD GPU
AMD RS780 (DRM 2.50.0/4.15.0-70-generic, LLVM 6.0.0)
OpenGL version 3.0 Mesa 18.0.5
RAM: 32Gb

OMG! After looking at the website with my GPU specs, I'm in complete shock as I never knew it was THAT old. Could be one reason why the benchmark test failed, I'll be looking into what GFX card I can get to update my system (It may also help my other problem I'm having with OBS).

If anyone can help me run through some stuff to see if it's anything else besides/other than the GPU, I'd appreciate it.

SHA1 optimization proposal, usable ?

$
0
0
Hi, I am relatively new to hashcat forgive for any foolishness


I was looking through the code to find ways to speedup recovering passwords for WPA2.


I found some, but is it worth it?


The second one is that I see a difference in speedups between NVIDIA/OpenCL (org compared to optimized both with OpenCL) and NVIDIA/CUDA (org compared to optimized both with CUDA).


I cannot explain it. I expected roughly the same speedups.



Result (showing only the relevant speedups from the short benchmark):




WPA-EAPOL-PBKDF2 (2500):


* without CUDA Toolkit installed: 4.14%


* with CUDA Toolkit installed: 2.11%




DPAPI masterkey file v1(15300):


* without CUDA Toolkit installed: 5.01%


* with CUDA Toolkit installed: 1.09%






- Do these results justify a pull request?


- Why are the achieved speedups for CUDA lower compared to OpenCL ?





More details below for the interested readers ..





Speedup stats  for other hashmodes in the short benchmark:




Without CUDA Toolkit installed:


  • Worst -0.28%
  • Best 0.77%
  • Avg 0.10%
  • Stdev 0.25%
With CUDA Toolkit installed:

  • Worst -0.58%
  • Best  0.49%
  • Avg  -0.16%
  • Stdev  0.24%


Optimization:



SHA1_transform(), SHA1_transform_vector() in inc_hash_sha1.cl




Based on: Exploiting an HMAC-SHA-1 optimization to speedup PBKDF2




Trade-off:


more memory (80 x u32_t instead of 16 x u32_t), less execution time (number of zero-optimizable xors increases by a)not destructively updating w0_t .. wf_t and b) by maximizing the righthand side usage of w0_t..wf_t)




Implemented:


basically equation 14 of the article, leaving still a general function which can be better optimized by the compilers with respect to zero based operations ( a XOR 0 = a, a + 0 = a). The remainder of the article presents some more execution optimizations and a major memory optimization, but these already assume zero based operation optimizations, making the resulting function less general. I still need to give that part of the article a second look.



Measurement method:


  • i7-7700HQ, GTX-1050 (2GB) , low (laptop) specs I know, but my better one was busy.
  • Based on v5.1.0-1484-gbfd95d42, Ubuntu 18.04, see below for CUDA/OpenCL versions
  • Using only GPU acceleration.
  • Benchmark command:
    $ for i in {0..10} ; do  hashcat -b --machine-readable ; done > ../result.txt
  • From the 11 results discard the first one (warmup), average the remaining 10 per mode/run.
  • Do this with:
    - original code
    - optimized code
  • Do the above on a system  (is this usefull?):
    - without CUDA Toolkit installed
    - with CUDA Toolkit installed
  • Compute speedup as: percentage(1-(average from org/average from optimized))



New bee (bzzz) questions:

The speedups with CUDA Toolkit do not match those without the toolkit.

I assumed that the same .cl code is used for both with- and without CUDA Toolkit, is this correct ?

Is this explainable ? What am I missing here?







--  CUDA / OpenCL info ----







hashcat --backendinfo (with CUDA Toolkit installed):



hashcat (v5.1.0-1484-gbfd95d42) starting...







CUDA Info:



==========







CUDA.Version.: 10.2







Backend Device ID #1 (Alias: #2)



  Name...........: GeForce GTX 1050



  Processor(s)...: 5



  Clock..........: 1493



  Memory.Total...: 2000 MB



  Memory.Free....: 1943 MB







OpenCL Info:



============







OpenCL Platform ID #1



  Vendor..: NVIDIA Corporation



  Name....: NVIDIA CUDA



  Version.: OpenCL 1.2 CUDA 10.2.95







  Backend Device ID #2 (Alias: #1)



    Type...........: GPU



    Vendor.ID......: 32



    Vendor.........: NVIDIA Corporation



    Name...........: GeForce GTX 1050



    Version........: OpenCL 1.2 CUDA



    Processor(s)...: 5



    Clock..........: 1493



    Memory.Total...: 2000 MB (limited to 500 MB allocatable in one block)



    Memory.Free....: 1920 MB



    OpenCL.Version.: OpenCL C 1.2



    Driver.Version.: 440.33.01

4 charsets limit (mask attack)

$
0
0
Hello again!

First, i'd like to thank you guys for brain! Been using it for a while, great stuff! Brain solved most of my troubles with dics' intersections mentioned in my first thread not to say that distributed client/server is always a good design. Yall shouldve listened to lazy grandpa back in 2016 to perform better @ CMYIC 2018, lol. No, srsly, thanks! Now not a single outdated GPU goes to waste, every one gets place in cold garage. Overhead? Pfffft! Totally worth it!

Today I got yet another brilliant question you never heard before: what exactly is the technological reason behind limit on charsets (4)? Jumping through all those hoops with rules and processors to achieve something that could be easily achived using one-liner if only you supported unlimited charsets makes me crazy sometimes. If it's not too bold, I'd like to know rationale behind this end-user unfriendly decision. Thanks in advance for your replies!

PS
I believe princeprocessor has error in help section related to --pw-min/--pw-max (those NUMs are included, not excluded).
Viewing all 7847 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>