bruteforcer

package
v2.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 15, 2023 License: BSD-3-Clause Imports: 6 Imported by: 0

README

goos: linux
goarch: amd64
pkg: privatecore/firmware/analyzer/pkg/bruteforcer
BenchmarkBruteForce/noop/distance_1/dataSize_1-8                  111994              1034 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/noop/distance_1/dataSize_2-8                   90879              1277 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/noop/distance_1/dataSize_3-8                   78481              1559 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/noop/distance_1/dataSize_4-8                   71247              1691 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/noop/distance_1/dataSize_5-8                   66680              1880 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/noop/distance_1/dataSize_6-8                   60540              2244 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/noop/distance_1/dataSize_7-8                   43143              3073 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/noop/distance_1/dataSize_8-8                   39789              2960 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/noop/distance_2/dataSize_1-8                   40298              3075 ns/op             368 B/op         24 allocs/op
BenchmarkBruteForce/noop/distance_2/dataSize_2-8                   18277              7604 ns/op             368 B/op         24 allocs/op
BenchmarkBruteForce/noop/distance_2/dataSize_3-8                   10000             12326 ns/op             368 B/op         24 allocs/op
BenchmarkBruteForce/noop/distance_2/dataSize_4-8                    6253             18504 ns/op             368 B/op         24 allocs/op
BenchmarkBruteForce/noop/distance_2/dataSize_5-8                    4112             28074 ns/op             384 B/op         24 allocs/op
BenchmarkBruteForce/noop/distance_2/dataSize_6-8                    2814             37999 ns/op             384 B/op         24 allocs/op
BenchmarkBruteForce/noop/distance_2/dataSize_7-8                    2494             48112 ns/op             384 B/op         24 allocs/op
BenchmarkBruteForce/noop/distance_2/dataSize_8-8                    2058             62783 ns/op             384 B/op         24 allocs/op
BenchmarkBruteForce/noop/distance_3/dataSize_1-8                   17174              6390 ns/op             720 B/op         41 allocs/op
BenchmarkBruteForce/noop/distance_3/dataSize_2-8                    4104             30334 ns/op             720 B/op         41 allocs/op
BenchmarkBruteForce/noop/distance_3/dataSize_3-8                    1576             87300 ns/op             720 B/op         41 allocs/op
BenchmarkBruteForce/noop/distance_3/dataSize_4-8                     606            202431 ns/op             720 B/op         41 allocs/op
BenchmarkBruteForce/noop/distance_3/dataSize_5-8                     322            343400 ns/op             736 B/op         41 allocs/op
BenchmarkBruteForce/noop/distance_3/dataSize_6-8                     210            585882 ns/op             736 B/op         41 allocs/op
BenchmarkBruteForce/noop/distance_3/dataSize_7-8                     234            589251 ns/op             810 B/op         43 allocs/op
BenchmarkBruteForce/noop/distance_3/dataSize_8-8                     193            557486 ns/op             926 B/op         47 allocs/op
BenchmarkBruteForce/noop/distance_4/dataSize_1-8                    9180             12062 ns/op            1183 B/op         62 allocs/op
BenchmarkBruteForce/noop/distance_4/dataSize_2-8                    1088            107128 ns/op            1184 B/op         62 allocs/op
BenchmarkBruteForce/noop/distance_4/dataSize_3-8                     237            492388 ns/op            1184 B/op         62 allocs/op
BenchmarkBruteForce/noop/distance_4/dataSize_4-8                     157            744349 ns/op            1256 B/op         66 allocs/op
BenchmarkBruteForce/noop/distance_4/dataSize_5-8                      79           1298786 ns/op            1860 B/op         76 allocs/op
BenchmarkBruteForce/noop/distance_4/dataSize_6-8                      45           2578822 ns/op            1482 B/op         76 allocs/op
BenchmarkBruteForce/noop/distance_4/dataSize_7-8                      32           4157079 ns/op            1524 B/op         78 allocs/op
BenchmarkBruteForce/noop/distance_4/dataSize_8-8                      16           7103824 ns/op            1608 B/op         82 allocs/op
BenchmarkBruteForce/noop/distance_5/dataSize_1-8                    5882             19378 ns/op            1552 B/op         79 allocs/op
BenchmarkBruteForce/noop/distance_5/dataSize_2-8                     332            310768 ns/op            1776 B/op         87 allocs/op
BenchmarkBruteForce/noop/distance_5/dataSize_3-8                      90           1189687 ns/op            1995 B/op         93 allocs/op
BenchmarkBruteForce/noop/distance_5/dataSize_4-8                      51           3094867 ns/op            2210 B/op        105 allocs/op
BenchmarkBruteForce/noop/distance_5/dataSize_5-8                      13           8687901 ns/op            2432 B/op        115 allocs/op
BenchmarkBruteForce/noop/distance_5/dataSize_6-8                       5          21545071 ns/op            2467 B/op        115 allocs/op
BenchmarkBruteForce/noop/distance_5/dataSize_7-8                       3          46809559 ns/op            2544 B/op        117 allocs/op
BenchmarkBruteForce/noop/distance_5/dataSize_8-8                       2         115921358 ns/op            2592 B/op        121 allocs/op
BenchmarkBruteForce/noop/distance_6/dataSize_1-8                    5816             22624 ns/op            1807 B/op         92 allocs/op
BenchmarkBruteForce/noop/distance_6/dataSize_2-8                     158            704658 ns/op            2480 B/op        116 allocs/op
BenchmarkBruteForce/noop/distance_6/dataSize_3-8                      39           2783654 ns/op            2994 B/op        136 allocs/op
BenchmarkBruteForce/noop/distance_6/dataSize_4-8                       7          14666064 ns/op            3282 B/op        148 allocs/op
BenchmarkBruteForce/noop/distance_6/dataSize_5-8                       2          55091357 ns/op            4336 B/op        160 allocs/op
BenchmarkBruteForce/noop/distance_6/dataSize_6-8                       1         160281045 ns/op            4368 B/op        160 allocs/op
BenchmarkBruteForce/noop/distance_6/dataSize_7-8                       1         401626326 ns/op            4128 B/op        162 allocs/op
BenchmarkBruteForce/noop/distance_6/dataSize_8-8                       1         904420581 ns/op            3808 B/op        165 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_1/dataSize_1-8               32188              3923 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_1/dataSize_2-8               19854              5640 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_1/dataSize_3-8               16796              7739 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_1/dataSize_4-8               12583              9998 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_1/dataSize_5-8               10000             10798 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_1/dataSize_6-8               10018             12972 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_1/dataSize_7-8                7606             14019 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_1/dataSize_8-8                6602             15338 ns/op             160 B/op         11 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_2/dataSize_1-8                9416             12885 ns/op             368 B/op         24 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_2/dataSize_2-8                3691             33207 ns/op             368 B/op         24 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_2/dataSize_3-8                1880             68526 ns/op             368 B/op         24 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_2/dataSize_4-8                1135            115761 ns/op             368 B/op         24 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_2/dataSize_5-8                 734            190271 ns/op             384 B/op         24 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_2/dataSize_6-8                 508            238664 ns/op             384 B/op         24 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_2/dataSize_7-8                 368            361552 ns/op             384 B/op         24 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_2/dataSize_8-8                 316            413167 ns/op             384 B/op         24 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_3/dataSize_1-8                4441             26912 ns/op             720 B/op         41 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_3/dataSize_2-8                 739            148580 ns/op             720 B/op         41 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_3/dataSize_3-8                 241            523242 ns/op             720 B/op         41 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_3/dataSize_4-8                  90           1206058 ns/op             720 B/op         41 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_3/dataSize_5-8                  49           2096985 ns/op             736 B/op         41 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_3/dataSize_6-8                  28           3707970 ns/op             736 B/op         41 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_3/dataSize_7-8                  34           3323183 ns/op             776 B/op         43 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_3/dataSize_8-8                  31           4505925 ns/op             856 B/op         47 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_4/dataSize_1-8                2502             45961 ns/op            1184 B/op         62 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_4/dataSize_2-8                 214            541400 ns/op            1184 B/op         62 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_4/dataSize_3-8                  45           2749192 ns/op            1184 B/op         62 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_4/dataSize_4-8                  20           5497688 ns/op            1256 B/op         66 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_4/dataSize_5-8                  16           8363935 ns/op            1465 B/op         76 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_4/dataSize_6-8                   7          16828364 ns/op            1483 B/op         76 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_4/dataSize_7-8                   4          28859744 ns/op            1528 B/op         78 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_4/dataSize_8-8                   3          46719665 ns/op            1605 B/op         82 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_5/dataSize_1-8                1929             63682 ns/op            1552 B/op         79 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_5/dataSize_2-8                  73           1588963 ns/op            1776 B/op         87 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_5/dataSize_3-8                  16           7386752 ns/op            1931 B/op         93 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_5/dataSize_4-8                   6          18911062 ns/op            2216 B/op        105 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_5/dataSize_5-8                   2          52249364 ns/op            2504 B/op        115 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_5/dataSize_6-8                   1         138952445 ns/op            2480 B/op        115 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_5/dataSize_7-8                   1         281757950 ns/op            2608 B/op        118 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_5/dataSize_8-8                   1         550915210 ns/op            2608 B/op        121 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_6/dataSize_1-8                1660             79541 ns/op            1808 B/op         92 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_6/dataSize_2-8                  31           3773336 ns/op            2483 B/op        116 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_6/dataSize_3-8                   8          15691267 ns/op            3000 B/op        136 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_6/dataSize_4-8                   2          84575901 ns/op            3344 B/op        148 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_6/dataSize_5-8                   1         328253033 ns/op            3632 B/op        159 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_6/dataSize_6-8                   1        1024661015 ns/op            3600 B/op        158 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_6/dataSize_7-8                   1        2463266087 ns/op            3648 B/op        160 allocs/op
BenchmarkBruteForce/sha1.Sum/distance_6/dataSize_8-8                   1        6358236131 ns/op            3808 B/op        165 allocs/op
PASS
ok      privatecore/firmware/analyzer/pkg/bruteforcer   26.227s

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ApplyBitFlipsBools

func ApplyBitFlipsBools(s UniqueUnorderedCombination, v []bool)

ApplyBitFlipsBools changes bit combination located in combination UniqueUnorderedCombination of a []bool.

func ApplyBitFlipsBytes

func ApplyBitFlipsBytes(s UniqueUnorderedCombination, v []byte)

ApplyBitFlipsBytes changes bit combination located in combination UniqueUnorderedCombination of a []byte.

Types

type ApplyBitFlipsFunc

type ApplyBitFlipsFunc[E Item] func(combination UniqueUnorderedCombination, data []E)

type CheckFunc

type CheckFunc[E Item] func(ctx any, data []E) bool

CheckFunc is the function used if the sought value is found. Return true if data is the sought value, and return false if it is not.

type InitFunc

type InitFunc func() (any, error)

InitFunc is the function executed for each goroutine before brute-forcing. It returns a data, which will be passed as argument `ctx` to CheckFunc.

type Item

type Item interface {
	any
}

type Slice

type Slice[T Item] interface {
	~[]T
}

type UniqueUnorderedCombination

type UniqueUnorderedCombination []Value

UniqueUnorderedCombination is a combination of non-repeating unordered Value-s. To avoid combination duplication it is enforced that each next index should be greater than a previous one.

See also: https://en.wikipedia.org/wiki/File:Combinations_without_repetition;_5_choose_3.svg

func BruteForce

func BruteForce[E Item, T Slice[E]](
	initialData T,
	itemSize uint64,
	minDistance uint64,
	maxDistance uint64,
	initFunc InitFunc,
	checkFunc CheckFunc[E],
	applyBitFlipsFunc ApplyBitFlipsFunc[E],
	maxConcurrency uint,
) (UniqueUnorderedCombination, error)

BruteForce brute forces a value until checkFunc will return true or combinations will be out. It starts with value initialData and then tries combination with the hamming distance (relatively to initialDate) not greater than maxDistance.

On success it returns the combination of bits which combination are required to be changed. To apply these changes use method ApplyBitFlips.

func NewUniqueUnorderedCombination

func NewUniqueUnorderedCombination(amountOfIndexes uint64) UniqueUnorderedCombination

NewUniqueUnorderedCombination returns a UniqueUnorderedCombination with combination pre-defined to [0, 1, 2, ...] -- the very first combination of unique (non-repeating) combination.

func (UniqueUnorderedCombination) AmountOfCombinations

func (s UniqueUnorderedCombination) AmountOfCombinations(maxValue Value) uint64

AmountOfCombinations returns amount of possible combinations.

func (UniqueUnorderedCombination) Copy

type UniqueUnorderedCombinationIterator

type UniqueUnorderedCombinationIterator struct {
	// contains filtered or unexported fields
}

UniqueUnorderedCombinationIterator is a wrapper around UniqueUnorderedCombination which is able to set a next combination.

func NewUniqueUnorderedCombinationIterator

func NewUniqueUnorderedCombinationIterator(amountOfValues uint64, maxValue int64) *UniqueUnorderedCombinationIterator

NewUniqueUnorderedCombinationIterator returns a new instance of UniqueUnorderedCombinationIterator.

func (*UniqueUnorderedCombinationIterator) AmountOfCombinations

func (iter *UniqueUnorderedCombinationIterator) AmountOfCombinations() uint64

AmountOfCombinations returns amount of possible combinations.

func (UniqueUnorderedCombinationIterator) Copy

Copy returns a deep copy of the iterator.

func (*UniqueUnorderedCombinationIterator) GetCombination

GetCombination is a safe getter of the current combination.

It performs a copy and therefore slow.

func (*UniqueUnorderedCombinationIterator) GetCombinationID

func (iter *UniqueUnorderedCombinationIterator) GetCombinationID() uint64

GetCombinationID returns current combination ID [0...amount_of_combinations)

func (*UniqueUnorderedCombinationIterator) GetCombinationUnsafe

GetCombinationUnsafe is an unsafe (but fast) getter of the current combination.

func (*UniqueUnorderedCombinationIterator) Next

Next sets the combination to the next combination.

func (*UniqueUnorderedCombinationIterator) SetCombinationID

func (iter *UniqueUnorderedCombinationIterator) SetCombinationID(combinationID uint64)

SetCombinationID sets combination ID.

The value should be within range [0...amount_of_combinations). Otherwise may hang or panic.

type Value

type Value int64

Value is just an abstract index.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL