├── README.md └── xclibc /README.md: -------------------------------------------------------------------------------- 1 | # xclibc 2 | 3 | ![image](https://github.com/ef4tless/xclibc/assets/52035000/9821856f-10ee-4843-a747-34a148c6d263) 4 | 5 | 6 | 7 | 一个在CTF比赛中用于切换题目运行libc环境的工具,支持目前所有版本 8 | 9 | ## 安装 10 | 11 | 这个脚本是基于最新版的[glibc-all-in-one](https://github.com/matrix1001/glibc-all-in-one),我建议你将其安装到`~`目录 12 | 13 | ```bash 14 | git clone https://github.com/matrix1001/glibc-all-in-one 15 | cd glibc-all-in-one 16 | ./update_list 17 | ``` 18 | 19 | xclibc脚本配置 20 | 21 | ```bash 22 | git clone https://github.com/ef4tless/xclibc.git 23 | cd xclibc 24 | sudo rm /usr/local/bin/xclibc 25 | sudo mv ./xclibc /usr/local/bin 26 | sudo chmod +x /usr/local/bin/xclibc 27 | ``` 28 | 29 | ## 使用 30 | 31 | 快速上手 32 | ```bash 33 | xclibc [选项] [参数] 34 | -s 查看libc文件的版本 35 | -x 和 -c 是配置版本的主要功能 36 | e.g. 37 | ➜ ~ xclibc -x ./main ./libc.so.6 读取版本自动配置 38 | 39 | ➜ ~ xclibc -c ./main 2.35 40 | /home/ef4tless/glibc-all-in-one/libs/2.35-0ubuntu3_amd64 41 | /home/ef4tless/glibc-all-in-one/libs/2.35-0ubuntu3.3_i386 42 | /home/ef4tless/glibc-all-in-one/libs/2.35-0ubuntu3.3_amd64 43 | /home/ef4tless/glibc-all-in-one/libs/2.35-0ubuntu3_i386 44 | /home/ef4tless/glibc-all-in-one/libs/2.35-0ubuntu3.1_i386 45 | /home/ef4tless/glibc-all-in-one/libs/2.35-0ubuntu3.1_amd64 46 | Please specify the directory 47 | ➜ ~ xclibc -c ./main 2.35 /home/ef4tless/glibc-all-in-one/libs/2.35-0ubuntu3.1_i386 48 | 49 | -r 可以恢复原本的题目状态 50 | ➜ ~ xclibc -r ./main 51 | [+]restore! 52 | 53 | -d 主要是 glibc-all-in-one 的libc库管理 54 | ➜ ~ xclibc -d 55 | [+]Select the version you want to download 56 | Blue is downloadable Green is already downloaded 57 | 58 | 2.17-93ubuntu4_amd64 2.19-0ubuntu3_i386 2.19-0ubuntu6.4_amd64 ...... 59 | ➜ ~ xclibc -d 2.19-0ubuntu6.4_amd64 60 | 61 | ``` 62 | 63 | 详细参数 64 | ```bash 65 | xclibc [选项] [参数] 66 | -s [libc文件] # 查看libc文件版本 67 | -x [-n] [文件] [libc文件] # 一键给文件配置libc文件相应版本的环境(添加-n选项可以使用修改--replace-needed的方式实现) 68 | -c [-n] [文件] [libc大版本号] [libc小版本环境路径] # 给文件配置指定的libc环境,输入大版本号后回车,可自由选择复制libc小版本环境路径(添加-n选项可以使用修改--replace-needed的方式实现) 69 | -d <-r/-u> [version] 70 | # -d [ENTER] 可以查看所有可下载的libc版本 71 | # -d -r [version] 删除相应的libc版本库 72 | # -d -u 更新最新的所有libc版本 73 | # -d [version] 下载对应版本的libc 74 | -e [deb包] # 解压相应的libc_deb包至glibc_all_in_one路径,通常一个版本需要解压一份本体deb和一份debug_deb包 75 | -r [文件] # 恢复修改过的文件至初始状态 76 | -h # 展示帮助提示 77 | -v # 显示版本号 78 | ``` 79 | 80 | ## 添加libc版本 81 | 82 | 可以在脚本头部数组中添加新的版本和下载链接,一个libc版本需要一份本体和debug版本,2份下载链接 83 | e.g.libc6_2.31-0ubuntu1_amd64.deb 和 libc6-dbg_2.31-0ubuntu1_amd64.deb 84 | 85 | ![image](https://github.com/ef4tless/xclibc/assets/52035000/991fe00d-777d-4aeb-8320-7a6d8c822e9d) 86 | 87 | 88 | ## 更新 89 | v1.6: 修复了在下载2.39版本时获取不到debug信息的问题 90 | 91 | v1.5: 修复了`xclibc -x -n`时出现的bug 92 | 93 | v1.3: 更新了代码逻辑修复了一些bug,简化了操作,删除了-e功能,将下载所有的libc版本集成到了`-d -u`命令中 94 | 95 | v1.0: 增加了旧的下架版本的匹配,现在-x功能能匹配更多的版本了,完善了-d libc包管理功能,优化了部分逻辑处理方式 96 | 97 | v0.9: 添加了-d下载libc版本库的功能,修复了2.31-0ubuntu9.10_amd64/i386不能加载的问题 98 | 99 | v0.7: 修复了一个bug,该bug曾导致2.31-0ubuntu9.9_amd64/i386 版本在加载后不能正常debug 100 | 101 | v0.5: 重定义了选项命令 102 | 103 | v0.3: 添加了解压deb包的功能 104 | 105 | ## 警告 106 | 107 | 这个脚本在patch过程中将会删除`/usr/lib/debug/.build/`,如果你介意这一点,请先备份本机文件。 108 | 109 | ## 最后 110 | 111 | 如果你在使用脚本中遇到任何的问题,请尽快联系我。 112 | 113 | 感谢cnitlrt师傅最初的脚本思路。 114 | -------------------------------------------------------------------------------- /xclibc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Author: e4l4 3 | 4 | declare -A urls 5 | urls=( 6 | ["libc6_2.27-3ubuntu1.4_amd64.deb"]="http://launchpadlibrarian.net/510434953/libc6_2.27-3ubuntu1.4_amd64.deb" 7 | ["libc6_2.27-3ubuntu1.3_amd64.deb"]="http://launchpadlibrarian.net/497108893/libc6_2.27-3ubuntu1.3_amd64.deb" 8 | ["libc6_2.27-3ubuntu1.2_amd64.deb"]="http://launchpadlibrarian.net/482990870/libc6_2.27-3ubuntu1.2_amd64.deb" 9 | ["libc6_2.27-3ubuntu1_amd64.deb"]="http://launchpadlibrarian.net/365856922/libc6_2.27-3ubuntu1_amd64.deb" 10 | ["libc6_2.27-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/363027601/libc6_2.27-0ubuntu3_amd64.deb" 11 | ["libc6_2.27-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/358234306/libc6_2.27-0ubuntu2_amd64.deb" 12 | ["libc6_2.26-0ubuntu2.1_amd64.deb"]="http://launchpadlibrarian.net/353428822/libc6_2.26-0ubuntu2.1_amd64.deb" 13 | ["libc6_2.26-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/355198200/libc6_2.26-0ubuntu4_amd64.deb" 14 | ["libc6_2.26-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/353888159/libc6_2.26-0ubuntu3_amd64.deb" 15 | ["libc6_2.26-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/340569656/libc6_2.26-0ubuntu2_amd64.deb" 16 | ["libc6-dbg_2.27-3ubuntu1.4_amd64.deb"]="http://launchpadlibrarian.net/510434945/libc6-dbg_2.27-3ubuntu1.4_amd64.deb" 17 | ["libc6-dbg_2.27-3ubuntu1.3_amd64.deb"]="http://launchpadlibrarian.net/497108885/libc6-dbg_2.27-3ubuntu1.3_amd64.deb" 18 | ["libc6-dbg_2.27-3ubuntu1.2_amd64.deb"]="http://launchpadlibrarian.net/482990856/libc6-dbg_2.27-3ubuntu1.2_amd64.deb" 19 | ["libc6-dbg_2.27-3ubuntu1_amd64.deb"]="http://launchpadlibrarian.net/365856914/libc6-dbg_2.27-3ubuntu1_amd64.deb" 20 | ["libc6-dbg_2.27-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/363027592/libc6-dbg_2.27-0ubuntu3_amd64.deb" 21 | ["libc6-dbg_2.27-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/358234297/libc6-dbg_2.27-0ubuntu2_amd64.deb" 22 | ["libc6-dbg_2.26-0ubuntu2.1_amd64.deb"]="http://launchpadlibrarian.net/353428813/libc6-dbg_2.26-0ubuntu2.1_amd64.deb" 23 | ["libc6-dbg_2.26-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/355198192/libc6-dbg_2.26-0ubuntu4_amd64.deb" 24 | ["libc6-dbg_2.26-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/353888151/libc6-dbg_2.26-0ubuntu3_amd64.deb" 25 | ["libc6-dbg_2.26-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/340569642/libc6-dbg_2.26-0ubuntu2_amd64.deb" 26 | ["libc6_2.27-3ubuntu1.4_i386.deb"]="http://launchpadlibrarian.net/510430286/libc6_2.27-3ubuntu1.4_i386.deb" 27 | ["libc6_2.27-3ubuntu1.3_i386.deb"]="http://launchpadlibrarian.net/497108431/libc6_2.27-3ubuntu1.3_i386.deb" 28 | ["libc6_2.27-3ubuntu1.2_i386.deb"]="http://launchpadlibrarian.net/482991847/libc6_2.27-3ubuntu1.2_i386.deb" 29 | ["libc6_2.27-3ubuntu1_i386.deb"]="http://launchpadlibrarian.net/365893745/libc6_2.27-3ubuntu1_i386.deb" 30 | ["libc6_2.27-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/363028246/libc6_2.27-0ubuntu3_i386.deb" 31 | ["libc6_2.27-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/358271059/libc6_2.27-0ubuntu2_i386.deb" 32 | ["libc6_2.26-0ubuntu2.1_i386.deb"]="http://launchpadlibrarian.net/353428882/libc6_2.26-0ubuntu2.1_i386.deb" 33 | ["libc6_2.26-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/355198504/libc6_2.26-0ubuntu4_i386.deb" 34 | ["libc6_2.26-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/353884091/libc6_2.26-0ubuntu3_i386.deb" 35 | ["libc6_2.26-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/340569286/libc6_2.26-0ubuntu2_i386.deb" 36 | ["libc6-dbg_2.27-3ubuntu1.4_i386.deb"]="http://launchpadlibrarian.net/510430279/libc6-dbg_2.27-3ubuntu1.4_i386.deb" 37 | ["libc6-dbg_2.27-3ubuntu1.3_i386.deb"]="http://launchpadlibrarian.net/497108424/libc6-dbg_2.27-3ubuntu1.3_i386.deb" 38 | ["libc6-dbg_2.27-3ubuntu1.2_i386.deb"]="http://launchpadlibrarian.net/482991840/libc6-dbg_2.27-3ubuntu1.2_i386.deb" 39 | ["libc6-dbg_2.27-3ubuntu1_i386.deb"]="http://launchpadlibrarian.net/365893738/libc6-dbg_2.27-3ubuntu1_i386.deb" 40 | ["libc6-dbg_2.27-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/363028238/libc6-dbg_2.27-0ubuntu3_i386.deb" 41 | ["libc6-dbg_2.27-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/358271050/libc6-dbg_2.27-0ubuntu2_i386.deb" 42 | ["libc6-dbg_2.26-0ubuntu2.1_i386.deb"]="http://launchpadlibrarian.net/353428865/libc6-dbg_2.26-0ubuntu2.1_i386.deb" 43 | ["libc6-dbg_2.26-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/355198497/libc6-dbg_2.26-0ubuntu4_i386.deb" 44 | ["libc6-dbg_2.26-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/353884083/libc6-dbg_2.26-0ubuntu3_i386.deb" 45 | ["libc6-dbg_2.26-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/340569275/libc6-dbg_2.26-0ubuntu2_i386.deb" 46 | ["libc6_2.31-0ubuntu9.2_amd64.deb"]="http://launchpadlibrarian.net/511639304/libc6_2.31-0ubuntu9.2_amd64.deb" 47 | ["libc6_2.31-0ubuntu9.3_amd64.deb"]="http://launchpadlibrarian.net/530777699/libc6_2.31-0ubuntu9.3_amd64.deb" 48 | ["libc6_2.31-0ubuntu9.1_amd64.deb"]="http://launchpadlibrarian.net/496035825/libc6_2.31-0ubuntu9.1_amd64.deb" 49 | ["libc6_2.31-0ubuntu9_amd64.deb"]="http://launchpadlibrarian.net/474699081/libc6_2.31-0ubuntu9_amd64.deb" 50 | ["libc6_2.31-0ubuntu8_amd64.deb"]="http://launchpadlibrarian.net/473640372/libc6_2.31-0ubuntu8_amd64.deb" 51 | ["libc6_2.31-0ubuntu7_amd64.deb"]="http://launchpadlibrarian.net/472714312/libc6_2.31-0ubuntu7_amd64.deb" 52 | ["libc6_2.31-0ubuntu6_amd64.deb"]="http://launchpadlibrarian.net/469103322/libc6_2.31-0ubuntu6_amd64.deb" 53 | ["libc6_2.31-0ubuntu5_amd64.deb"]="http://launchpadlibrarian.net/468754765/libc6_2.31-0ubuntu5_amd64.deb" 54 | ["libc6_2.31-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/468697875/libc6_2.31-0ubuntu4_amd64.deb" 55 | ["libc6_2.31-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/468409391/libc6_2.31-0ubuntu3_amd64.deb" 56 | ["libc6_2.31-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/468093987/libc6_2.31-0ubuntu2_amd64.deb" 57 | ["libc6_2.31-0ubuntu1_amd64.deb"]="http://launchpadlibrarian.net/467985139/libc6_2.31-0ubuntu1_amd64.deb" 58 | ["libc6_2.30-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/453587373/libc6_2.30-0ubuntu3_amd64.deb" 59 | ["libc6_2.30-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/442988556/libc6_2.30-0ubuntu2_amd64.deb" 60 | ["libc6-dbg_2.31-0ubuntu9.2_amd64.deb"]="http://launchpadlibrarian.net/511639295/libc6-dbg_2.31-0ubuntu9.2_amd64.deb" 61 | ["libc6-dbg_2.31-0ubuntu9.3_amd64.deb"]="http://launchpadlibrarian.net/530777688/libc6-dbg_2.31-0ubuntu9.3_amd64.deb" 62 | ["libc6-dbg_2.31-0ubuntu9.1_amd64.deb"]="http://launchpadlibrarian.net/496035817/libc6-dbg_2.31-0ubuntu9.1_amd64.deb" 63 | ["libc6-dbg_2.31-0ubuntu9_amd64.deb"]="http://launchpadlibrarian.net/474699070/libc6-dbg_2.31-0ubuntu9_amd64.deb" 64 | ["libc6-dbg_2.31-0ubuntu8_amd64.deb"]="http://launchpadlibrarian.net/473640364/libc6-dbg_2.31-0ubuntu8_amd64.deb" 65 | ["libc6-dbg_2.31-0ubuntu7_amd64.deb"]="http://launchpadlibrarian.net/472714300/libc6-dbg_2.31-0ubuntu7_amd64.deb" 66 | ["libc6-dbg_2.31-0ubuntu6_amd64.deb"]="http://launchpadlibrarian.net/469103311/libc6-dbg_2.31-0ubuntu6_amd64.deb" 67 | ["libc6-dbg_2.31-0ubuntu5_amd64.deb"]="http://launchpadlibrarian.net/468754757/libc6-dbg_2.31-0ubuntu5_amd64.deb" 68 | ["libc6-dbg_2.31-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/468697865/libc6-dbg_2.31-0ubuntu4_amd64.deb" 69 | ["libc6-dbg_2.31-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/468409382/libc6-dbg_2.31-0ubuntu3_amd64.deb" 70 | ["libc6-dbg_2.31-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/468093977/libc6-dbg_2.31-0ubuntu2_amd64.deb" 71 | ["libc6-dbg_2.31-0ubuntu1_amd64.deb"]="http://launchpadlibrarian.net/467985130/libc6-dbg_2.31-0ubuntu1_amd64.deb" 72 | ["libc6-dbg_2.30-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/453587361/libc6-dbg_2.30-0ubuntu3_amd64.deb" 73 | ["libc6-dbg_2.30-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/442988547/libc6-dbg_2.30-0ubuntu2_amd64.deb" 74 | ["libc6_2.31-0ubuntu9.2_i386.deb"]="http://launchpadlibrarian.net/511623696/libc6_2.31-0ubuntu9.2_i386.deb" 75 | ["libc6_2.31-0ubuntu9.3_i386.deb"]="http://launchpadlibrarian.net/530801531/libc6_2.31-0ubuntu9.3_i386.deb" 76 | ["libc6_2.31-0ubuntu9.1_i386.deb"]="http://launchpadlibrarian.net/496034463/libc6_2.31-0ubuntu9.1_i386.deb" 77 | ["libc6_2.31-0ubuntu9_i386.deb"]="http://launchpadlibrarian.net/474699915/libc6_2.31-0ubuntu9_i386.deb" 78 | ["libc6_2.31-0ubuntu8_i386.deb"]="http://launchpadlibrarian.net/473660642/libc6_2.31-0ubuntu8_i386.deb" 79 | ["libc6_2.31-0ubuntu7_i386.deb"]="http://launchpadlibrarian.net/472695990/libc6_2.31-0ubuntu7_i386.deb" 80 | ["libc6_2.31-0ubuntu6_i386.deb"]="http://launchpadlibrarian.net/469095363/libc6_2.31-0ubuntu6_i386.deb" 81 | ["libc6_2.31-0ubuntu5_i386.deb"]="http://launchpadlibrarian.net/468757030/libc6_2.31-0ubuntu5_i386.deb" 82 | ["libc6_2.31-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/468691825/libc6_2.31-0ubuntu4_i386.deb" 83 | ["libc6_2.31-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/468409470/libc6_2.31-0ubuntu3_i386.deb" 84 | ["libc6_2.31-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/468095010/libc6_2.31-0ubuntu2_i386.deb" 85 | ["libc6_2.31-0ubuntu1_i386.deb"]="http://launchpadlibrarian.net/467975423/libc6_2.31-0ubuntu1_i386.deb" 86 | ["libc6_2.30-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/453587260/libc6_2.30-0ubuntu3_i386.deb" 87 | ["libc6_2.30-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/442987832/libc6_2.30-0ubuntu2_i386.deb" 88 | ["libc6-dbg_2.31-0ubuntu9.2_i386.deb"]="http://launchpadlibrarian.net/511623689/libc6-dbg_2.31-0ubuntu9.2_i386.deb" 89 | ["libc6-dbg_2.31-0ubuntu9.3_i386.deb"]="http://launchpadlibrarian.net/530801524/libc6-dbg_2.31-0ubuntu9.3_i386.deb" 90 | ["libc6-dbg_2.31-0ubuntu9.1_i386.deb"]="http://launchpadlibrarian.net/496034456/libc6-dbg_2.31-0ubuntu9.1_i386.deb" 91 | ["libc6-dbg_2.31-0ubuntu9_i386.deb"]="http://launchpadlibrarian.net/474699905/libc6-dbg_2.31-0ubuntu9_i386.deb" 92 | ["libc6-dbg_2.31-0ubuntu8_i386.deb"]="http://launchpadlibrarian.net/473660635/libc6-dbg_2.31-0ubuntu8_i386.deb" 93 | ["libc6-dbg_2.31-0ubuntu7_i386.deb"]="http://launchpadlibrarian.net/472695983/libc6-dbg_2.31-0ubuntu7_i386.deb" 94 | ["libc6-dbg_2.31-0ubuntu6_i386.deb"]="http://launchpadlibrarian.net/469095353/libc6-dbg_2.31-0ubuntu6_i386.deb" 95 | ["libc6-dbg_2.31-0ubuntu5_i386.deb"]="http://launchpadlibrarian.net/468757022/libc6-dbg_2.31-0ubuntu5_i386.deb" 96 | ["libc6-dbg_2.31-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/468691817/libc6-dbg_2.31-0ubuntu4_i386.deb" 97 | ["libc6-dbg_2.31-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/468409462/libc6-dbg_2.31-0ubuntu3_i386.deb" 98 | ["libc6-dbg_2.31-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/468095000/libc6-dbg_2.31-0ubuntu2_i386.deb" 99 | ["libc6-dbg_2.31-0ubuntu1_i386.deb"]="http://launchpadlibrarian.net/467975415/libc6-dbg_2.31-0ubuntu1_i386.deb" 100 | ["libc6-dbg_2.30-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/453587253/libc6-dbg_2.30-0ubuntu3_i386.deb" 101 | ["libc6-dbg_2.30-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/442987822/libc6-dbg_2.30-0ubuntu2_i386.deb" 102 | ["libc6_2.19-0ubuntu6.15_amd64.deb"]="http://launchpadlibrarian.net/416685715/libc6_2.19-0ubuntu6.15_amd64.deb" 103 | ["libc6_2.19-0ubuntu6.14_amd64.deb"]="http://launchpadlibrarian.net/353606314/libc6_2.19-0ubuntu6.14_amd64.deb" 104 | ["libc6_2.19-0ubuntu6.13_amd64.deb"]="http://launchpadlibrarian.net/324303878/libc6_2.19-0ubuntu6.13_amd64.deb" 105 | ["libc6_2.19-0ubuntu6.11_amd64.deb"]="http://launchpadlibrarian.net/311779684/libc6_2.19-0ubuntu6.11_amd64.deb" 106 | ["libc6_2.19-0ubuntu6.10_amd64.deb"]="http://launchpadlibrarian.net/309945315/libc6_2.19-0ubuntu6.10_amd64.deb" 107 | ["libc6_2.19-0ubuntu6.9_amd64.deb"]="http://launchpadlibrarian.net/261740884/libc6_2.19-0ubuntu6.9_amd64.deb" 108 | ["libc6_2.19-0ubuntu6.7_amd64.deb"]="http://launchpadlibrarian.net/239099297/libc6_2.19-0ubuntu6.7_amd64.deb" 109 | ["libc6_2.19-0ubuntu6.8_amd64.deb"]="http://launchpadlibrarian.net/253297185/libc6_2.19-0ubuntu6.8_amd64.deb" 110 | ["libc6_2.19-0ubuntu6.6_amd64.deb"]="http://launchpadlibrarian.net/198723917/libc6_2.19-0ubuntu6.6_amd64.deb" 111 | ["libc6_2.19-0ubuntu6.5_amd64.deb"]="http://launchpadlibrarian.net/191853533/libc6_2.19-0ubuntu6.5_amd64.deb" 112 | ["libc6_2.19-0ubuntu6.4_amd64.deb"]="http://launchpadlibrarian.net/191626563/libc6_2.19-0ubuntu6.4_amd64.deb" 113 | ["libc6_2.19-0ubuntu6.3_amd64.deb"]="http://launchpadlibrarian.net/183374351/libc6_2.19-0ubuntu6.3_amd64.deb" 114 | ["libc6_2.19-0ubuntu6.2_amd64.deb"]="http://launchpadlibrarian.net/183251024/libc6_2.19-0ubuntu6.2_amd64.deb" 115 | ["libc6_2.19-0ubuntu6.1_amd64.deb"]="http://launchpadlibrarian.net/180923099/libc6_2.19-0ubuntu6.1_amd64.deb" 116 | ["libc6_2.19-0ubuntu6_amd64.deb"]="http://launchpadlibrarian.net/172657656/libc6_2.19-0ubuntu6_amd64.deb" 117 | ["libc6_2.19-0ubuntu5_amd64.deb"]="http://launchpadlibrarian.net/172507221/libc6_2.19-0ubuntu5_amd64.deb" 118 | ["libc6_2.19-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/172335536/libc6_2.19-0ubuntu4_amd64.deb" 119 | ["libc6_2.19-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/170525723/libc6_2.19-0ubuntu3_amd64.deb" 120 | ["libc6_2.19-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/167413954/libc6_2.19-0ubuntu2_amd64.deb" 121 | ["libc6_2.19-0ubuntu1_amd64.deb"]="http://launchpadlibrarian.net/167162297/libc6_2.19-0ubuntu1_amd64.deb" 122 | ["libc6_2.18-0ubuntu7_amd64.deb"]="http://launchpadlibrarian.net/166491656/libc6_2.18-0ubuntu7_amd64.deb" 123 | ["libc6_2.18-0ubuntu6_amd64.deb"]="http://launchpadlibrarian.net/162592045/libc6_2.18-0ubuntu6_amd64.deb" 124 | ["libc6_2.18-0ubuntu5_amd64.deb"]="http://launchpadlibrarian.net/162475177/libc6_2.18-0ubuntu5_amd64.deb" 125 | ["libc6_2.18-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/162205900/libc6_2.18-0ubuntu4_amd64.deb" 126 | ["libc6_2.18-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/162198013/libc6_2.18-0ubuntu3_amd64.deb" 127 | ["libc6_2.18-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/160268315/libc6_2.18-0ubuntu2_amd64.deb" 128 | ["libc6_2.18-0ubuntu1_amd64.deb"]="http://launchpadlibrarian.net/159895958/libc6_2.18-0ubuntu1_amd64.deb" 129 | ["libc6_2.17-93ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/153554145/libc6_2.17-93ubuntu4_amd64.deb" 130 | ["libc6-dbg_2.19-0ubuntu6.15_amd64.deb"]="http://launchpadlibrarian.net/416685711/libc6-dbg_2.19-0ubuntu6.15_amd64.deb" 131 | ["libc6-dbg_2.19-0ubuntu6.14_amd64.deb"]="http://launchpadlibrarian.net/353606308/libc6-dbg_2.19-0ubuntu6.14_amd64.deb" 132 | ["libc6-dbg_2.19-0ubuntu6.13_amd64.deb"]="http://launchpadlibrarian.net/324303874/libc6-dbg_2.19-0ubuntu6.13_amd64.deb" 133 | ["libc6-dbg_2.19-0ubuntu6.11_amd64.deb"]="http://launchpadlibrarian.net/311779680/libc6-dbg_2.19-0ubuntu6.11_amd64.deb" 134 | ["libc6-dbg_2.19-0ubuntu6.10_amd64.deb"]="http://launchpadlibrarian.net/309945305/libc6-dbg_2.19-0ubuntu6.10_amd64.deb" 135 | ["libc6-dbg_2.19-0ubuntu6.9_amd64.deb"]="http://launchpadlibrarian.net/261740878/libc6-dbg_2.19-0ubuntu6.9_amd64.deb" 136 | ["libc6-dbg_2.19-0ubuntu6.7_amd64.deb"]="http://launchpadlibrarian.net/239099293/libc6-dbg_2.19-0ubuntu6.7_amd64.deb" 137 | ["libc6-dbg_2.19-0ubuntu6.8_amd64.deb"]="http://launchpadlibrarian.net/253297180/libc6-dbg_2.19-0ubuntu6.8_amd64.deb" 138 | ["libc6-dbg_2.19-0ubuntu6.6_amd64.deb"]="http://launchpadlibrarian.net/198723929/libc6-dbg_2.19-0ubuntu6.6_amd64.deb" 139 | ["libc6-dbg_2.19-0ubuntu6.5_amd64.deb"]="http://launchpadlibrarian.net/191853545/libc6-dbg_2.19-0ubuntu6.5_amd64.deb" 140 | ["libc6-dbg_2.19-0ubuntu6.4_amd64.deb"]="http://launchpadlibrarian.net/191626582/libc6-dbg_2.19-0ubuntu6.4_amd64.deb" 141 | ["libc6-dbg_2.19-0ubuntu6.3_amd64.deb"]="http://launchpadlibrarian.net/183374363/libc6-dbg_2.19-0ubuntu6.3_amd64.deb" 142 | ["libc6-dbg_2.19-0ubuntu6.2_amd64.deb"]="http://launchpadlibrarian.net/183251049/libc6-dbg_2.19-0ubuntu6.2_amd64.deb" 143 | ["libc6-dbg_2.19-0ubuntu6.1_amd64.deb"]="http://launchpadlibrarian.net/180923112/libc6-dbg_2.19-0ubuntu6.1_amd64.deb" 144 | ["libc6-dbg_2.19-0ubuntu6_amd64.deb"]="http://launchpadlibrarian.net/172657668/libc6-dbg_2.19-0ubuntu6_amd64.deb" 145 | ["libc6-dbg_2.19-0ubuntu5_amd64.deb"]="http://launchpadlibrarian.net/172507234/libc6-dbg_2.19-0ubuntu5_amd64.deb" 146 | ["libc6-dbg_2.19-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/172335567/libc6-dbg_2.19-0ubuntu4_amd64.deb" 147 | ["libc6-dbg_2.19-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/170525760/libc6-dbg_2.19-0ubuntu3_amd64.deb" 148 | ["libc6-dbg_2.19-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/167413976/libc6-dbg_2.19-0ubuntu2_amd64.deb" 149 | ["libc6-dbg_2.19-0ubuntu1_amd64.deb"]="http://launchpadlibrarian.net/167162310/libc6-dbg_2.19-0ubuntu1_amd64.deb" 150 | ["libc6-dbg_2.18-0ubuntu7_amd64.deb"]="http://launchpadlibrarian.net/166491668/libc6-dbg_2.18-0ubuntu7_amd64.deb" 151 | ["libc6-dbg_2.18-0ubuntu6_amd64.deb"]="http://launchpadlibrarian.net/162592059/libc6-dbg_2.18-0ubuntu6_amd64.deb" 152 | ["libc6-dbg_2.18-0ubuntu5_amd64.deb"]="http://launchpadlibrarian.net/162475189/libc6-dbg_2.18-0ubuntu5_amd64.deb" 153 | ["libc6-dbg_2.18-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/162205913/libc6-dbg_2.18-0ubuntu4_amd64.deb" 154 | ["libc6-dbg_2.18-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/162198025/libc6-dbg_2.18-0ubuntu3_amd64.deb" 155 | ["libc6-dbg_2.18-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/160268328/libc6-dbg_2.18-0ubuntu2_amd64.deb" 156 | ["libc6-dbg_2.18-0ubuntu1_amd64.deb"]="http://launchpadlibrarian.net/159895970/libc6-dbg_2.18-0ubuntu1_amd64.deb" 157 | ["libc6-dbg_2.17-93ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/153554157/libc6-dbg_2.17-93ubuntu4_amd64.deb" 158 | ["libc6_2.19-0ubuntu6.15_i386.deb"]="http://launchpadlibrarian.net/416683181/libc6_2.19-0ubuntu6.15_i386.deb" 159 | ["libc6_2.19-0ubuntu6.14_i386.deb"]="http://launchpadlibrarian.net/353620296/libc6_2.19-0ubuntu6.14_i386.deb" 160 | ["libc6_2.19-0ubuntu6.13_i386.deb"]="http://launchpadlibrarian.net/324303718/libc6_2.19-0ubuntu6.13_i386.deb" 161 | ["libc6_2.19-0ubuntu6.11_i386.deb"]="http://launchpadlibrarian.net/311781625/libc6_2.19-0ubuntu6.11_i386.deb" 162 | ["libc6_2.19-0ubuntu6.10_i386.deb"]="http://launchpadlibrarian.net/309945477/libc6_2.19-0ubuntu6.10_i386.deb" 163 | ["libc6_2.19-0ubuntu6.9_i386.deb"]="http://launchpadlibrarian.net/261743624/libc6_2.19-0ubuntu6.9_i386.deb" 164 | ["libc6_2.19-0ubuntu6.7_i386.deb"]="http://launchpadlibrarian.net/239076441/libc6_2.19-0ubuntu6.7_i386.deb" 165 | ["libc6_2.19-0ubuntu6.8_i386.deb"]="http://launchpadlibrarian.net/253296598/libc6_2.19-0ubuntu6.8_i386.deb" 166 | ["libc6_2.19-0ubuntu6.6_i386.deb"]="http://launchpadlibrarian.net/198724094/libc6_2.19-0ubuntu6.6_i386.deb" 167 | ["libc6_2.19-0ubuntu6.5_i386.deb"]="http://launchpadlibrarian.net/191854268/libc6_2.19-0ubuntu6.5_i386.deb" 168 | ["libc6_2.19-0ubuntu6.4_i386.deb"]="http://launchpadlibrarian.net/191626722/libc6_2.19-0ubuntu6.4_i386.deb" 169 | ["libc6_2.19-0ubuntu6.3_i386.deb"]="http://launchpadlibrarian.net/183374272/libc6_2.19-0ubuntu6.3_i386.deb" 170 | ["libc6_2.19-0ubuntu6.2_i386.deb"]="http://launchpadlibrarian.net/183251277/libc6_2.19-0ubuntu6.2_i386.deb" 171 | ["libc6_2.19-0ubuntu6.1_i386.deb"]="http://launchpadlibrarian.net/180923468/libc6_2.19-0ubuntu6.1_i386.deb" 172 | ["libc6_2.19-0ubuntu6_i386.deb"]="http://launchpadlibrarian.net/172658236/libc6_2.19-0ubuntu6_i386.deb" 173 | ["libc6_2.19-0ubuntu5_i386.deb"]="http://launchpadlibrarian.net/172507582/libc6_2.19-0ubuntu5_i386.deb" 174 | ["libc6_2.19-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/172335810/libc6_2.19-0ubuntu4_i386.deb" 175 | ["libc6_2.19-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/170526514/libc6_2.19-0ubuntu3_i386.deb" 176 | ["libc6_2.19-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/167416599/libc6_2.19-0ubuntu2_i386.deb" 177 | ["libc6_2.19-0ubuntu1_i386.deb"]="http://launchpadlibrarian.net/167158545/libc6_2.19-0ubuntu1_i386.deb" 178 | ["libc6_2.18-0ubuntu7_i386.deb"]="http://launchpadlibrarian.net/166493615/libc6_2.18-0ubuntu7_i386.deb" 179 | ["libc6_2.18-0ubuntu6_i386.deb"]="http://launchpadlibrarian.net/162594269/libc6_2.18-0ubuntu6_i386.deb" 180 | ["libc6_2.18-0ubuntu5_i386.deb"]="http://launchpadlibrarian.net/162478995/libc6_2.18-0ubuntu5_i386.deb" 181 | ["libc6_2.18-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/162207798/libc6_2.18-0ubuntu4_i386.deb" 182 | ["libc6_2.18-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/162200414/libc6_2.18-0ubuntu3_i386.deb" 183 | ["libc6_2.18-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/160266182/libc6_2.18-0ubuntu2_i386.deb" 184 | ["libc6_2.18-0ubuntu1_i386.deb"]="http://launchpadlibrarian.net/159898397/libc6_2.18-0ubuntu1_i386.deb" 185 | ["libc6_2.17-93ubuntu4_i386.deb"]="http://launchpadlibrarian.net/153556377/libc6_2.17-93ubuntu4_i386.deb" 186 | ["libc6-dbg_2.19-0ubuntu6.15_i386.deb"]="http://launchpadlibrarian.net/416683177/libc6-dbg_2.19-0ubuntu6.15_i386.deb" 187 | ["libc6-dbg_2.19-0ubuntu6.14_i386.deb"]="http://launchpadlibrarian.net/353620292/libc6-dbg_2.19-0ubuntu6.14_i386.deb" 188 | ["libc6-dbg_2.19-0ubuntu6.13_i386.deb"]="http://launchpadlibrarian.net/324303714/libc6-dbg_2.19-0ubuntu6.13_i386.deb" 189 | ["libc6-dbg_2.19-0ubuntu6.11_i386.deb"]="http://launchpadlibrarian.net/311781619/libc6-dbg_2.19-0ubuntu6.11_i386.deb" 190 | ["libc6-dbg_2.19-0ubuntu6.10_i386.deb"]="http://launchpadlibrarian.net/309945473/libc6-dbg_2.19-0ubuntu6.10_i386.deb" 191 | ["libc6-dbg_2.19-0ubuntu6.9_i386.deb"]="http://launchpadlibrarian.net/261743620/libc6-dbg_2.19-0ubuntu6.9_i386.deb" 192 | ["libc6-dbg_2.19-0ubuntu6.7_i386.deb"]="http://launchpadlibrarian.net/239076422/libc6-dbg_2.19-0ubuntu6.7_i386.deb" 193 | ["libc6-dbg_2.19-0ubuntu6.8_i386.deb"]="http://launchpadlibrarian.net/253296594/libc6-dbg_2.19-0ubuntu6.8_i386.deb" 194 | ["libc6-dbg_2.19-0ubuntu6.6_i386.deb"]="http://launchpadlibrarian.net/198724109/libc6-dbg_2.19-0ubuntu6.6_i386.deb" 195 | ["libc6-dbg_2.19-0ubuntu6.5_i386.deb"]="http://launchpadlibrarian.net/191854280/libc6-dbg_2.19-0ubuntu6.5_i386.deb" 196 | ["libc6-dbg_2.19-0ubuntu6.4_i386.deb"]="http://launchpadlibrarian.net/191626734/libc6-dbg_2.19-0ubuntu6.4_i386.deb" 197 | ["libc6-dbg_2.19-0ubuntu6.3_i386.deb"]="http://launchpadlibrarian.net/183374284/libc6-dbg_2.19-0ubuntu6.3_i386.deb" 198 | ["libc6-dbg_2.19-0ubuntu6.2_i386.deb"]="http://launchpadlibrarian.net/183251294/libc6-dbg_2.19-0ubuntu6.2_i386.deb" 199 | ["libc6-dbg_2.19-0ubuntu6.1_i386.deb"]="http://launchpadlibrarian.net/180923480/libc6-dbg_2.19-0ubuntu6.1_i386.deb" 200 | ["libc6-dbg_2.19-0ubuntu6_i386.deb"]="http://launchpadlibrarian.net/172658250/libc6-dbg_2.19-0ubuntu6_i386.deb" 201 | ["libc6-dbg_2.19-0ubuntu5_i386.deb"]="http://launchpadlibrarian.net/172507594/libc6-dbg_2.19-0ubuntu5_i386.deb" 202 | ["libc6-dbg_2.19-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/172335830/libc6-dbg_2.19-0ubuntu4_i386.deb" 203 | ["libc6-dbg_2.19-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/170526529/libc6-dbg_2.19-0ubuntu3_i386.deb" 204 | ["libc6-dbg_2.19-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/167416613/libc6-dbg_2.19-0ubuntu2_i386.deb" 205 | ["libc6-dbg_2.19-0ubuntu1_i386.deb"]="http://launchpadlibrarian.net/167158558/libc6-dbg_2.19-0ubuntu1_i386.deb" 206 | ["libc6-dbg_2.18-0ubuntu7_i386.deb"]="http://launchpadlibrarian.net/166493628/libc6-dbg_2.18-0ubuntu7_i386.deb" 207 | ["libc6-dbg_2.18-0ubuntu6_i386.deb"]="http://launchpadlibrarian.net/162594282/libc6-dbg_2.18-0ubuntu6_i386.deb" 208 | ["libc6-dbg_2.18-0ubuntu5_i386.deb"]="http://launchpadlibrarian.net/162479008/libc6-dbg_2.18-0ubuntu5_i386.deb" 209 | ["libc6-dbg_2.18-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/162207811/libc6-dbg_2.18-0ubuntu4_i386.deb" 210 | ["libc6-dbg_2.18-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/162200428/libc6-dbg_2.18-0ubuntu3_i386.deb" 211 | ["libc6-dbg_2.18-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/160266195/libc6-dbg_2.18-0ubuntu2_i386.deb" 212 | ["libc6-dbg_2.18-0ubuntu1_i386.deb"]="http://launchpadlibrarian.net/159898410/libc6-dbg_2.18-0ubuntu1_i386.deb" 213 | ["libc6-dbg_2.17-93ubuntu4_i386.deb"]="http://launchpadlibrarian.net/153556390/libc6-dbg_2.17-93ubuntu4_i386.deb" 214 | ["libc6_2.23-0ubuntu11.3_amd64.deb"]="http://launchpadlibrarian.net/534747115/libc6_2.23-0ubuntu11.3_amd64.deb" 215 | ["libc6_2.23-0ubuntu11.2_amd64.deb"]="http://launchpadlibrarian.net/482985942/libc6_2.23-0ubuntu11.2_amd64.deb" 216 | ["libc6_2.23-0ubuntu11_amd64.deb"]="http://launchpadlibrarian.net/409875491/libc6_2.23-0ubuntu11_amd64.deb" 217 | ["libc6_2.23-0ubuntu10_amd64.deb"]="http://launchpadlibrarian.net/353523729/libc6_2.23-0ubuntu10_amd64.deb" 218 | ["libc6_2.23-0ubuntu9_amd64.deb"]="http://launchpadlibrarian.net/324305509/libc6_2.23-0ubuntu9_amd64.deb" 219 | ["libc6_2.23-0ubuntu7_amd64.deb"]="http://launchpadlibrarian.net/311784970/libc6_2.23-0ubuntu7_amd64.deb" 220 | ["libc6_2.23-0ubuntu6_amd64.deb"]="http://launchpadlibrarian.net/309946895/libc6_2.23-0ubuntu6_amd64.deb" 221 | ["libc6_2.23-0ubuntu5_amd64.deb"]="http://launchpadlibrarian.net/293727143/libc6_2.23-0ubuntu5_amd64.deb" 222 | ["libc6_2.23-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/289526913/libc6_2.23-0ubuntu4_amd64.deb" 223 | ["libc6_2.23-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/253857233/libc6_2.23-0ubuntu3_amd64.deb" 224 | ["libc6_2.23-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/249648112/libc6_2.23-0ubuntu2_amd64.deb" 225 | ["libc6_2.23-0ubuntu1_amd64.deb"]="http://launchpadlibrarian.net/249034097/libc6_2.23-0ubuntu1_amd64.deb" 226 | ["libc6_2.21-0ubuntu6_amd64.deb"]="http://launchpadlibrarian.net/239453009/libc6_2.21-0ubuntu6_amd64.deb" 227 | ["libc6_2.21-0ubuntu5_amd64.deb"]="http://launchpadlibrarian.net/228543889/libc6_2.21-0ubuntu5_amd64.deb" 228 | ["libc6_2.21-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/201272319/libc6_2.21-0ubuntu4_amd64.deb" 229 | ["libc6-dbg_2.23-0ubuntu11.3_amd64.deb"]="http://launchpadlibrarian.net/534747094/libc6-dbg_2.23-0ubuntu11.3_amd64.deb" 230 | ["libc6-dbg_2.23-0ubuntu11.2_amd64.deb"]="http://launchpadlibrarian.net/482985919/libc6-dbg_2.23-0ubuntu11.2_amd64.deb" 231 | ["libc6-dbg_2.23-0ubuntu11_amd64.deb"]="http://launchpadlibrarian.net/409875473/libc6-dbg_2.23-0ubuntu11_amd64.deb" 232 | ["libc6-dbg_2.23-0ubuntu10_amd64.deb"]="http://launchpadlibrarian.net/353523709/libc6-dbg_2.23-0ubuntu10_amd64.deb" 233 | ["libc6-dbg_2.23-0ubuntu9_amd64.deb"]="http://launchpadlibrarian.net/324305490/libc6-dbg_2.23-0ubuntu9_amd64.deb" 234 | ["libc6-dbg_2.23-0ubuntu7_amd64.deb"]="http://launchpadlibrarian.net/311784936/libc6-dbg_2.23-0ubuntu7_amd64.deb" 235 | ["libc6-dbg_2.23-0ubuntu6_amd64.deb"]="http://launchpadlibrarian.net/309946877/libc6-dbg_2.23-0ubuntu6_amd64.deb" 236 | ["libc6-dbg_2.23-0ubuntu5_amd64.deb"]="http://launchpadlibrarian.net/293727124/libc6-dbg_2.23-0ubuntu5_amd64.deb" 237 | ["libc6-dbg_2.23-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/289526885/libc6-dbg_2.23-0ubuntu4_amd64.deb" 238 | ["libc6-dbg_2.23-0ubuntu3_amd64.deb"]="http://launchpadlibrarian.net/253857215/libc6-dbg_2.23-0ubuntu3_amd64.deb" 239 | ["libc6-dbg_2.23-0ubuntu2_amd64.deb"]="http://launchpadlibrarian.net/249648074/libc6-dbg_2.23-0ubuntu2_amd64.deb" 240 | ["libc6-dbg_2.23-0ubuntu1_amd64.deb"]="http://launchpadlibrarian.net/249034077/libc6-dbg_2.23-0ubuntu1_amd64.deb" 241 | ["libc6-dbg_2.21-0ubuntu6_amd64.deb"]="http://launchpadlibrarian.net/239452943/libc6-dbg_2.21-0ubuntu6_amd64.deb" 242 | ["libc6-dbg_2.21-0ubuntu5_amd64.deb"]="http://launchpadlibrarian.net/228543855/libc6-dbg_2.21-0ubuntu5_amd64.deb" 243 | ["libc6-dbg_2.21-0ubuntu4_amd64.deb"]="http://launchpadlibrarian.net/201272336/libc6-dbg_2.21-0ubuntu4_amd64.deb" 244 | ["libc6_2.23-0ubuntu11.3_i386.deb"]="http://launchpadlibrarian.net/534757989/libc6_2.23-0ubuntu11.3_i386.deb" 245 | ["libc6_2.23-0ubuntu11.2_i386.deb"]="http://launchpadlibrarian.net/483000140/libc6_2.23-0ubuntu11.2_i386.deb" 246 | ["libc6_2.23-0ubuntu11_i386.deb"]="http://launchpadlibrarian.net/409874056/libc6_2.23-0ubuntu11_i386.deb" 247 | ["libc6_2.23-0ubuntu10_i386.deb"]="http://launchpadlibrarian.net/353525843/libc6_2.23-0ubuntu10_i386.deb" 248 | ["libc6_2.23-0ubuntu9_i386.deb"]="http://launchpadlibrarian.net/324303245/libc6_2.23-0ubuntu9_i386.deb" 249 | ["libc6_2.23-0ubuntu7_i386.deb"]="http://launchpadlibrarian.net/311784686/libc6_2.23-0ubuntu7_i386.deb" 250 | ["libc6_2.23-0ubuntu6_i386.deb"]="http://launchpadlibrarian.net/309944022/libc6_2.23-0ubuntu6_i386.deb" 251 | ["libc6_2.23-0ubuntu5_i386.deb"]="http://launchpadlibrarian.net/293727477/libc6_2.23-0ubuntu5_i386.deb" 252 | ["libc6_2.23-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/289528512/libc6_2.23-0ubuntu4_i386.deb" 253 | ["libc6_2.23-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/253862443/libc6_2.23-0ubuntu3_i386.deb" 254 | ["libc6_2.23-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/249647492/libc6_2.23-0ubuntu2_i386.deb" 255 | ["libc6_2.23-0ubuntu1_i386.deb"]="http://launchpadlibrarian.net/249033821/libc6_2.23-0ubuntu1_i386.deb" 256 | ["libc6_2.21-0ubuntu6_i386.deb"]="http://launchpadlibrarian.net/239433966/libc6_2.21-0ubuntu6_i386.deb" 257 | ["libc6_2.21-0ubuntu5_i386.deb"]="http://launchpadlibrarian.net/228545013/libc6_2.21-0ubuntu5_i386.deb" 258 | ["libc6_2.21-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/201272252/libc6_2.21-0ubuntu4_i386.deb" 259 | ["libc6-dbg_2.23-0ubuntu11.3_i386.deb"]="http://launchpadlibrarian.net/534757972/libc6-dbg_2.23-0ubuntu11.3_i386.deb" 260 | ["libc6-dbg_2.23-0ubuntu11.2_i386.deb"]="http://launchpadlibrarian.net/483000123/libc6-dbg_2.23-0ubuntu11.2_i386.deb" 261 | ["libc6-dbg_2.23-0ubuntu11_i386.deb"]="http://launchpadlibrarian.net/409874040/libc6-dbg_2.23-0ubuntu11_i386.deb" 262 | ["libc6-dbg_2.23-0ubuntu10_i386.deb"]="http://launchpadlibrarian.net/353525827/libc6-dbg_2.23-0ubuntu10_i386.deb" 263 | ["libc6-dbg_2.23-0ubuntu9_i386.deb"]="http://launchpadlibrarian.net/324303227/libc6-dbg_2.23-0ubuntu9_i386.deb" 264 | ["libc6-dbg_2.23-0ubuntu7_i386.deb"]="http://launchpadlibrarian.net/311784665/libc6-dbg_2.23-0ubuntu7_i386.deb" 265 | ["libc6-dbg_2.23-0ubuntu6_i386.deb"]="http://launchpadlibrarian.net/309943986/libc6-dbg_2.23-0ubuntu6_i386.deb" 266 | ["libc6-dbg_2.23-0ubuntu5_i386.deb"]="http://launchpadlibrarian.net/293727455/libc6-dbg_2.23-0ubuntu5_i386.deb" 267 | ["libc6-dbg_2.23-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/289528489/libc6-dbg_2.23-0ubuntu4_i386.deb" 268 | ["libc6-dbg_2.23-0ubuntu3_i386.deb"]="http://launchpadlibrarian.net/253862427/libc6-dbg_2.23-0ubuntu3_i386.deb" 269 | ["libc6-dbg_2.23-0ubuntu2_i386.deb"]="http://launchpadlibrarian.net/249647473/libc6-dbg_2.23-0ubuntu2_i386.deb" 270 | ["libc6-dbg_2.23-0ubuntu1_i386.deb"]="http://launchpadlibrarian.net/249033803/libc6-dbg_2.23-0ubuntu1_i386.deb" 271 | ["libc6-dbg_2.21-0ubuntu6_i386.deb"]="http://launchpadlibrarian.net/239433896/libc6-dbg_2.21-0ubuntu6_i386.deb" 272 | ["libc6-dbg_2.21-0ubuntu5_i386.deb"]="http://launchpadlibrarian.net/228544996/libc6-dbg_2.21-0ubuntu5_i386.deb" 273 | ["libc6-dbg_2.21-0ubuntu4_i386.deb"]="http://launchpadlibrarian.net/201272263/libc6-dbg_2.21-0ubuntu4_i386.deb" 274 | ) 275 | 276 | usage_dowload() { 277 | echo >&2 "Usage: $0 id" 278 | exit 2 279 | } 280 | 281 | usage_extract() { 282 | echo -e >&2 "Usage: $0 deb output" 283 | exit 2 284 | } 285 | 286 | die() { 287 | echo >&2 $1 288 | exit 1 289 | } 290 | 291 | get_arch() { 292 | local x86="X86-64" 293 | local x32="80386" 294 | local data=$(readelf -h $1) 295 | if [[ $data =~ $x86 ]];then 296 | arch='amd64' 297 | elif [[ $data =~ $x32 ]];then 298 | arch='i386' 299 | else 300 | echo "no" 301 | exit 1 302 | fi 303 | } 304 | 305 | get_ver() { 306 | buf=$(strings $libcname |grep "GNU C Library" |awk '{print $6}') 307 | libcversion=${buf%*)} 308 | buf=$(strings $libcname |grep "GNU C Library" |awk '{print $6}') 309 | version=${buf%-*} 310 | } 311 | 312 | extract() { 313 | if [[ $# -ne 2 ]]; then 314 | usage_extract 315 | fi 316 | local deb=`readlink -f $1` 317 | local out=$2 318 | if [ ! -d "$out" ]; then 319 | mkdir $out 320 | fi 321 | local tmp=`mktemp -d` 322 | cd $tmp 323 | ar xv $deb || die "ar failed" 324 | if [ -f "data.tar.zst" ];then 325 | tar -I zstd -xf data.tar.* || die "tar failed" 326 | else 327 | tar xf data.tar.* || die "tar failed" 328 | fi 329 | cd - 330 | 331 | cp -rP $tmp/lib/*/* $out 2>/dev/null \ 332 | || cp -rP $tmp/lib32/* $out 2>/dev/null \ 333 | || cp -rP $tmp/usr/lib/*/* $out 2>/dev/null \ 334 | || cp -rP $tmp/usr/lib/debug/lib/*/* $out 2>/dev/null \ 335 | || cp -rP $tmp/usr/lib/debug/lib32/* $out 2>/dev/null \ 336 | || cp -rP $tmp/usr/lib/debug/.build-id $out 2>/dev/null \ 337 | || die "Failed to save. Check it manually $tmp" 338 | 339 | rm -rf $tmp 340 | } 341 | 342 | download() { 343 | if [ ! -d "$HOME/glibc-all-in-one/libs" ]; then 344 | mkdir $HOME/glibc-all-in-one/libs 345 | fi 346 | 347 | if [ ! -d "$HOME/glibc-all-in-one/debs" ]; then 348 | mkdir $HOME/glibc-all-in-one/debs 349 | fi 350 | local id=$1 351 | local LIBC_PREFIX="libc6_" 352 | local LIBC_DBG_PREFIX="libc6-dbg_" 353 | local deb_name=$LIBC_PREFIX$id.deb 354 | local dbg_name=$LIBC_DBG_PREFIX$id.deb 355 | echo "Getting $id" 356 | if [ -d "libs/$id" ]; then 357 | echo " --> Downloaded before. Remove it to download again." 358 | fi 359 | 360 | SOURCE="https://mirror.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glibc" 361 | # Use the source below if you feel slow, or change it on your own. 362 | # SOURCE="http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/" 363 | local url="$SOURCE/$deb_name" 364 | 365 | echo " -> Location: $url" 366 | echo " -> Downloading libc binary package" 367 | wget "$url" 2>/dev/null -O $HOME/glibc-all-in-one/debs/$deb_name || die "Failed to download package from $url" 368 | echo " -> Extracting libc binary package" 369 | 370 | mkdir -p $HOME/glibc-all-in-one/libs/$id 371 | extract $HOME/glibc-all-in-one/debs/$deb_name $HOME/glibc-all-in-one/libs/$id 372 | echo " -> Package saved to $HOME/glibc-all-in-one/libs/$id" 373 | 374 | # download debug info package 375 | local dbg_url="$SOURCE/$dbg_name" 376 | echo " -> Location: $dbg_url" 377 | echo " -> Downloading libc debug package" 378 | wget "$dbg_url" 2>/dev/null -O $HOME/glibc-all-in-one/debs/$dbg_name || die "Failed to download package from $url" 379 | echo " -> Extracting libc debug package" 380 | 381 | mkdir -p $HOME/glibc-all-in-one/libs/$id/.debug 382 | extract $HOME/glibc-all-in-one/debs/$dbg_name $HOME/glibc-all-in-one/libs/$id/.debug 383 | echo " -> Package saved to $HOME/glibc-all-in-one/libs/$id/.debug" 384 | } 385 | 386 | download_old() { 387 | if [ ! -d "$HOME/glibc-all-in-one/libs" ]; then 388 | mkdir $HOME/glibc-all-in-one/libs 389 | fi 390 | 391 | if [ ! -d "$HOME/glibc-all-in-one/debs" ]; then 392 | mkdir $HOME/glibc-all-in-one/debs 393 | fi 394 | local id=$1 395 | local LIBC_PREFIX="libc6_" 396 | local LIBC_DBG_PREFIX="libc6-dbg_" 397 | local deb_name=$LIBC_PREFIX$id.deb 398 | local dbg_name=$LIBC_DBG_PREFIX$id.deb 399 | echo "Getting $id" 400 | if [ -d "libs/$id" ]; then 401 | echo " --> Downloaded before. Remove it to download again." 402 | fi 403 | 404 | SOURCE="http://old-releases.ubuntu.com/ubuntu/pool/main/g/glibc" 405 | local url="$SOURCE/$deb_name" 406 | 407 | echo " -> Location: $url" 408 | echo " -> Downloading libc binary package" 409 | wget "$url" 2>/dev/null -O $HOME/glibc-all-in-one/debs/$deb_name || die "Failed to download package from $url" 410 | echo " -> Extracting libc binary package" 411 | 412 | mkdir -p $HOME/glibc-all-in-one/libs/$id 413 | extract $HOME/glibc-all-in-one/debs/$deb_name $HOME/glibc-all-in-one/libs/$id 414 | echo " -> Package saved to $HOME/glibc-all-in-one/libs/$id" 415 | 416 | # download debug info package 417 | local dbg_url="$SOURCE/$dbg_name" 418 | echo " -> Location: $dbg_url" 419 | echo " -> Downloading libc debug package" 420 | wget "$dbg_url" 2>/dev/null -O $HOME/glibc-all-in-one/debs/$dbg_name || die "Failed to download package from $url" 421 | echo " -> Extracting libc debug package" 422 | 423 | mkdir -p $HOME/glibc-all-in-one/libs/$id/.debug 424 | extract $HOME/glibc-all-in-one/debs/$dbg_name $HOME/glibc-all-in-one/libs/$id/.debug 425 | echo " -> Package saved to $HOME/glibc-all-in-one/libs/$id/.debug" 426 | } 427 | 428 | clibc() { 429 | FILE_NAME=$1 430 | LIBC_VERSION=$2 431 | LIBC_DIR=$HOME/glibc-all-in-one 432 | libc_dir=$(find $LIBC_DIR -name "$LIBC_VERSION*") 433 | if [[ $3 =~ amd64 ]]; then 434 | ARCH="amd64" 435 | elif [[ $3 =~ i386 ]]; then 436 | ARCH="i386" 437 | fi 438 | if [ "$libc_dir" = "" ];then 439 | echo "Not support version or your $LIBC_DIR don't have libc" 440 | exit 441 | fi 442 | if [ "$3" ] 443 | then 444 | version_number="${3##*2.31-0ubuntu9.}" 445 | version_number="${version_number%%_*}" 446 | Record $1 447 | if [ "$ARCH" == "i386" ];then 448 | patchelf --set-interpreter $3/ld-linux.so.2 --set-rpath $3/ $1 449 | else 450 | patchelf --set-interpreter $3/ld-linux-x86-64.so.2 --set-rpath $3/ $1 451 | fi 452 | 453 | if [[ $(echo "$LIBC_VERSION >= 2.34" | bc) -eq 1 ]] || [[ "$3" == "$HOME/glibc-all-in-one/libs/2.31-0ubuntu9."* && "$version_number" -ge 9 ]]; then 454 | sudo rm -rf /usr/lib/debug/.build-id/ 455 | sudo cp -r $3/.debug/.build-id/ /usr/lib/debug 456 | fi 457 | die "[+]success" 458 | else 459 | printf '%s\n' "$libc_dir" 460 | echo -e '\033[32mPlease specify the directory \033[0m' 461 | fi 462 | } 463 | 464 | 465 | clibc_replace_needed() { 466 | FILE_NAME=$1 467 | LIBC_VERSION=$2 468 | LIBC_DIR=$HOME/glibc-all-in-one 469 | libc_dir=$(find $LIBC_DIR -name "$LIBC_VERSION*") 470 | if [[ $3 =~ amd64 ]]; then 471 | ARCH="amd64" 472 | elif [[ $3 =~ i386 ]]; then 473 | ARCH="i386" 474 | fi 475 | if [ "$libc_dir" = "" ];then 476 | echo "Not support version or your $LIBC_DIR don't have libc" 477 | exit 478 | fi 479 | if [ "$3" ] 480 | then 481 | version_number="${3##*2.31-0ubuntu9.}" 482 | version_number="${version_number%%_*}" 483 | Record $1 484 | if [ "$ARCH" == "i386" ];then 485 | patchelf --set-interpreter $3/ld-linux.so.2 --replace-needed libc.so.6 $3/libc.so.6 $1 486 | else 487 | patchelf --set-interpreter $3/ld-linux-x86-64.so.2 --replace-needed libc.so.6 $3/libc.so.6 $1 488 | fi 489 | 490 | if [[ $(echo "$LIBC_VERSION >= 2.34" | bc) -eq 1 ]] || [[ "$3" == "$HOME/glibc-all-in-one/libs/2.31-0ubuntu9."* && "$version_number" -ge 9 ]]; then 491 | sudo rm -rf /usr/lib/debug/.build-id/ 492 | sudo cp -r $3/.debug/.build-id/ /usr/lib/debug 493 | fi 494 | die "[+]success" 495 | else 496 | printf '%s\n' "$libc_dir" 497 | echo -e '\033[32mPlease specify the directory \033[0m' 498 | fi 499 | } 500 | 501 | download_rpath() { 502 | id=$libcversion'_'$arch 503 | local LIBC_PREFIX="libc6_" 504 | local LIBC_DBG_PREFIX="libc6-dbg_" 505 | local deb_name=$LIBC_PREFIX$id.deb 506 | local dbg_name=$LIBC_DBG_PREFIX$id.deb 507 | echo "Getting $id" 508 | if [ -d "$LIBC_DIR/libs/$id" ]; then 509 | clibc $filename $version $LIBC_DIR/libs/$id 510 | die "[+]success" 511 | fi 512 | # download binary package 513 | url="${urls[$deb_name]}" 514 | dbg_url="${urls[$dbg_name]}" 515 | 516 | if [ -z "$url" ]; then 517 | url="$SOURCE/$deb_name" 518 | dbg_url="$SOURCE/$dbg_name" 519 | fi 520 | echo " -> Location: $url" 521 | echo " -> Downloading libc binary package" 522 | sudo wget "$url" 2>/dev/null -O $LIBC_DIR/debs/$deb_name || download_old_rpath 523 | echo " -> Extracting libc binary package" 524 | mkdir $LIBC_DIR/libs/$id 525 | extract $LIBC_DIR/debs/$deb_name $LIBC_DIR/libs/$id 526 | echo " -> Package saved to $LIBC_DIR/libs/$id" 527 | 528 | # download debug info package 529 | echo " -> Location: $dbg_url" 530 | echo " -> Downloading libc debug package" 531 | sudo wget "$dbg_url" 2>/dev/null -O $LIBC_DIR/debs/$dbg_name || download_old_rpath 532 | echo " -> Extracting libc debug package" 533 | mkdir $LIBC_DIR/libs/$id/.debug 534 | extract $LIBC_DIR/debs/$dbg_name $LIBC_DIR/libs/$id/.debug 535 | echo " -> Package saved to $LIBC_DIR/libs/$id/.debug" 536 | 537 | clibc $filename $version $LIBC_DIR/libs/$id 538 | die "[+]success" 539 | } 540 | 541 | download_old_rpath(){ 542 | id=$libcversion'_'$arch 543 | local LIBC_PREFIX="libc6_" 544 | local LIBC_DBG_PREFIX="libc6-dbg_" 545 | local deb_name=$LIBC_PREFIX$id.deb 546 | local dbg_name=$LIBC_DBG_PREFIX$id.deb 547 | echo "Getting $id" 548 | if [ -d "$LIBC_DIR/libs/$id" ]; then 549 | clibc $filename $version $LIBC_DIR/libs/$id 550 | die "[+]success" 551 | fi 552 | # download binary package 553 | url="$OLD_SOURCE/$deb_name" 554 | echo " -> Location: $url" 555 | echo " -> Downloading libc binary package" 556 | sudo wget "$url" 2>/dev/null -O $LIBC_DIR/debs/$deb_name || die "Failed to download package from $url" 557 | echo " -> Extracting libc binary package" 558 | 559 | mkdir $LIBC_DIR/libs/$id 560 | extract $LIBC_DIR/debs/$deb_name $LIBC_DIR/libs/$id 561 | echo " -> Package saved to $LIBC_DIR/$libs/$id" 562 | 563 | # download debug info package 564 | url="$OLD_SOURCE/$dbg_name" 565 | echo " -> Location: $url" 566 | echo " -> Downloading libc debug package" 567 | sudo wget "$url" 2>/dev/null -O $LIBC_DIR/debs/$dbg_name || die "Failed to download package from $url" 568 | echo " -> Extracting libc debug package" 569 | mkdir $LIBC_DIR/libs/$id/.debug 570 | extract $LIBC_DIR/debs/$dbg_name $LIBC_DIR/libs/$id/.debug 571 | echo " -> Package saved to $LIBC_DIR/libs/$id/.debug" 572 | clibc $filename $version $LIBC_DIR/libs/$id 573 | die "[+]success" 574 | } 575 | 576 | download_need() { 577 | id=$libcversion'_'$arch 578 | local LIBC_PREFIX="libc6_" 579 | local LIBC_DBG_PREFIX="libc6-dbg_" 580 | local deb_name=$LIBC_PREFIX$id.deb 581 | local dbg_name=$LIBC_DBG_PREFIX$id.deb 582 | echo "Getting $id" 583 | if [ -d "$LIBC_DIR/libs/$id" ]; then 584 | clibc_replace_needed $filename $version $LIBC_DIR/libs/$id 585 | die "[+]success" 586 | fi 587 | # download binary package 588 | url="${urls[$deb_name]}" 589 | dbg_url="${urls[$dbg_name]}" 590 | 591 | if [ -z "$url" ]; then 592 | url="$SOURCE/$deb_name" 593 | dbg_url="$SOURCE/$dbg_name" 594 | fi 595 | echo " -> Location: $url" 596 | echo " -> Downloading libc binary package" 597 | sudo wget "$url" 2>/dev/null -O $LIBC_DIR/debs/$deb_name || download_old_need 598 | echo " -> Extracting libc binary package" 599 | mkdir $LIBC_DIR/libs/$id 600 | extract $LIBC_DIR/debs/$deb_name $LIBC_DIR/libs/$id 601 | echo " -> Package saved to $LIBC_DIR/libs/$id" 602 | 603 | # download debug info package 604 | echo " -> Location: $dbg_url" 605 | echo " -> Downloading libc debug package" 606 | sudo wget "$dbg_url" 2>/dev/null -O $LIBC_DIR/debs/$dbg_name || download_old_need 607 | echo " -> Extracting libc debug package" 608 | mkdir $LIBC_DIR/libs/$id/.debug 609 | extract $LIBC_DIR/debs/$dbg_name $LIBC_DIR/libs/$id/.debug 610 | echo " -> Package saved to $LIBC_DIR/libs/$id/.debug" 611 | clibc_replace_needed $filename $version $LIBC_DIR/libs/$id 612 | die "[+]success" 613 | } 614 | download_old_need(){ 615 | id=$libcversion'_'$arch 616 | local LIBC_PREFIX="libc6_" 617 | local LIBC_DBG_PREFIX="libc6-dbg_" 618 | local deb_name=$LIBC_PREFIX$id.deb 619 | local dbg_name=$LIBC_DBG_PREFIX$id.deb 620 | echo "Getting $id" 621 | if [ -d "$LIBC_DIR/libs/$id" ]; then 622 | clibc_replace_needed $filename $version $LIBC_DIR/libs/$id 623 | die "[+]success" 624 | fi 625 | # download binary package 626 | url="$OLD_SOURCE/$deb_name" 627 | echo " -> Location: $url" 628 | echo " -> Downloading libc binary package" 629 | sudo wget "$url" 2>/dev/null -O $LIBC_DIR/debs/$deb_name || die "Failed to download package from $url" 630 | echo " -> Extracting libc binary package" 631 | 632 | mkdir $LIBC_DIR/libs/$id 633 | extract $LIBC_DIR/debs/$deb_name $LIBC_DIR/libs/$id 634 | echo " -> Package saved to $LIBC_DIR/libs/$id" 635 | 636 | # download debug info package 637 | url="$OLD_SOURCE/$dbg_name" 638 | echo " -> Location: $url" 639 | echo " -> Downloading libc debug package" 640 | sudo wget "$url" 2>/dev/null -O $LIBC_DIR/debs/$dbg_name || die "Failed to download package from $url" 641 | echo " -> Extracting libc debug package" 642 | mkdir $LIBC_DIR/libs/$id/.debug 643 | extract $LIBC_DIR/debs/$dbg_name $LIBC_DIR/libs/$id/.debug 644 | echo " -> Package saved to $LIBC_DIR/libs/$id/.debug" 645 | clibc_replace_needed $filename $version $LIBC_DIR/libs/$id 646 | die "[+]success" 647 | } 648 | 649 | 650 | Download_libc(){ 651 | if [ -z "$1" ]; then 652 | echo -e '\033[32m[+]Select the version you want to download \033[0m' 653 | echo -e '\033[34mBlue\033[0m is downloadable \033[32mGreen\033[0m is already downloaded' 654 | echo '' 655 | 656 | # blue 657 | light_blue=$(tput setaf 4) 658 | # green 659 | green=$(tput setaf 2) 660 | 661 | reset=$(tput sgr0) 662 | 663 | mkdir -p "$HOME/glibc-all-in-one/libs" 664 | 665 | for key in "${!urls[@]}"; do 666 | if [[ ! "$key" =~ libc6-dbg_ ]]; then 667 | version=$(echo "$key" | grep -oP 'libc6_\K.*(?=\.deb)') 668 | echo "$version" >> $HOME/glibc-all-in-one/libs/urls_versions.txt 669 | fi 670 | done 671 | 672 | find "$HOME/glibc-all-in-one/libs" -maxdepth 1 -type d -exec sh -c '[ "$(basename {})" != "libs" ] && echo "$(basename {})"' \; > $HOME/glibc-all-in-one/libs/libs.txt 673 | 674 | sort -u "$HOME/glibc-all-in-one/list" "$HOME/glibc-all-in-one/old_list" $HOME/glibc-all-in-one/libs/libs.txt $HOME/glibc-all-in-one/libs/urls_versions.txt | while read line 675 | do 676 | if grep -Fxq "$line" $HOME/glibc-all-in-one/libs/libs.txt 677 | then 678 | echo "${green}${line}${reset}" 679 | else 680 | echo "${light_blue}${line}${reset}" 681 | fi 682 | done | column 683 | 684 | # 清理临时文件 685 | rm $HOME/glibc-all-in-one/libs/libs.txt $HOME/glibc-all-in-one/libs/urls_versions.txt 686 | else 687 | if [ "$1" ]; then 688 | if grep -Fxq "$1" "$HOME/glibc-all-in-one/list" 689 | then 690 | download "$1" 691 | if [ -f "$HOME/glibc-all-in-one/libs/$1/libc.so.6" ] && [ -d "$HOME/glibc-all-in-one/libs/$1/.debug" ]; then 692 | chmod 755 -R $HOME/glibc-all-in-one/libs/$1 693 | else 694 | echo -e "\033[31m$1 The libc directory file is missing a file and has now been removed! \033[0m" 695 | rm -rf $HOME/glibc-all-in-one/libs/$1 696 | exit 697 | fi 698 | elif grep -Fxq "$1" "$HOME/glibc-all-in-one/old_list" 699 | then 700 | download_old "$1" 701 | if [ -f "$HOME/glibc-all-in-one/libs/$1/libc.so.6" ] && [ -d "$HOME/glibc-all-in-one/libs/$1/.debug" ]; then 702 | chmod 755 -R $HOME/glibc-all-in-one/libs/$1 703 | else 704 | echo -e "\033[31m$1 The libc directory file is missing a file and has now been removed! \033[0m" 705 | rm -rf $HOME/glibc-all-in-one/libs/$1 706 | exit 707 | fi 708 | elif [ -d "$HOME/glibc-all-in-one/libs/$1" ] 709 | then 710 | if [ -f "$HOME/glibc-all-in-one/libs/$1/libc.so.6" ] && [ -d "$HOME/glibc-all-in-one/libs/$1/.debug" ]; then 711 | echo "This version already exists and there is no download method。" 712 | else 713 | echo -e "\033[31m$1 The libc directory file is missing a file and has now been removed! \033[0m" 714 | rm -rf $HOME/glibc-all-in-one/libs/$1 715 | exit 716 | fi 717 | elif [ "${urls["libc6_$1.deb"]}" ] 718 | then 719 | download_url "$1" 720 | if [ -f "$HOME/glibc-all-in-one/libs/$1/libc.so.6" ] && [ -d "$HOME/glibc-all-in-one/libs/$1/.debug" ]; then 721 | chmod 755 -R $HOME/glibc-all-in-one/libs/$1 722 | else 723 | echo -e "\033[31m$1 The libc directory file is missing a file and has now been removed! \033[0m" 724 | rm -rf $HOME/glibc-all-in-one/libs/$1 725 | exit 726 | fi 727 | else 728 | echo "Unknown version: $1" 729 | fi 730 | fi 731 | fi 732 | } 733 | 734 | Record(){ 735 | if [ ! -e $1.bak ]; then 736 | cp $1 $1.bak 737 | else 738 | cp $1.bak $1 739 | fi 740 | } 741 | 742 | download_url() { 743 | LIBC_DIR=$HOME/glibc-all-in-one 744 | local id=$1 745 | local LIBC_PREFIX="libc6_" 746 | local LIBC_DBG_PREFIX="libc6-dbg_" 747 | local deb_name=$LIBC_PREFIX$id.deb 748 | local dbg_name=$LIBC_DBG_PREFIX$id.deb 749 | echo "Getting $id" 750 | if [ -d "$LIBC_DIR/libs/$id" ]; then 751 | die " --> Downloaded before. Remove it to download again." 752 | fi 753 | # download binary package 754 | url="${urls[$deb_name]}" 755 | dbg_url="${urls[$dbg_name]}" 756 | 757 | if [ -z "$url" ]; then 758 | url="$SOURCE/$deb_name" 759 | dbg_url="$SOURCE/$dbg_name" 760 | fi 761 | echo " -> Location: $url" 762 | echo " -> Downloading libc binary package" 763 | sudo wget -c "$url" -O $LIBC_DIR/debs/$deb_name 764 | echo " -> Extracting libc binary package" 765 | mkdir $LIBC_DIR/libs/$id 766 | extract $LIBC_DIR/debs/$deb_name $LIBC_DIR/libs/$id 767 | echo " -> Package saved to $LIBC_DIR/libs/$id" 768 | 769 | # download debug info package 770 | echo " -> Location: $dbg_url" 771 | echo " -> Downloading libc debug package" 772 | sudo wget -c "$dbg_url" -O $LIBC_DIR/debs/$dbg_name 773 | echo " -> Extracting libc debug package" 774 | mkdir $LIBC_DIR/libs/$id/.debug 775 | extract $LIBC_DIR/debs/$dbg_name $LIBC_DIR/libs/$id/.debug 776 | echo " -> Package saved to $LIBC_DIR/libs/$id/.debug" 777 | die "[+]success" 778 | } 779 | 780 | download_old_libc(){ 781 | for deb in "${!urls[@]}"; do 782 | url="${urls[$deb]}" 783 | target="$HOME/glibc-all-in-one/debs/$deb" 784 | 785 | fondername0=${deb#*_} 786 | fondername=${fondername0%.*} 787 | echo "Getting $fondername" 788 | # if [ -d $HOME/glibc-all-in-one/libs/$fondername ];then 789 | # echo "--> Downloaded before. Remove it to download again." 790 | # continue 791 | # fi 792 | wget -c "$url" -O "$target" 793 | "$0" -e "$target" 794 | done 795 | echo -e '\033[32m[+]Successfully download '"$1"'\033[0m' 796 | } 797 | 798 | 799 | remove_libc(){ 800 | if [ $1 ];then 801 | if [ -d "$HOME/glibc-all-in-one/libs/$1" ];then 802 | rm -rf "$HOME/glibc-all-in-one/libs/$1" 803 | echo -e '\033[32m[+]Successfully deleted '"$1"'\033[0m' 804 | else 805 | echo -e '\033[31m[!]'"$1"' not exist \033[0m' 806 | fi 807 | else 808 | echo -e '\033[31m[!]Please enter the version \033[0m' 809 | fi 810 | } 811 | 812 | 813 | 814 | while getopts 's:x:hvc:e:r:d' OPT 815 | do 816 | case $OPT in 817 | s) 818 | libcname=$OPTARG 819 | get_ver 820 | echo -e "\033[32mLIBC_VERSION: \033[0m"$libcversion 821 | ;; 822 | x) 823 | if [ "$2" = "-n" ];then 824 | filename=$3 825 | libcname=$4 826 | LIBC_DIR=$HOME/glibc-all-in-one 827 | SOURCE="https://mirror.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glibc" 828 | OLD_SOURCE="http://old-releases.ubuntu.com/ubuntu/pool/main/g/glibc" 829 | get_arch "$4" 830 | get_ver 831 | download_need 832 | else 833 | filename=$2 834 | libcname=$3 835 | LIBC_DIR=$HOME/glibc-all-in-one 836 | SOURCE="https://mirror.tuna.tsinghua.edu.cn/ubuntu/pool/main/g/glibc" 837 | OLD_SOURCE="http://old-releases.ubuntu.com/ubuntu/pool/main/g/glibc" 838 | get_arch "$3" 839 | get_ver 840 | download_rpath 841 | fi 842 | ;; 843 | c) 844 | if [ "$2" = "-n" ];then 845 | clibc_replace_needed $3 $4 $5 846 | else 847 | clibc $2 $3 $4 848 | fi 849 | ;; 850 | e) 851 | LIBC_PREFIX="libc6_" 852 | LIBC_DBG_PREFIX="libc6-dbg_" 853 | LIBC_DIR=$HOME/glibc-all-in-one/ 854 | deb=$2 855 | fondername0=${deb#*_} 856 | fondername=${fondername0%.*} 857 | if [ -d $HOME/glibc-all-in-one/libs/$fondername ];then 858 | echo -e "[-]already exists" 859 | else 860 | mkdir $LIBC_DIR/libs/$fondername 861 | mkdir $LIBC_DIR/libs/$fondername/.debug 862 | echo -e "[+]create folder finish" 863 | fi 864 | if [[ $2 =~ $LIBC_DBG_PREFIX ]];then 865 | extract $2 $LIBC_DIR/libs/$fondername/.debug 866 | sudo chmod 755 -R $LIBC_DIR/libs/$fondername/.debug 867 | else 868 | extract $2 $LIBC_DIR/libs/$fondername 869 | sudo chmod 755 -R $LIBC_DIR/libs/$fondername 870 | fi 871 | ;; 872 | r) 873 | if [ "$2" != "-r" ]; 874 | then 875 | Record $2 876 | echo -e "[+]restore!" 877 | fi 878 | ;; 879 | d) 880 | if [ "$2" = "-r" ]; 881 | then 882 | remove_libc $3 883 | elif [ "$2" = "-u" ] 884 | then 885 | cd $HOME/glibc-all-in-one 886 | $HOME/glibc-all-in-one/update_list 887 | 888 | version_count=$(cat "$HOME/glibc-all-in-one/list" "$HOME/glibc-all-in-one/old_list" | wc -l) 889 | version_index=0 890 | 891 | while IFS= read -r version 892 | do 893 | if grep -Fxq "$version" "$HOME/glibc-all-in-one/list" 894 | then 895 | if [ -f "$HOME/glibc-all-in-one/libs/$version/libc.so.6" ] && [ -d "$HOME/glibc-all-in-one/libs/$version/.debug" ]; then 896 | echo "$version --> Downloaded before" 897 | else 898 | download "$version" 899 | if [ -f "$HOME/glibc-all-in-one/libs/$version/libc.so.6" ] && [ -d "$HOME/glibc-all-in-one/libs/$version/.debug" ]; then 900 | chmod 755 -R $HOME/glibc-all-in-one/libs/$version 901 | else 902 | echo -e "\033[31m$version The libc directory file is missing a file and has now been removed! \033[0m" 903 | rm -rf $HOME/glibc-all-in-one/libs/$version 904 | exit 905 | fi 906 | fi 907 | elif grep -Fxq "$version" "$HOME/glibc-all-in-one/old_list" 908 | then 909 | if [ -f "$HOME/glibc-all-in-one/libs/$version/libc.so.6" ] && [ -d "$HOME/glibc-all-in-one/libs/$version/.debug" ]; then 910 | echo "$version --> Downloaded before" 911 | else 912 | download_old "$version" 913 | if [ -f "$HOME/glibc-all-in-one/libs/$version/libc.so.6" ] && [ -d "$HOME/glibc-all-in-one/libs/$version/.debug" ]; then 914 | chmod 755 -R $HOME/glibc-all-in-one/libs/$version 915 | else 916 | echo -e "\033[31m$version The libc directory file is missing a file and has now been removed! \033[0m" 917 | rm -rf $HOME/glibc-all-in-one/libs/$version 918 | exit 919 | fi 920 | fi 921 | fi 922 | let version_index++ 923 | percent=$((100*version_index/version_count)) 924 | ratio=$((percent*40/100)) 925 | mark=$(printf '%.0s#' $(seq 1 $ratio)) 926 | printf "progress:[%-40s]%d%%\r" "${mark}" "${percent}" 927 | echo 928 | 929 | done < <(cat "$HOME/glibc-all-in-one/list" "$HOME/glibc-all-in-one/old_list") 930 | echo 931 | read -p "Do you want to download additional libc? (y/n): " choice 932 | choice=$(echo "$choice" | tr '[:upper:]' '[:lower:]') 933 | if [ "$choice" = "y" ]; then 934 | echo "Downloading additional libc..." 935 | download_old_libc 936 | fi 937 | exit 938 | else 939 | Download_libc $2 940 | fi 941 | ;; 942 | v) 943 | echo "xclibc v1.6" 944 | echo "------------------------" 945 | echo "|Update based on xclibc|" 946 | echo "|Writen by E4L4 |" 947 | echo "------------------------" 948 | exit -1 949 | ;; 950 | h) 951 | echo "Usage: xclibc [OPTION]...[FILE]..." 952 | echo "Change the libc environment for file running." 953 | echo "" 954 | echo " -s,[libcfile] see the libc file version" 955 | echo " -x,<-n> [file] [libcfile] change the libc environment,-n:by modifying --replace-needed" 956 | echo " -c,<-n> [file] [version] [dir] change the specified libc version environment,-n:by modifying --replace-needed" 957 | echo " -d,<-r/-u> [version]] download the libc version" 958 | # echo " -e,[deb] extract the deb to the glibc-all-in-one" 959 | echo " -r,[file] restore original file" 960 | echo " -h, display this help and exit" 961 | echo " -v, output version information and exit" 962 | echo "" 963 | # echo "Examples:" 964 | # echo " xclibc -x pwn libc.so.6" 965 | # echo " switch the version environment of the libc.so.6" 966 | # echo " xclibc -c pwn 2.35 [Enter]" 967 | # echo " xclibc -c pwn 2.35 /home/pwn/glibc-all-in-one/libs/2.35-0ubuntu3_amd64" 968 | # echo " you can switch the libc environment where the pwn file runs to 2.35-0ubuntu3_amd64" 969 | # echo " xclibc -d [Enter]" 970 | # echo " xclibc -d 2.37-0ubuntu2_amd64" 971 | # echo " xclibc -d all" 972 | # echo " you can download all the libc versions on the source" 973 | # echo "LRY" 974 | exit -1 975 | ;; 976 | esac 977 | done 978 | --------------------------------------------------------------------------------