[SHEHZADE//ABDULLAH ANSARI]
Red Team Consultant @ Google | MS in Cybersecurity @ NYU
● Notice //GitHub (@shehzade) is temporarily suspended pending an automated false-positive review. All tools are hosted on this Code Mirror and available on request (contact); GitHub links will return once reinstated.
PUBLIC MIRRORGo v1.0
Multi-protocol network egress assessment and DLP verification framework featuring automated L4 sweeps, corporate proxy traversal, and covert protocol smuggling across 20+ channels.
$
git clone https://shehzade.io/repos/contraband.git
Copy
Source ZIP (1.93 MB)
260 lines · 8.1 KB
| 1 | // Code generated by protoc-gen-go. DO NOT EDIT. |
| 2 | // versions: |
| 3 | // protoc-gen-go v1.36.12 |
| 4 | // protoc v3.21.12 |
| 5 | // source: proto/exfil.proto |
| 6 | |
| 7 | package proto |
| 8 | |
| 9 | import ( |
| 10 | protoreflect "google.golang.org/protobuf/reflect/protoreflect" |
| 11 | protoimpl "google.golang.org/protobuf/runtime/protoimpl" |
| 12 | reflect "reflect" |
| 13 | sync "sync" |
| 14 | unsafe "unsafe" |
| 15 | ) |
| 16 | |
| 17 | const ( |
| 18 | // Verify that this generated code is sufficiently up-to-date. |
| 19 | _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) |
| 20 | // Verify that runtime/protoimpl is sufficiently up-to-date. |
| 21 | _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) |
| 22 | ) |
| 23 | |
| 24 | type ChunkRequest struct { |
| 25 | state protoimpl.MessageState `protogen:"open.v1"` |
| 26 | Token []byte `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` // 16-byte session token |
| 27 | Sequence uint32 `protobuf:"varint,2,opt,name=sequence,proto3" json:"sequence,omitempty"` // Chunk sequence number (1-based) |
| 28 | TotalChunks uint32 `protobuf:"varint,3,opt,name=total_chunks,json=totalChunks,proto3" json:"total_chunks,omitempty"` // Total chunk count |
| 29 | Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` // Chunk binary payload |
| 30 | ExpectedHash string `protobuf:"bytes,5,opt,name=expected_hash,json=expectedHash,proto3" json:"expected_hash,omitempty"` // Expected SHA-256 hash of complete stream |
| 31 | unknownFields protoimpl.UnknownFields |
| 32 | sizeCache protoimpl.SizeCache |
| 33 | } |
| 34 | |
| 35 | func (x *ChunkRequest) Reset() { |
| 36 | *x = ChunkRequest{} |
| 37 | mi := &file_proto_exfil_proto_msgTypes[0] |
| 38 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| 39 | ms.StoreMessageInfo(mi) |
| 40 | } |
| 41 | |
| 42 | func (x *ChunkRequest) String() string { |
| 43 | return protoimpl.X.MessageStringOf(x) |
| 44 | } |
| 45 | |
| 46 | func (*ChunkRequest) ProtoMessage() {} |
| 47 | |
| 48 | func (x *ChunkRequest) ProtoReflect() protoreflect.Message { |
| 49 | mi := &file_proto_exfil_proto_msgTypes[0] |
| 50 | if x != nil { |
| 51 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| 52 | if ms.LoadMessageInfo() == nil { |
| 53 | ms.StoreMessageInfo(mi) |
| 54 | } |
| 55 | return ms |
| 56 | } |
| 57 | return mi.MessageOf(x) |
| 58 | } |
| 59 | |
| 60 | // Deprecated: Use ChunkRequest.ProtoReflect.Descriptor instead. |
| 61 | func (*ChunkRequest) Descriptor() ([]byte, []int) { |
| 62 | return file_proto_exfil_proto_rawDescGZIP(), []int{0} |
| 63 | } |
| 64 | |
| 65 | func (x *ChunkRequest) GetToken() []byte { |
| 66 | if x != nil { |
| 67 | return x.Token |
| 68 | } |
| 69 | return nil |
| 70 | } |
| 71 | |
| 72 | func (x *ChunkRequest) GetSequence() uint32 { |
| 73 | if x != nil { |
| 74 | return x.Sequence |
| 75 | } |
| 76 | return 0 |
| 77 | } |
| 78 | |
| 79 | func (x *ChunkRequest) GetTotalChunks() uint32 { |
| 80 | if x != nil { |
| 81 | return x.TotalChunks |
| 82 | } |
| 83 | return 0 |
| 84 | } |
| 85 | |
| 86 | func (x *ChunkRequest) GetPayload() []byte { |
| 87 | if x != nil { |
| 88 | return x.Payload |
| 89 | } |
| 90 | return nil |
| 91 | } |
| 92 | |
| 93 | func (x *ChunkRequest) GetExpectedHash() string { |
| 94 | if x != nil { |
| 95 | return x.ExpectedHash |
| 96 | } |
| 97 | return "" |
| 98 | } |
| 99 | |
| 100 | type ChunkResponse struct { |
| 101 | state protoimpl.MessageState `protogen:"open.v1"` |
| 102 | Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` |
| 103 | SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` |
| 104 | TotalBytes int64 `protobuf:"varint,3,opt,name=total_bytes,json=totalBytes,proto3" json:"total_bytes,omitempty"` |
| 105 | PayloadHash string `protobuf:"bytes,4,opt,name=payload_hash,json=payloadHash,proto3" json:"payload_hash,omitempty"` |
| 106 | Verdict string `protobuf:"bytes,5,opt,name=verdict,proto3" json:"verdict,omitempty"` // e.g. "EXFIL_SUCCESS" |
| 107 | ErrorMessage string `protobuf:"bytes,6,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` |
| 108 | unknownFields protoimpl.UnknownFields |
| 109 | sizeCache protoimpl.SizeCache |
| 110 | } |
| 111 | |
| 112 | func (x *ChunkResponse) Reset() { |
| 113 | *x = ChunkResponse{} |
| 114 | mi := &file_proto_exfil_proto_msgTypes[1] |
| 115 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| 116 | ms.StoreMessageInfo(mi) |
| 117 | } |
| 118 | |
| 119 | func (x *ChunkResponse) String() string { |
| 120 | return protoimpl.X.MessageStringOf(x) |
| 121 | } |
| 122 | |
| 123 | func (*ChunkResponse) ProtoMessage() {} |
| 124 | |
| 125 | func (x *ChunkResponse) ProtoReflect() protoreflect.Message { |
| 126 | mi := &file_proto_exfil_proto_msgTypes[1] |
| 127 | if x != nil { |
| 128 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| 129 | if ms.LoadMessageInfo() == nil { |
| 130 | ms.StoreMessageInfo(mi) |
| 131 | } |
| 132 | return ms |
| 133 | } |
| 134 | return mi.MessageOf(x) |
| 135 | } |
| 136 | |
| 137 | // Deprecated: Use ChunkResponse.ProtoReflect.Descriptor instead. |
| 138 | func (*ChunkResponse) Descriptor() ([]byte, []int) { |
| 139 | return file_proto_exfil_proto_rawDescGZIP(), []int{1} |
| 140 | } |
| 141 | |
| 142 | func (x *ChunkResponse) GetSuccess() bool { |
| 143 | if x != nil { |
| 144 | return x.Success |
| 145 | } |
| 146 | return false |
| 147 | } |
| 148 | |
| 149 | func (x *ChunkResponse) GetSessionId() string { |
| 150 | if x != nil { |
| 151 | return x.SessionId |
| 152 | } |
| 153 | return "" |
| 154 | } |
| 155 | |
| 156 | func (x *ChunkResponse) GetTotalBytes() int64 { |
| 157 | if x != nil { |
| 158 | return x.TotalBytes |
| 159 | } |
| 160 | return 0 |
| 161 | } |
| 162 | |
| 163 | func (x *ChunkResponse) GetPayloadHash() string { |
| 164 | if x != nil { |
| 165 | return x.PayloadHash |
| 166 | } |
| 167 | return "" |
| 168 | } |
| 169 | |
| 170 | func (x *ChunkResponse) GetVerdict() string { |
| 171 | if x != nil { |
| 172 | return x.Verdict |
| 173 | } |
| 174 | return "" |
| 175 | } |
| 176 | |
| 177 | func (x *ChunkResponse) GetErrorMessage() string { |
| 178 | if x != nil { |
| 179 | return x.ErrorMessage |
| 180 | } |
| 181 | return "" |
| 182 | } |
| 183 | |
| 184 | var File_proto_exfil_proto protoreflect.FileDescriptor |
| 185 | |
| 186 | const file_proto_exfil_proto_rawDesc = "" + |
| 187 | "\n" + |
| 188 | "\x11proto/exfil.proto\x12\n" + |
| 189 | "contraband\"\xa2\x01\n" + |
| 190 | "\fChunkRequest\x12\x14\n" + |
| 191 | "\x05token\x18\x01 \x01(\fR\x05token\x12\x1a\n" + |
| 192 | "\bsequence\x18\x02 \x01(\rR\bsequence\x12!\n" + |
| 193 | "\ftotal_chunks\x18\x03 \x01(\rR\vtotalChunks\x12\x18\n" + |
| 194 | "\apayload\x18\x04 \x01(\fR\apayload\x12#\n" + |
| 195 | "\rexpected_hash\x18\x05 \x01(\tR\fexpectedHash\"\xcb\x01\n" + |
| 196 | "\rChunkResponse\x12\x18\n" + |
| 197 | "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x1d\n" + |
| 198 | "\n" + |
| 199 | "session_id\x18\x02 \x01(\tR\tsessionId\x12\x1f\n" + |
| 200 | "\vtotal_bytes\x18\x03 \x01(\x03R\n" + |
| 201 | "totalBytes\x12!\n" + |
| 202 | "\fpayload_hash\x18\x04 \x01(\tR\vpayloadHash\x12\x18\n" + |
| 203 | "\averdict\x18\x05 \x01(\tR\averdict\x12#\n" + |
| 204 | "\rerror_message\x18\x06 \x01(\tR\ferrorMessage2\x99\x01\n" + |
| 205 | "\fExfilService\x12B\n" + |
| 206 | "\vUploadChunk\x12\x18.contraband.ChunkRequest\x1a\x19.contraband.ChunkResponse\x12E\n" + |
| 207 | "\fUploadStream\x12\x18.contraband.ChunkRequest\x1a\x19.contraband.ChunkResponse(\x01B,Z*github.com/shehzade/contraband/proto;protob\x06proto3" |
| 208 | |
| 209 | var ( |
| 210 | file_proto_exfil_proto_rawDescOnce sync.Once |
| 211 | file_proto_exfil_proto_rawDescData []byte |
| 212 | ) |
| 213 | |
| 214 | func file_proto_exfil_proto_rawDescGZIP() []byte { |
| 215 | file_proto_exfil_proto_rawDescOnce.Do(func() { |
| 216 | file_proto_exfil_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_exfil_proto_rawDesc), len(file_proto_exfil_proto_rawDesc))) |
| 217 | }) |
| 218 | return file_proto_exfil_proto_rawDescData |
| 219 | } |
| 220 | |
| 221 | var file_proto_exfil_proto_msgTypes = make([]protoimpl.MessageInfo, 2) |
| 222 | var file_proto_exfil_proto_goTypes = []any{ |
| 223 | (*ChunkRequest)(nil), // 0: contraband.ChunkRequest |
| 224 | (*ChunkResponse)(nil), // 1: contraband.ChunkResponse |
| 225 | } |
| 226 | var file_proto_exfil_proto_depIdxs = []int32{ |
| 227 | 0, // 0: contraband.ExfilService.UploadChunk:input_type -> contraband.ChunkRequest |
| 228 | 0, // 1: contraband.ExfilService.UploadStream:input_type -> contraband.ChunkRequest |
| 229 | 1, // 2: contraband.ExfilService.UploadChunk:output_type -> contraband.ChunkResponse |
| 230 | 1, // 3: contraband.ExfilService.UploadStream:output_type -> contraband.ChunkResponse |
| 231 | 2, // [2:4] is the sub-list for method output_type |
| 232 | 0, // [0:2] is the sub-list for method input_type |
| 233 | 0, // [0:0] is the sub-list for extension type_name |
| 234 | 0, // [0:0] is the sub-list for extension extendee |
| 235 | 0, // [0:0] is the sub-list for field type_name |
| 236 | } |
| 237 | |
| 238 | func init() { file_proto_exfil_proto_init() } |
| 239 | func file_proto_exfil_proto_init() { |
| 240 | if File_proto_exfil_proto != nil { |
| 241 | return |
| 242 | } |
| 243 | type x struct{} |
| 244 | out := protoimpl.TypeBuilder{ |
| 245 | File: protoimpl.DescBuilder{ |
| 246 | GoPackagePath: reflect.TypeOf(x{}).PkgPath(), |
| 247 | RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_exfil_proto_rawDesc), len(file_proto_exfil_proto_rawDesc)), |
| 248 | NumEnums: 0, |
| 249 | NumMessages: 2, |
| 250 | NumExtensions: 0, |
| 251 | NumServices: 1, |
| 252 | }, |
| 253 | GoTypes: file_proto_exfil_proto_goTypes, |
| 254 | DependencyIndexes: file_proto_exfil_proto_depIdxs, |
| 255 | MessageInfos: file_proto_exfil_proto_msgTypes, |
| 256 | }.Build() |
| 257 | File_proto_exfil_proto = out.File |
| 258 | file_proto_exfil_proto_goTypes = nil |
| 259 | file_proto_exfil_proto_depIdxs = nil |
| 260 | } |