extend.go 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496
  1. package yu_rand
  2. import (
  3. yu_const "gogs.qqck.cn/s/tools/const"
  4. )
  5. // Mac
  6. //
  7. // @Description: 随机生成小写 mac (53:31:32:41:c3:dd)
  8. func Mac() string {
  9. j_mac := make([]byte, 17)
  10. Rand.ReadEx(j_mac, yu_const.HexLowerBytes)
  11. j_mac[2], j_mac[5], j_mac[8], j_mac[11], j_mac[14] = ':', ':', ':', ':', ':'
  12. return string(j_mac)
  13. }
  14. // MAC
  15. //
  16. // @Description: 随机生成大写 mac (BF:49:00:F6:DB:8E)
  17. func MAC() string {
  18. j_mac := make([]byte, 17)
  19. Rand.ReadEx(j_mac, yu_const.HexUpperBytes)
  20. j_mac[2], j_mac[5], j_mac[8], j_mac[11], j_mac[14] = ':', ':', ':', ':', ':'
  21. return string(j_mac)
  22. }
  23. // AndroidId
  24. //
  25. // @Description: 随机生成小写 AndroidId (20f6e8a69f30aebb)
  26. func AndroidId() string {
  27. j_mac := make([]byte, 16)
  28. Rand.ReadEx(j_mac, yu_const.HexLowerBytes)
  29. return string(j_mac)
  30. }
  31. // AndroidID
  32. //
  33. // @Description: 随机生成大写 AndroidId (5D2D187C36CD84E4)
  34. func AndroidID() string {
  35. j_mac := make([]byte, 16)
  36. Rand.ReadEx(j_mac, yu_const.HexUpperBytes)
  37. return string(j_mac)
  38. }
  39. // AndroidId
  40. //
  41. // @Description: 随机生成 Imei
  42. func Imei() string {
  43. j_sum := 0 // the control j_sum of digits
  44. j_final := make([]byte, 15)
  45. for j_i := 0; j_i < 14; j_i++ { // generating all the base digits
  46. j_toAdd := Intn(10)
  47. j_final[j_i] = yu_const.HexLower[j_toAdd]
  48. if (j_i+1)%2 == 0 { // special proc for every 2nd one
  49. j_toAdd *= 2
  50. if j_toAdd >= 10 {
  51. j_toAdd = (j_toAdd % 10) + 1
  52. }
  53. }
  54. j_sum += j_toAdd // and even add them here!
  55. }
  56. j_final[14] = yu_const.HexLower[(j_sum*9)%10] // calculating the control digit
  57. return string(j_final)
  58. }
  59. const pass_ex = "`!@#$%^&()=+[{]}|;:',./?"
  60. const pass_ex_len = int32(len(pass_ex))
  61. // Pass
  62. //
  63. // @Description: 根据规则生成指定长度的密码
  64. // a|A=0-9 b|B=a-z c|C=A-Z d|D=a-Z
  65. // e|E=0-9-a-z f|F=0-9-A-Z g|G=0-9-a-Z
  66. // h|H=【`!@#$%^&()=+[{]}|;:',./?】
  67. // i|I=【`~!@#$%^&*()-_=+[{]}\|;:'",<.>/?】
  68. // j|J=0-9-a-Z-【`!@#$%^&()=+[{]}|;:',./?】
  69. // k|K=0-9-a-Z-【`~!@#$%^&*()-_=+[{]}\|;:'",<.>/?】
  70. //
  71. // 指令前面可带长度指令,长度指令应在 1-9 范围内,不带长度指令则默认为 1,如:
  72. // [1]a 表示 1 个随机 a 指令;
  73. // [3]a 表示 3 个随机 a 指令;
  74. // [2-5]a 表示随机 2-5 个随机 a 指令
  75. //
  76. // "hh" 表示插入 hh 字符
  77. //
  78. // 示例:aAbB[2]C[1-3]H 或 aAbB [2]C [1-3]H 可能会生成:
  79. // 16akYU@
  80. // 27fdAS@!
  81. // 63isSY%&~
  82. //
  83. // 示例:a"nihao"AbB[2]C[1-3]H 或 "nihao"aAbB [2]C [1-3]H 可能会生成:
  84. // 1nihao6akYU@
  85. // nihao27fdAS@!
  86. // 6nihao3isSY%&~
  87. func Pass(rule string) string {
  88. j_buf := make([]byte, 0, len(rule)*9)
  89. j_len_min, j_len_max := int32(1), int32(1)
  90. j_lens, j_len_, j_lene, j_append := false, false, false, false
  91. for _, j_ascii := range rule {
  92. if j_ascii == '"' {
  93. j_append = !j_append
  94. continue
  95. }
  96. if j_append {
  97. j_buf = append(j_buf, byte(j_ascii))
  98. continue
  99. }
  100. switch j_ascii {
  101. case '[':
  102. j_lens = true
  103. case '1':
  104. // 默认就是 1
  105. case '2':
  106. if j_len_ {
  107. j_len_max = 2
  108. } else {
  109. j_len_min = 2
  110. }
  111. case '3':
  112. if j_len_ {
  113. j_len_max = 3
  114. } else {
  115. j_len_min = 3
  116. }
  117. case '4':
  118. if j_len_ {
  119. j_len_max = 4
  120. } else {
  121. j_len_min = 4
  122. }
  123. case '5':
  124. if j_len_ {
  125. j_len_max = 5
  126. } else {
  127. j_len_min = 5
  128. }
  129. case '6':
  130. if j_len_ {
  131. j_len_max = 6
  132. } else {
  133. j_len_min = 6
  134. }
  135. case '7':
  136. if j_len_ {
  137. j_len_max = 7
  138. } else {
  139. j_len_min = 7
  140. }
  141. case '8':
  142. if j_len_ {
  143. j_len_max = 8
  144. } else {
  145. j_len_min = 8
  146. }
  147. case '9':
  148. if j_len_ {
  149. j_len_max = 9
  150. } else {
  151. j_len_min = 9
  152. }
  153. case '-':
  154. j_len_ = true
  155. case ']':
  156. j_lene = true
  157. case 'a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K':
  158. j_len := 1
  159. if j_lens && j_lene {
  160. if j_len_ && j_len_min != j_len_max {
  161. if j_len_min < j_len_max {
  162. j_len = int(Int31MinMax(j_len_min, j_len_max))
  163. } else {
  164. j_len = int(Int31MinMax(j_len_max, j_len_min))
  165. }
  166. } else {
  167. j_len = int(j_len_min)
  168. }
  169. }
  170. j_len_min, j_len_max = 1, 1 // 复位
  171. j_lens, j_len_, j_lene = false, false, false // 复位
  172. switch j_ascii {
  173. case 'a', 'A':
  174. for ; j_len > 0; j_len-- {
  175. j_buf = append(j_buf, byte(Int31n(10))+'0')
  176. }
  177. case 'b', 'B':
  178. for ; j_len > 0; j_len-- {
  179. j_buf = append(j_buf, byte(Int31n(26))+'a')
  180. }
  181. case 'c', 'C':
  182. for ; j_len > 0; j_len-- {
  183. j_buf = append(j_buf, byte(Int31n(26))+'A')
  184. }
  185. case 'd', 'D':
  186. for ; j_len > 0; j_len-- {
  187. if Int31n(2) == 0 {
  188. j_buf = append(j_buf, byte(Int31n(26))+'a')
  189. } else {
  190. j_buf = append(j_buf, byte(Int31n(26))+'A')
  191. }
  192. }
  193. case 'e', 'E':
  194. for ; j_len > 0; j_len-- {
  195. if Int31n(2) == 0 {
  196. j_buf = append(j_buf, byte(Int31n(10))+'0')
  197. } else {
  198. j_buf = append(j_buf, byte(Int31n(26))+'a')
  199. }
  200. }
  201. case 'f', 'F':
  202. for ; j_len > 0; j_len-- {
  203. if Int31n(2) == 0 {
  204. j_buf = append(j_buf, byte(Int31n(10))+'0')
  205. } else {
  206. j_buf = append(j_buf, byte(Int31n(26))+'A')
  207. }
  208. }
  209. case 'g', 'G':
  210. for ; j_len > 0; j_len-- {
  211. switch Int31n(3) {
  212. case 0:
  213. j_buf = append(j_buf, byte(Int31n(10))+'0')
  214. case 1:
  215. j_buf = append(j_buf, byte(Int31n(26))+'a')
  216. default:
  217. j_buf = append(j_buf, byte(Int31n(26))+'A')
  218. }
  219. }
  220. case 'h', 'H':
  221. for ; j_len > 0; j_len-- {
  222. j_buf = append(j_buf, pass_ex[Int31n(pass_ex_len)])
  223. }
  224. case 'i', 'I':
  225. for ; j_len > 0; j_len-- {
  226. j_buf = append(j_buf, str_other[Int31n(str_other_len)])
  227. }
  228. case 'j', 'J':
  229. for ; j_len > 0; j_len-- {
  230. switch Int31n(4) {
  231. case 0:
  232. j_buf = append(j_buf, byte(Int31n(10))+'0')
  233. case 1:
  234. j_buf = append(j_buf, byte(Int31n(26))+'a')
  235. case 2:
  236. j_buf = append(j_buf, byte(Int31n(26))+'A')
  237. default:
  238. j_buf = append(j_buf, pass_ex[Int31n(pass_ex_len)])
  239. }
  240. }
  241. case 'k', 'K':
  242. for ; j_len > 0; j_len-- {
  243. j_buf = append(j_buf, byte(Int31n(94))+33) // 33 - 126
  244. }
  245. }
  246. }
  247. }
  248. return string(j_buf)
  249. }
  250. // 摘自:https://github.com/KHwang9883/MobileModels/
  251. var m_devices = [][]string{
  252. {"OnePlus", "AC2001"}, // Nord 印度版
  253. {"OnePlus", "AC2003"}, // Nord 欧洲版/国际版
  254. {"OnePlus", "BE2011"}, // Nord N100 北美版
  255. {"OnePlus", "BE2012"}, // Nord N100 T-Mobile 版
  256. {"OnePlus", "BE2013"}, // Nord N100 国际版
  257. {"OnePlus", "BE2015"}, // Nord N100 Metro 版
  258. {"OnePlus", "BE2025"}, // Nord N10 Metro 版
  259. {"OnePlus", "BE2026"}, // Nord N10 北美版
  260. {"OnePlus", "BE2028"}, // Nord N10 T-Mobile 版
  261. {"OnePlus", "BE2029"}, // Nord N10 欧洲版/国际版
  262. {"OnePlus", "CPH2381"}, // Nord CE 2 Lite 印度版
  263. {"OnePlus", "CPH2389"}, // Nord N300
  264. {"OnePlus", "CPH2399"}, // Nord 2T 国际版
  265. {"OnePlus", "CPH2401"}, // Nord 2T 印度版
  266. {"OnePlus", "CPH2409"}, // Nord CE 2 Lite 欧洲版/国际版
  267. {"OnePlus", "CPH2411"}, // 10R Endurance 印度版
  268. {"OnePlus", "CPH2413"}, // 10T 印度版
  269. {"OnePlus", "CPH2415"}, // 10T 欧洲版/国际版
  270. {"OnePlus", "CPH2417"}, // 10T 北美版
  271. {"OnePlus", "CPH2419"}, // 10T T-Mobile 版
  272. {"OnePlus", "CPH2423"}, // 10R 印度版
  273. {"OnePlus", "CPH2447"}, // 11 印度版
  274. {"OnePlus", "CPH2449"}, // 11 欧洲版/国际版
  275. {"OnePlus", "CPH2451"}, // 11 北美版
  276. {"OnePlus", "CPH2465"}, // Nord CE 3 Lite 国际版
  277. {"OnePlus", "CPH2467"}, // Nord CE 3 Lite 印度版
  278. {"OnePlus", "CPH2469"}, // Nord 20 SE
  279. {"OnePlus", "CPH2487"}, // 11R 印度版
  280. {"OnePlus", "CPH2491"}, // Nord 3 印度版
  281. {"OnePlus", "CPH2493"}, // Nord 3 欧洲版
  282. {"OnePlus", "CPH2513"}, // Nord N30 北美版
  283. {"OnePlus", "CPH2515"}, // Nord N30 T-Mobile 版
  284. {"OnePlus", "CPH2569"}, // Nord CE 3 印度版
  285. {"OnePlus", "CPH2573"}, // 12 印度版
  286. {"OnePlus", "CPH2581"}, // 12 欧洲版/国际版
  287. {"OnePlus", "CPH2583"}, // 12 北美版
  288. {"OnePlus", "CPH2585"}, // 12R 印度版
  289. {"OnePlus", "CPH2605"}, // Nord N30 SE 欧洲版
  290. {"OnePlus", "CPH2609"}, // 12R 欧洲版/国际版
  291. {"OnePlus", "CPH2611"}, // 12R 北美版
  292. {"OnePlus", "DE2117"}, // Nord N200 北美版
  293. {"OnePlus", "DE2118"}, // Nord N200 T-Mobile 版
  294. {"OnePlus", "DN2101"}, // Nord 2 印度版
  295. {"OnePlus", "DN2103"}, // Nord 2 欧洲版
  296. {"OnePlus", "EB2101"}, // Nord CE 印度版
  297. {"OnePlus", "EB2103"}, // Nord CE 欧洲版/国际版
  298. {"OnePlus", "GM1900"}, // 7 全网通版
  299. {"OnePlus", "GM1901"}, // 7 印度版
  300. {"OnePlus", "GM1903"}, // 7 欧洲版
  301. {"OnePlus", "GM1905"}, // 7 北美版/国际版
  302. {"OnePlus", "GM1910"}, // 7 Pro 全网通版
  303. {"OnePlus", "GM1911"}, // 7 Pro 印度版
  304. {"OnePlus", "GM1913"}, // 7 Pro 欧洲版
  305. {"OnePlus", "GM1915"}, // 7 Pro 北美版/国际版
  306. {"OnePlus", "GM1917"}, // 7 Pro T-Mobile 版
  307. {"OnePlus", "GM1920"}, // 7 Pro 5G 欧洲版
  308. {"OnePlus", "GM1925"}, // 7 Pro 5G Sprint 版
  309. {"OnePlus", "GN2200"}, // Nord N20
  310. {"OnePlus", "CPH2459"}, // Nord N20
  311. {"OnePlus", "HD1900"}, // 7T 全网通版
  312. {"OnePlus", "HD1901"}, // 7T 印度版
  313. {"OnePlus", "HD1903"}, // 7T 欧洲版
  314. {"OnePlus", "HD1905"}, // 7T 北美版/国际版
  315. {"OnePlus", "HD1907"}, // 7T T-Mobile 版
  316. {"OnePlus", "HD1910"}, // 7T Pro 全网通版
  317. {"OnePlus", "HD1911"}, // 7T Pro 印度版
  318. {"OnePlus", "HD1913"}, // 7T Pro 欧洲版/国际版
  319. {"OnePlus", "HD1925"}, // 7T Pro 5G T-Mobile 版 / OnePlus Concept One
  320. {"OnePlus", "IN2010"}, // 8 全网通版
  321. {"OnePlus", "IN2011"}, // 8 印度版
  322. {"OnePlus", "IN2013"}, // 8 欧洲版
  323. {"OnePlus", "IN2015"}, // 8 北美版/国际版
  324. {"OnePlus", "IN2017"}, // 8 T-Mobile 版
  325. {"OnePlus", "IN2019"}, // 8 Visible 版/Verizon 版
  326. {"OnePlus", "IN2020"}, // 8 Pro 全网通版
  327. {"OnePlus", "IN2021"}, // 8 Pro 印度版
  328. {"OnePlus", "IN2023"}, // 8 Pro 欧洲版
  329. {"OnePlus", "IN2025"}, // 8 Pro 北美版/国际版
  330. {"OnePlus", "IV2201"}, // Nord CE 2 印度版
  331. {"OnePlus", "KB2000"}, // 8T 全网通版
  332. {"OnePlus", "KB2001"}, // 8T 印度版
  333. {"OnePlus", "KB2003"}, // 8T 欧洲版
  334. {"OnePlus", "KB2005"}, // 8T 北美版/国际版
  335. {"OnePlus", "KB2007"}, // 8T+ T-Mobile 版
  336. {"OnePlus", "LE2100"}, // 9R 全网通版
  337. {"OnePlus", "LE2101"}, // 9R 印度版
  338. {"OnePlus", "LE2110"}, // 9 全网通版
  339. {"OnePlus", "LE2111"}, // 9 印度版
  340. {"OnePlus", "LE2113"}, // 9 欧洲版
  341. {"OnePlus", "LE2115"}, // 9 北美版/国际版
  342. {"OnePlus", "LE2117"}, // 9 T-Mobile 版
  343. {"OnePlus", "LE2119"}, // 9 Verzion 版
  344. {"OnePlus", "LE2120"}, // 9 Pro 全网通版
  345. {"OnePlus", "LE2121"}, // 9 Pro 印度版
  346. {"OnePlus", "LE2123"}, // 9 Pro 欧洲版
  347. {"OnePlus", "LE2125"}, // 9 Pro 北美版/国际版
  348. {"OnePlus", "LE2127"}, // 9 Pro T-Mobile 版
  349. {"OnePlus", "MT2110"}, // 9RT 全网通版
  350. {"OnePlus", "MT2111"}, // 9RT 印度版
  351. {"OnePlus", "NE2210"}, // 10 Pro 全网通版
  352. {"OnePlus", "NE2211"}, // 10 Pro 印度版
  353. {"OnePlus", "NE2213"}, // 10 Pro 欧洲版/国际版
  354. {"OnePlus", "NE2215"}, // 10 Pro 北美版
  355. {"OnePlus", "NE2217"}, // 10 Pro T-Mobile 版
  356. {"OnePlus", "PGKM10"}, // Ace 全网通版
  357. {"OnePlus", "PGP110"}, // Ace Pro 全网通版
  358. {"OnePlus", "PGZ110"}, // Ace 竞速版 全网通版
  359. {"OnePlus", "PHB110"}, // 11 全网通版
  360. {"OnePlus", "PHK110"}, // Ace 2 全网通版
  361. {"OnePlus", "PHP110"}, // Ace 2V 全网通版
  362. {"OnePlus", "PJA110"}, // Ace 2 Pro 全网通版
  363. {"OnePlus", "PJD110"}, // 12 全网通版
  364. {"OnePlus", "PJE110"}, // Ace 3 全网通版
  365. {"OnePlus", "PJF110"}, // Ace 3V 全网通版
  366. {"Samsung", "PJF110"}, // Ace 3V 全网通版
  367. {"Samsung", "SM-G7810"}, // Galaxy S20 FE 5G
  368. {"Samsung", "SM-G9730"}, // Galaxy S10 全网通版
  369. {"Samsung", "SM-G9738"}, // Galaxy S10 4G+
  370. {"Samsung", "SM-G9750"}, // Galaxy S10+ 全网通版
  371. {"Samsung", "SM-G9758"}, // Galaxy S10+ 4G+
  372. {"Samsung", "SM-G9810"}, // Galaxy S20 5G
  373. {"Samsung", "SM-G9860"}, // Galaxy S20+ 5G
  374. {"Samsung", "SM-G9880"}, // Galaxy S20 Ultra 5G
  375. {"Samsung", "SM-G9900"}, // Galaxy S21 FE 5G
  376. {"Samsung", "SM-G9910"}, // Galaxy S21 5G
  377. {"Samsung", "SM-G9960"}, // Galaxy S21+ 5G
  378. {"Samsung", "SM-G9980"}, // Galaxy S21 Ultra 5G
  379. {"Samsung", "SM-S7110"}, // Galaxy S23 FE
  380. {"Samsung", "SM-S9010"}, // Galaxy S22
  381. {"Samsung", "SM-S9060"}, // Galaxy S22+
  382. {"Samsung", "SM-S9080"}, // Galaxy S22 Ultra
  383. {"Samsung", "SM-S9110"}, // Galaxy S23
  384. {"Samsung", "SM-S9160"}, // Galaxy S23+
  385. {"Samsung", "SM-S9180"}, // Galaxy S23 Ultra
  386. {"Samsung", "SM-S9210"}, // Galaxy S24
  387. {"Samsung", "SM-S9260"}, // Galaxy S24+
  388. {"Samsung", "SM-S9280"}, // Galaxy S24 Ultra
  389. {"Samsung", "SM-N9700"}, // Galaxy Note10
  390. {"Samsung", "SM-N9760"}, // Galaxy Note10+ 5G
  391. {"Samsung", "SM-N9810"}, // Galaxy Note20 5G
  392. {"Samsung", "SM-N9860"}, // Galaxy Note20 Ultra 5G
  393. {"Xiaomi", "2107113SG"}, // Xiaomi 11T Pro 国际版
  394. {"Xiaomi", "2107113SI"}, // Xiaomi 11T Pro 印度版
  395. {"Xiaomi", "2107113SR"}, // Xiaomi 11T Pro 日本版
  396. {"Xiaomi", "2107119DC"}, // Xiaomi 11 青春活力版 国行版
  397. {"Xiaomi", "21081111RG"}, // Xiaomi 11T 国际版
  398. {"Xiaomi", "21091116I"}, // Xiaomi 11i 印度版
  399. {"Xiaomi", "21091116UI"}, // Xiaomi 11i HyperCharge 印度版
  400. {"Xiaomi", "2109119DG"}, // Xiaomi 11 Lite 5G NE 国际版
  401. {"Xiaomi", "2109119DI"}, // Xiaomi 11 Lite NE 5G 印度版
  402. {"Xiaomi", "2112123AC"}, // Xiaomi 12X 国行版
  403. {"Xiaomi", "2112123AG"}, // Xiaomi 12X 国际版
  404. {"Xiaomi", "2201122C"}, // Xiaomi 12 Pro 国行版
  405. {"Xiaomi", "2201122G"}, // Xiaomi 12 Pro 国际版
  406. {"Xiaomi", "2201123C"}, // Xiaomi 12 国行版
  407. {"Xiaomi", "2201123G"}, // Xiaomi 12 国际版
  408. {"Xiaomi", "2203121C"}, // Xiaomi 12S Ultra
  409. {"Xiaomi", "2203129G"}, // Xiaomi 12 Lite 国际版
  410. {"Xiaomi", "2203129I"}, // Xiaomi 12 Lite 印度版
  411. {"Xiaomi", "2206122SC"}, // Xiaomi 12S Pro
  412. {"Xiaomi", "2206123SC"}, // Xiaomi 12S
  413. {"Xiaomi", "22071212AG"}, // Xiaomi 12T 国际版
  414. {"Xiaomi", "2207122MC"}, // Xiaomi 12 Pro 天玑版
  415. {"Xiaomi", "22081212R"}, // Xiaomi 12T Pro 日本版 (SIM Free)
  416. {"Xiaomi", "22200414R"}, // Xiaomi 12T Pro 日本版 (SIM Free)
  417. {"Xiaomi", "22081212UG"}, // Xiaomi 12T Pro 国际版
  418. {"Xiaomi", "2210129SG"}, // Xiaomi 13 Lite 国际版
  419. {"Xiaomi", "2210132C"}, // Xiaomi 13 Pro 国行版
  420. {"Xiaomi", "2210132G"}, // Xiaomi 13 Pro 国际版
  421. {"Xiaomi", "2211133C"}, // Xiaomi 13 国行版
  422. {"Xiaomi", "2211133G"}, // Xiaomi 13 国际版
  423. {"Xiaomi", "2304FPN6DC"}, // Xiaomi 13 Ultra 国行版
  424. {"Xiaomi", "2304FPN6DG"}, // Xiaomi 13 Ultra 国际版
  425. {"Xiaomi", "2306EPN60G"}, // Xiaomi 13T 国际版
  426. {"Xiaomi", "2306EPN60R"}, // Xiaomi 13T 日本版 (SIM Free)
  427. {"Xiaomi", "23078PND5G"}, // Xiaomi 13T Pro 国际版
  428. {"Xiaomi", "23088PND5R"}, // Xiaomi 13T Pro 日本版 (SIM Free)
  429. {"Xiaomi", "23116PN5BC"}, // Xiaomi 14 Pro / Xiaomi 14 Pro 钛金属版
  430. {"Xiaomi", "2311BPN23C"}, // Xiaomi 14 Pro 钛金属版 (卫星通讯)
  431. {"Xiaomi", "23127PN0CC"}, // Xiaomi 14 国行版
  432. {"Xiaomi", "23127PN0CG"}, // Xiaomi 14 国际版
  433. {"Xiaomi", "24030PN60G"}, // Xiaomi 14 Ultra 国际版
  434. {"Xiaomi", "24031PN0DC"}, // Xiaomi 14 Ultra 国行版
  435. {"Xiaomi", "A201XM"}, // Xiaomi 12T Pro 日本版 (SoftBank)
  436. {"Xiaomi", "A301XM"}, // Xiaomi 13T Pro 日本版 (SoftBank)
  437. {"Xiaomi", "M2001J1E"}, // 小米 10 Pro 国行版
  438. {"Xiaomi", "M2001J1C"}, // 小米 10 Pro 国行版
  439. {"Xiaomi", "M2001J1G"}, // 小米 10 Pro 国际版
  440. {"Xiaomi", "M2001J2E"}, // 小米 10 国行版
  441. {"Xiaomi", "M2001J2C"}, // 小米 10 国行版
  442. {"Xiaomi", "M2001J2G"}, // 小米 10 国际版
  443. {"Xiaomi", "M2001J2I"}, // 小米 10 印度版
  444. {"Xiaomi", "M2002J9E"}, // 小米 10 青春版 国行版
  445. {"Xiaomi", "M2002J9G"}, // 小米 10 Lite 国际版
  446. {"Xiaomi", "M2002J9R"}, // 小米 10 Lite 日本版 (KDDI)
  447. {"Xiaomi", "XIG01"}, // 小米 10 Lite 日本版 (KDDI)
  448. {"Xiaomi", "M2002J9S"}, // 小米 10 Lite 韩国版
  449. {"Xiaomi", "M2007J17G"}, // 小米 10T Lite 国际版
  450. {"Xiaomi", "M2007J17I"}, // 小米 10i 印度版
  451. {"Xiaomi", "M2007J1SC"}, // 小米 10 至尊纪念版
  452. {"Xiaomi", "M2007J3SG"}, // 小米 10T Pro 国际版
  453. {"Xiaomi", "M2007J3SI"}, // 小米 10T Pro 印度版
  454. {"Xiaomi", "M2007J3SP"}, // 小米 10T 印度版
  455. {"Xiaomi", "M2007J3SY"}, // 小米 10T 国际版
  456. {"Xiaomi", "M2011K2C"}, // 小米 11 国行版
  457. {"Xiaomi", "M2011K2G"}, // 小米 11 国际版
  458. {"Xiaomi", "M2012K11AI"}, // 小米 11X 印度版
  459. {"Xiaomi", "M2012K11G"}, // 小米 11i 国际版
  460. {"Xiaomi", "M2012K11I"}, // 小米 11X Pro 印度版
  461. {"Xiaomi", "M2101K9AG"}, // 小米 11 Lite 4G 国际版
  462. {"Xiaomi", "M2101K9AI"}, // 小米 11 Lite 4G 印度版
  463. {"Xiaomi", "M2101K9C"}, // 小米 11 青春版 国行版
  464. {"Xiaomi", "M2101K9G"}, // 小米 11 Lite 5G 国际版
  465. {"Xiaomi", "M2101K9R"}, // 小米 11 Lite 5G 日本版
  466. {"Xiaomi", "M2102J2SC"}, // 小米 10S
  467. {"Xiaomi", "M2102K1AC"}, // 小米 11 Pro
  468. {"Xiaomi", "M2102K1C"}, // 小米 11 Ultra 国行版
  469. {"Xiaomi", "M2102K1G"}, // 小米 11 Ultra 国际版
  470. {"Xiaomi", "XIG04"}, // Xiaomi 13T 日本版 (KDDI)
  471. }
  472. type Device struct {
  473. Brand string
  474. Model string
  475. }
  476. func AndroidDevice() Device {
  477. j_item := m_devices[Intn(len(m_devices))]
  478. return Device{
  479. j_item[0],
  480. j_item[1],
  481. }
  482. }