Urlencode — различия между версиями

Материал из InformationSecurity WIKI
Перейти к: навигация, поиск
(Новая страница: « ==Чем выделяется== Могут кодироваться как все символы, так и избранные. Если не все симв…»)
 
м
 
Строка 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");


Утилиты

CrypTool


Райтапы

Полезные ссылки

urlencoder/decoder tool

one more encode/decode tool

вики статья