MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / handleDirectUpload

Method handleDirectUpload

internal/bridge/module_upload.go:68–88  ·  view source on GitHub ↗
(ctx ModuleContext, sessionID string, taskID uint32, sess *sessions.Session, toolName string, req *implantpb.UploadRequest)

Source from the content-addressed store, hash-verified

66}
67
68func (m *UploadModule) handleDirectUpload(ctx ModuleContext, sessionID string, taskID uint32, sess *sessions.Session, toolName string, req *implantpb.UploadRequest) {
69 args := sessions.BuildWriteArguments(sess, toolName, req.Target, string(req.Data))
70 if _, ok := enqueueToolAction(ctx, sessionID, taskID, toolName, args); !ok {
71 return
72 }
73 log.Infof("[bridge] enqueued direct upload task %d for session %s: %s", taskID, sessionID, req.Target)
74
75 ch := ctx.Tasks.AwaitResult(sessionID, taskID)
76 if ch == nil {
77 ctx.Tasks.Fail(sessionID, taskID, "await failed")
78 return
79 }
80
81 if _, ok := awaitTaskResult(ch, taskID); ok {
82 sendUploadACK(ctx, sessionID, taskID, true)
83 ctx.Tasks.Complete(sessionID, taskID)
84 } else {
85 log.Warnf("[bridge] channel closed without result for direct upload task %d session %s", taskID, sessionID)
86 ctx.Tasks.Fail(sessionID, taskID, "channel closed")
87 }
88}
89
90func (m *UploadModule) executeChunks(ctx ModuleContext, sessionID string, taskID uint32, shellTool string, sess *sessions.Session, chunks []sessions.UploadChunk) {
91 ch := ctx.Tasks.AwaitResult(sessionID, taskID)

Callers 1

HandleMethod · 0.95

Calls 7

BuildWriteArgumentsFunction · 0.92
enqueueToolActionFunction · 0.85
awaitTaskResultFunction · 0.85
sendUploadACKFunction · 0.85
AwaitResultMethod · 0.80
FailMethod · 0.80
CompleteMethod · 0.45

Tested by

no test coverage detected