dastapov: (Default)
[personal profile] dastapov
Сегодняшняя байка - про конкретное использование абстрактной машины Тьюринга.

Сегодня случайно попалась на глаза старая шутка с bash.org.ru:

mordaha: Картинка: http://mordaha.com/sc2l.jpg
Это старкон2, запущенный в DosBox, под иксами в Дебиане, который запущен в VMWare, которая в WinXP
Куда мне вопрос о неработающем звуке задавать? :)))))

gregory_777: Санитарам.


На этой почве у меня развилась возникло несколько ассоциаций, которыми я хочу поделиться.

В цикле книг "Про Дракона" Павла Шумила в одной из побочных сюжетных линий был описан некий космический артефакт - гигантский компьютер размером с небольшую солнечную систему. Возраст компьютера насчитывал несколько миллионов лет, физические масштабы поражали воображение, его долго исследовали, но несмотря на все усилия, никому так и не удавалось понять, что же именно он считает и для чего/кого.

По ходу пьесы выяснилось, что этот компьютер - творение рук ... одного из исследователей, который пытался взломать перебором пароль на компьютере своего коллеги, чтобы сунуть нос в результаты его исследований. Проблема была в том, что коллега был параноик, и вел свою работу внутри виртуальной машины, запущенной на своем компьютере, что сильно усложняло атаку перебором. В результате, когда первый исследователь случайно получил доступ к технологии перемещения во времени, он забросил в прошлое компьютер, который мог модифицировать и развивать самого себя. и занимался исключительно творческим взломом и подбором паролей к виртуальной машине второго исследователя. Правда, второй исследователь к этому времени уже что-то начал подозревать, и подсунул первому бэкап-копию якобы своего компьютера, которая на самом деле содержала в себе "матрешку" из десятка запущенных друг в друге виртуальных машин, последняя из которых содержала те самые ценные сведения ...

Заброшенный в прошлое компьютер за пару миллионов лет "замодернизировал" себя до неузнаваемости, но "матрешку" из виртуальных машин так и не разобрал и пароль так и не подобрал ... Зато стал объектом исследования незадачливой парочки :)

Да, к чему это я?

Когда я был курсе на втором-третьем, нам читали курс лекций по теории вычислений, на котором, помимо прочего, познакомили нас с разнообразными машинами Тьюринга. Если кто не знает, машина Тьюринга - это такая асбтрактная модель компьютера (состоящая из ленты в клеточку, карандаша, резинки и набора правил), на которой удобно исследовать вычисления и строить доказательства о свойствах процесса вычисления.

Так вот, уже на этом достаточно абстрактном уровне можно заниматься виртуализацией: можно построить универсальную машину Тьюринга, которой на вход будет подаваться программа для обычной машины Тьюринга и исходные данные, после чего универсальная М.Т. проэмулирует работу обычной М.Т. с не более чем квадратичным замедлением и выдаст результат.

Поскольку универсальная машина Тьюринга на базовом уровне является разновидностью обычной машины Тьюринга, для нее в свою очередь можно построить соотвествующую универсальную машину Тьюринга, и так далее, и тому подобное.

А тут как раз в FIDO-шной эхоконференции RU.PERL зашел разговор о том, что на Perl-е, конечно, можно написать код любой степени нечитаемости, но за счет отладчика и отладочной печати любой такой можно распутать и в конце-концов понять.

Прикола ради я написал на perl-е реализацию универсальной машины Тьюринга, которой на вход давалась программа для другой универсальной машины Тьюринга, которой на вход давалась программа для обычной машины Тьюринга, которой на вход давалось побитовое представление ASCII-строки, и эта последняя машина проверяла какое-то свойство этого бинарного представления - типа, что кол-во единиц в бинарном представлении больше кол-ва нулей в два раза, или что-то в этом роде. За счет двух (трех?) уровней эмуляции подобная проверка делалась примерно секунд 10.

Написал, и закинул в RU.PERL. Без описания того, что делает программа, но с примером строки, которая проходит подобную проверку. И предложил найти еще одну подобную строку. Если мне не изменяет мой склероз, то желающие были, но положительного результата они так и не достигли :)

Мораль: никогда не знаешь, когда тебе придется применить на практике знания, которые в институте кажутся оторванными от реальности и никому не нужными.

PS
Just for fun, та самая программа на perl-е (найденная внутри devel.zip, который был внутри old_computer.zip, который был внутри backup_to_sort_later.tgz, который бы в old_notebook.tar.bz2 :)

#!/usr/bin/perl -w

#
# Correct passwd: '3is>}.gK' (without '')
#

$data="Z043ZZZZZ111110ZZ0Z0ZZ0Z1102Z11110ZZ0ZZZZZ1110ZZ0Z102ZZZZ11111110Z110Z111111".
"111111110ZZ0Z1102ZZZZZ1111111110Z0ZZZZZ1111111110Z0Z1102ZZZZ111111110ZZ0ZZZZ".
"111111110Z0Z102Z111110ZZ0ZZZZZ1110ZZ0Z102ZZZZ11110Z10ZZZZ11110Z10Z102Z110ZZ0".
"ZZZZZ1110ZZ0Z102Z111110Z0Z1111110Z0Z1102ZZZZZ11111111110ZZ0ZZZZZ11110ZZ0Z102".
"ZZZZZ1111111110Z10ZZZZZ1111111110Z10Z1102ZZZZ11111110ZZ0ZZZZ11111110Z10Z102Z".
"ZZZ111111110Z110Z111111111111110ZZ0Z1102Z11111110Z10Z111111110Z10Z1102Z10Z10".
"Z110Z10Z1102Z111111110Z0Z1111111110Z0Z1102ZZZZZ1110Z10ZZZZZ1110Z10Z102ZZZZZ1".
"1110ZZ0Z0ZZ0Z1102ZZZZZ1110ZZ0ZZZZZ111111110ZZ0Z1102Z10Z0Z110Z0Z1102ZZZZ11111".
"0ZZZZ10ZZZZ1111110Z10Z102Z1110Z10Z11110Z10Z1102ZZZZ10Z0ZZZZ10Z0Z102ZZZZ1110Z".
"Z0ZZZZ1110Z10Z102ZZZZ1110Z10ZZZZ1110Z10Z102Z11111110ZZ0ZZZZZ1110ZZ0Z102Z1111".
"1110Z0Z111111110Z0Z1102ZZZZ11110Z110Z111111111111110ZZ0Z1102Z110Z0Z1110Z0Z11".
"02ZZZZ111111110ZZZZ10ZZZZ1111111110Z10Z102ZZZZZ1110ZZZZ10ZZZZZ111111110ZZZZ1".
"0Z1102Z1110Z0Z11110Z0Z1102Z1111111110ZZ0Z1111111110ZZ0Z102Z110Z10Z1110Z10Z11".
"02Z10ZZ0ZZZZZ1110ZZ0Z102ZZZZ11110ZZZZ10ZZZZ111110Z0Z102ZZZZZ11111111110Z10ZZ".
"ZZZ11111111110Z10Z1102ZZZZ111110Z110Z111111111111110ZZ0Z1102ZZZZ111110Z0ZZZZ".
"111110Z0Z102Z0ZZ0Z0ZZ0Z1102ZZZZ111110ZZ0ZZZZ111110Z10Z102ZZZZ10Z110Z11111111".
"1111110ZZ0Z1102ZZZZ11111110ZZZZ10ZZZZ111111110Z0Z102ZZZZZ111110Z0ZZZZZ1110ZZ".
"0Z102ZZZZZ11110Z10ZZZZZ1110ZZ0Z102ZZZZ110ZZ0ZZZZ110Z0Z102ZZZZZ11110Z0Z111111".
"111111110Z10Z1102ZZZZZ1110Z0ZZZZZ1110Z0Z102Z111111110Z10Z1111111110Z10Z1102Z".
"ZZZ1111111110ZZ0ZZZZ1111111110Z0Z102ZZZZZ111111110Z10ZZZZZ11111111110ZZ0Z110".
"2ZZZZ1111111110ZZZZ10ZZZZ10Z10Z102Z1111111110Z10ZZZZZ1110ZZZZ10Z102ZZZZZ1111".
"1111110Z0ZZZZZ11111111110Z0Z1102ZZZZ1111110ZZZZ10ZZZZ11111110Z0Z102ZZZZZ1111".
"111110ZZZZ10ZZZZZ111110ZZZZ10Z102Z111111110ZZ0ZZZZZ1110ZZ0Z102Z0Z110Z0Z110Z1".
"102Z0ZZZZ10Z10ZZZZ10Z1102Z1111111110Z0ZZZZZ1110ZZZZ10Z102Z0Z1110ZZZZ10Z1110Z".
"102ZZZZZ11111111110ZZZZ10ZZZZZ11110ZZZZ10Z102ZZZZ1111110Z110Z111111111111110".
"ZZ0Z1102ZZZZ1110Z110Z111111111111110ZZ0Z1102ZZZZ10ZZ0ZZZZ10Z10Z102ZZZZ110Z10".
"ZZZZ110Z10Z102Z11110Z10Z111110Z10Z1102ZZZZ110ZZZZ10ZZZZ1110Z10Z102ZZZZZ11111".
"1110ZZ0Z0ZZ0Z1102ZZZZ1111111110Z11011111111110ZZ0Z1102Z0Z0Z10ZZZZ10Z1102Z111".
"1110Z10Z11111110Z10Z1102ZZZZZ111111110Z0ZZZZZ1111111110ZZ0Z1102ZZZZZ11111111".
"10ZZ0ZZZZZ111110ZZ0Z102Z11110Z0Z111110Z0Z1102ZZZZ11110ZZ0ZZZZ11110Z0Z102Z111".
"110Z10Z1111110Z10Z1102ZZZZ110Z110Z111111111111110ZZ0Z1102Z1110ZZ0ZZZZZ1110ZZ".
"0Z102Z1111110Z0Z11111110Z0Z1102ZZZZ1110ZZZZ10ZZZZ11110Z0Z102ZZZZZ111110Z10Z1".
"11111111111110Z0Z1102Z1111110ZZ0ZZZZZ1110ZZ0Z102ZZZZ1111110ZZ0ZZZZ1111110Z0Z".
"102Z0Z10Z10ZZZZ10Z1102ZZZZ10ZZZZ10ZZZZ110Z0Z102";

sub crackme($) {
  my ($s,$c,$m,$r);
  $r="";
  foreach (split(//,"2\@".$_[0]."\@3")) {
    $s=("1" x (ord($_)))."0";
    $r.=$s;
  }
  $r=~s/1{32}0/0/g;
  $data=~s/Z/1111111111111111/g;
  $data=~s/4/4$r/;
  $data=~s/41/4\#/;

  $s="1111111111111110";
  while (not(341 % length($s) == 0)) {
    if ($data=~/^(1+0)4.*?\#(1+0).*?(?:3.+?[^1]|3)(\1)([1]\2)(1+0)(1+0)(1+0)2/) {
      $s=$5;$c=$6;$m=$7;
      if (length($m)>18) {
        $data=~s/\#1+01/$c\#/;
      } else {
        $data=~s/1(1+0)\#1+0/\#$1$c/;
      }
      $data=~s/^.*4/4/;
      $data=$s.$data;
    }
  }
  print "Password ";
  if ($s=~/1{15}/) {
    print "in";
  }
  print "correct\n";
}


crackme(unpack("B*",$ARGV[0]));

(no subject)

Date: 2007-03-01 11:56 am (UTC)
From: [identity profile] shigin.livejournal.com
А потом кто--то все это дело раскодировал и сделал icfpc-2006?

По нажатию на "p" в stdout вылезло МНОГО бинарных данных. Повторный запуск с перенаправлением stdout показал, что запуск кодекса генерирует 15 мб данных, которые ... являются еще одной программой для UM!

(no subject)

Date: 2007-03-01 02:49 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Те товарищи курили какую-то независимую траву.

(no subject)

Date: 2007-03-01 03:54 pm (UTC)
From: [identity profile] shigin.livejournal.com
Но удобрения явно были одинаковыми :).

(no subject)

Date: 2007-03-01 11:59 am (UTC)
From: [identity profile] dendik.livejournal.com
«И тогда я изогнул проволку интегралом и снял шапку.».

А в абзаце номер 10 ты пропустил слово «свойства» в конце последнего предложения. =-)

(no subject)

Date: 2007-03-01 02:48 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
А что за тема про интеграл и шапку?

PS
fixed

(no subject)

Date: 2007-03-01 02:57 pm (UTC)
From: [identity profile] tubelka.livejournal.com
Гугл про проволоку и интеграл выдаёт такую вот (http://forum.mypinsk.com/index.php?showtopic=184&st=180) версию:

- Товарищ майор! Вот вы высшее образование имеете. В училище высшую математику изучали. А пригодилась ли она вам в армии?
- А как же! Конечно пригодилась! Вот вчера пошел на очко, а пистолет из кармана и выпал. Глубоко, рукой не достать. И что же я вспомнил?
Интегральное исчисление! Согнул проволку интегралом, шарил, шарил и пистолет-то и вытащил!


Но мне вспоминается нечто капельку более душещипательное про выпускника, лектора и шляпу... Ну да это невелика разница.

(no subject)

Date: 2007-03-01 12:14 pm (UTC)
From: [identity profile] thenexus6.livejournal.com
Много ли вообще в мире желающих написать в модерируемой (и судя по реакции на UUE модератора, хорошо модерируемой) конференции "я не способен это понять?".

(no subject)

Date: 2007-03-01 12:15 pm (UTC)
From: [identity profile] artimind.livejournal.com
Мда, а я как химик в универе только синтезировал психотомиметики (ну скажем галюциногены) и забросал сцену на "Дне физика" хлористым ванадилом, который дал столбы оранжевого дыма...

Эх, знал бы я тогда про крутизну компьютеров ))

(no subject)

Date: 2007-03-01 12:26 pm (UTC)
From: [identity profile] sukhorukov.livejournal.com
Настоящая крутизна - это когда химия мешается с кибернетикой :-)

(no subject)

Date: 2007-03-01 02:22 pm (UTC)
From: [identity profile] vorotylo.livejournal.com
А та — с математикой. Филологи писают кипятком.

(no subject)

Date: 2007-03-01 12:18 pm (UTC)
From: [identity profile] blackshaman.livejournal.com
Книжки про драконов читать рекомендуешь?

(no subject)

Date: 2007-03-01 02:39 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Yep, absolutely.

У автора продуманная модель мира, и он следит за ее соблюдением, чем очень мне импонирует.

(no subject)

Date: 2007-03-01 03:23 pm (UTC)
From: [identity profile] sbrin.livejournal.com
И еще нужно добавить, что там хоть и сплошные драконы, но ничего общего с фэнтэзи оно не имеет.
Отличная science fiction.
From: [identity profile] timka21213.livejournal.com
её можно собрать из LEGO!

http://www.syngress.com/catalog/?pid=2435

"The LEGO Turing Machine by Giulio Ferrari, is a revolutionary device created to study computability, and which allows us to journey to the time of Artificial Intelligence."

(no subject)

Date: 2007-03-01 12:20 pm (UTC)
From: [identity profile] blackshaman.livejournal.com
Так увлекся книжками, что...

Чего пишем так мало? Ребенок не дает отвлечься? Судя по малочисленным подробностям и сухости изложения - да! Но байка то ведь интересная!! Хотелось бы чаще читать их.

(no subject)

Date: 2007-03-01 02:38 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Ага, именно что не дает отвлечься ... Ну, это дело временное - дальше будет или лучше, или хуже :)

А книжки Шумила я читал достаточно давно - года четыре тому. если не больше...

(no subject)

Date: 2007-03-01 09:20 pm (UTC)
From: [identity profile] borman-ua.livejournal.com
дальше будет лучче и проще... моя вот на днях сама пошла... и начала добиратся до таких закутков в квартире, про которые даже я незнал... не говоря уже о содраных обоях в коридоре... ;-)

(no subject)

Date: 2007-03-01 09:52 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
:))

А в чем же стало проще?

(no subject)

Date: 2007-03-02 11:26 am (UTC)
From: [identity profile] borman-ua.livejournal.com
руки стали свободны... сама же ходит уже ;-)

(no subject)

Date: 2007-03-01 01:13 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Мдааа. Как раз пару дней назад я закончил читать http://scienceblogs.com/goodmath/goodmath/programming/pathological_programming/, особенно проникшись постом про Malbolge (и чуваков, которые уже почти десять лет пытаются на нём что-нибудь написать, применяя генетические алгоритмы и прочую фигню, с переменным, впрочем, успехом).

Идея о защите прожраммок путём встраивания в них интерпретатора какой-нибудь личной версии брейнфака мне весьма нравицо. Единственное что: во-первых, это типичный случай security by obscurity, поэтому использовать обычную машину Тьюринга не очень правильно, это тебе просто повезло, что на перле пишет довольно специфический контингент =) Нужен самостоятельно построенный язык, причём весьма нетривиальный для программирования. Во-вторых, в евонное нутро нужно ныкать реальные важные куски кода, а не просто проверку серийника, вызов которой можно взять и вырезать ваще. Соответственно, этот самый язык должен быть всё же доступен для программирования хотя бы лично тобой, а лучше иметь компилятор в него из какого-нибудь MSIL. Ну и интерпретироваться он должен довольно быстро.
Поэтому если такое сделать, то, к сожалению, погордиться перед общественностью достигнутыми результатами не удастся, ибо детали реализации придётся держать в Жутком Секрете.

(no subject)

Date: 2007-03-01 02:31 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
ага. т.к. как только они всплывут где-то - тут же всей секретности и капец.

(no subject)

Date: 2007-03-01 03:31 pm (UTC)
From: [identity profile] dil.livejournal.com
Несколько не по теме, но вспомнилось:
есть такая занимательная система шифрования спутникового телевидения - Nagravision. Вот ее смарт-карты очень плохо поддаются клонированию, несмотря на почти известный алгоритм собственно шифрования. Потому что в отличие от остальных систем, которые получают снаружи только данные для расшифровки, в нагре в этих данных могут встречаться команды типа "а вот тут надо на процессоре карты выполнить вот этот бинарный код". Причем код вполне может использовать текущие значения каких-нибудь регистров процессора, образовавшиеся в результате прошлой работы.
И получается, что единственный способ нормально сэмулировать работу карты - вынуть из нее дампы РОМов и ПРОМов (что тоже совершенно не тривиально) и запускать их в программном интерпретаторе. По-другому никак.

(no subject)

Date: 2007-03-01 07:07 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
А где оно применяется? В "спутниковом" TV (которое, если я не ошибаюсь, DVB-S) вроде ж не оно?

(no subject)

Date: 2007-03-01 08:57 pm (UTC)
From: [identity profile] dil.livejournal.com
В нем самом. Там для собственно шифрования аудио- и видеопотоков применяется CSA (Common Scrambling Algorithm), а вот уже ключи от CSA передаются разнообразными способами (viaccess, seca/mediaguard, irdeto, conax, videoguard, nagravision...).
Собственно, в DVB-C и -T применяются те же самые методы шифрования.

(no subject)

Date: 2007-03-01 09:54 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
О. Спасибо, буду знать - а то все, что касается DVB-* для меня пока еще темный лес, хотя реализации уже вплотную подступают и регулярно попадаются на глаза.

(no subject)

Date: 2007-03-01 11:34 pm (UTC)
From: [identity profile] dil.livejournal.com
Если что - могу проконсультировать, я там довольно давно копаюсь

(no subject)

Date: 2007-03-01 10:16 pm (UTC)
From: [identity profile] to-the-future.livejournal.com
Интересно, а от кард-шаринга это спасает?

(no subject)

Date: 2007-03-01 10:31 pm (UTC)
From: [identity profile] dil.livejournal.com
Нет, конечно :)

(no subject)

Date: 2007-03-01 02:35 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
О. Спасибо за ссылку на pathological_programming :)

> # Correct passwd: '3is>}.gK' (without '')

Date: 2007-03-01 01:53 pm (UTC)
From: [identity profile] poige.livejournal.com
# Correct passwd: '3is>}.gK' (without '') (without (without '')) without ((without '') (without (without ''))) ...

:-)

Re: > # Correct passwd: '3is>}.gK' (without '')

Date: 2007-03-01 02:37 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Ааааааа!

(в ужасе убегает)

Мне до сих пор этот решатель на прологе в страшных снах снится.

(no subject)

Date: 2007-03-01 02:27 pm (UTC)
From: [identity profile] u-777.livejournal.com
Комменты рулят

(no subject)

Date: 2007-03-01 03:25 pm (UTC)
From: [identity profile] norian.livejournal.com
есть ещё программные эмуляторы железа :о))

(no subject)

Date: 2007-03-01 03:26 pm (UTC)
From: [identity profile] norian.livejournal.com
в смысле реально работающие для реального железа

(no subject)

Date: 2007-03-01 08:48 pm (UTC)
From: [identity profile] http://users.livejournal.com/renny_/
Дык угости же такой травой! Как раз у вас на рiдной в конце апреля буду...

(no subject)

Date: 2007-03-20 09:38 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Ха! Вопреки впечатлению, аффтар таки ничего не курил. Хотя был бы не против. Так ведь не угощают.

(no subject)

Date: 2007-03-01 10:24 pm (UTC)
From: [identity profile] to-the-future.livejournal.com
Помницца в стародавние фидошные времена была такая железка Арвид - железка, позволяющая использовать в качестве стримера бытовой видеомагнитофон. В своих последних версиях она имела гигантскую по тем временам емкость в 16 Гб на кассете.

Так вот, главный спор в те времена был на тему, какова скорость этого арвида. Противники железки орали, что низкая, сторонники - что вполне высокая.

И вот однажды, в одной из эх некий фанат устройства заявил: "Достаточная там скорость! Я записал на кассету фильм в mpeg и смотрел его без всяких тормозов!", на что сразу получил ответ: "Свершилось! Наконец фидошники сумели приспособить бытовой видеомагнитофон для просмотра видео!".

(no subject)

Date: 2007-03-06 08:16 pm (UTC)
From: [identity profile] anton.titov.com.ua (from livejournal.com)
:D класс!

(no subject)

Date: 2007-03-02 06:44 pm (UTC)
From: [identity profile] egorfine.livejournal.com
это прекрасно.

(no subject)

Date: 2007-03-03 09:49 pm (UTC)
From: [identity profile] mtve.livejournal.com
'3is>}.g3' :)

(no subject)

Date: 2007-03-20 09:37 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Подобрал? :)

А полностью из других символов слабо? :)

(no subject)

Date: 2007-03-21 05:42 am (UTC)
From: [identity profile] mtve.livejournal.com
без точки не получается - !&P.u*e2

(no subject)

Date: 2007-03-21 06:32 am (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
О. Супер :)

Не составит труда полечить мой склероз и напомнить мне, какие же пароли я считал "правильными"? (без издевки, я реально не помню, что за проверку я реализовал)

(no subject)

Date: 2007-03-21 08:21 pm (UTC)
From: [identity profile] mtve.livejournal.com

дык подбор же :) что-то с количеством битов, я ещё поковыряю когда будет время.

машину Тьюринга реально сложно вернуть обратно в понятное описание, а в этой 25 хороших состояний/86 хороших переходов - много.

надо что-нибудь автоматизированное на эту тему придумать.

(no subject)

Date: 2007-03-21 09:10 pm (UTC)
From: [identity profile] http://users.livejournal.com/_adept_/
Елки, ведь должна была бы быть где-то версия с комментариями, но похоже - поели мыши :(

(no subject)

Date: 2007-03-22 03:01 pm (UTC)
From: [identity profile] mtve.livejournal.com

картинк:


Image

(no subject)

Date: 2010-03-06 09:39 pm (UTC)
From: [identity profile] gregory.pp.ru (from livejournal.com)
Похоже этот мой ляпсус про "санитаров" ещё долго будет аукаться по интернетам...

Profile

dastapov: (Default)
Dmitry Astapov

May 2022

M T W T F S S
       1
2345678
9101112131415
161718 19202122
23242526272829
3031     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags