├── README.md └── tools └── IP └── QQWry ├── README.md ├── ip.list ├── ip.txt.xz ├── problem_ip_record.txt ├── qqwry.dat.xz └── qqwry.py /README.md: -------------------------------------------------------------------------------- 1 | # **!!!YLinux项目暂停!!!** 2 | 3 | - 博客转 [plus.ooclab.com](https://plus.ooclab.com) 4 | - Web 程序转 [pyeva](https://github.com/ooclab/eva) 5 | - 当前项目名 [OOCLAB](https://github.com/ooclab) 6 | 7 | YLinux Public 8 | ======================== 9 | 10 | YLinux 社区公开项目 11 | 12 | 13 | # 联系我们 14 | 15 | - 社区: https://ylinux.org 16 | - 邮件: info@ylinux.org 17 | - QQ群: Linux与云计算 232629450 18 | 19 | ![扫描二维码](http://ylinux.org/static/img/join-qq-qun232629450.png) 20 | 21 | 22 | -------------------------------------------------------------------------------- /tools/IP/QQWry/README.md: -------------------------------------------------------------------------------- 1 | 纯真IP库 2 | ======================== 3 | 4 | 纯真IP库的研究学习. 5 | 6 | # 在线资源 7 | 8 | ## 相关帖子 9 | 10 | - http://linuxtoy.org/archives/python-ip.html 11 | - https://linuxtoy.org/archives/python-qqwry.html 12 | - http://ylinux.org/blog/article/106 13 | 14 | ## qqwry.dat 下载 15 | 16 | - http://www.cz88.net/ (官网) 17 | - https://github.com/jianlee/ylinux/blob/master/tools/IP/QQWry/qqwry.dat.xz 18 | 19 | ## 纯真IP库 txt 格式(使用本程序dump) 20 | 21 | - https://github.com/jianlee/ylinux/blob/master/tools/IP/QQWry/ip.txt.xz 22 | 23 | Changelog 24 | ================= 25 | 26 | 2014年8月11日 27 | ----------------- 28 | 29 | 根据LinuxToy网友依云 ( http://lilydjwg.is-programmer.com/ ) 建议: 30 | https://linuxtoy.org/archives/python-qqwry.html#comment-331128 31 | 32 | 更新: 33 | 34 | 1. 显示版本信息 35 | 2. 增加自动更新纯真IP数据库功能 36 | 3. 使用 mmap 操作数据库文件对象,效率提升一倍: 37 | https://linuxtoy.org/archives/python-qqwry.html#comment-331220 38 | 39 | 2014年8月9日 重写程序 40 | ---------------------------- 41 | 42 | 1. 实现完整查询纯真IP库. 43 | 2. 可完整dump出所有ip记录,并与纯真官方的查询程序比对正确. 44 | 45 | 2009年5月29日 46 | -------------------- 47 | 48 | ### 1. 工具下面网友的建议,修改"o += len(cArea) + 1" 49 | 50 | http://linuxtoy.org/archives/python-ip.html#comment-113960 51 | 因为这个时候我已经把得到的字符串变成utf-8编码了,长度会有变化! 52 | 53 | 54 | 联系我们 55 | ============ 56 | 57 | - 社区: https://ylinux.org 58 | - 邮件: info@ylinux.org 59 | - QQ群: Linux与云计算 232629450 60 | 61 | ![扫描二维码](http://ylinux.org/static/img/join-qq-qun232629450.png) 62 | 63 | 64 | -------------------------------------------------------------------------------- /tools/IP/QQWry/ip.list: -------------------------------------------------------------------------------- 1 | 101.1.25.145 2 | 101.199.108.50 3 | 101.199.108.51 4 | 101.199.108.55 5 | 101.226.102.97 6 | 101.226.166.195 7 | 101.226.166.196 8 | 101.226.166.197 9 | 101.226.166.198 10 | 101.226.166.199 11 | 101.226.166.200 12 | 101.226.166.201 13 | 101.226.166.202 14 | 101.226.166.203 15 | 101.226.166.204 16 | 101.226.166.205 17 | 101.226.166.206 18 | 101.226.166.207 19 | 101.226.166.208 20 | 101.226.166.209 21 | 101.226.166.210 22 | 101.226.166.211 23 | 101.226.166.212 24 | 101.226.166.213 25 | 101.226.166.214 26 | 101.226.166.216 27 | 101.226.166.217 28 | 101.226.166.218 29 | 101.226.166.219 30 | 101.226.166.220 31 | 101.226.166.221 32 | 101.226.166.222 33 | 101.226.166.223 34 | 101.226.166.224 35 | 101.226.166.225 36 | 101.226.166.226 37 | 101.226.166.227 38 | 101.226.166.228 39 | 101.226.166.229 40 | 101.226.166.230 41 | 101.226.166.231 42 | 101.226.166.232 43 | 101.226.166.233 44 | 101.226.166.234 45 | 101.226.166.235 46 | 101.226.166.236 47 | 101.226.166.237 48 | 101.226.166.238 49 | 101.226.166.239 50 | 101.226.166.240 51 | 101.226.166.241 52 | 101.226.166.242 53 | 101.226.166.247 54 | 101.226.166.250 55 | 101.226.166.251 56 | 101.226.166.252 57 | 101.226.166.253 58 | 101.226.166.254 59 | 101.226.167.195 60 | 101.226.167.196 61 | 101.226.167.197 62 | 101.226.167.198 63 | 101.226.167.199 64 | 101.226.167.200 65 | 101.226.167.201 66 | 101.226.167.202 67 | 101.226.167.203 68 | 101.226.167.204 69 | 101.226.167.205 70 | 101.226.167.206 71 | 101.226.167.207 72 | 101.226.167.208 73 | 101.226.167.209 74 | 101.226.167.210 75 | 101.226.167.211 76 | 101.226.167.212 77 | 101.226.167.213 78 | 101.226.167.214 79 | 101.226.167.223 80 | 101.226.167.224 81 | 101.226.167.225 82 | 101.226.167.226 83 | 101.226.167.227 84 | 101.226.167.228 85 | 101.226.167.229 86 | 101.226.167.230 87 | 101.226.167.231 88 | 101.226.167.232 89 | 101.226.167.233 90 | 101.226.167.234 91 | 101.226.167.235 92 | 101.226.167.236 93 | 101.226.167.237 94 | 101.226.167.238 95 | 101.226.167.239 96 | 101.226.167.240 97 | 101.226.167.241 98 | 101.226.167.242 99 | 101.226.167.243 100 | 101.226.167.244 101 | 101.226.167.245 102 | 101.226.167.246 103 | 101.226.167.247 104 | 101.226.167.248 105 | 101.226.167.249 106 | 101.226.167.250 107 | 101.226.167.251 108 | 101.226.167.252 109 | 101.226.167.253 110 | 101.226.167.254 111 | 101.226.168.195 112 | 101.226.168.196 113 | 101.226.168.197 114 | 101.226.168.198 115 | 101.226.168.199 116 | 101.226.168.200 117 | 101.226.168.201 118 | 101.226.168.202 119 | 101.226.168.203 120 | 101.226.168.204 121 | 101.226.168.205 122 | 101.226.168.206 123 | 101.226.168.207 124 | 101.226.168.208 125 | 101.226.168.209 126 | 101.226.168.210 127 | 101.226.168.211 128 | 101.226.168.212 129 | 101.226.168.213 130 | 101.226.168.214 131 | 101.226.168.215 132 | 101.226.168.216 133 | 101.226.168.217 134 | 101.226.168.218 135 | 101.226.168.219 136 | 101.226.168.220 137 | 101.226.168.223 138 | 101.226.168.228 139 | 101.226.168.229 140 | 101.226.168.230 141 | 101.226.168.231 142 | 101.226.168.232 143 | 101.226.168.233 144 | 101.226.168.234 145 | 101.226.168.235 146 | 101.226.168.236 147 | 101.226.168.237 148 | 101.226.168.238 149 | 101.226.168.239 150 | 101.226.168.240 151 | 101.226.168.241 152 | 101.226.168.242 153 | 101.226.168.243 154 | 101.226.168.244 155 | 101.226.168.245 156 | 101.226.168.246 157 | 101.226.168.247 158 | 101.226.168.248 159 | 101.226.168.249 160 | 101.226.168.250 161 | 101.226.168.251 162 | 101.226.168.252 163 | 101.226.168.253 164 | 101.226.168.254 165 | 101.226.169.195 166 | 101.226.169.196 167 | 101.226.169.197 168 | 101.226.169.198 169 | 101.226.169.199 170 | 101.226.169.200 171 | 101.226.169.201 172 | 101.226.169.202 173 | 101.226.169.203 174 | 101.226.169.204 175 | 101.226.169.205 176 | 101.226.169.206 177 | 101.226.169.207 178 | 101.226.169.208 179 | 101.226.169.209 180 | 101.226.169.210 181 | 101.226.169.211 182 | 101.226.169.212 183 | 101.226.169.213 184 | 101.226.169.214 185 | 101.226.169.215 186 | 101.226.169.216 187 | 101.226.169.217 188 | 101.226.169.218 189 | 101.226.169.219 190 | 101.226.169.220 191 | 101.226.169.221 192 | 101.226.169.222 193 | 101.226.169.223 194 | 101.226.169.224 195 | 101.226.169.225 196 | 101.226.169.226 197 | 101.226.169.227 198 | 101.226.169.228 199 | 101.226.169.229 200 | 101.226.169.230 201 | 101.226.33.171 202 | 101.226.33.179 203 | 101.226.33.182 204 | 101.226.33.187 205 | 101.226.33.188 206 | 101.226.33.201 207 | 101.226.33.208 208 | 101.226.33.219 209 | 101.226.33.221 210 | 101.226.33.226 211 | 101.226.33.227 212 | 101.226.33.238 213 | 101.226.61.184 214 | 101.226.65.102 215 | 101.226.65.107 216 | 101.226.65.108 217 | 101.226.66.176 218 | 101.226.66.177 219 | 101.226.66.178 220 | 101.226.66.179 221 | 101.226.66.181 222 | 101.226.89.119 223 | 101.226.89.123 224 | 101.226.89.69 225 | 101.36.72.39 226 | 101.36.72.42 227 | 101.36.72.45 228 | 101.36.72.49 229 | 101.36.72.51 230 | 101.36.72.54 231 | 101.36.72.55 232 | 101.6.240.240 233 | 101.66.31.0 234 | 101.95.29.2 235 | 103.24.2.69 236 | 103.246.38.196 237 | 104.131.249.202 238 | 106.120.110.180 239 | 106.120.173.96 240 | 106.125.132.108 241 | 106.185.27.226 242 | 106.185.28.80 243 | 106.186.24.87 244 | 106.37.173.131 245 | 106.37.233.38 246 | 106.38.223.4 247 | 106.39.255.170 248 | 106.57.53.74 249 | 107.178.200.195 250 | 107.178.200.196 251 | 107.178.200.202 252 | 107.178.200.218 253 | 107.178.200.219 254 | 107.178.200.220 255 | 107.178.200.223 256 | 107.182.164.194 257 | 107.191.116.128 258 | 109.120.157.179 259 | 110.153.180.67 260 | 110.153.186.6 261 | 110.166.165.38 262 | 110.166.217.229 263 | 110.166.219.7 264 | 110.167.123.100 265 | 110.167.223.6 266 | 110.52.145.11 267 | 110.52.255.1 268 | 111.161.1.103 269 | 111.161.1.113 270 | 111.161.1.115 271 | 111.161.1.39 272 | 111.161.1.42 273 | 111.161.1.45 274 | 111.161.1.52 275 | 111.161.1.54 276 | 111.161.1.55 277 | 111.161.23.129 278 | 111.161.28.38 279 | 111.161.96.147 280 | 111.161.97.49 281 | 111.20.179.26 282 | 111.205.214.65 283 | 111.205.49.8 284 | 111.227.4.236 285 | 111.85.3.82 286 | 111.85.83.10 287 | 112.113.159.99 288 | 112.132.172.165 289 | 112.193.138.35 290 | 112.215.66.70 291 | 112.215.66.71 292 | 112.215.66.72 293 | 112.215.66.78 294 | 112.215.66.82 295 | 112.227.40.93 296 | 112.64.235.245 297 | 112.64.235.250 298 | 112.64.235.251 299 | 112.64.235.252 300 | 112.65.193.14 301 | 112.65.193.15 302 | 112.91.113.178 303 | 112.91.70.78 304 | 112.95.152.130 305 | 112.95.26.244 306 | 113.105.139.183 307 | 113.108.127.11 308 | 113.111.134.255 309 | 113.111.155.201 310 | 113.120.215.234 311 | 113.13.196.15 312 | 113.140.11.133 313 | 113.206.140.7 314 | 113.246.144.76 315 | 113.247.54.142 316 | 113.63.149.168 317 | 114.112.72.98 318 | 114.112.74.44 319 | 114.132.245.47 320 | 114.246.76.154 321 | 114.247.110.8 322 | 114.247.236.222 323 | 114.248.192.84 324 | 114.251.188.99 325 | 114.255.3.131 326 | 114.255.40.4 327 | 114.255.44.132 328 | 114.44.18.150 329 | 114.80.215.216 330 | 115.182.51.136 331 | 115.183.15.254 332 | 115.195.173.168 333 | 115.195.49.117 334 | 115.239.212.11 335 | 115.239.212.133 336 | 115.239.212.136 337 | 115.239.212.137 338 | 115.239.212.197 339 | 115.239.212.4 340 | 115.239.212.68 341 | 115.239.212.70 342 | 115.239.212.71 343 | 115.239.212.9 344 | 115.239.248.56 345 | 116.113.166.144 346 | 116.113.47.38 347 | 116.224.234.141 348 | 116.226.82.102 349 | 116.228.187.51 350 | 116.231.109.66 351 | 116.231.135.134 352 | 116.236.0.130 353 | 116.247.117.42 354 | 116.55.232.223 355 | 116.7.222.209 356 | 117.18.73.222 357 | 117.26.141.84 358 | 117.26.192.26 359 | 117.30.215.231 360 | 117.40.171.168 361 | 117.78.13.110 362 | 117.78.13.56 363 | 118.114.130.22 364 | 118.120.16.56 365 | 118.122.238.146 366 | 118.163.30.16 367 | 118.182.77.175 368 | 118.186.156.240 369 | 118.213.191.78 370 | 118.213.242.178 371 | 118.213.69.60 372 | 118.242.35.106 373 | 118.244.255.9 374 | 118.250.159.251 375 | 119.1.208.226 376 | 119.130.185.231 377 | 119.145.14.215 378 | 119.145.14.217 379 | 119.145.14.218 380 | 119.147.146.189 381 | 119.147.146.192 382 | 119.147.146.194 383 | 119.233.199.145 384 | 119.39.233.107 385 | 119.63.193.130 386 | 119.63.193.131 387 | 119.63.193.132 388 | 119.63.193.194 389 | 119.63.193.195 390 | 119.63.193.196 391 | 120.15.5.29 392 | 120.204.200.42 393 | 120.204.201.76 394 | 120.35.54.247 395 | 120.68.47.114 396 | 120.71.191.54 397 | 120.71.199.210 398 | 120.90.153.66 399 | 121.225.112.162 400 | 121.227.35.13 401 | 121.239.84.197 402 | 121.33.190.185 403 | 122.10.26.156 404 | 122.147.152.50 405 | 122.192.32.87 406 | 122.194.13.134 407 | 122.200.87.131 408 | 122.96.154.34 409 | 123.116.42.232 410 | 123.122.203.173 411 | 123.125.71.100 412 | 123.125.71.101 413 | 123.125.71.102 414 | 123.125.71.103 415 | 123.125.71.104 416 | 123.125.71.105 417 | 123.125.71.106 418 | 123.125.71.107 419 | 123.125.71.108 420 | 123.125.71.109 421 | 123.125.71.110 422 | 123.125.71.111 423 | 123.125.71.112 424 | 123.125.71.113 425 | 123.125.71.114 426 | 123.125.71.115 427 | 123.125.71.116 428 | 123.125.71.117 429 | 123.125.71.12 430 | 123.125.71.13 431 | 123.125.71.14 432 | 123.125.71.15 433 | 123.125.71.16 434 | 123.125.71.17 435 | 123.125.71.18 436 | 123.125.71.19 437 | 123.125.71.20 438 | 123.125.71.21 439 | 123.125.71.24 440 | 123.125.71.25 441 | 123.125.71.36 442 | 123.125.71.38 443 | 123.125.71.39 444 | 123.125.71.40 445 | 123.125.71.41 446 | 123.125.71.42 447 | 123.125.71.43 448 | 123.125.71.44 449 | 123.125.71.45 450 | 123.125.71.46 451 | 123.125.71.47 452 | 123.125.71.48 453 | 123.125.71.49 454 | 123.125.71.50 455 | 123.125.71.51 456 | 123.125.71.52 457 | 123.125.71.53 458 | 123.125.71.54 459 | 123.125.71.55 460 | 123.125.71.56 461 | 123.125.71.57 462 | 123.125.71.58 463 | 123.125.71.59 464 | 123.125.71.60 465 | 123.125.71.69 466 | 123.125.71.70 467 | 123.125.71.71 468 | 123.125.71.72 469 | 123.125.71.73 470 | 123.125.71.74 471 | 123.125.71.75 472 | 123.125.71.76 473 | 123.125.71.77 474 | 123.125.71.78 475 | 123.125.71.79 476 | 123.125.71.80 477 | 123.125.71.81 478 | 123.125.71.82 479 | 123.125.71.83 480 | 123.125.71.84 481 | 123.125.71.85 482 | 123.125.71.86 483 | 123.125.71.87 484 | 123.125.71.88 485 | 123.125.71.89 486 | 123.125.71.90 487 | 123.125.71.91 488 | 123.125.71.92 489 | 123.125.71.94 490 | 123.125.71.95 491 | 123.125.71.96 492 | 123.125.71.97 493 | 123.125.71.98 494 | 123.125.71.99 495 | 123.126.110.26 496 | 123.126.23.122 497 | 123.139.175.253 498 | 123.151.149.222 499 | 123.152.187.226 500 | 123.158.37.9 501 | 123.185.167.250 502 | 123.199.128.66 503 | 123.204.185.199 504 | 123.245.158.162 505 | 124.118.136.10 506 | 124.118.136.62 507 | 124.118.180.49 508 | 124.119.165.35 509 | 124.119.54.127 510 | 124.162.226.147 511 | 124.207.141.114 512 | 124.207.216.226 513 | 124.224.217.184 514 | 124.65.80.202 515 | 124.67.109.27 516 | 124.67.74.165 517 | 124.77.97.45 518 | 124.88.214.247 519 | 125.112.81.122 520 | 125.120.73.139 521 | 125.120.74.6 522 | 125.122.194.62 523 | 125.39.18.225 524 | 125.69.149.138 525 | 125.72.153.154 526 | 125.72.253.89 527 | 125.72.39.78 528 | 128.199.137.27 529 | 129.42.208.182 530 | 131.253.24.10 531 | 131.253.24.13 532 | 131.253.24.15 533 | 131.253.24.6 534 | 131.253.24.8 535 | 131.253.24.9 536 | 131.253.36.205 537 | 134.249.49.148 538 | 136.206.1.17 539 | 136.206.1.20 540 | 137.110.244.137 541 | 138.91.73.109 542 | 140.206.201.150 543 | 140.206.73.179 544 | 140.207.198.116 545 | 140.207.54.180 546 | 140.207.55.80 547 | 140.240.132.13 548 | 14.121.166.146 549 | 14.134.191.34 550 | 14.135.113.20 551 | 14.17.18.143 552 | 14.17.22.31 553 | 14.208.112.168 554 | 14.208.113.103 555 | 14.208.115.246 556 | 14.208.119.153 557 | 14.208.122.50 558 | 14.208.123.63 559 | 14.208.126.78 560 | 14.208.127.119 561 | 14.208.127.58 562 | 14.208.96.127 563 | 14.208.99.184 564 | 142.4.209.182 565 | 142.4.211.40 566 | 142.54.172.210 567 | 144.76.224.80 568 | 144.76.95.231 569 | 144.76.95.232 570 | 144.76.95.39 571 | 144.76.97.177 572 | 148.251.123.205 573 | 148.251.124.173 574 | 148.251.23.114 575 | 150.70.75.212 576 | 150.70.97.99 577 | 155.69.2.10 578 | 157.55.39.1 579 | 157.55.39.164 580 | 157.55.39.166 581 | 157.55.39.167 582 | 157.55.39.171 583 | 157.55.39.172 584 | 157.55.39.180 585 | 157.55.39.181 586 | 157.55.39.2 587 | 157.55.39.203 588 | 157.55.39.210 589 | 157.55.39.238 590 | 157.55.39.243 591 | 157.55.39.244 592 | 157.55.39.250 593 | 157.55.39.45 594 | 157.55.39.46 595 | 157.55.39.47 596 | 157.55.39.54 597 | 157.55.39.56 598 | 157.55.39.57 599 | 157.55.39.64 600 | 157.55.39.65 601 | 157.55.39.74 602 | 162.210.196.130 603 | 162.210.196.97 604 | 162.210.196.98 605 | 162.220.58.244 606 | 162.243.170.58 607 | 162.243.238.128 608 | 162.244.13.18 609 | 162.250.101.123 610 | 163.177.69.37 611 | 163.177.69.38 612 | 166.78.177.186 613 | 171.213.60.43 614 | 171.25.204.89 615 | 173.217.233.17 616 | 173.49.24.118 617 | 174.123.47.58 618 | 175.154.46.1 619 | 175.43.45.21 620 | 176.9.242.136 621 | 178.137.129.209 622 | 178.154.211.252 623 | 178.255.215.72 624 | 178.62.37.208 625 | 178.62.47.173 626 | 178.63.49.82 627 | 178.63.75.73 628 | 178.77.126.55 629 | 180.108.81.123 630 | 180.149.143.153 631 | 180.149.143.26 632 | 180.149.143.27 633 | 180.153.114.197 634 | 180.153.161.217 635 | 180.153.161.55 636 | 180.153.163.210 637 | 180.153.185.239 638 | 180.153.187.223 639 | 180.153.188.134 640 | 180.153.188.163 641 | 180.153.188.23 642 | 180.153.188.232 643 | 180.153.188.26 644 | 180.153.188.65 645 | 180.153.188.71 646 | 180.153.198.198 647 | 180.153.198.221 648 | 180.153.198.222 649 | 180.153.198.31 650 | 180.153.198.81 651 | 180.153.201.15 652 | 180.153.205.252 653 | 180.153.206.23 654 | 180.153.206.25 655 | 180.153.206.29 656 | 180.153.206.35 657 | 180.153.214.178 658 | 180.153.214.180 659 | 180.153.214.188 660 | 180.153.214.190 661 | 180.153.214.191 662 | 180.153.214.198 663 | 180.153.236.102 664 | 180.153.236.119 665 | 180.153.236.143 666 | 180.153.236.152 667 | 180.153.236.155 668 | 180.153.236.164 669 | 180.153.236.199 670 | 180.153.236.48 671 | 180.154.236.147 672 | 180.157.49.23 673 | 180.166.231.210 674 | 180.166.52.10 675 | 180.166.52.154 676 | 180.168.117.34 677 | 180.169.32.146 678 | 180.175.168.26 679 | 180.76.5.146 680 | 180.76.5.150 681 | 180.76.5.154 682 | 180.76.5.172 683 | 180.76.5.173 684 | 180.76.5.176 685 | 180.76.5.188 686 | 180.76.5.191 687 | 180.76.5.195 688 | 180.76.5.23 689 | 180.76.5.57 690 | 180.76.5.59 691 | 180.76.5.64 692 | 180.76.5.71 693 | 180.76.5.77 694 | 180.76.6.130 695 | 180.76.6.131 696 | 180.76.6.132 697 | 180.76.6.134 698 | 180.76.6.139 699 | 180.76.6.156 700 | 180.76.6.158 701 | 180.76.6.230 702 | 180.76.6.233 703 | 180.76.6.36 704 | 180.76.6.42 705 | 180.76.6.44 706 | 180.76.6.50 707 | 180.76.6.56 708 | 180.76.6.59 709 | 180.76.6.64 710 | 180.76.6.66 711 | 180.95.183.33 712 | 182.101.214.134 713 | 182.109.248.94 714 | 182.118.20.161 715 | 182.118.20.162 716 | 182.118.20.163 717 | 182.118.20.164 718 | 182.118.20.165 719 | 182.118.20.166 720 | 182.118.20.167 721 | 182.118.20.168 722 | 182.118.20.169 723 | 182.118.20.170 724 | 182.118.20.171 725 | 182.118.20.172 726 | 182.118.20.173 727 | 182.118.20.201 728 | 182.118.20.202 729 | 182.118.20.203 730 | 182.118.20.205 731 | 182.118.20.206 732 | 182.118.20.212 733 | 182.118.20.213 734 | 182.118.20.214 735 | 182.118.20.215 736 | 182.118.20.216 737 | 182.118.20.217 738 | 182.118.20.218 739 | 182.118.20.219 740 | 182.118.20.220 741 | 182.118.20.221 742 | 182.118.20.222 743 | 182.118.20.223 744 | 182.118.20.224 745 | 182.118.20.225 746 | 182.118.20.226 747 | 182.118.20.227 748 | 182.118.20.228 749 | 182.118.20.229 750 | 182.118.20.230 751 | 182.118.20.231 752 | 182.118.20.232 753 | 182.118.20.233 754 | 182.118.20.234 755 | 182.118.20.235 756 | 182.118.20.236 757 | 182.118.20.237 758 | 182.118.20.249 759 | 182.118.20.250 760 | 182.118.20.251 761 | 182.118.20.253 762 | 182.118.20.254 763 | 182.118.21.201 764 | 182.118.21.202 765 | 182.118.21.203 766 | 182.118.21.204 767 | 182.118.21.205 768 | 182.118.21.206 769 | 182.118.21.207 770 | 182.118.21.208 771 | 182.118.21.209 772 | 182.118.21.210 773 | 182.118.21.211 774 | 182.118.21.212 775 | 182.118.21.213 776 | 182.118.21.214 777 | 182.118.21.215 778 | 182.118.21.216 779 | 182.118.21.217 780 | 182.118.21.219 781 | 182.118.21.221 782 | 182.118.21.222 783 | 182.118.21.223 784 | 182.118.21.224 785 | 182.118.21.225 786 | 182.118.21.226 787 | 182.118.21.227 788 | 182.118.21.228 789 | 182.118.21.230 790 | 182.118.21.231 791 | 182.118.21.238 792 | 182.118.21.240 793 | 182.118.21.241 794 | 182.118.21.243 795 | 182.118.21.244 796 | 182.118.21.245 797 | 182.118.21.246 798 | 182.118.21.247 799 | 182.118.21.248 800 | 182.118.21.249 801 | 182.118.21.250 802 | 182.118.21.251 803 | 182.118.21.252 804 | 182.118.21.253 805 | 182.118.21.254 806 | 182.118.22.201 807 | 182.118.22.202 808 | 182.118.22.203 809 | 182.118.22.204 810 | 182.118.22.205 811 | 182.118.22.206 812 | 182.118.22.207 813 | 182.118.22.208 814 | 182.118.22.209 815 | 182.118.22.210 816 | 182.118.22.211 817 | 182.118.22.212 818 | 182.118.22.213 819 | 182.118.22.214 820 | 182.118.22.215 821 | 182.118.22.216 822 | 182.118.22.217 823 | 182.118.22.220 824 | 182.118.22.226 825 | 182.118.22.227 826 | 182.118.22.228 827 | 182.118.22.229 828 | 182.118.22.230 829 | 182.118.25.201 830 | 182.118.25.202 831 | 182.118.25.203 832 | 182.118.25.204 833 | 182.118.25.205 834 | 182.118.25.207 835 | 182.118.25.208 836 | 182.118.25.209 837 | 182.118.25.211 838 | 182.118.25.212 839 | 182.118.25.213 840 | 182.118.25.214 841 | 182.118.25.215 842 | 182.118.25.216 843 | 182.118.25.217 844 | 182.118.25.218 845 | 182.118.25.219 846 | 182.118.25.220 847 | 182.118.25.221 848 | 182.118.25.222 849 | 182.118.25.223 850 | 182.118.25.224 851 | 182.118.25.225 852 | 182.118.25.226 853 | 182.118.25.227 854 | 182.118.25.228 855 | 182.118.25.229 856 | 182.118.25.230 857 | 182.118.25.231 858 | 182.118.25.232 859 | 182.118.25.233 860 | 182.118.25.234 861 | 182.118.25.235 862 | 182.118.25.236 863 | 182.118.25.237 864 | 182.118.25.238 865 | 182.118.25.239 866 | 182.118.25.240 867 | 182.118.25.241 868 | 182.118.25.242 869 | 182.118.25.243 870 | 182.118.25.244 871 | 182.118.25.245 872 | 182.118.44.77 873 | 182.118.45.56 874 | 182.118.53.105 875 | 182.118.53.142 876 | 182.118.53.162 877 | 182.118.53.20 878 | 182.118.53.39 879 | 182.118.55.130 880 | 182.118.55.213 881 | 182.118.60.95 882 | 182.138.171.96 883 | 182.40.28.61 884 | 182.54.14.133 885 | 182.92.253.16 886 | 182.92.3.216 887 | 183.11.133.147 888 | 183.12.155.62 889 | 183.136.190.36 890 | 183.136.190.43 891 | 183.136.190.49 892 | 183.136.190.51 893 | 183.136.190.54 894 | 183.136.190.55 895 | 183.136.190.57 896 | 183.136.190.58 897 | 183.195.232.39 898 | 183.21.68.199 899 | 183.21.70.219 900 | 183.235.251.78 901 | 183.238.191.134 902 | 183.60.1.236 903 | 183.60.212.134 904 | 183.60.213.39 905 | 183.60.215.40 906 | 183.60.243.209 907 | 183.60.243.240 908 | 183.60.243.242 909 | 183.60.244.20 910 | 183.60.70.29 911 | 187.127.203.86 912 | 188.143.232.111 913 | 188.143.232.6 914 | 188.163.3.53 915 | 188.226.179.121 916 | 188.40.120.19 917 | 188.40.249.87 918 | 188.93.144.84 919 | 189.38.80.46 920 | 190.193.117.38 921 | 192.151.152.203 922 | 192.162.19.38 923 | 192.185.82.153 924 | 192.99.1.179 925 | 192.99.141.252 926 | 192.99.16.173 927 | 192.99.201.184 928 | 192.99.39.76 929 | 192.99.8.227 930 | 193.150.120.14 931 | 195.2.240.103 932 | 198.100.148.142 933 | 198.105.212.244 934 | 198.143.158.34 935 | 198.178.124.47 936 | 198.204.239.115 937 | 198.20.69.90 938 | 198.27.82.147 939 | 198.50.28.186 940 | 199.16.156.125 941 | 199.217.119.4 942 | 199.30.20.0 943 | 199.30.20.1 944 | 199.30.20.2 945 | 199.30.20.4 946 | 199.58.86.211 947 | 199.83.88.155 948 | 201.67.175.229 949 | 201.68.15.247 950 | 202.100.228.4 951 | 202.102.117.18 952 | 202.104.68.226 953 | 202.108.130.178 954 | 202.141.250.98 955 | 202.154.57.188 956 | 202.46.48.12 957 | 202.46.48.27 958 | 202.46.50.12 959 | 202.46.51.124 960 | 202.46.52.26 961 | 202.46.53.30 962 | 202.46.53.32 963 | 202.46.55.33 964 | 202.46.55.53 965 | 202.46.55.56 966 | 202.46.56.40 967 | 202.46.57.69 968 | 202.46.57.83 969 | 202.46.58.21 970 | 202.46.60.62 971 | 202.46.62.205 972 | 202.46.63.121 973 | 202.46.63.40 974 | 202.46.63.41 975 | 202.46.63.43 976 | 202.46.63.91 977 | 202.70.4.245 978 | 203.110.175.179 979 | 203.175.172.123 980 | 203.189.105.207 981 | 207.241.237.102 982 | 207.241.237.230 983 | 207.241.237.234 984 | 207.241.237.238 985 | 207.46.13.1 986 | 207.46.13.102 987 | 207.46.13.122 988 | 207.46.13.31 989 | 208.115.111.75 990 | 208.115.113.91 991 | 208.43.225.84 992 | 208.43.225.85 993 | 208.43.251.180 994 | 208.88.225.147 995 | 209.141.63.224 996 | 209.190.1.133 997 | 210.13.74.221 998 | 210.211.107.150 999 | 210.51.19.2 1000 | 210.78.137.66 1001 | 211.106.159.196 1002 | 211.162.34.199 1003 | 211.79.198.240 1004 | 211.93.5.138 1005 | 211.94.161.81 1006 | 212.117.158.94 1007 | 212.227.119.161 1008 | 213.238.175.71 1009 | 216.107.155.114 1010 | 217.146.251.22 1011 | 217.23.11.15 1012 | 217.231.168.186 1013 | 217.23.7.130 1014 | 217.69.133.192 1015 | 217.69.133.28 1016 | 217.69.133.29 1017 | 217.69.133.3 1018 | 217.69.133.30 1019 | 217.69.133.31 1020 | 217.69.133.59 1021 | 217.69.133.72 1022 | 217.69.133.9 1023 | 217.69.143.65 1024 | 217.69.143.71 1025 | 218.106.96.19 1026 | 218.107.55.254 1027 | 218.17.157.44 1028 | 218.188.93.140 1029 | 218.213.29.161 1030 | 218.21.40.35 1031 | 218.2.216.13 1032 | 218.241.198.114 1033 | 218.26.191.34 1034 | 218.26.200.19 1035 | 218.30.103.96 1036 | 218.30.103.97 1037 | 218.30.118.102 1038 | 218.30.180.178 1039 | 218.31.181.198 1040 | 218.4.63.155 1041 | 218.61.235.214 1042 | 218.65.89.242 1043 | 218.6.71.242 1044 | 218.69.12.118 1045 | 218.75.123.165 1046 | 218.80.192.236 1047 | 218.86.107.66 1048 | 218.92.120.242 1049 | 218.93.239.141 1050 | 218.94.96.139 1051 | 218.95.229.142 1052 | 218.95.242.6 1053 | 219.143.223.65 1054 | 219.143.94.66 1055 | 219.145.135.168 1056 | 219.151.34.17 1057 | 220.166.208.55 1058 | 220.167.166.228 1059 | 220.167.167.2 1060 | 220.168.30.116 1061 | 220.179.251.130 1062 | 220.181.108.100 1063 | 220.181.108.101 1064 | 220.181.108.102 1065 | 220.181.108.103 1066 | 220.181.108.104 1067 | 220.181.108.105 1068 | 220.181.108.106 1069 | 220.181.108.107 1070 | 220.181.108.108 1071 | 220.181.108.109 1072 | 220.181.108.110 1073 | 220.181.108.111 1074 | 220.181.108.112 1075 | 220.181.108.113 1076 | 220.181.108.114 1077 | 220.181.108.115 1078 | 220.181.108.116 1079 | 220.181.108.117 1080 | 220.181.108.118 1081 | 220.181.108.119 1082 | 220.181.108.120 1083 | 220.181.108.121 1084 | 220.181.108.122 1085 | 220.181.108.139 1086 | 220.181.108.140 1087 | 220.181.108.141 1088 | 220.181.108.142 1089 | 220.181.108.143 1090 | 220.181.108.144 1091 | 220.181.108.145 1092 | 220.181.108.146 1093 | 220.181.108.147 1094 | 220.181.108.148 1095 | 220.181.108.149 1096 | 220.181.108.150 1097 | 220.181.108.151 1098 | 220.181.108.152 1099 | 220.181.108.153 1100 | 220.181.108.154 1101 | 220.181.108.155 1102 | 220.181.108.156 1103 | 220.181.108.157 1104 | 220.181.108.158 1105 | 220.181.108.159 1106 | 220.181.108.160 1107 | 220.181.108.161 1108 | 220.181.108.162 1109 | 220.181.108.165 1110 | 220.181.108.166 1111 | 220.181.108.167 1112 | 220.181.108.168 1113 | 220.181.108.169 1114 | 220.181.108.170 1115 | 220.181.108.171 1116 | 220.181.108.172 1117 | 220.181.108.173 1118 | 220.181.108.174 1119 | 220.181.108.175 1120 | 220.181.108.176 1121 | 220.181.108.177 1122 | 220.181.108.178 1123 | 220.181.108.179 1124 | 220.181.108.180 1125 | 220.181.108.181 1126 | 220.181.108.182 1127 | 220.181.108.183 1128 | 220.181.108.184 1129 | 220.181.108.185 1130 | 220.181.108.186 1131 | 220.181.108.187 1132 | 220.181.108.75 1133 | 220.181.108.76 1134 | 220.181.108.77 1135 | 220.181.108.78 1136 | 220.181.108.79 1137 | 220.181.108.80 1138 | 220.181.108.81 1139 | 220.181.108.82 1140 | 220.181.108.83 1141 | 220.181.108.84 1142 | 220.181.108.85 1143 | 220.181.108.86 1144 | 220.181.108.87 1145 | 220.181.108.99 1146 | 220.181.126.30 1147 | 220.181.126.4 1148 | 220.181.127.124 1149 | 220.181.132.198 1150 | 220.181.132.217 1151 | 220.181.165.10 1152 | 220.181.165.11 1153 | 220.181.165.133 1154 | 220.181.165.134 1155 | 220.181.165.138 1156 | 220.181.165.139 1157 | 220.181.165.4 1158 | 220.181.165.5 1159 | 220.181.165.7 1160 | 220.181.165.8 1161 | 220.181.165.9 1162 | 220.181.51.102 1163 | 220.181.51.103 1164 | 220.181.51.104 1165 | 220.181.51.105 1166 | 220.181.51.107 1167 | 220.181.51.108 1168 | 220.181.51.109 1169 | 220.181.51.110 1170 | 220.181.51.211 1171 | 220.191.251.211 1172 | 220.200.63.75 1173 | 220.248.35.50 1174 | 220.248.39.2 1175 | 220.249.142.205 1176 | 220.249.91.78 1177 | 220.250.30.187 1178 | 221.11.120.253 1179 | 221.11.21.246 1180 | 221.11.70.74 1181 | 221.13.66.184 1182 | 221.179.168.136 1183 | 221.181.96.9 1184 | 221.195.78.36 1185 | 221.199.177.98 1186 | 221.199.6.14 1187 | 221.216.137.192 1188 | 221.219.114.203 1189 | 221.220.253.144 1190 | 221.228.230.202 1191 | 221.238.131.250 1192 | 221.238.93.150 1193 | 221.239.107.2 1194 | 221.6.78.146 1195 | 221.7.151.180 1196 | 221.7.54.194 1197 | 222.126.165.155 1198 | 222.128.108.64 1199 | 222.169.58.142 1200 | 222.170.24.242 1201 | 222.173.246.250 1202 | 222.175.200.162 1203 | 222.185.103.103 1204 | 222.209.133.154 1205 | 222.219.207.72 1206 | 222.240.148.154 1207 | 222.41.113.42 1208 | 222.66.117.13 1209 | 222.66.163.91 1210 | 222.73.255.125 1211 | 222.73.77.54 1212 | 222.74.221.150 1213 | 222.75.162.106 1214 | 222.75.177.82 1215 | 222.75.210.134 1216 | 222.75.251.98 1217 | 222.75.9.120 1218 | 222.76.57.123 1219 | 222.80.94.198 1220 | 222.81.61.56 1221 | 222.83.229.220 1222 | 222.90.232.138 1223 | 222.91.74.221 1224 | 223.198.112.239 1225 | 223.220.248.5 1226 | 223.27.37.244 1227 | 223.72.65.98 1228 | 23.225.128.128 1229 | 23.225.128.165 1230 | 23.225.128.99 1231 | 23.23.222.104 1232 | 23.239.115.233 1233 | 24.134.144.137 1234 | 24.165.193.65 1235 | 27.115.124.45 1236 | 27.115.124.46 1237 | 27.150.220.147 1238 | 27.16.121.86 1239 | 27.17.58.2 1240 | 27.225.47.82 1241 | 27.38.44.17 1242 | 27.38.44.60 1243 | 36.235.218.64 1244 | 36.248.197.71 1245 | 36.249.227.108 1246 | 36.63.16.162 1247 | 37.115.184.168 1248 | 37.140.141.38 1249 | 37.239.46.10 1250 | 37.57.231.122 1251 | 37.58.100.135 1252 | 37.58.100.136 1253 | 37.58.100.137 1254 | 37.58.100.150 1255 | 37.58.100.167 1256 | 37.58.100.185 1257 | 37.58.100.187 1258 | 37.58.100.232 1259 | 37.58.100.238 1260 | 37.58.100.78 1261 | 37.58.100.91 1262 | 37.58.100.93 1263 | 37.59.20.217 1264 | 42.120.145.44 1265 | 42.120.145.70 1266 | 42.120.145.86 1267 | 42.120.160.107 1268 | 42.120.160.28 1269 | 42.120.160.79 1270 | 42.120.161.107 1271 | 42.120.161.28 1272 | 42.120.161.79 1273 | 42.120.74.203 1274 | 42.156.136.107 1275 | 42.156.136.17 1276 | 42.156.136.28 1277 | 42.156.136.79 1278 | 42.156.137.107 1279 | 42.156.137.28 1280 | 42.156.137.79 1281 | 42.156.138.107 1282 | 42.156.138.28 1283 | 42.156.138.74 1284 | 42.156.138.79 1285 | 42.156.139.107 1286 | 42.156.139.28 1287 | 42.156.139.79 1288 | 46.118.119.111 1289 | 46.118.124.162 1290 | 46.119.115.111 1291 | 46.165.197.141 1292 | 46.165.231.151 1293 | 46.229.167.149 1294 | 46.33.25.38 1295 | 46.4.72.200 1296 | 49.119.92.25 1297 | 49.77.48.51 1298 | 50.112.126.117 1299 | 50.197.177.177 1300 | 50.31.96.11 1301 | 50.87.144.49 1302 | 5.10.104.70 1303 | 5.10.104.71 1304 | 5.101.100.60 1305 | 5.105.103.174 1306 | 5.158.235.88 1307 | 5.199.133.88 1308 | 5.255.87.8 1309 | 54.232.100.158 1310 | 54.249.240.15 1311 | 54.252.97.95 1312 | 54.80.1.59 1313 | 58.144.7.66 1314 | 58.16.208.44 1315 | 58.19.126.7 1316 | 58.19.202.78 1317 | 58.246.69.150 1318 | 58.247.76.230 1319 | 58.251.146.228 1320 | 58.40.17.84 1321 | 58.42.245.222 1322 | 58.56.27.130 1323 | 58.60.168.177 1324 | 59.174.110.23 1325 | 59.174.164.102 1326 | 59.37.29.133 1327 | 59.39.58.38 1328 | 59.47.182.2 1329 | 59.51.66.195 1330 | 5.9.90.132 1331 | 5.9.93.231 1332 | 60.13.192.93 1333 | 60.13.231.87 1334 | 60.13.231.88 1335 | 60.13.48.34 1336 | 60.165.154.50 1337 | 60.18.167.196 1338 | 60.190.182.98 1339 | 60.190.226.162 1340 | 60.250.195.51 1341 | 60.29.111.234 1342 | 61.133.208.75 1343 | 61.133.238.230 1344 | 61.134.39.51 1345 | 61.135.152.203 1346 | 61.135.172.68 1347 | 61.135.190.100 1348 | 61.135.190.101 1349 | 61.135.190.102 1350 | 61.135.190.103 1351 | 61.135.190.105 1352 | 61.135.190.200 1353 | 61.135.190.201 1354 | 61.135.190.219 1355 | 61.135.190.220 1356 | 61.135.190.224 1357 | 61.135.219.2 1358 | 61.148.244.185 1359 | 61.148.75.238 1360 | 61.153.244.161 1361 | 61.163.163.170 1362 | 61.175.225.130 1363 | 61.178.193.176 1364 | 61.185.0.131 1365 | 61.191.142.26 1366 | 61.191.204.242 1367 | 61.218.106.126 1368 | 61.50.142.30 1369 | 61.93.167.31 1370 | 62.210.75.243 1371 | 63.217.82.140 1372 | 64.186.144.131 1373 | 65.19.138.33 1374 | 65.19.138.34 1375 | 65.49.68.155 1376 | 65.49.68.192 1377 | 65.55.215.35 1378 | 65.55.215.42 1379 | 65.55.215.49 1380 | 65.55.215.54 1381 | 65.55.215.60 1382 | 65.55.215.61 1383 | 66.216.170.29 1384 | 66.249.64.188 1385 | 66.249.64.193 1386 | 66.249.64.198 1387 | 66.249.64.215 1388 | 66.249.64.220 1389 | 66.249.64.225 1390 | 66.249.64.4 1391 | 66.249.64.52 1392 | 66.249.64.54 1393 | 66.249.64.57 1394 | 66.249.64.7 1395 | 66.249.64.76 1396 | 66.249.64.81 1397 | 66.249.64.86 1398 | 66.249.64.9 1399 | 66.249.66.193 1400 | 66.249.67.101 1401 | 66.249.67.102 1402 | 66.249.67.114 1403 | 66.249.67.127 1404 | 66.249.67.205 1405 | 66.249.67.218 1406 | 66.249.67.231 1407 | 66.249.67.232 1408 | 66.249.67.36 1409 | 66.249.67.37 1410 | 66.249.67.76 1411 | 66.249.67.89 1412 | 66.249.70.179 1413 | 66.249.70.193 1414 | 66.249.79.101 1415 | 66.249.79.102 1416 | 66.249.79.114 1417 | 66.249.79.127 1418 | 66.249.79.166 1419 | 66.249.79.179 1420 | 66.249.79.192 1421 | 66.249.79.76 1422 | 66.249.79.89 1423 | 66.249.83.98 1424 | 66.249.84.33 1425 | 66.249.89.188 1426 | 66.249.89.193 1427 | 66.249.89.198 1428 | 66.249.91.189 1429 | 66.249.91.205 1430 | 66.249.91.221 1431 | 66.249.92.41 1432 | 66.249.92.54 1433 | 66.249.92.67 1434 | 66.249.92.80 1435 | 66.249.92.93 1436 | 67.167.121.211 1437 | 69.164.111.198 1438 | 69.174.58.124 1439 | 69.58.178.56 1440 | 72.14.199.67 1441 | 72.14.199.80 1442 | 72.14.199.93 1443 | 74.208.16.114 1444 | 74.208.16.87 1445 | 75.134.151.92 1446 | 76.16.204.126 1447 | 77.222.61.224 1448 | 80.111.154.54 1449 | 81.152.8.181 1450 | 81.209.177.189 1451 | 81.209.177.95 1452 | 82.221.105.223 1453 | 8.28.16.254 1454 | 85.17.73.171 1455 | 86.34.134.179 1456 | 88.150.141.44 1457 | 88.198.17.4 1458 | 91.108.71.105 1459 | 91.108.72.105 1460 | 91.108.76.105 1461 | 91.108.79.105 1462 | 91.108.86.105 1463 | 91.121.92.177 1464 | 91.200.12.67 1465 | 91.207.7.110 1466 | 91.236.74.3 1467 | 91.238.72.81 1468 | 92.232.53.54 1469 | 93.174.95.55 1470 | 94.153.9.213 1471 | 94.153.9.85 1472 | 94.23.149.100 1473 | 94.23.19.178 1474 | 95.163.121.129 1475 | 95.21.33.217 1476 | 96.227.124.37 1477 | -------------------------------------------------------------------------------- /tools/IP/QQWry/ip.txt.xz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gwind/ylinux/1df84e6c987668cf4a91b5404e8da166762e78cc/tools/IP/QQWry/ip.txt.xz -------------------------------------------------------------------------------- /tools/IP/QQWry/problem_ip_record.txt: -------------------------------------------------------------------------------- 1 | 1.5.0.0 1.5.255.255 日本,港区? 2 | 120.138.128.0 120.138.191.255 日本,愛知県名古屋市? 3 | 133.129.0.0 133.129.255.255 日本,株式会社大林組? 4 | 133.131.0.0 133.132.255.255 日本,? 5 | 133.142.0.0 133.142.255.255 日本,株式会社三菱? 6 | 133.168.0.0 133.168.255.255 日本,パケット?レディオ?ユーザーズ?グループ 7 | 133.196.0.0 133.199.255.255 日本,株式会社? 8 | 133.255.0.0 133.255.255.255 日本,? 9 | 186.28.225.0 186.28.225.255 哥伦比亚,Nari?o大学 10 | 196.200.144.0 196.200.144.255 摩洛哥,University Moulay Ismail Mekn?s 11 | 200.143.192.0 200.143.255.255 巴西,Associa??o Rede Nacional de Ensino e Pesquisa 12 | 218.5.136.107 218.5.136.107 福建省泉州市石狮市,新?空网吧 13 | 218.6.241.9 218.6.241.9 四川省成都市,世?网吧 14 | 218.11.89.112 218.11.89.112 河北省廊坊市,万庄?尚网吧 15 | 218.11.130.95 218.11.130.95 河北省张家口市桥东区,沙?子连易网吧 16 | 218.13.32.104 218.13.32.104 广东省佛山市顺德区,北?莘村小学 17 | 218.13.32.207 218.13.32.207 广东省佛山市顺德区,北?三桂小学 18 | 218.13.32.208 218.13.32.208 广东省佛山市顺德区,北?莘中附小 19 | 218.13.33.2 218.13.33.2 广东省佛山市顺德区,北?教育组 20 | 218.13.33.18 218.13.33.18 广东省佛山市顺德区,北?中心小学 21 | 218.15.24.34 218.15.24.34 广东省茂名市,信宜市?速网吧 22 | 218.15.154.134 218.15.154.134 广东省梅州市,蕉?三圳源缘网吧 23 | 218.16.101.55 218.16.101.55 广东省东莞市,高?中学 24 | 218.20.115.102 218.20.115.102 广东省广州市海珠区,南洲路西?村银色之光网吧 25 | 218.22.87.30 218.22.87.30 安徽省芜湖市芜湖县,湾?新东方网吧 26 | 218.22.87.58 218.22.87.58 安徽省芜湖市,湾?镇第一小学(实验小学) 27 | 218.22.87.62 218.22.87.62 安徽省芜湖市芜湖县,湾?镇第二小学 28 | 218.23.32.116 218.23.32.116 安徽省合肥市巢湖市,?炀镇晴天网吧 29 | 218.23.32.117 218.23.32.117 安徽省合肥市巢湖市,?炀中学 30 | 218.23.32.118 218.23.32.118 安徽省合肥市巢湖市,?炀镇北街网吧 31 | 218.24.147.190 218.24.147.190 辽宁省大连市金州区,?隆网吧 32 | 218.26.77.47 218.26.77.47 山西省运城市,介休市日?网吧 33 | 218.26.176.34 218.26.176.34 山西省太原市,后北屯御?网吧 34 | 218.27.91.245 218.27.91.245 吉林省长春市,雨??网苑 35 | 218.27.91.246 218.27.91.246 吉林省长春市绿园区,新隆小区5栋106雨??网苑 36 | 218.62.18.142 218.62.18.142 吉林省长春市榆树,?宇网吧 37 | 218.73.165.42 218.73.165.42 浙江省温州市平阳县,第二人民?院 38 | 218.75.13.11 218.75.13.11 浙江省台州市仙居县,一?林网吧(仙药路2号/仙琚制药厂斜对面) 39 | 218.75.19.100 218.75.19.103 浙江省温州市瑞安市,正大网吧(安阳镇后?中路) 40 | 218.75.19.104 218.75.19.107 浙江省温州市瑞安市,联盟网吧(安阳镇后?中路) 41 | 218.75.19.232 218.75.19.235 浙江省温州市瑞安市,飞马网吧(仙降镇翁?村) 42 | 218.75.19.244 218.75.19.247 浙江省温州市瑞安市,新潮网吧(安阳镇后?中路) 43 | 218.75.113.98 218.75.113.98 浙江省绍兴市诸暨市,?浦沸蓝飞跃网吧 44 | 218.75.150.136 218.75.150.136 湖南省常德市澧县,?市新世纪网吧 45 | 218.77.21.198 218.77.21.198 湖南省怀化市靖州县,海天?吧 46 | 218.87.89.238 218.87.89.238 江西省九江市,三?街胜利网吧 47 | 218.87.186.56 218.87.186.56 江西省鹰潭市,中童镇兴?网吧 48 | 218.88.102.103 218.88.102.103 四川省成都市,马鞍路?歆网络沙龙 49 | 218.89.191.75 218.89.191.75 四川省资阳市安岳县,?草网吧 50 | 218.92.17.118 218.92.17.118 江苏省连云港市新浦区,晓?网吧 51 | 218.92.35.2 218.92.35.2 江苏省连云港市新浦区,东?网吧 52 | 218.93.20.86 218.93.20.86 江苏省常州市,大学城?寅网吧 53 | 218.93.194.50 218.93.194.50 江苏省宿迁市沭阳县,??街娱乐中心 54 | 221.193.208.52 221.193.208.52 河北省邯郸市大名县,大名镇蔚蓝网吧(元城路中段路西?) 55 | 221.195.41.67 221.195.41.67 河北省沧州市黄骅市,航? 56 | 221.199.154.100 221.199.154.100 内蒙古赤峰市,赤峰学院机场路?虎网吧 57 | 221.203.79.109 221.203.79.109 辽宁省抚顺市,雨?网吧 58 | 221.203.111.12 221.203.111.12 辽宁省本溪市平山区,佰?网络世界) 59 | 221.224.55.234 221.224.55.234 江苏省苏州市,浪淘沙连锁网吧鑫轮?直店 60 | 221.233.1.137 221.233.1.137 湖北省荆州市,??网吧 61 | 221.233.1.167 221.233.1.167 湖北省荆州市,?凰网吧 62 | 221.234.242.124 221.234.242.124 湖北省武汉市硚口区,圆方网吧(?口路) 63 | 221.236.163.158 221.236.163.158 四川省内江市,?木镇顺发网吧 64 | 221.236.163.194 221.236.163.194 四川省内江市,?木镇世通网吧 65 | 221.239.1.203 221.239.1.203 天津市,依?网吧 66 | 222.93.154.4 222.93.154.4 江苏省苏州市,?直镇大厍村桥东无名网吧 67 | 222.170.192.213 222.170.192.213 黑龙江省双鸭山市宝清县,新?网吧 68 | 222.174.183.2 222.174.183.2 山东省临沂市沂水县,??网吧 69 | 222.175.52.10 222.175.52.10 山东省枣庄市,薛城区?伟网苑 70 | 222.203.146.0 222.203.147.255 广东省广州市天河区,长?小学 71 | -------------------------------------------------------------------------------- /tools/IP/QQWry/qqwry.dat.xz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gwind/ylinux/1df84e6c987668cf4a91b5404e8da166762e78cc/tools/IP/QQWry/qqwry.dat.xz -------------------------------------------------------------------------------- /tools/IP/QQWry/qqwry.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: UTF-8 3 | 4 | # 解析 QQWry 库 5 | 6 | '''Python查 询纯真IP库 7 | 8 | qqwry.dat 的格式如下: 9 | 10 | +----------+ 11 | | 文件头 | (8字节) 12 | +----------+ 13 | | 记录区 | (不定长) 14 | +----------+ 15 | | 索引区 | (大小由文件头决定) 16 | +----------+ 17 | 18 | 文件头:4字节开始索引偏移值+4字节结尾索引偏移值 19 | 20 | 记录区: 每条IP记录格式 ==> IP地址[国家信息][地区信息] 21 | 22 | 对于国家记录,可以有三种表示方式: 23 | 24 | 字符串形式(IP记录第5字节不等于0x01和0x02的情况), 25 | 重定向模式1(第5字节为0x01),则接下来3字节为国家信息存储地的偏移值 26 | 重定向模式(第5字节为0x02), 27 | 28 | 对于地区记录,可以有两种表示方式: 字符串形式和重定向 29 | 30 | 我们称IP记录的第5字节,以及所有重定向后的信息的第1字节,为 falg,依 31 | 据 flag 值,我们有判定规则: 32 | 33 | 1. 0x01 时,"国家记录/地区信息"都为 offset 指向的新地址 34 | 2. 0x02 时,仅"国家记录"为 offset 指向的新地址,"地区信息"在4字节后 35 | 3. 0x01, 0x02的情况下,重定向后的信息(新或旧)的首字节如果为 : 36 | - 0,表示无记录(也读不到字符串的) 37 | - 0x02,其后3字节整数值为新的 offset 地址 38 | 39 | 索引区: 每条索引记录格式 ==> 4字节起始IP地址 + 3字节指向IP记录的偏移值 40 | 41 | 索引区的IP和它指向的记录区一条记录中的IP构成一个IP范围。查询信息是这个 42 | 范围内IP的信息 43 | 44 | 术语: 45 | 46 | 每条IP记录的信息有"国家"和"地区"两部分,但"国家"不一定表示"国 47 | 家".我们仅使用这两名词表示信息位置. 48 | 49 | 纯真IP的问题: 50 | 51 | 1. 地区信息中,如果最后一位字符值是 '\x96',可能表示"?".因为QQWry的 52 | Windows查询程序就是这样显示的.目前(2014年8月5日纯真IP库)一共有7组 53 | IP段是这样.详情见 decode_str 函数. 54 | 55 | 目前发现有这个问题的IP段有: 56 | 57 | 1.5.0.0 日本, 港区? 58 | 120.138.128.0 日本 愛知県名古屋市? 59 | 133.129.0.0 日本 株式会社大林組? 60 | 133.131.0.0 日本 ? 61 | 133.142.0.0 日本 株式会社三菱? 62 | 133.196.0.0 日本 株式会社? 63 | 133.255.0.0 日本 ? 64 | 65 | 2. 记录中其有70处记录中含"?"字符,原因可能是gbk编码表示不了这样字符,纯 66 | 真IP库生成时就有这个问题(也有可能是用户提交原因).举例: 67 | 68 | 218.93.194.50 218.93.194.50 江苏省宿迁市沭阳县,??街娱乐中心 69 | 221.199.154.100 221.199.154.100 内蒙古赤峰市,赤峰学院机场路?虎网吧 70 | 221.203.111.12 221.203.111.12 辽宁省本溪市平山区,佰?网络世界) 71 | 221.224.55.234 221.224.55.234 江苏省苏州市,浪淘沙连锁网吧鑫轮?直店 72 | 221.233.1.137 221.233.1.137 湖北省荆州市,??网吧 73 | 221.236.163.158 221.236.163.158 四川省内江市,?木镇顺发网吧 74 | 221.239.1.203 221.239.1.203 天津市,依?网吧 75 | 222.170.192.213 222.170.192.213 黑龙江省双鸭山市宝清县,新?网吧 76 | 222.175.52.10 222.175.52.10 山东省枣庄市,薛城区?伟网苑 77 | 222.203.146.0 222.203.147.255 广东省广州市天河区,长?小学 78 | 79 | 本命令行程序用法示例: 80 | 81 | 查询多个IP信息: 82 | 83 | python qqwry.py -q 91.121.92.177 88.198.17.4 101.1.25.145 84 | 85 | 查询 1.list, 2.list 文件中的 IP 信息: 86 | 87 | python qqwry.py --query-file 1.list 2.list 88 | 89 | 输出所有IP信息到文件 /tmp/ip.txt: 90 | 91 | python qqwry.py --dump -o /tmp/ip.txt 92 | 93 | 94 | 最后: 95 | 96 | 不应完全依赖IP数据库的查询信息,原因有: 97 | 98 | 1. IP数据库的信息收集有可能不准确 99 | 2. 为了隐藏真实信息,有些IP信息提供方会使用混淆技术 100 | 101 | ''' 102 | 103 | import os 104 | import sys 105 | import socket 106 | import codecs 107 | import mmap 108 | from struct import pack, unpack 109 | 110 | 111 | def decode_str(old): 112 | '''专门对纯真的gbk编码字符串解压 113 | 114 | 返回 utf8 字符串 115 | ''' 116 | try: 117 | return unicode(old,'gbk').encode('utf-8') 118 | except: 119 | # TODO: hack 120 | # 当字符串解码失败,并且最一个字节值为'\x96',则去掉它,再解析 121 | if old[-1] == '\x96': 122 | try: 123 | return unicode(old[:-1],'gbk').encode('utf-8') + '?' 124 | except: 125 | pass 126 | 127 | return 'Invalid' 128 | 129 | 130 | class QQWry(object): 131 | 132 | def __init__(self, path): 133 | self.path = path 134 | self.db = None 135 | self.open_db() 136 | self.idx_start, self.idx_end = self._read_idx() 137 | # IP索引总数 138 | self.total = (self.idx_end - self.idx_start) / 7 + 1 139 | 140 | def open_db(self): 141 | if not self.db: 142 | self.db = open(self.path, 'rb') 143 | self.db = mmap.mmap(self.db.fileno(), 0, access = 1) 144 | return self.db 145 | 146 | def _read_idx(self): 147 | '''读取数据库中IP索引起始和结束偏移值 148 | 149 | ''' 150 | 151 | self.db.seek(0) 152 | start = unpack('I', self.db.read(4))[0] 153 | end = unpack('I', self.db.read(4))[0] 154 | 155 | return start, end 156 | 157 | def version(self): 158 | '''返回纯真IP库的版本信息 159 | 160 | 格式如 "纯真网络2014年8月5日IP数据" 161 | ''' 162 | 163 | ip_end_offset = self.read_offset(self.idx_end + 4) 164 | a_raw, b_raw = self.read_record(ip_end_offset+4) 165 | 166 | return decode_str(a_raw + b_raw) 167 | 168 | def read_ip(self, off, seek=True): 169 | '''读取ip值(4字节整数值) 170 | 171 | 返回IP值 172 | ''' 173 | 174 | if seek: 175 | self.db.seek(off) 176 | 177 | buf = self.db.read(4) 178 | return unpack('I', buf)[0] 179 | 180 | def read_offset(self, off, seek=True): 181 | '''读取3字节的偏移量值 182 | 183 | 返回偏移量的整数值 184 | ''' 185 | if seek: 186 | self.db.seek(off) 187 | 188 | buf = self.db.read(3) 189 | return unpack('I', buf+'\0')[0] 190 | 191 | def read_string(self, offset): 192 | '''读取原始字符串(以"\0"结束) 193 | 194 | 返回元组:字符串 195 | ''' 196 | 197 | if offset == 0: 198 | return 'N/A1' 199 | 200 | flag = self.get_flag(offset) 201 | 202 | if flag == 0: 203 | # TODO: 出错 204 | return 'N/A2' 205 | 206 | elif flag == 2: 207 | # 0x02 表示该处信息还是需要重定向 208 | offset = self.read_offset(offset+1) 209 | return self.read_string(offset) 210 | 211 | self.db.seek(offset) 212 | 213 | raw_string = '' 214 | while True: 215 | x = self.db.read(1) 216 | if x == '\0': 217 | break 218 | raw_string += x 219 | 220 | return raw_string 221 | 222 | def get_flag(self, offset): 223 | '''读取偏移处的1字节整数值 224 | 225 | QQWry地址信息字符串的第一个字节值可能会是一个标志位, 226 | 这是一个通用的函数. 227 | ''' 228 | self.db.seek(offset) 229 | c = self.db.read(1) 230 | if not c: 231 | return 0 232 | return ord(c) 233 | 234 | def read_record(self, offset): 235 | 236 | self.db.seek(offset) 237 | 238 | # 读取 flag 239 | flag = ord(self.db.read(1)) 240 | 241 | if flag == 1: 242 | # 0x01 表示记录区记录(国家,地区)信息都重定向 243 | # 注意:一次重定向后记录还有可能是一个重定向(其flag=0x02) 244 | 245 | buf = self.db.read(3) 246 | a_offset = unpack('I', buf+'\0')[0] 247 | 248 | a_raw = self.read_string(a_offset) 249 | 250 | # TODO: hack 251 | # 判断新记录的flag是否为0x02,如果是,则表明: 252 | # - 国家信息重定向另外地址 253 | # - 地区信息为新记录起始地址偏移4字节 254 | a_flag = self.get_flag(a_offset) 255 | if a_flag == 2: 256 | b_raw = self.read_string(a_offset+4) 257 | else: 258 | b_raw = self.read_string(a_offset+len(a_raw)+1) 259 | 260 | elif flag == 2: 261 | # 0x02 表示仅国家记录重定向 262 | # 地区信息偏移4字节 263 | 264 | buf = self.db.read(3) 265 | a_offset = unpack('I', buf+'\0')[0] 266 | 267 | a_raw = self.read_string(a_offset) 268 | b_raw = self.read_string(offset+4) 269 | 270 | else: 271 | # 正常的信息记录 272 | a_raw = self.read_string(offset) 273 | b_raw = self.read_string(offset+len(a_raw)+1) 274 | 275 | return a_raw, b_raw 276 | 277 | def output(self, output_file='ip.txt'): 278 | '''输出所有IP信息到文件 279 | 280 | ''' 281 | 282 | fp = codecs.open(output_file, 'w', 'utf8') 283 | 284 | idx = self.idx_start 285 | while idx <= self.idx_end: 286 | 287 | ip_int = self.read_ip(idx) 288 | ip_start = socket.inet_ntoa(pack('!I', ip_int)) 289 | 290 | ip_end_offset = self.read_offset(idx + 4) 291 | 292 | ip_int = self.read_ip(ip_end_offset) 293 | ip_end = socket.inet_ntoa(pack('!I', ip_int)) 294 | 295 | a_raw, b_raw = self.read_record(ip_end_offset+4) 296 | 297 | a_info = decode_str(a_raw) 298 | b_info = decode_str(b_raw) 299 | 300 | fp.write(u'%15s\t%15s\t%s,%s\n' %( 301 | ip_start, ip_end, 302 | a_info.decode('utf8'), b_info.decode('utf8'))) 303 | 304 | # 步进7字节:4字节的起始IP值 + 3字节的结束IP偏移值 305 | idx += 7 306 | 307 | fp.close() 308 | 309 | def find(self, ip, l, r): 310 | '''使用二分法查找网络字节编码的IP地址的索引记录 311 | 312 | ''' 313 | 314 | if r - l <= 1: 315 | return l 316 | 317 | m = (l + r) / 2 318 | offset = self.idx_start + m * 7 319 | 320 | new_ip = self.read_ip(offset) 321 | 322 | if ip < new_ip: 323 | return self.find(ip, l, m) 324 | else: 325 | return self.find(ip, m, r) 326 | 327 | def query(self, ip): 328 | '''查询IP信息 329 | 330 | ''' 331 | 332 | # 使用网络字节编码IP地址 333 | ip = unpack('!I', socket.inet_aton(ip))[0] 334 | # 使用 self.find 函数查找ip的索引偏移 335 | i = self.find(ip, 0, self.total - 1) 336 | # 得到索引记录 337 | o = self.idx_start + i * 7 338 | # 索引记录格式是: 前4字节IP信息+3字节指向IP记录信息的偏移量 339 | # 这里就是使用后3字节作为偏移量得到其常规表示(QQWry.Dat用字符串表示值) 340 | o2 = self.read_offset(o + 4) 341 | # IP记录偏移值+4可以丢弃前4字节的IP地址信息。 342 | (c, a) = self.read_record(o2 + 4) 343 | return (decode_str(c), decode_str(a)) 344 | 345 | def __del__(self): 346 | if self.db: 347 | self.db.close() 348 | 349 | 350 | def update_db(dbpath): 351 | '''更新 QQWry IP数据库 352 | 353 | 参考:https://github.com/lilydjwg/winterpy/blob/master/pylib/QQWry.py 354 | ''' 355 | 356 | import subprocess 357 | import zlib 358 | 359 | copywrite_url = 'http://update.cz88.net/ip/copywrite.rar' 360 | data_url = 'http://update.cz88.net/ip/qqwry.rar' 361 | 362 | def decipher_data(key, data): 363 | h = bytearray() 364 | for b in data[:0x200]: 365 | b = ord(b) 366 | key *= 0x805 367 | key += 1 368 | key &= 0xff 369 | h.append(key ^ b) 370 | return bytes(h) + data[0x200:] 371 | 372 | def unpack_meta(data): 373 | # http://microcai.org/2014/05/11/qqwry_dat_download.html 374 | (sign, version, _1, size, _, key, text, 375 | link) = unpack('<4sIIIII128s128s', data) 376 | sign = sign.decode('gb18030') 377 | text = text.rstrip(b'\x00').decode('gb18030') 378 | link = link.rstrip(b'\x00').decode('gb18030') 379 | del data 380 | return locals() 381 | 382 | p = subprocess.Popen(['wget', copywrite_url]) 383 | p.wait() 384 | d = open('copywrite.rar', 'rb').read() 385 | info = unpack_meta(d) 386 | 387 | p = subprocess.Popen(['wget', data_url]) 388 | p.wait() 389 | d = open('qqwry.rar', 'rb').read() 390 | d = decipher_data(info['key'], d) 391 | d = zlib.decompress(d) 392 | 393 | open(dbpath, 'w').write(d) 394 | 395 | os.unlink('copywrite.rar') 396 | os.unlink('qqwry.rar') 397 | 398 | 399 | def parse_cmd_args(): 400 | '''处理命令行选项 401 | 402 | ''' 403 | 404 | import argparse 405 | 406 | parser = argparse.ArgumentParser( 407 | prog='qqwry', 408 | description='qqwry is an IP address lookup process, for QQWry(cz88.net).') 409 | 410 | group = parser.add_mutually_exclusive_group() 411 | 412 | group.add_argument("-q", dest='query', action="store", 413 | nargs='+', # 可指定多个IP 414 | help="lookup ip.") 415 | 416 | group.add_argument("--query-file", action="store", 417 | dest='query_file', 418 | nargs='+', # 可指定多个IP 419 | help="lookup ip from files") 420 | 421 | group.add_argument("--dump", action="store_true", 422 | help="dump all ip information to a file.") 423 | 424 | parser.add_argument("--update-db", action="store_true", default=False, 425 | help="update qqwry.dat") 426 | 427 | parser.add_argument("--quiet", action="store_true", default=False, 428 | help="quiet mode.") 429 | 430 | parser.add_argument('-f', '--dbpath', 431 | action="store", 432 | default='qqwry.dat', 433 | help='the path of qqwry.dat') 434 | 435 | parser.add_argument('-o', '--output', 436 | action="store", 437 | default='ip.txt', 438 | help='save output of ip info to a file') 439 | 440 | 441 | args = parser.parse_args() 442 | if not (args.query or args.query_file or args.dump): 443 | parser.print_help() 444 | sys.exit(0) 445 | 446 | return args 447 | 448 | 449 | def main(): 450 | 451 | args = parse_cmd_args() 452 | 453 | ## 是否需要更新 454 | 455 | # 1. 指定更新 456 | if args.update_db: 457 | update_db(args.dbpath) 458 | 459 | # 2. 没有发现 qqwry.dat 460 | if not os.path.exists(args.dbpath): 461 | update_db(args.dbpath) 462 | 463 | qqwry = QQWry(args.dbpath) 464 | if not args.quiet: 465 | print qqwry.version() 466 | print 'index total: ', qqwry.total 467 | print 468 | 469 | if args.query: 470 | for ip in args.query: 471 | c, a = qqwry.query(ip) 472 | print '%15s %s%s' % (ip, c, a) 473 | 474 | elif args.query_file: 475 | for p in args.query_file: 476 | with open(p, 'r') as f: 477 | while True: 478 | ip = f.readline().strip() 479 | if not ip: 480 | break 481 | 482 | c, a = qqwry.query(ip) 483 | print '%15s %s%s' % (ip, c, a) 484 | 485 | elif args.dump: 486 | print 'dumping to %s ...' % args.output 487 | qqwry.output() 488 | 489 | 490 | if __name__ == '__main__': 491 | 492 | main() 493 | 494 | 495 | 496 | ## Changelog 497 | # 498 | # 2014年8月11日 499 | # 根据LinuxToy网友依云(http://lilydjwg.is-programmer.com/)建议: 500 | # https://linuxtoy.org/archives/python-qqwry.html#comment-331128 501 | # 更新: 502 | # 1. 显示版本信息 503 | # 2. 增加自动更新纯真IP数据库功能 504 | # 3. 使用 mmap 操作数据库文件对象,效率提升一倍: 505 | # https://linuxtoy.org/archives/python-qqwry.html#comment-331220 506 | # 507 | # 2014年8月9日 重写程序 508 | # 1. 实现完整查询纯真IP库. 509 | # 2. 可完整dump出所有ip记录,并与纯真官方的查询程序比对正确. 510 | # 511 | # 2009年5月29日 512 | # 1. 工具下面网友的建议,修改"o += len(cArea) + 1" 513 | # http://linuxtoy.org/archives/python-ip.html#comment-113960 514 | # 因为这个时候我已经把得到的字符串变成utf-8编码了,长度会有变化! 515 | 516 | ## 在线资源 517 | # 518 | # 1. 相关帖子 519 | # http://linuxtoy.org/archives/python-ip.html 520 | # https://linuxtoy.org/archives/python-qqwry.html 521 | # http://ylinux.org/blog/article/106 522 | # 2. qqwry.dat 下载 523 | # http://www.cz88.net/ (官网) 524 | # https://github.com/jianlee/ylinux/blob/master/tools/IP/QQWry/qqwry.dat.xz 525 | # 3. 纯真IP库 txt 格式(使用本程序dump) 526 | # https://github.com/jianlee/ylinux/blob/master/tools/IP/QQWry/ip.txt.xz 527 | 528 | # 其他版本 529 | # 530 | # 依云 Python: https://github.com/lilydjwg/winterpy/blob/master/pylib/QQWry.py 531 | 532 | ## Contact US 533 | # https://ylinux.org 534 | --------------------------------------------------------------------------------