I am developing a kernel - a modified RC4, as a result, in the kernel there are many candidates for the correct key that meet my criteria, which I want to throw out to potfile.
if you use the function mark_hash - some keys are not included in the potfile, so I made the following implementation:
KERNEL_FQ void m33545_comp (KERN_ATTR_TMPS(rc4_tmp_t))
{
const u64 gid = get_global_id (0);
const u64 lid = get_local_id (0);
if (gid >= GID_CNT) return;
LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE];
//MY RC4_REALIZATION
.....
if ( value > CRITERION ) {
u32 idx = hc_atomic_inc (d_return_buf);
printf("\nkey=%02x%x value=%d hc_atomic_idx=%d\n", pws[gid].i[1], pws[gid].i[0],value, idx);
plains_buf[idx].salt_pos = SALT_POS_HOST;
plains_buf[idx].digest_pos = 0; // relative
plains_buf[idx].hash_pos = DIGESTS_OFFSET_HOST + 0; // absolute
plains_buf[idx].gidvid = gid;
plains_buf[idx].il_pos = 0;
plains_buf[idx].extra1 = 0; // unused so far
plains_buf[idx].extra2 = 0; // unused so far
}
}
here is part of my output to the screen:
[s]tatus [p]ause ypass [c]heckpoint [f]inish [q]uit =>
key=05dfb32e79 value=1064 hc_atomic_idx=0
key=0316b32e79 value=504 hc_atomic_idx=1
key=3594b32e79 value=520 hc_atomic_idx=2
key=4c9eb32e79 value=504 hc_atomic_idx=3
key=6a96b32e79 value=648 hc_atomic_idx=4
key=88e5b32e79 value=528 hc_atomic_idx=6
key=8fbab32e79 value=536 hc_atomic_idx=5
key=a1a5b32e79 value=520 hc_atomic_idx=7
key=add1b32e79 value=576 hc_atomic_idx=8
key=c13ab32e79 value=552 hc_atomic_idx=9
key=bae8b32e79 value=512 hc_atomic_idx=10
key=f6b6b32e79 value=520 hc_atomic_idx=11
key=f295b32e79 value=568 hc_atomic_idx=12
->check_crack2:13
cuMemcpyDtoHAsync(): invalid argument
<-check_crack2 return:-1
Session..........: hashcat
Status...........: Exhausted
Hash.Mode........: 33545 (RC4_MY)
Hash.Target......: xxxxxxxxxxxxxxxxxxxxxx
Time.Started.....: Tue Oct 21 12:56:06 2025 (0 secs)
Time.Estimated...: Tue Oct 21 12:56:06 2025 (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Mask.......: 792eb3?b?b [5]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 11787.5 kH/s (0.00ms) @ Accel:1024 Loops:1024 Thr:32 Vec:1
Recovered........: 0/1 (0.00%) Digests (total), 0/1 (0.00%) Digests (new)
Progress.........: 65536/65536 (100.00%)
Rejected.........: 0/65536 (0.00%)
Restore.Point....: 65536/65536 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1024
Candidate.Engine.: Device Generator
Candidates.#1....: $HEX[792eb3e0b8] -> $HEX[792eb3ffff]
Hardware.Mon.#1..: Temp: 65c Fan: 70% Util:100% Core:1860MHz Mem:9251MHz Bus:16
Started: Tue Oct 21 12:56:03 2025
Stopped: Tue Oct 21 12:56:07 2025
Th finction check_cracked from hashes.c sees that I have 13 keys, but returns -1, although it should return 0! Then I have a error cuMemcpyDtoHAsync()
[b]What am I doing wrong, how do I implement this?[/b]
if you use the function mark_hash - some keys are not included in the potfile, so I made the following implementation:
KERNEL_FQ void m33545_comp (KERN_ATTR_TMPS(rc4_tmp_t))
{
const u64 gid = get_global_id (0);
const u64 lid = get_local_id (0);
if (gid >= GID_CNT) return;
LOCAL_VK u32 S[64 * FIXED_LOCAL_SIZE];
//MY RC4_REALIZATION
.....
if ( value > CRITERION ) {
u32 idx = hc_atomic_inc (d_return_buf);
printf("\nkey=%02x%x value=%d hc_atomic_idx=%d\n", pws[gid].i[1], pws[gid].i[0],value, idx);
plains_buf[idx].salt_pos = SALT_POS_HOST;
plains_buf[idx].digest_pos = 0; // relative
plains_buf[idx].hash_pos = DIGESTS_OFFSET_HOST + 0; // absolute
plains_buf[idx].gidvid = gid;
plains_buf[idx].il_pos = 0;
plains_buf[idx].extra1 = 0; // unused so far
plains_buf[idx].extra2 = 0; // unused so far
}
}
here is part of my output to the screen:
[s]tatus [p]ause ypass [c]heckpoint [f]inish [q]uit =>
key=05dfb32e79 value=1064 hc_atomic_idx=0
key=0316b32e79 value=504 hc_atomic_idx=1
key=3594b32e79 value=520 hc_atomic_idx=2
key=4c9eb32e79 value=504 hc_atomic_idx=3
key=6a96b32e79 value=648 hc_atomic_idx=4
key=88e5b32e79 value=528 hc_atomic_idx=6
key=8fbab32e79 value=536 hc_atomic_idx=5
key=a1a5b32e79 value=520 hc_atomic_idx=7
key=add1b32e79 value=576 hc_atomic_idx=8
key=c13ab32e79 value=552 hc_atomic_idx=9
key=bae8b32e79 value=512 hc_atomic_idx=10
key=f6b6b32e79 value=520 hc_atomic_idx=11
key=f295b32e79 value=568 hc_atomic_idx=12
->check_crack2:13
cuMemcpyDtoHAsync(): invalid argument
<-check_crack2 return:-1
Session..........: hashcat
Status...........: Exhausted
Hash.Mode........: 33545 (RC4_MY)
Hash.Target......: xxxxxxxxxxxxxxxxxxxxxx
Time.Started.....: Tue Oct 21 12:56:06 2025 (0 secs)
Time.Estimated...: Tue Oct 21 12:56:06 2025 (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Mask.......: 792eb3?b?b [5]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 11787.5 kH/s (0.00ms) @ Accel:1024 Loops:1024 Thr:32 Vec:1
Recovered........: 0/1 (0.00%) Digests (total), 0/1 (0.00%) Digests (new)
Progress.........: 65536/65536 (100.00%)
Rejected.........: 0/65536 (0.00%)
Restore.Point....: 65536/65536 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1024
Candidate.Engine.: Device Generator
Candidates.#1....: $HEX[792eb3e0b8] -> $HEX[792eb3ffff]
Hardware.Mon.#1..: Temp: 65c Fan: 70% Util:100% Core:1860MHz Mem:9251MHz Bus:16
Started: Tue Oct 21 12:56:03 2025
Stopped: Tue Oct 21 12:56:07 2025
Th finction check_cracked from hashes.c sees that I have 13 keys, but returns -1, although it should return 0! Then I have a error cuMemcpyDtoHAsync()
[b]What am I doing wrong, how do I implement this?[/b]
