Finish this evening project
This commit is contained in:
commit
3c7fe723a3
9
readme.md
Normal file
9
readme.md
Normal file
@ -0,0 +1,9 @@
|
||||
#### urldeconstruct
|
||||
|
||||
A program that deconstructs URLs! I'm sure that's news to you...
|
||||
|
||||
It was an evening project at 2025-04-01, and served as a means to discover why a Greenpeace link of all things would cause my Linux system to generate a fork bomb.
|
||||
|
||||
[url](https://act.greenpeace.org/page/168809/action/1?locale=nl-BE&utm_medium=email&utm_source=email&utm_campaign=Send%20a%20letter%20Ship%20Tour%202025%20-%20NL%20&utm_content=Send+a+letter+Ship+Tour+2025+-+NL+&ea.url.id=7993625&forwarded=true)
|
||||
|
||||
So I guess that's another evening wasted. Gotta admire that training though, AI won't give you any of that :)
|
66
urldeconstruct
Executable file
66
urldeconstruct
Executable file
@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
|
||||
# May cause fork bomb, do not use this!
|
||||
#url="$1"
|
||||
# Set a user limit just to be safe.
|
||||
# Current process count seems to be between 512 and 600.
|
||||
# Quite unsettling...
|
||||
ulimit -u 600
|
||||
# And query interactively from user instead.
|
||||
read -sp "URL: " url
|
||||
|
||||
#printf "%s\n\n" "$url"
|
||||
printf "\n"
|
||||
|
||||
# Prepare URL
|
||||
url=$(sed 's/\?/\n/g' <<< $url)
|
||||
url=$(sed 's/\&/\n/g' <<< $url)
|
||||
|
||||
# Turn it into an array
|
||||
url_array=$(sed 's/\n/ /g' <<< $url)
|
||||
url_array=($url_array)
|
||||
|
||||
#printf "%s\n" "${url_array[*]}"
|
||||
|
||||
#printf "%s %s\n" "Base URL:" "${url_array[0]}"
|
||||
|
||||
# https://stackoverflow.com/questions/6723426
|
||||
for url_argument in "${!url_array[@]}"
|
||||
do
|
||||
# Zero is base URL, everything else is arguments
|
||||
if [ "$url_argument" = "0" ]
|
||||
then
|
||||
export url_property="Base URL:"
|
||||
elif [ "$url_argument" != "0" ]
|
||||
then
|
||||
export url_property="Argument:"
|
||||
fi
|
||||
|
||||
# Separate key=value pairs into an array
|
||||
url_parameter=($(sed 's/\=/ /g' <<< ${url_array[$url_argument]}))
|
||||
|
||||
# Differentiate trackers from other arguments
|
||||
if grep -q utm <<< ${url_parameter[0]}
|
||||
then
|
||||
url_property="Tracker:"
|
||||
fi
|
||||
|
||||
# Turn %20 / + urlencoding into human-readable spaces
|
||||
url_despace=${url_parameter[1]}
|
||||
[ $(grep '%20' <<< "$url_despace") ] && \
|
||||
url_despaced="$(sed 's/\%20/ /g' <<< $url_despace)"
|
||||
[ $(grep '+' <<< "$url_despace") ] && \
|
||||
url_despaced="$(sed 's/\+/ /g' <<< $url_despace)"
|
||||
|
||||
# For publication purposes only
|
||||
[ ${url_parameter[0]} = "ea.url.id" ] && \
|
||||
url_parameter[1]="redacted"
|
||||
|
||||
# Print out the resulting text
|
||||
printf "%-10s%-15s%-15s\n" "$url_property" "${url_parameter[0]}" "${url_parameter[1]}" #"${url_array[$url_argument]}"
|
||||
[ ! -z "$url_despaced" ] &&
|
||||
printf "%-25s%15s\n" "" "$url_despaced"
|
||||
|
||||
# Clear variables for next loop
|
||||
unset url_despaced
|
||||
done
|
Loading…
x
Reference in New Issue
Block a user