Adversarial C2 Protocol Implemented in Zig
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

doing some shenanigans

trying to start writing my own function to do raw socket connections

+27 -2
+25
src/NetWriter.zig
··· 211 211 const mem = std.mem; 212 212 213 213 const NetWriter = @This(); 214 + 215 + const saprusOptions: std.Io.net.BindOptions = .{ 216 + .mode = .raw, 217 + .protocol = 0, 218 + }; 219 + 220 + fn netSaprusBindIpPosix( 221 + userdata: ?*anyopaque, 222 + address: *const IpAddress, 223 + options: IpAddress.BindOptions, 224 + ) IpAddress.BindError!net.Socket { 225 + if (!have_networking) return error.NetworkDown; 226 + const t: *Threaded = @ptrCast(@alignCast(userdata)); 227 + const family = std.os.linux.PF.PACKET; 228 + const socket_fd = try openSocketPosix(t, family, options); 229 + errdefer posix.close(socket_fd); 230 + var storage: PosixAddress = undefined; 231 + var addr_len = addressToPosix(address, &storage); 232 + try posixBind(t, socket_fd, &storage.any, addr_len); 233 + try posixGetSockName(t, socket_fd, &storage.any, &addr_len); 234 + return .{ 235 + .handle = socket_fd, 236 + .address = addressFromPosix(&storage), 237 + }; 238 + }
+2 -2
src/main.zig
··· 82 82 return res; 83 83 } 84 84 85 - const addr = std.net.Ip4Address.parse(dest, 0) catch return "FAIL".*; 86 - return @bitCast(addr.sa.addr); 85 + const addr = std.Io.net.Ip4Address.parse(dest, 0) catch return "FAIL".*; 86 + return addr.bytes; 87 87 } 88 88 return "zap\x00".*; 89 89 }