A library for the MIGP (Might I Get Pwned) protocolA library for the MIGP (Might I Get Pwned) protocol

MIGP library

This contains a library for the MIGP (Might I Get Pwned) protocol. MIGP can be used to build privacy-preserving compromised credential checking services. Read the paper for more details.

Quick start

Build

mkdir -p bin && go build -o bin/ ./cmd/...

Test

go test ./...

Generate server configuration and start MIGP server

Start a server that processes and stores breach entries from the input file.

cat testdata/test_breach.txt | bin/server &

Query MIGP server

Read entries in from the input file and query a MIGP server. By default, the target is set to a locally-running MIGP server, but the target flag can be used to target production MIGP servers such as https://migp.cloudflare.com.

cat testdata/test_queries.txt | bin/client [--target 
   
    ]

   

Advanced usage

Run the client and server commands with --help for more options, including custom configuration support.

Similar Resources

SMPP 3.4 Protocol for the Go programming language

SMPP 3.4 This is an implementation of SMPP 3.4 for Go, based on the original smpp34 from Kevin Patel. The API has been refactored to idiomatic Go code

Dec 13, 2022

Implementation of the FTPS protocol for Golang.

FTPS Implementation for Go Information This implementation does not implement the full FTP/FTPS specification. Only a small subset. I have not done a

Mar 14, 2022

network multiplexing and framing protocol for RPC

TChannel Network multiplexing and framing protocol for RPC Read the Docs Languages: Node.js, Python, Go, Java Questions: Open a Github issue Uber's OS

Nov 26, 2022

Inspired by go-socks5,This package provides full functionality of socks5 protocol.

Inspired by go-socks5,This package provides full functionality of socks5 protocol.

The protocol described here is designed to provide a framework for client-server applications in both the TCP and UDP domains to conveniently and securely use the services of a network firewall.

Dec 16, 2022

A new way of working with Protocol Buffers.

Buf All documentation is hosted at https://buf.build. Please head over there for more details. Goal Buf’s long-term goal is to enable schema-driven de

Jan 1, 2023

A pure Unix shell script implementing ACME client protocol

An ACME Shell script: acme.sh An ACME protocol client written purely in Shell (Unix shell) language. Full ACME protocol implementation. Support ACME v

Jan 2, 2023

🔎Sniffing and parsing mysql,redis,http,mongodb etc protocol. 抓包截取项目中的数据库请求并解析成相应的语句。

🔎Sniffing and parsing mysql,redis,http,mongodb etc protocol. 抓包截取项目中的数据库请求并解析成相应的语句。

go-sniffer Capture mysql,redis,http,mongodb etc protocol... 抓包截取项目中的数据库请求并解析成相应的语句,如mysql协议会解析为sql语句,便于调试。 不要修改代码,直接嗅探项目中的数据请求。 中文使用说明 Support List: m

Dec 27, 2022

Capture packet request/response pairs for a port and/or IP to aid in Network protocol based Nuclei Templates creation.

network-fingerprint Capture packet request/response pairs for a port and/or IP to aid in Network protocol based Nuclei Templates creation. Resources I

Nov 15, 2022

Antenna RPC is an RPC protocol for distributed computing, it's based on QUIC and Colfer. its currently an WIP.

aRPC - Antenna Remote Procedure Call Antenna remote procedure call (aRPC) is an RPC protocol focused on distributed processing and HPC. aRPC is implem

Jun 16, 2021
Comments
  • Read MIGP config from server by default

    Read MIGP config from server by default

    Add a new endpoint on the MIGP server for the client to retrieve the MIGP configuration parameters.

    Print a warning if the client's MIGP library version does not match the server version.

  • Use byte slices instead of strings

    Use byte slices instead of strings

    Use byte slices instead of strings where applicable to reduce the amount of type casting. The BenchmarkRdasMutator100 benchmark test shows a ~30% reduction in ns/op and 43% reduction in B/op with these changes.

    Add unit tests for utility functions in common_test.go.

  • Adding time lock puzzle.

    Adding time lock puzzle.

    Hi, I tried implementing the time-lock-puzzle in Go. But there is a problem which. I did not face the problem with the python implementation. When the T (# of squaring) is around 1024 the Go implementation works. But when I increase T to around 2048 it crashes.

    The problem is in line # 110 as you can see in the attached code snippet. Line # 110 is the following.

    // k = c_k - a^ (2^t) mod n equation (5) from paper https://people.csail.mit.edu/rivest/pubs/RSW96.pdf
    K := new(big.Int).Sub(c_k, b) // this line should decrease the size of K to 32 bytes.
    
    

    The line should decrease the size of K to 32 bytes. But when T >= 2048 it remains 256 bytes. Hence K can not be used as a key to unlock the puzzle as it only accepts keys of size 32, 24, or 12.

    My guess is this is caused by integer overflow when calculating b = a^(2^T) mod n as big int is unsigned and when the most significant bit comes 1 this causes the problem. I have been using Go’s Exp library for the exponentiations. Here is the code snippet.

    b := a
    p := new(big.Int).Exp(big.NewInt(2), T, nil) // p = 2^T
    b.Exp(b, p , N)
    
    

    I have been trying to debug it but haven’t been successful. I have attached comments to the code following the convention from the paper but not sure how helpful it would Do you have ideas on how to fix it?

Related tags
A simple tool to convert socket5 proxy protocol to http proxy protocol

Socket5 to HTTP 这是一个超简单的 Socket5 代理转换成 HTTP 代理的小工具。 如何安装? Golang 用户 # Required Go 1.17+ go install github.com/mritd/s2h@master Docker 用户 docker pull m

Jan 2, 2023
Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.1.1 and V5 in golang

中文文档 Gmqtt News: MQTT V5 is now supported. But due to those new features in v5, there area lots of breaking changes. If you have any migration problem

Jan 5, 2023
Go library for writing standalone Map/Reduce jobs or for use with Hadoop's streaming protocol

dmrgo is a Go library for writing map/reduce jobs. It can be used with Hadoop's streaming protocol, but also includes a standalone map/reduce impleme

Nov 27, 2022
SOCKS Protocol Version 5 Library in Go. Full TCP/UDP and IPv4/IPv6 support

socks5 中文 SOCKS Protocol Version 5 Library. Full TCP/UDP and IPv4/IPv6 support. Goals: KISS, less is more, small API, code is like the original protoc

Jan 8, 2023
a go library for the HelvarNET protocol

helvar-go A go library for the HelvarNET protocol Inspired by https://github.com/tomplayford/aiohelvar This library is a work in progress... Documenta

Nov 25, 2022
A base library defines interfaces and modules of aBFT Lachesis consensus protocol

Lachesis base A base library defines interfaces and modules of aBFT Lachesis consensus protocol. Part of galaxy' s Consensus-as-a-Service for distribu

Oct 25, 2021
Package arp implements the ARP protocol, as described in RFC 826. MIT Licensed.

arp Package arp implements the ARP protocol, as described in RFC 826. MIT Licensed. Portions of this code are taken from the Go standard library. The

Dec 20, 2022
A TCP Server Framework with graceful shutdown, custom protocol.

xtcp A TCP Server Framework with graceful shutdown,custom protocol. Usage Define your protocol format: Before create server and client, you need defin

Dec 7, 2022
Diameter stack and Base Protocol (RFC 6733) for the Go programming language

Diameter Base Protocol Package go-diameter is an implementation of the Diameter Base Protocol RFC 6733 and a stack for the Go programming language. St

Dec 28, 2022