Add codes for MD5(IP) distribution
This commit is contained in:
parent
acee05a161
commit
d1d76a2dba
1
codes/md5-dist/.gitignore
vendored
Normal file
1
codes/md5-dist/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/target
|
70
codes/md5-dist/Cargo.lock
generated
Normal file
70
codes/md5-dist/Cargo.lock
generated
Normal file
@ -0,0 +1,70 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "block-buffer"
|
||||
version = "0.10.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crypto-common"
|
||||
version = "0.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8"
|
||||
dependencies = [
|
||||
"generic-array",
|
||||
"typenum",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.10.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
|
||||
dependencies = [
|
||||
"block-buffer",
|
||||
"crypto-common",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "generic-array"
|
||||
version = "0.14.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"
|
||||
dependencies = [
|
||||
"typenum",
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "md-5"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "658646b21e0b72f7866c7038ab086d3d5e1cd6271f060fd37defb241949d0582"
|
||||
dependencies = [
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "md5-dist"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"md-5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "typenum"
|
||||
version = "1.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.9.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
9
codes/md5-dist/Cargo.toml
Normal file
9
codes/md5-dist/Cargo.toml
Normal file
@ -0,0 +1,9 @@
|
||||
[package]
|
||||
name = "md5-dist"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
md-5 = "0.10.1"
|
256
codes/md5-dist/countmap.txt
Normal file
256
codes/md5-dist/countmap.txt
Normal file
@ -0,0 +1,256 @@
|
||||
00: 16775418
|
||||
01: 16784471
|
||||
02: 16782205
|
||||
03: 16777355
|
||||
04: 16781626
|
||||
05: 16775143
|
||||
06: 16773409
|
||||
07: 16783120
|
||||
08: 16780738
|
||||
09: 16776141
|
||||
0a: 16780852
|
||||
0b: 16779188
|
||||
0c: 16769188
|
||||
0d: 16778425
|
||||
0e: 16782101
|
||||
0f: 16773329
|
||||
10: 16775877
|
||||
11: 16773625
|
||||
12: 16782333
|
||||
13: 16779312
|
||||
14: 16778791
|
||||
15: 16772556
|
||||
16: 16776048
|
||||
17: 16776984
|
||||
18: 16774961
|
||||
19: 16772505
|
||||
1a: 16772749
|
||||
1b: 16784280
|
||||
1c: 16776018
|
||||
1d: 16780113
|
||||
1e: 16775174
|
||||
1f: 16775598
|
||||
20: 16775411
|
||||
21: 16775281
|
||||
22: 16781508
|
||||
23: 16782609
|
||||
24: 16774699
|
||||
25: 16774058
|
||||
26: 16780100
|
||||
27: 16778931
|
||||
28: 16785083
|
||||
29: 16774624
|
||||
2a: 16769029
|
||||
2b: 16769432
|
||||
2c: 16779676
|
||||
2d: 16777681
|
||||
2e: 16775010
|
||||
2f: 16779064
|
||||
30: 16770980
|
||||
31: 16775936
|
||||
32: 16780708
|
||||
33: 16774265
|
||||
34: 16775831
|
||||
35: 16781156
|
||||
36: 16778539
|
||||
37: 16774660
|
||||
38: 16775533
|
||||
39: 16774402
|
||||
3a: 16775884
|
||||
3b: 16776471
|
||||
3c: 16782541
|
||||
3d: 16770076
|
||||
3e: 16784726
|
||||
3f: 16782120
|
||||
40: 16783936
|
||||
41: 16776491
|
||||
42: 16769981
|
||||
43: 16779010
|
||||
44: 16780694
|
||||
45: 16774333
|
||||
46: 16771538
|
||||
47: 16773219
|
||||
48: 16781715
|
||||
49: 16777370
|
||||
4a: 16778144
|
||||
4b: 16778755
|
||||
4c: 16773066
|
||||
4d: 16775350
|
||||
4e: 16779655
|
||||
4f: 16779264
|
||||
50: 16772744
|
||||
51: 16776626
|
||||
52: 16779230
|
||||
53: 16783053
|
||||
54: 16780042
|
||||
55: 16778545
|
||||
56: 16778630
|
||||
57: 16779584
|
||||
58: 16786895
|
||||
59: 16781375
|
||||
5a: 16778843
|
||||
5b: 16775092
|
||||
5c: 16779425
|
||||
5d: 16772850
|
||||
5e: 16783451
|
||||
5f: 16779147
|
||||
60: 16786462
|
||||
61: 16777634
|
||||
62: 16777892
|
||||
63: 16769887
|
||||
64: 16774137
|
||||
65: 16778514
|
||||
66: 16778853
|
||||
67: 16771229
|
||||
68: 16785638
|
||||
69: 16779226
|
||||
6a: 16773444
|
||||
6b: 16782595
|
||||
6c: 16781253
|
||||
6d: 16776543
|
||||
6e: 16775492
|
||||
6f: 16785094
|
||||
70: 16774113
|
||||
71: 16772065
|
||||
72: 16775977
|
||||
73: 16778131
|
||||
74: 16767229
|
||||
75: 16779234
|
||||
76: 16778190
|
||||
77: 16778508
|
||||
78: 16774681
|
||||
79: 16780882
|
||||
7a: 16772074
|
||||
7b: 16774136
|
||||
7c: 16778663
|
||||
7d: 16769883
|
||||
7e: 16777787
|
||||
7f: 16777442
|
||||
80: 16770867
|
||||
81: 16780600
|
||||
82: 16781874
|
||||
83: 16783000
|
||||
84: 16780492
|
||||
85: 16777010
|
||||
86: 16771862
|
||||
87: 16771841
|
||||
88: 16775756
|
||||
89: 16780580
|
||||
8a: 16788426
|
||||
8b: 16785673
|
||||
8c: 16776136
|
||||
8d: 16774636
|
||||
8e: 16774131
|
||||
8f: 16776528
|
||||
90: 16778622
|
||||
91: 16779850
|
||||
92: 16774853
|
||||
93: 16786692
|
||||
94: 16785159
|
||||
95: 16786085
|
||||
96: 16779068
|
||||
97: 16778402
|
||||
98: 16770266
|
||||
99: 16775790
|
||||
9a: 16772544
|
||||
9b: 16780165
|
||||
9c: 16771988
|
||||
9d: 16774073
|
||||
9e: 16775503
|
||||
9f: 16775211
|
||||
a0: 16778822
|
||||
a1: 16770790
|
||||
a2: 16772720
|
||||
a3: 16782384
|
||||
a4: 16777523
|
||||
a5: 16776009
|
||||
a6: 16776404
|
||||
a7: 16780201
|
||||
a8: 16786679
|
||||
a9: 16782734
|
||||
aa: 16781532
|
||||
ab: 16774293
|
||||
ac: 16778811
|
||||
ad: 16773288
|
||||
ae: 16777402
|
||||
af: 16780705
|
||||
b0: 16771373
|
||||
b1: 16772570
|
||||
b2: 16776390
|
||||
b3: 16769489
|
||||
b4: 16780751
|
||||
b5: 16780086
|
||||
b6: 16773617
|
||||
b7: 16779288
|
||||
b8: 16772726
|
||||
b9: 16773539
|
||||
ba: 16772098
|
||||
bb: 16771896
|
||||
bc: 16770747
|
||||
bd: 16779381
|
||||
be: 16776967
|
||||
bf: 16780660
|
||||
c0: 16774753
|
||||
c1: 16777763
|
||||
c2: 16778860
|
||||
c3: 16774258
|
||||
c4: 16769455
|
||||
c5: 16781673
|
||||
c6: 16777371
|
||||
c7: 16779255
|
||||
c8: 16780965
|
||||
c9: 16774925
|
||||
ca: 16773390
|
||||
cb: 16766367
|
||||
cc: 16779007
|
||||
cd: 16774152
|
||||
ce: 16779393
|
||||
cf: 16775566
|
||||
d0: 16777541
|
||||
d1: 16775665
|
||||
d2: 16767130
|
||||
d3: 16777702
|
||||
d4: 16774089
|
||||
d5: 16778767
|
||||
d6: 16777777
|
||||
d7: 16778717
|
||||
d8: 16774044
|
||||
d9: 16769863
|
||||
da: 16775188
|
||||
db: 16780781
|
||||
dc: 16780489
|
||||
dd: 16774530
|
||||
de: 16785037
|
||||
df: 16780348
|
||||
e0: 16781971
|
||||
e1: 16785674
|
||||
e2: 16775852
|
||||
e3: 16772744
|
||||
e4: 16777170
|
||||
e5: 16783475
|
||||
e6: 16778994
|
||||
e7: 16775288
|
||||
e8: 16771541
|
||||
e9: 16776289
|
||||
ea: 16778383
|
||||
eb: 16780526
|
||||
ec: 16780465
|
||||
ed: 16778746
|
||||
ee: 16770117
|
||||
ef: 16775146
|
||||
f0: 16775217
|
||||
f1: 16777215
|
||||
f2: 16776901
|
||||
f3: 16779481
|
||||
f4: 16778597
|
||||
f5: 16776573
|
||||
f6: 16773471
|
||||
f7: 16778843
|
||||
f8: 16775212
|
||||
f9: 16776428
|
||||
fa: 16771828
|
||||
fb: 16771978
|
||||
fc: 16781247
|
||||
fd: 16778215
|
||||
fe: 16778741
|
||||
ff: 16777991
|
28
codes/md5-dist/src/main.rs
Normal file
28
codes/md5-dist/src/main.rs
Normal file
@ -0,0 +1,28 @@
|
||||
use md5::{Digest, Md5};
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
fs::File,
|
||||
io::{BufWriter, Write},
|
||||
};
|
||||
|
||||
fn main() -> std::io::Result<()> {
|
||||
let mut map = HashMap::new();
|
||||
for i in 0u32..=std::u32::MAX {
|
||||
let mut hasher = Md5::new();
|
||||
hasher.update(i.to_le_bytes());
|
||||
let out = hasher.finalize();
|
||||
let key = out[out.len() - 1];
|
||||
*map.entry(key).or_insert(0) += 1;
|
||||
if i % 100_000 == 0 {
|
||||
println!("{i}");
|
||||
}
|
||||
}
|
||||
let mut count_list = map.into_iter().collect::<Vec<_>>();
|
||||
count_list.sort();
|
||||
let file = File::create("./countmap.txt")?;
|
||||
let mut writer = BufWriter::new(file);
|
||||
for (k, v) in count_list {
|
||||
writeln!(writer, "{:02x}: {}", k, v)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
21
codes/md5-dist/src/main.rs_all_ips_bak
Normal file
21
codes/md5-dist/src/main.rs_all_ips_bak
Normal file
@ -0,0 +1,21 @@
|
||||
use md5::{Digest, Md5};
|
||||
use std::{
|
||||
fs::File,
|
||||
io::{BufWriter, Write},
|
||||
};
|
||||
|
||||
fn main() -> std::io::Result<()> {
|
||||
let file = File::create("./hashes.txt")?;
|
||||
let mut writer = BufWriter::new(file);
|
||||
for i in 0u32..=std::u32::MAX {
|
||||
let mut hasher = Md5::new();
|
||||
// let mut out = [0; 16];
|
||||
hasher.update(i.to_le_bytes());
|
||||
let out = hasher.finalize();
|
||||
writeln!(writer, "{:02x}", out[out.len() - 1])?;
|
||||
if i % 100_000 == 0 {
|
||||
println!("{i}");
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
1
codes/md5dist-plot/.gitignore
vendored
Normal file
1
codes/md5dist-plot/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.venv
|
256
codes/md5dist-plot/countmap.txt
Normal file
256
codes/md5dist-plot/countmap.txt
Normal file
@ -0,0 +1,256 @@
|
||||
00: 16775418
|
||||
01: 16784471
|
||||
02: 16782205
|
||||
03: 16777355
|
||||
04: 16781626
|
||||
05: 16775143
|
||||
06: 16773409
|
||||
07: 16783120
|
||||
08: 16780738
|
||||
09: 16776141
|
||||
0a: 16780852
|
||||
0b: 16779188
|
||||
0c: 16769188
|
||||
0d: 16778425
|
||||
0e: 16782101
|
||||
0f: 16773329
|
||||
10: 16775877
|
||||
11: 16773625
|
||||
12: 16782333
|
||||
13: 16779312
|
||||
14: 16778791
|
||||
15: 16772556
|
||||
16: 16776048
|
||||
17: 16776984
|
||||
18: 16774961
|
||||
19: 16772505
|
||||
1a: 16772749
|
||||
1b: 16784280
|
||||
1c: 16776018
|
||||
1d: 16780113
|
||||
1e: 16775174
|
||||
1f: 16775598
|
||||
20: 16775411
|
||||
21: 16775281
|
||||
22: 16781508
|
||||
23: 16782609
|
||||
24: 16774699
|
||||
25: 16774058
|
||||
26: 16780100
|
||||
27: 16778931
|
||||
28: 16785083
|
||||
29: 16774624
|
||||
2a: 16769029
|
||||
2b: 16769432
|
||||
2c: 16779676
|
||||
2d: 16777681
|
||||
2e: 16775010
|
||||
2f: 16779064
|
||||
30: 16770980
|
||||
31: 16775936
|
||||
32: 16780708
|
||||
33: 16774265
|
||||
34: 16775831
|
||||
35: 16781156
|
||||
36: 16778539
|
||||
37: 16774660
|
||||
38: 16775533
|
||||
39: 16774402
|
||||
3a: 16775884
|
||||
3b: 16776471
|
||||
3c: 16782541
|
||||
3d: 16770076
|
||||
3e: 16784726
|
||||
3f: 16782120
|
||||
40: 16783936
|
||||
41: 16776491
|
||||
42: 16769981
|
||||
43: 16779010
|
||||
44: 16780694
|
||||
45: 16774333
|
||||
46: 16771538
|
||||
47: 16773219
|
||||
48: 16781715
|
||||
49: 16777370
|
||||
4a: 16778144
|
||||
4b: 16778755
|
||||
4c: 16773066
|
||||
4d: 16775350
|
||||
4e: 16779655
|
||||
4f: 16779264
|
||||
50: 16772744
|
||||
51: 16776626
|
||||
52: 16779230
|
||||
53: 16783053
|
||||
54: 16780042
|
||||
55: 16778545
|
||||
56: 16778630
|
||||
57: 16779584
|
||||
58: 16786895
|
||||
59: 16781375
|
||||
5a: 16778843
|
||||
5b: 16775092
|
||||
5c: 16779425
|
||||
5d: 16772850
|
||||
5e: 16783451
|
||||
5f: 16779147
|
||||
60: 16786462
|
||||
61: 16777634
|
||||
62: 16777892
|
||||
63: 16769887
|
||||
64: 16774137
|
||||
65: 16778514
|
||||
66: 16778853
|
||||
67: 16771229
|
||||
68: 16785638
|
||||
69: 16779226
|
||||
6a: 16773444
|
||||
6b: 16782595
|
||||
6c: 16781253
|
||||
6d: 16776543
|
||||
6e: 16775492
|
||||
6f: 16785094
|
||||
70: 16774113
|
||||
71: 16772065
|
||||
72: 16775977
|
||||
73: 16778131
|
||||
74: 16767229
|
||||
75: 16779234
|
||||
76: 16778190
|
||||
77: 16778508
|
||||
78: 16774681
|
||||
79: 16780882
|
||||
7a: 16772074
|
||||
7b: 16774136
|
||||
7c: 16778663
|
||||
7d: 16769883
|
||||
7e: 16777787
|
||||
7f: 16777442
|
||||
80: 16770867
|
||||
81: 16780600
|
||||
82: 16781874
|
||||
83: 16783000
|
||||
84: 16780492
|
||||
85: 16777010
|
||||
86: 16771862
|
||||
87: 16771841
|
||||
88: 16775756
|
||||
89: 16780580
|
||||
8a: 16788426
|
||||
8b: 16785673
|
||||
8c: 16776136
|
||||
8d: 16774636
|
||||
8e: 16774131
|
||||
8f: 16776528
|
||||
90: 16778622
|
||||
91: 16779850
|
||||
92: 16774853
|
||||
93: 16786692
|
||||
94: 16785159
|
||||
95: 16786085
|
||||
96: 16779068
|
||||
97: 16778402
|
||||
98: 16770266
|
||||
99: 16775790
|
||||
9a: 16772544
|
||||
9b: 16780165
|
||||
9c: 16771988
|
||||
9d: 16774073
|
||||
9e: 16775503
|
||||
9f: 16775211
|
||||
a0: 16778822
|
||||
a1: 16770790
|
||||
a2: 16772720
|
||||
a3: 16782384
|
||||
a4: 16777523
|
||||
a5: 16776009
|
||||
a6: 16776404
|
||||
a7: 16780201
|
||||
a8: 16786679
|
||||
a9: 16782734
|
||||
aa: 16781532
|
||||
ab: 16774293
|
||||
ac: 16778811
|
||||
ad: 16773288
|
||||
ae: 16777402
|
||||
af: 16780705
|
||||
b0: 16771373
|
||||
b1: 16772570
|
||||
b2: 16776390
|
||||
b3: 16769489
|
||||
b4: 16780751
|
||||
b5: 16780086
|
||||
b6: 16773617
|
||||
b7: 16779288
|
||||
b8: 16772726
|
||||
b9: 16773539
|
||||
ba: 16772098
|
||||
bb: 16771896
|
||||
bc: 16770747
|
||||
bd: 16779381
|
||||
be: 16776967
|
||||
bf: 16780660
|
||||
c0: 16774753
|
||||
c1: 16777763
|
||||
c2: 16778860
|
||||
c3: 16774258
|
||||
c4: 16769455
|
||||
c5: 16781673
|
||||
c6: 16777371
|
||||
c7: 16779255
|
||||
c8: 16780965
|
||||
c9: 16774925
|
||||
ca: 16773390
|
||||
cb: 16766367
|
||||
cc: 16779007
|
||||
cd: 16774152
|
||||
ce: 16779393
|
||||
cf: 16775566
|
||||
d0: 16777541
|
||||
d1: 16775665
|
||||
d2: 16767130
|
||||
d3: 16777702
|
||||
d4: 16774089
|
||||
d5: 16778767
|
||||
d6: 16777777
|
||||
d7: 16778717
|
||||
d8: 16774044
|
||||
d9: 16769863
|
||||
da: 16775188
|
||||
db: 16780781
|
||||
dc: 16780489
|
||||
dd: 16774530
|
||||
de: 16785037
|
||||
df: 16780348
|
||||
e0: 16781971
|
||||
e1: 16785674
|
||||
e2: 16775852
|
||||
e3: 16772744
|
||||
e4: 16777170
|
||||
e5: 16783475
|
||||
e6: 16778994
|
||||
e7: 16775288
|
||||
e8: 16771541
|
||||
e9: 16776289
|
||||
ea: 16778383
|
||||
eb: 16780526
|
||||
ec: 16780465
|
||||
ed: 16778746
|
||||
ee: 16770117
|
||||
ef: 16775146
|
||||
f0: 16775217
|
||||
f1: 16777215
|
||||
f2: 16776901
|
||||
f3: 16779481
|
||||
f4: 16778597
|
||||
f5: 16776573
|
||||
f6: 16773471
|
||||
f7: 16778843
|
||||
f8: 16775212
|
||||
f9: 16776428
|
||||
fa: 16771828
|
||||
fb: 16771978
|
||||
fc: 16781247
|
||||
fd: 16778215
|
||||
fe: 16778741
|
||||
ff: 16777991
|
BIN
codes/md5dist-plot/dist.png
Normal file
BIN
codes/md5dist-plot/dist.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
46
codes/md5dist-plot/dist.py
Executable file
46
codes/md5dist-plot/dist.py
Executable file
@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def main():
|
||||
with open('./countmap.txt', 'r') as f:
|
||||
countmap = {}
|
||||
keys = []
|
||||
values = []
|
||||
for line in f:
|
||||
split = line.split(': ')
|
||||
prefix = split[0].strip()
|
||||
key = int(prefix, 16)
|
||||
value = int(split[1].strip())
|
||||
countmap[key] = value
|
||||
keys.append(key)
|
||||
values.append(value)
|
||||
|
||||
plt.bar(keys, values)
|
||||
plt.title('Distribution of lowest byte of hashed IP addresses')
|
||||
plt.savefig('dist.png')
|
||||
plt.show()
|
||||
|
||||
# with open('./hashes.txt', 'r') as f:
|
||||
# # countmap = defaultdict(lambda: 0)
|
||||
# ints = set()
|
||||
# data = []
|
||||
# for line in f.readlines():
|
||||
# # line = line.strip()
|
||||
# # prefix = line[len(line) - 2:]
|
||||
# prefix = line.strip()
|
||||
# ints.add(prefix)
|
||||
# # countmap[prefix] = countmap[prefix] + 1
|
||||
# data.append(int(prefix, 16))
|
||||
|
||||
# plt.hist(data, bins=len(ints))
|
||||
# plt.title('Distribution of lowest byte of hashed IP addresses')
|
||||
# plt.savefig('dist.png')
|
||||
# plt.show()
|
||||
# # print(countmap)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
1
codes/md5dist-plot/requirements.txt
Normal file
1
codes/md5dist-plot/requirements.txt
Normal file
@ -0,0 +1 @@
|
||||
matplotlib==3.5.1
|
Loading…
x
Reference in New Issue
Block a user