mic.git


mic

~ proxy for JA4-TLS fingerprinting evasion
git clone https://github.com/djnnvx/mic.git
log | files | refs | archive | README | LICENSE

commit c5b8b85327254acde22bc67d815cbeedd63df3da
parent 5910abe48231feb552fa11b4b2d170590af3a0b6
Author: djnn <[email protected]>
Date: Mon, 7 Jul 2025 11:39:23 +0900

genesis: setting up the boilerplate things

Diffstat:
A.dockerignore | 4++++
ADockerfile | 17+++++++++++++++++
AMakefile | 27+++++++++++++++++++++++++++
Aca/ca.go | 0
Acert/print.go | 0
Acmd/root.go | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acmd/types.go | 27+++++++++++++++++++++++++++
Ago.mod | 10++++++++++
Ago.sum | 10++++++++++
Amain.go | 9+++++++++
Amic | 0
Aproxy/backend.go | 0
Aproxy/httpconnect.go | 0
Aproxy/proxy.go | 0
Aproxy/socks5.go | 0

15 files changed, 175 insertions(+), 0 deletions(-)

diff --git a/.dockerignore b/.dockerignore
@@ -0,0 +1,4 @@
+Dockerfile
+.gitignore
+.dockerignore
+README.md
diff --git a/Dockerfile b/Dockerfile
@@ -0,0 +1,17 @@
+FROM golang:1.24-alpine AS builder
+
+WORKDIR /app
+RUN apk update --no-cache && \
+    apk upgrade --no-cache && \
+    apk add --no-cache make
+
+COPY go.mod .
+RUN go mod download
+
+COPY . .
+RUN make
+
+# FIXME(djnn): make this user configurable
+EXPOSE 8080
+
+ENTRYPOINT [ "/app/mic" ]
diff --git a/Makefile b/Makefile
@@ -0,0 +1,27 @@
+TARGET 		= mic
+SRC 		= main.go
+
+.PHONY: all
+all: compile
+
+.PHONY: help
+help:
+	@echo "\033[34mtargets:\033[0m"
+	@perl -nle'print $& if m{^[a-zA-Z_-\d]+:.*?## .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-22s\033[0m %s\n", $$1, $$2}'
+
+.PHONY: compile
+compile: ## compile the project
+	@go build -o $(TARGET) $(SRC)
+
+.PHONY: docker
+docker: ## builds a docker image from source
+	@docker build -t $(TARGET) .
+
+.PHONY: clean
+clean: ## cleans up the project
+	rm -f $(TARGET)
+
+.PHONY: tidy
+tidy: ## runs tidy and formatting
+	@go mod tidy
+	@gofmt -s -w .
diff --git a/ca/ca.go b/ca/ca.go
diff --git a/cert/print.go b/cert/print.go
diff --git a/cmd/root.go b/cmd/root.go
@@ -0,0 +1,71 @@
+package cmd
+
+import (
+	"fmt"
+	"os"
+
+	"github.com/spf13/cobra"
+)
+
+var SKID_ASCII_ART = `
+
+        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣤⣤⣤⣤⣤⣤⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
+    ⠀              ⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⠻⠿⢿⣿⣿⣿⣿⣿⣶⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
+               ⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⣿⣿⣿⣿⣿⣿⣶⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀
+        M⠀I⠀C⠀⠀⠀⠀⠀⢸⣿⣷⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀
+      --------  ⠀⠀⢸⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⣀⣙⢿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀
+        ⠀⠀⠀⠀  ⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠻⣿⣿⣿⣿⣿⣿⣿⣄⠀⠀⠀⠀
+        djnn.sh⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⢹⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀
+        ⠀v0.0.1  ⠀⠀⢠⣿⣿⣿⣿⡟⠹⠿⠟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀
+        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡿⠋⡬⢿⣿⣷⣤⣤⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀
+        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⡇⢸⡇⢸⣿⣿⣿⠟⠁⢀⣬⢽⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀
+        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣧⣈⣛⣿⣿⣿⡇⠀⠀⣾⠁⢀⢻⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀
+        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⣿⣿⣿⣿⣧⣄⣀⠙⠷⢋⣼⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇
+        ⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇
+        ⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁
+        ⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀
+        ⠸⣿⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠃⠀
+        ⠀⢹⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀
+        ⠀⠀⠹⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀
+        ⠀⠀⠀⠙⣿⣿⣿⣿⣿⣶⣤⣀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿mina is cute⣿⣿⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀
+        ⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿<3:)⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀
+        ⠀⠀⠀⠀⠀⠀⠉⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀
+        ⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠅⠀⠀⠀⠀⠀⠀⠀⠀⠀
+        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠈⠂⠀⠀⠀
+        ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠛⠛⠛⠛⠛⠛⠛⠋⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
+
+	<[==== modular proxy for network-fingerprinting evasion ====]>
+
+`
+
+func getParser(opts *MicCliOptions) *cobra.Command {
+	var rootCmd = &cobra.Command{
+		Use:   "mic",
+		Short: "modular proxy for network-fingerprinting evasion",
+		Long:  "mic (mina-is-cute) is a proxy supporting HTTP connect & SOCKS5 to evade networking fingerprinting detection",
+		Run: func(cmd *cobra.Command, args []string) {
+			print("Yaaay...:)")
+
+		},
+	}
+
+	defaults := GetDefaultOptions()
+
+	rootCmd.Flags().StringVarP(&opts.Addr, "addr", "a", defaults.Addr, "address to listen to")
+	rootCmd.Flags().StringVarP(&opts.CaPath, "ca-cert-path", "c", defaults.CaPath, "custom CA certificate path (optional)")
+	rootCmd.Flags().IntVarP(&opts.Port, "port", "p", defaults.Port, "port to listen to")
+	rootCmd.Flags().BoolVarP(&opts.Verbose, "verbose", "v", defaults.Verbose, "enable verbose mode")
+
+	return rootCmd
+}
+
+func Execute() {
+	fmt.Println(SKID_ASCII_ART)
+
+	opts := GetDefaultOptions()
+	cliParser := getParser(&opts)
+	if err := cliParser.Execute(); err != nil {
+		fmt.Printf("[!] Error: %s\n", err.Error())
+		os.Exit(1)
+	}
+}
diff --git a/cmd/types.go b/cmd/types.go
@@ -0,0 +1,27 @@
+package cmd
+
+type MicCliOptions struct {
+
+	/// Port: port to listen to
+	Port int
+
+	/// Addr: address to listen to
+	Addr string
+
+	/// CaPath: custom CA certificate path (optional)
+	CaPath string
+
+	/// Verbose: enable verbose mode
+	Verbose bool
+}
+
+func GetDefaultOptions() MicCliOptions {
+	opts := MicCliOptions{
+		Port:    8080,
+		Addr:    "127.0.0.1",
+		CaPath:  "",
+		Verbose: false,
+	}
+
+	return opts
+}
diff --git a/go.mod b/go.mod
@@ -0,0 +1,10 @@
+module github.com/djnnvx/mic
+
+go 1.24.4
+
+require github.com/spf13/cobra v1.9.1
+
+require (
+	github.com/inconshreveable/mousetrap v1.1.0 // indirect
+	github.com/spf13/pflag v1.0.6 // indirect
+)
diff --git a/go.sum b/go.sum
@@ -0,0 +1,10 @@
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
+github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
+github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
+github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/main.go b/main.go
@@ -0,0 +1,9 @@
+package main
+
+import (
+	"github.com/djnnvx/mic/cmd"
+)
+
+func main() {
+	cmd.Execute()
+}
diff --git a/mic b/mic
Binary files differ.
diff --git a/proxy/backend.go b/proxy/backend.go
diff --git a/proxy/httpconnect.go b/proxy/httpconnect.go
diff --git a/proxy/proxy.go b/proxy/proxy.go
diff --git a/proxy/socks5.go b/proxy/socks5.go