Urlencode — различия между версиями
Материал из InformationSecurity WIKI
Drakylar (обсуждение | вклад) (Новая страница: « ==Чем выделяется== Могут кодироваться как все символы, так и избранные. Если не все симв…») |
Drakylar (обсуждение | вклад) м |
||
Строка 17: | Строка 17: | ||
==Скрипты== | ==Скрипты== | ||
+ | |||
+ | ===python=== | ||
+ | |||
+ | ====encode==== | ||
+ | <syntaxhighlight lang="python" line> | ||
+ | import urllib | ||
+ | urllib.quote_plus('string_of_characters_like_these:$#@=?%^Q^$') | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ====decode==== | ||
+ | <syntaxhighlight lang="python" line> | ||
+ | import urllib | ||
+ | urllib.unquote_plus('erythrocyte+membrane+protein+1%2C+PfEMP1+%28VAR%29') | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | ===perl=== | ||
+ | ====encode==== | ||
+ | <syntaxhighlight lang="perl" line> | ||
+ | sub urlencode { | ||
+ | my $s = shift; | ||
+ | $s =~ s/ /+/g; | ||
+ | $s =~ s/([^A-Za-z0-9\+-])/sprintf("%%%02X", ord($1))/seg; | ||
+ | return $s; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ====decode==== | ||
+ | <syntaxhighlight lang="perl" line> | ||
+ | sub urldecode { | ||
+ | my $s = shift; | ||
+ | $s =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg; | ||
+ | $s =~ s/\+/ /g; | ||
+ | return $s; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===ruby=== | ||
+ | ====encode==== | ||
+ | <syntaxhighlight lang="ruby" line> | ||
+ | require 'uri' | ||
+ | URI.escape('Test Hi<>?/&;=:') | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ====decode==== | ||
+ | |||
+ | <syntaxhighlight lang="ruby" line> | ||
+ | require 'CGI' | ||
+ | string = CGI::unescape("%27Stop%21%27+said+Fred") | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | ===java=== | ||
+ | |||
+ | ====encode==== | ||
+ | <syntaxhighlight lang="java" line> | ||
+ | String q = "random word £500 bank $"; | ||
+ | String url = "http://example.com/query?q=" + URLEncoder.encode(q, "UTF-8"); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ====decode==== | ||
+ | <syntaxhighlight lang="java" line> | ||
+ | String result = java.net.URLDecoder.decode(url, "UTF-8"); | ||
+ | </syntaxhighlight> | ||
Строка 22: | Строка 86: | ||
==Утилиты== | ==Утилиты== | ||
+ | |||
+ | [https://www.cryptool.org/ CrypTool] | ||
Строка 29: | Строка 95: | ||
==Полезные ссылки== | ==Полезные ссылки== | ||
+ | |||
+ | |||
+ | [http://meyerweb.com/eric/tools/dencoder/ urlencoder/decoder tool] | ||
+ | |||
+ | [http://www.url-encode-decode.com/ one more encode/decode tool] | ||
+ | |||
+ | [https://en.wikipedia.org/wiki/Percent-encoding вики статья] |
Текущая версия на 08:39, 4 июня 2016
Содержание
Чем выделяется
Могут кодироваться как все символы, так и избранные.
Если не все символы,то только следующие:
!*'();:@&=+$,/?#[]
В случае с кодированием всех символов кодировка становится похожей на HEX кодирование.
Где часто используется
Используется преимущественно в кодировании HTTP запросов.
Скрипты
python
encode
import urllib
urllib.quote_plus('string_of_characters_like_these:$#@=?%^Q^$')
decode
import urllib
urllib.unquote_plus('erythrocyte+membrane+protein+1%2C+PfEMP1+%28VAR%29')
perl
encode
sub urlencode {
my $s = shift;
$s =~ s/ /+/g;
$s =~ s/([^A-Za-z0-9\+-])/sprintf("%%%02X", ord($1))/seg;
return $s;
}
decode
sub urldecode {
my $s = shift;
$s =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
$s =~ s/\+/ /g;
return $s;
}
ruby
encode
require 'uri'
URI.escape('Test Hi<>?/&;=:')
decode
require 'CGI'
string = CGI::unescape("%27Stop%21%27+said+Fred")
java
encode
String q = "random word £500 bank $";
String url = "http://example.com/query?q=" + URLEncoder.encode(q, "UTF-8");
decode
String result = java.net.URLDecoder.decode(url, "UTF-8");
Утилиты