Android imsi catcher detector рецензии. Защита от прослушивания разговоров по мобильному телефону. Как можно прослушивать телефоны

Вы еще не используете AppleScript? Не знаете, что это такое? Считаете, будто Вам это ни к чему? Или, быть может, память о школьных уроках информатики вызывает у Вас приступ аллергии при одном упоминании слова «программа»? Значит, Вы правильно сделали, открыв эту статью.

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

Нередко при работе с той или иной программой нам приходится по многу раз выполнять одинаковые действия: нажимать на одни и те же клавиши, выбирать одну и ту же команду из меню, вводить одни и те же значения в диалоговых окнах& Вот тут-то на помощь и приходит AppleScript. Описываем последовательность наших операций в виде программы-«скрипта», запускаем и - спокойно пьем кофе, изредка поглядывая, не закончилась ли обработка последнего, три тысячи семьсот восемьдесят девятого файла. Нечто подобное существует в виде BAT-файлов DOS или скриптов для оболочек (shell) UNIX. Но у AppleScript есть важное преимущество: этот язык «понимают» как Finder, так и большое число прикладных программ, и скрипт может обращаться поочередно к ним всем.

Язык, которым мы будем пользоваться (он тоже называется AppleScript), очень близок к обычному английскому языку. Например, скрипт может выглядеть вот так:

tell application «Finder»
make
end tell

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

Объекты, свойства, события…

AppleScript - язык объектно-ориентированный. То есть все, что «существует» в вашем компьютере, он считает объектами (objects). Объект может состоять из других объектов, быть включен в другой объект, относиться к другому объекту. Например, Finder - это объект. У него есть «подчиненные» объекты - папки, файлы, окна. В редакторе Tex-Edit имеется объект текст, состоящий из слов, строк, абзацев и т. п. Знать, как соотносятся объекты (их иерархию) очень важно, поскольку команда передается «по цепочке». Действует этакая «вертикаль власти»: мы отдаем приказ Finderу, он - папке, та - вложенной в нее папке и так далее, пока не дойдет до нужного файла. И «рапорт об исполнении» опять-таки пойдет по той же цепочке - в обратную сторону.

Однотипные объекты (например, все папки) образуют класс (class). Каждый объект обладает некоторым набором свойств (properties), отличающим его от другого. Например, у каждого файла есть имя, метка, тип, дата создания, версия и еще более десятка характеристик. Часть из них скрипт может менять, некоторые - только прочесть.

Один класс (так называемый «потомок» ) может наследовать свойства другого класса («предка» ). Например, и у папок, и у файлов есть общий предок - элемент (item).

Теперь рассмотрим наш пример, немного дополнив его:

— любой текст, записанный после «двух минусов»,
— считается комментарием;
— на него компьютер не обращает внимания
tell application «Finder»
— словом tell начинается группа команд,
— относящихся к одному объекту
make new folder at desktop with properties {name:»Моя!», label index:2}
end tell — а так завершается группа команд
tell application «Finder» to tell item «Моя!»
open
set its name to «Только для меня»
end tell

Мы сперва приказываем программе Finder создать новый объект класса «папка», расположенный на Столе. Часть свойств задано в команде (имя папки и ее цветная метка), остальные будут назначены компьютером по умолчанию. Затем говорим Finder’у, чтоб он скомандовал своей папке (так и только так: «вассал моего вассала - не мой вассал») открыться и сменить имя.

Но пора бы от теоретических рассуждений перейти к чему-то более осязаемому. Самое время запустить Script Editor.

Редактор скриптов

Для работы с AppleScript создано несколько программ, среди которых есть весьма совершенные средства разработки. Впоследствии Вы, вероятно, обзаведетесь одним из них. Но для первоначального знакомства нам вполне хватит редактора, входящего в состав Mac OS.

Окно Script Editor разделено на две части: в верхней записывается комментарий (он выводится на экран перед исполнением скрипта), а в нижней - программа. Попробуем набрать наш пример (без моих комментариев, конечно, можно обойтись). Затем щелкнем кнопку «Check syntax». Если Вы допустили какую-либо ошибку, появится окно с пояснением. Но, скорее всего, все будет нормально - и после небольшой паузы текст несколько изменит свой вид. Каким шрифтом при этом будут выделены разные элементы скрипта, можно настроить, воспользовавшись командой «AppleScript Formatting» меню «Edit». Теперь можно нажать кнопку «Run». Сработало?

Написанный скрипт можно сохранить по-разному: либо только исходный текст (Text), либо уже скомпилированный скрипт (Compiled Script) - готовый к исполнению редактором скриптов или некоторыми другими программами, наконец - в виде самостоятельной{сноска: конечно, не совсем - без установленного AppleScript она ничего не сделает} программы-апплета (Application). Можно сделать скрипт «только для исполнения» (Run-only). Только не забудьте в этом случае сохранить - для себя - и оригинальный файл. Иначе добраться до его исходного текста не смогут не только конкуренты, жаждущие нарушить ваши авторские права, но и Вы сами.

Словари, словари, словари…

«Ну, хорошо,»- вероятно, думаете, Вы,- «редактором пользоваться проще простого, прочесть готовые скрипты - тоже не сложно. Но писать-то их как? Откуда взять все эти классы, команды, свойства?» Ответ прост: нужно посмотреть в словаре . Каждая, поддерживающая работу с AppleScript, программа, а также ScriptingAddition (о «дополнениях» разговор еще впереди) содержит краткое описание всех своих объектов и распознаваемых команд. Посмотреть этот словарь можно непосредственно из редактора скриптов - выбрав «Open Dictionary» из меню «File» либо натащив нужную программу на картинку редактора.

Программы Макинтоша могут поддерживать AppleScript на трех разных уровнях.
Scriptable - программа может выполнять команды, описанные в виде скрипта.
Recordable - возможна запись команд, выполняемых в программе. Создадим новый скрипт, запускаем запись (кнопкой «Record»), выполняем, например, в Finder вручную необходимые действия, останавливаем запись («Stop»). Вот и все. Таким образом очень удобно делать заготовки скриптов.
Attachable - скрипт может выполняться непосредственно из программы, будучи «присоединенным» к меню или какому-либо объекту в окне. Примеры таких программ: AppleWorks, Tex-Edit, FileMaker Pro.

Откроем, например, словарь программы Finder.

Слева Вы видите список всех определенных в программе «терминов». Обратите внимание: часть из них набрана курсивом. Это - объекты. Все остальные - команды. Щелкнув на нужное слово, можно прочесть краткую справку.

Что, например, можно узнать про «Container»? Во-первых, мы видим: «Сlass container: An item that contains other items». То есть это - некий элемент, содержащий другие элементы. А если просмотреть описания нескольких следующих классов, станет ясно, что «контейнер» - понятие, включающее в себя и диски, и папки, и Стол (Desktop), и Корзину (Trash). Он обладает общими свойствами этих, во многом схожих, объектов. И в «родословном древе» - иерархии классов - является их предком.

Читаем дальше. «Plural form: containers». Форма множественного числа? Мы разве грамматику английского языка изучаем? И да, и нет. Я ведь уже упоминал, что AppleScript максимально приближен к естественному языку. И если мы хотим обработать все объекты данного класса, то записать это, как и полагается в английском языке, можно либо «every container», либо «containers».

Как Вы уже знаете, объект может содержать в себе другие объекты. Какие именно и чем отличаются друг от друга, описано в следующем разделе словаря - «Элементы» (Elements). Контейнер, как видите, может содержать объекты полутора десятков различных классов, например, другие контейнеры, папки, файлы документов и программ и т. д. А указать конкретный элемент какого-либо класса можно либо именем (by name), либо порядковым номером (by numeric index).

Ну, и наконец, последний раздел - «Свойства» (Properties). Тут мы, во-первых, видим, что класс «Контейнер» - наследник класса «Элемент» ( item ), то есть обладает всеми его свойствами. Но есть у этого класса и несколько своих собственных. Обратите внимание: часть из них помечена «» (read only - только для чтения), эти свойства поменять командой AppleScript невозможно.

Теперь посмотрим, как описаны в словаре команды. Для примера возьмем уже знакомую Вам по примерам скриптов «Make» (создать). В верхней части страницы - назначение команды (создать новый элемент). Затем - как она записывается (синтаксис) и какие имеет параметры. Заметьте: некоторые параметры заключены в квадратные скобки. Так в словаре обозначают необязательные параметры. Составляя скрипт, мы можем без них обойтись, если же будем использовать, никакие скобки ставить не нужно. Завершает справку по команде указание ее результата (Result). В нашем примере им будет «ссылка» (reference) на созданный объект.

Ну, вот. Вы уже можете попробовать написать какой-нибудь простой скрипт. Итак…

О, создатель!

Думаю, Вы знаете, что каждый файл на Макинтоше обладает двумя признаками - типом и кодом создателя, позволяющими Finder’у решить, как с этим файлом обращаться. Не секрет и то, что нередко - например, после передачи через Интернет - эти атрибуты теряются. Конечно, есть немало программ, умеющих их изменять. Но давайте попытаемся сделать свою собственную утилиту, пользуясь только тем, что уже заложено в Mac OS.

Начнем с простейшего варианта. Пусть нам нужно назначить файлу letter.txt, находящемуся на Столе, назначить тип «TEXT» и код создателя «ttxt» (ПростоТекст).

Выбираем в словаре программы Finder объект file. Находим нужные нам свойства: file type и creator type. Для изменения значения того или иного свойства используется команда «setraquo; (установить). Стало быть весь скрипт должен выглядеть примерно так:

tell application «Finder» to tell file «letter.txt»
set its file type to «TEXT»
set its creator type to «ttxt»
end tell

Или вот так:

tell application «Finder»
set file type of file «letter.txt» to «TEXT»
set creator type of file «letter.txt» to «ttxt»
end tell

Таким образом, как видите, можно либо приказать файлу поменять свои (its) свойства (в данном примере слово «its» можно опустить, т. к. назначение команды однозначно определено и без него), либо - программе Finder поменять свойства подчиненного объекта.

Я не зря задал условие, что файл находится на рабочем столе. В ином случае нам потребовалась более длинная «цепочка» подчиненных объектов (что-то вроде «tell application «Finder» to tell disk «Macintosh HD» to tell folder «lesson» to tell file «letter.txt»»). Или же - для второго варианта скрипта - указание полного пути : «file «Macintosh HD:lesson:letter.txt»» (Напомню: путь в Mac OS записывается через двоеточия).

Что ж, скрипт написан. Он работает. Но& пользы от него, прямо скажем, никакой - ведь для каждого следующего файла нужно изменять текст самого скрипта. Ничего себе, упростили работу! Надо бы нашу программу усовершенствовать. Научим ее спрашивать пользователя, какой файл обрабатывать. Открываем словарь Finder’а, смотрим& Вот те на! Ничего подходящего. Неужто Apple допустила такую промашку? Вовсе нет…

«А у Вас нет такого же, но с перламутровыми пуговицами?»

Открытая архитектура скриптов (OSA - Open Script Architecture) позволяет обзавестись практически любым необходимым элементом языка. Конечно, если кто-то позаботился написать «дополнение» (Scripting Addition или OSAX), описывающее такой объект и соответствующие команды. Размещаются эти дополнения в папке Scripting Additions, находящейся в System Folder (раньше - в Extensions). Использовать же их может любой скрипт, независимо от того, какой программой он в данный момент командует.

Откроем словарь Standard Additions (чтоб быстро попасть в папку Scripting Additions, в диалоге Open Dictionary предусмотрена специальная кнопка). Вот и она - команда «choose file» (выбрать файл). Результатом ее работы будет ссылка на файл, выбранный человеком в стандартном диалоге Open. Эту ссылку мы сохраним в переменной, которую назовем, к примеру, MyFile.

Наш скрипт примет вот такой вид:

tell application «Finder»
set MyFile to choose file
set file type of MyFile to «TEXT»
set creator type of MyFile to «ttxt»
end tell

Вполне работоспособная программка. Но нельзя ли сделать ее более удобной? Зачем отдельно запускать скрипт, потом выбирать в диалоге имя файла - не лучше ли использовать метод Drag’n’Drop? Все в наших силах!

Пишем Droplet

Итак, что мы хотим получить, и как этого добиться.

  1. Программа должна работать независимо от редактора скриптов. С этим все ясно, мы уже знаем, что для этого ее нужно сохранить как апплет.
  2. Цель работы скрипта - изменение свойств заданного файла. Эта часть у нас уже готова.
  3. Обрабатываться должен файл, «натащенный» на картинку скрипта. Вот тут и начинается самое интересное. С «живущими» в нашем компьютере объектами постоянно происходят разные события . Например файл может быть перемещен, скопирован или открыт. Программа - запуститься, выполнять какие-либо команды или не делать ничего, наконец - завершиться. Чтобы объект «знал», как ему реагировать на то или иное событие, нужна специальная подпрограмма - «обработчик» (handler). Когда на апплет «бросают» файлы, папки или диски, Finder передает ему сообщение-команду «Open» и список «брошенных» объектов. Вот для этого-то события нам и придется написать обработчик.

В простейшем случае он будет выглядеть вот так:

on open FileList — словом «on» начинается обработчик события
— сперва скрипт работает сам, не затрагивая никаких программ
set MyFile to item 1 of FileList
tell application «Finder» — теперь командуем Finder’ом
set file type of MyFile to «TEXT»
set creator type of MyFile to «ttxt»
end tell
end open — не забываем указать, что обработчик закончился

Для временного хранения списка мы использовали переменную FileList. Называть переменные можно любыми сочетаниями латинских букв, но желательно так, чтоб по имени можно было понять, что же эта переменная обозначает.

Как видите, обрабатывается первый элемент из переданного при запуске скрипта списка. А остальные? На них наша программа просто не обращает внимания. Не трудно догадаться, что следующим шагом по пути к совершенству будет обработка сразу целой кучи файлов.

Раз, раз, еще раз…

До сих пор все команды наших скриптов выполнялись поочередно в том порядке, как записаны. Теперь же нам нужно повторить одни и те же действия несколько раз подряд. Придется организовать особую структуру - цикл . В AppleScript есть для этого разнообразные управляющие команды. Можно повторить действия наперед заданное число раз, либо выполнять их пока соблюдается некоторое условие. Но такими циклами располагает практически любой язык программирования. В нашей же задаче идеально подойдет другой - »повторить для каждого элемента списка». С ним скрипт примет следующий вид:

on open FileList
repeat with MyFile in FileList — так записывают начало цикла
tell application «Finder»
set file type of MyFile to «TEXT»
set creator type of MyFile to «ttxt»
end tell
end repeat — конец управляющей структуры обязательно отмечаем
end open

Чего еще не хватает нашей программе, чтоб стать вполне профессиональной? А не хватает ей «защиты от дурака» . Ведь «бросить» на картинку скрипта можно и папки, и ярлыки, а работать он должен только с обычными файлами.

Кого хочешь, выбирай

Стало быть, перебирая элементы списка, нужно определять, чем каждый из них является. Только если попался обычный файл - менять его свойства. Выбрать, делать или не делать какие-либо операции, позволяет еще одна управляющая конструкция - условный оператор If. Определить, не является ли объект папкой или ярлыком, можно, получив информацию о нем командой «info for» из Standard Additions. Результатом ее будет объект класса «file information». Вот его-то свойства - «папка?» (folder) и «ярлык?» (alias) - мы и будем проверять. Поскольку нам необходимо, чтоб элемент не был папкой И не был ярлыком, два условия свяжем логической операцией «and» (когда достаточно выполнения какого-либо одного из условий - ИЛИ первого, ИЛИ второго - пользуются связкой «or»). В общем, в результате наших рассуждений получился вот такой скрипт:

on open FileList
repeat with MyFile in FileList
set theInfo to info for MyFile
if (folder of theInfo is false) and ¬
(alias of theInfo is false) then
tell application «Finder»
set file type of MyFile to «TEXT»
set creator type of MyFile to «ttxt»
end tell
end if
end repeat
end open

Обратите внимание, что все условия в операторе If должны быть записаны в одну строчку . Чтобы сделать текст программы более удобным для чтения, бывает полезно «сложить» длинную строку, как сделано в этом примере. Для этого нужно нажать комбинацию клавиш «Option-Return». В тексте появится символ продолжения - «¬».

Конечно, за это небольшое занятие я смог только немного познакомить Вас с самыми простыми приемами работы с AppleScript. Но, думаю, Вы убедились, что в этом нет ничего сложного. Пробуйте! Я же надеюсь продолжить эту тему в следующих статьях.

  • AppleScript Apple, . AppleScript AppleScript. , - .

    AppleScript.

    0 . . . . . . . . . . . . . . . . . . . . . 6

    1 . . . . . . . . . 7

    2 . . . . . . 10

    3 (I) . . . . . . . . 13

    4 . . . . . . . . . . . . . . . . . . . . . 15

    5 . . . . . . . . . . . . . . . . . . . . . 17

    6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    8 (II) . . . . . . . 30

    9 ? ! . . . . . . . . 32

    10 . . . . . . . . . . . . . . . . . . 34

    11 . . . . . . . . . . . . . . 40

    13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

    14 . . . . . . . . . . . . . . . . . . . 53

    16 . . . . . . . . . . . . . . . . 59

    17 . . . . . . . . 60 . . . . . . . . 60

    AppleScript Apple, . , AppleScript:

    AppleScript, AppleScript. , -, .

    AppleScript , . - AppleScript (Adobe PhotoShop, QuarkXPress, Adobe InDesign). FileMaker Pro . , GraphicConverter, BBEdit, Microsoft Word AppleScript (). , AppleScript . , . . , AppleScript, AppleScript. , - AppleScript.

    . (. 15). - AppleScript . , .

    AppleScript, AppleScript:

    , ; AppleScript , .. , AppleScript; (Mac OS X),

    AppleScript; AppleScript ; AppleScript (Mac OS X).

    AppleScript . , Java, . AppleScript , 10- , - . .

    5 AppleScript , . - AppleScript Studio, (Developer Tools XCode).

    JavaScript , .

    () . , . , . , .

    . , : . - . , . : .

    AppleScript, . . Script Editor (. 2), .

    Copyright (c) 2003 by Bert Altenburg

    : Bert Altenburg, - .

    1. . , - . , AppleScript . AppleScript .

    2. , PC, . - , -. CPU Monitor (Utilities, Applications), - . (Distributed Computing DC), Folding@home, . DC-, - . DC- . -- , DC- . , . ? DC- - . (), - . , - , . DC-- : , . , DC- :

    www.aspenleaf.com/distributed/distrib-projects.html

    3. . , . () , - . - , . - , . - , :

    http://www.macinstruct.com/tutorials/crash/index.html

    AppleScript Mac OS . , - . , .

    , -. , (statement), . , .

    AppleScript , . , 1 .

    AppleScript , :

    say "This is a spoken sentence."

    Fred, Trinoids, Cellos, Zarvox , Victoria.

    say "This is a spoken sentence." using "Zarvox"

    : AppleScript . , . , Victoria Zarvox .

    AppleScript . - , - . : . AppleScript - , . AppleScript , . (scriptable). , AppleScript (Mac OS X), .

    Finder. , Finder . , . Finder , - , . -, Trash, Finder.

    8 , AppleScript .

    Adobe PhotoShop . PhotoShop . , Finder.

    AppleScript , .

    Tell, AppleScript (Mac OS X) , Finder. AppleScript (Mac OS X) , - end tell . AppleScript Finder Finder, . , :

    tell application "xyz"

    (tell block). xyz xyz. , AppleScript , - , . , . (, ("). : , AppleScript . . .)

    Finder . , Finder. Finder, Finder.

    tell application "Finder" empty the trash open the startup disk end tell

    Finder . Finder, - , . .

    Finder, AppleScript (Mac OS X) .

    9tell application "Finder" empty the trash open the startup disk end tellbeep

    Finder . beep AppleScript. , .

    Beep (AppleScript (Mac OS X)) .

    tell application "Finder" empty the trash beep open the startup disk end tell

    Finder beep, AppleScript (Mac OS X) . , . , -, Finder , beep, Finder .

    AppleScript (Mac OS X) . - , Finder, . ().

    tell application "Finder" empty the trash beep end tellopen the startup disk

    AppleScript (Mac OS X) , . () - , .

    tell application "Finder" empty the trashend tell open the startup disksay "I emptied the trash and opened the startup disk for you" using "Victoria"

    AppleScript (Mac OS X) , Finder. , .

    Script Editor , . Script Editor AppleScript, Applications. , . .

    Compile. , AppleScript , AppleScript . Yo Finder! Dump my garbage (Finder! !) Hey Finder! Clean out the bin (Finder,) Finder. (compilation) AppleScript (Mac OS X) : - . , . , - . Script Editor.

    AppleScript (Mac OS X) .

    say "Im learning AppleScript the easy way!" using "Zarvox"

    Run, . Script Editor, !

    Enter . Enter - Space () (). Return (Shift) -. Return .

    Compile . - Run, .

    Run, Command-R. : , -

    , (compiled script) (application).

    : , - AppleScript,

    Script Editor Run.

    : , AppleScript ,

    Script Editor . , - , (System Preferences). , . - , Script Editor, Open File.

    : Save, - (run-only). , - .

    tell application "Finder" empty the trash end tell

    Script Editor .

    Application , :

    Script Editor app application. , xyz. - (-), pqr. - , AppleScript . , AppleScript pqr , tell .

    Script Editor , - . , control . :

    1) Control Script Editor. (.), Tell Blocks. , Tell "Finder".

    2) Finder empty the trash , (), 1. . - .

    2 + 6 = ...... = 3 * 4

    2 + 6 = xy = 3 * 4

    AppleScript . (variables) , . - (identiers), . - AppleScript, set.

    set x to 25set y to 4321.234

    AppleScript , . : (- , (bugs)). , x. , pictureWidth .

    set pictureWidth to 8

    , (, -,). , AppleScript, - . , (8 ) .

    AppleScript - . , set, say, to, beep , - AppleScript. , pictureWidth, . -, .

    AppleScript , . , .

    set pictureWidth to 8set pictureHeight to 6 set pictureSurfaceArea to pictureWidth * pictureHeight

    , (operators), - .

    set cubeEdgeLength to 10.0set cubeVolume to cubeEdgeLength ^ 3

    Script Editor, . , . (Result) . , 10.0. , 1000.0. , cubeEdgeLength ^ 3 , .

    : . - . (integers) , - , (. 13)

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

Автоматизируй это

Часто встречаются такие задачи, для решения которых делать отдельный проект на компилируемом языке нерационально. Например, когда нужно быстро слепить на коленке код, который должен просто выполнять конкретную работу - без всяких GUI-украшений, обработки всевозможных исключительных ситуаций, оптимизации и прочего. Здесь на помощь и приходят языки сценариев - известные тебе shell, Perl, PHP и так далее. Все они (ну или почти все) доступны и под Mac OS X. Но в этой операционке в дополнение к общепринятым скриптовым языкам есть и специальный язык сценариев, ориентированный именно на Mac OS X и тесно с ней связанный. Это AppleScript.

AppleScript идет вместе с системой начиная с System 7. Выросший из проекта HyperCard (который содержал скриптовый язык HyperTalk, очень похожий на естественный английский), AppleScript первоначально создавался для того, чтобы обеспечить обмен данными между задачами, а также для управления работой сторонних приложений. Сам по себе AppleScript обладает довольно скромной функциональностью: на этом языке даже сценарии для выполнения сравнительно простых задач часто выглядят как обращение к другим приложениям. Впрочем, после существенной перестройки системы при переходе к линейке Mac OS X язык AppleScript стал боле гибким и мощным, а новый фреймворк Cocoa позволил разработчикам встраивать в свои приложения возможность автоматизации с помощью AppleScript’а с минимальными усилиями.

Простой сценарий

Для редактирования и исполнения скриптов мы будем использовать стандартный Script Editor. Найти его можно в папке /Application/AppleScript. Для начала напишем простой «HelloWorld’ный» скрипт.

display alert "Hello World!" # Покажем диалог
say "Hello World" # Вывод в колонки

Объяснять тут, думаю, ничего не нужно, но хочется отметить крайне простой доступ к синтезатору речи из AppleScript c помощью команды say. Вот это и есть настоящее общение с пользователем в стиле Apple:). Конечно же, этот диалог можно легко кастомизировать. Например, добавить нужные кнопки:

Панель с дополнительными кнопками

display alert "Hello World!" buttons {"Hello", "Bye"}
set answer to button returned of the result
if answer is "Hello" then
...
else
...
end if

Теперь напишем что-нибудь более полезное. Например, дадим пользователю выбрать файл и прочитаем его содержимое:

# Панель выбора файла
set theFile to (choose file with prompt "Select a file to read:" of type {"TEXT"})
open for access theFile

Читаем контент

set fileContents to (read theFile)
close access theFile

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

Взаимодействие c приложениями

Для взаимодействия с другими приложениями AppleScript использует механизм сообщений:

tell application "Microsoft Word"
quit
end tell

C помощью команды tell выбираем приложение, которому мы будем отправлять сообщение. В данном случае мы просим MS Word завершиться. В блоке «tell - end tell» может быть отправлено любое количество команд. Сообщения, которые отсылаются приложению, могут быть и более специфичными. Все зависит от того, какие команды реализовали его разработчики. iTunes, например, экспортирует довольно много команд и свойств в среду AppleScript:

Запускаем нужный плейлист в iTunes

tell application "iTunes"
play the playlist named "My Favorite"
end tell

Узнать набор сообщений и типов данных, которые приложение экспортирует в среду AppleScript, можно, посмотрев его терминологию (файл AppName.scriptRerminology в ресурсах приложения). Для этого в Script Editor’е пойдем в меню «File - Open Dictionary - ...», и выберем нужное приложение.

Чтобы тебе было проще работать с классами и командами, которые экспортирует приложение, они организованы в разделы. Все приложения, которые поддерживают скриптинг, имеют хотя бы два раздела: один стандартный и один из более специфичных для данного приложения разделов. Стандартный раздел содержит набор стандартных команд, которые поддерживает любое Mac-приложение: open, print, close и quit. Содержание остальных разделов зависит от фантазии разработчиков.

Выполнение AppleScript из своего приложения

Если ты пишешь приложение на Objective-C/Cocoa, то возможно, что некоторые вещи будет удобнее сделать с помощью AppleScript. Для создания и выполнения в Cocoa-приложениях скриптов существует класс NSAppleScript. Вот простой пример его использования - реализация получения у приложения iChat строки статуса пользователя.

NSAppleScript *iChatGetStatusScript = nil;
iChatGetStatusScript = [ initWithSource: @"tell application "iChat" to get status message"];
NSString *statusString = [ stringValue];

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

Автоматизация в Cocoa-приложении

Очень полезно добавлять поддержку скриптинга в свои Сocoaприложения, ведь если в твоем приложении есть интерфейс к AppleScript, то пользователь, написав несколько строчек на AppleScript, сможет кастомизировать его для своих нужд и интегрировать с другими приложениями, которые у него установлены, а затем, например, автоматизировать решение рутинных задач. Чтобы экспортировать типы и команды в среду AppleScript, необходимо их описать в специальных файлах. Есть возможность сделать это в файлах.scriptSuite и.scriptTerminology или в одном файле с расширением.sdef. В обоих случаях файлы имеют формат XML, но с sdef работать проще.

Содержимое файла scriptTermonology отображается в Script Editor’е при просмотре словаря приложения. Этот файл содержит описание экспортируемых в AppleScript объектов.

Открыв scriptSuite-файл в Plist Editor’е, можно видеть, что он содержит следующие основные разделы:

  • AppleEventCode - четырехбуквенный код, который идентифицирует приложение для среды AppleScript (код должен быть уникальным в рамках одной системы);
  • Name - имя раздела, который содержит экспортируемые команды и классы.

Разбирать внутреннее устройство этих файлов особого смысла нет, так как тебе скорее всего придется иметь дело только с sdef-файлами.

Пример sdef-файла
















В sdef’е скриптинг-терминология смешана с подробным описанием команд и типов, которое можно найти в.scriptingSuit-файлах. Реализуем это на практике, создав Cocoa-приложение, поддерживающее AppleScripting. Для этого в новом Cocoa проекте добавим в файл Info.plist флажок Scripting и OSAScriptingDefinition с именем нашего sdefфайла:

...
NSAppleScriptEnabled

OSAScriptingDefinition
Scrtipting.sdef

Добавим к проекту файл Scripting.sdef следующего содержания:












Итак, из AppleScript’а у нас доступно одно свойство - myprop. Осталось написать ObjC-код, который будет обрабатывать чтение данного свойства из скриптов. Для этого нужно создать категорию NSApplication, поскольку именно этот класс мы выбрали в качестве получателя сообщений от скриптов.

#import
@interface NSApplication (Scripting) - (NSString *) myprop;
@end
@implementation NSApplication (Scripting) - (NSString *) myprop
{
return @"This is my property";
}

Eсли мы теперь из AppleScript обратимся к свойствам нашего приложения, то увидим среди них свое свойство и его значение:

tell application "Scripting"
properties
end tell

Заключение

Конечно, описать здесь все возможности AppleScript и его взаимодействия с Cocoa-приложениями невозможно. Да это и не нужно - для этого есть мануалы. А мы со своей стороны продолжим цикл статей о кодинге под эппловские платформы и расскажем тебе еще много нового и интересного.

Каким образом можно прослушивать разговоры по мобильным телефонам, возможно ли защититься от подобного рода атак и как абоненту определить, что его телефон прослушивается?

Технология GSM изначально разрабатывалась и внедрялась с учетом требований государственных органов по уровню защищенности. Для поддержания этой безопасности, большинство государств мира запрещают использовать и продавать мощные шифраторы, скремблеры, криптооборудование, равно как очень защищенные технологии общедоступной связи. Сами же операторы связи защищают свои радиоканалы путем шифрования, используя для этого достаточно сложные алгоритмы. Выбор криптоалгоритма осуществляется на этапе установления соединения между абонентом и базовой станцией. Что касается вероятности утечки информации абонента с оборудования операторов, то в МТС утверждают, что она сводится к нулю из-за сложности и контролируемости доступа к объектам и оборудованию.

Как можно прослушивать телефоны

Существует два метода прослушивания абонентов — активный и пассивный. Для пассивного прослушивания абонента потребуется применение дорогостоящего оборудования и специально подготовленного персонала. Сейчас на «сером» рынке можно купить комплексы, с помощью которых можно прослушивать абонентов в радиусе 500 метров, их стоимость начинается от нескольких сотен тысяч евро. Выглядят они так, как на картинке справа. В интернете без труда можно найти описание таких систем и принципа их работы.

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

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

Принцип действия такой атаки следующий: мобильный комплекс за счет более близкого местонахождения к абоненту (до 500 м) «перехватывает» сигналы для установления соединения и передачи данных, замещая ближайшую базовую станцию. Фактически комплекс становится «посредником» между абонентом и базовой станцией со всеми вытекающими отсюда проблемами безопасности.

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

В качестве примера такого прослушивания можно привести события начала этого года в центре Киева. Во время массовых протестов против режима Януковича, толпа захватила машину с сотрудниками СБУ, из которой велась «прослушка» частот раций и телефонов митингующих. Как выглядит такое оборудование — хорошо видно на картинке.

Есть еще третья возможность для прослушивания разговоров и перехвата трафика мобильного абонента. Для этого на смартфон жертвы нужно установить вирусное ПО. При установке вредоносного программного обеспечения злоумышленники могут «самостоятельно» выбрать или отменить вовсе алгоритм шифрования, несанкционированно передать (или уничтожить) конфиденциальную информацию абонента и многое другое.

Как определить, что телефон прослушивается

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

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

EAGLE Security

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

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

Android IMSI-Catcher Detector

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

CatcherCatcher

CatcherCatcher так же, как и Android IMSI-Catcher Detector позволяет отличить настоящую базовую станцию от ложной.

Кроме того, в МТС рекомендуют использовать приложения для безопасности, в том числе и для шифрования разговоров. Например, среди анонимных веб-браузеров можно отметить Orbot или Orweb. Существуют также приложения для шифрования телефонных разговоров, фотоснимков и множество защищенных мессенджеров.

This App will Help you in Detecting "IMSI Catchers" (also called "Fake Cell Towers" or "Stingrays").

For several years the FBI and Local Police have been listening to our Calls and Reading our Text Messages, using so-called "IMSI-catchers". One Example of such a "Fake Cell Tower" is the "Stingray", which is produced in the USA.

"Stingrays" are Mobile Devices that simulate Cell Phone Towers, forcing nearby Phones to Connect to them. They can Identify your Phone, and possibly listen to your Calls. Without having to put a Spy app in your Phone!

These "Cell Spy" Devices can capture Information from All Cell Phones within Range, including IMSI Identity, Location, SMS Messages, Call Logs and Call content.
(IMSI stands for "International Mobile Subscriber Identity", which will Identify your Phone).

It is known that at least 53 Agencies in 21 States own "Stingrays".

Law Enforcement Agencies, Foreign Powers - and possibly Criminals - are using such "Cell Site Simulators" for Surveillance Purposes - without our knowledge.

"Cell Spy" Devices can be Hand-carried, or be mounted in Vehicles, Airplanes, Helicopters and Unmanned Aerial Vehicles.

During a Self Learning Process, the App will "learn" all Networks (Cell Towers, Base Stations) that are used by your Phone.

After the Self Learning Process - if this App should happen to Detect one of these "Cell Spies", you will be Warned by an Optional Sound and/or an Optional RED Screen. The simplest way to avoid being Listened In On, is then to turn off your Phone for a while, or at least to keep silent.

When the App Detects a Network that is not included in its Internal Database, it will Consult an External Database of Networks. If the Network is not Found there, it is assumed to be UNKNOWN.

Very Easy to Use
- Self Learning Process
- Periodic Checks for Networks
- Selectable Network Checking Period
- Logging of All Events
- Internal (Self Learned) Database
- Integration with External Database (OpenCellId)
- Optional Detection, Logging and Warning of "Unknown" Networks
- Even Attacks only lasting for a few seconds can be Detected
- Measurement of Duration of Attacks
- List of All Identified Networks
- Export of CSV File
- Analysis of Current and Historical Network Data
- Warning Level Assessment
- Support for GSM, UMTS/WCDMA, CDMA and LTE
- Battery Saving Design
- Using a "Passive" GPS Location Technique, to save power
- Internet Access is RECOMMENDED, but NOT necessarily Required
- Internet Access WILL Improve the Detection Quality of Unknown Networks
- Always Running in the Background, even when Phone "sleeps"
- Auto Restart at Boot Time
- Rooted Phone NOT Required
- No Special Phone/Hardware Required
- Also works on Tablets with SIM Card
- Lots of Answers to FAQs
- Info about "Fake Cell Towers", "Stingray", etc

After you have Opened the App the First Time, you should Start the Self Learning Process (which may take a few Days), and have the Phone with you at All Times - where ever you may be - in order for the App to LEARN about ALL Local Networks.

If you move to another place, you should Restart the Self Learning Process.

By using this App, you participate in the large collaborative community project "OpenCellID" - which collects the Locations of Mobile/Cellular Phone Towers, which now is a Database that contains almost 7 million unique Mobile/Cellular Phone Tower IDs. Use of this Database will increase the Probability of Detecting REAL UNKNOWN Cell Towers - and thus to Find "IMSI-Catchers" - and you can be an Active Part if it!

If you should NEVER Detect a "Fake Cell Tower" - you should consider yourself LUCKY - and NOT BLAME us!

Many problems seem to be caused by simple Misunderstandings. So if you have a problem - that cannot be answered by the FAQs Section of the App - please send us an Email - before you consider making a Bad Rating. Maybe we can help you. [email protected]