Apple Open Directory - это форк OpenLDAP плюс Kerberos с некоторым дополнительным соусом Apple. Таким образом, поля, скорее всего, будут типичными записями LDAP; мне придется покопаться, чтобы увидеть, где и как они скрывают что-либо связанное с Kerberos. Интерфейс будет осуществляться через что-нибудь специфическое для Apple (например, см. документацию по API в Xcode) или через стандартные интерфейсы unix, упомянутые Стивенсом (только измененные для работы с бэкендом Apple).
Не видя кода, это предположение, но...
Программа, выполняющая чтение, вероятно, имеет код, который пытается читать из стандартного ввода с большим количеством эквивалентов блоков try/catch (C #-на основе псевдо-кода -):
string memoryLocationToDisplay;
while(true) {
try {
Console.Write("Give me data to dump: ")
string input = Console.ReadLine();
if (IsValidMemoryLocation(input)) {
memoryLocationToDisplay = input;
}
catch {}
PrintMemoryLocation(memoryLocationToDisplay)
try {
Console.Write("Dump again (y/n): ")
if Console.ReadLine().ToLower() == "n" {
exit;
}
} catch {}
}
Однако единственным символом, который программа считывает, является ^d (Конец файла ), что функционально приводит к бесконечному циклу с вечной печатью одной и той же ячейки памяти.
Это ошибка в программе, выполняющей чтение.но это, вероятно, достаточно легко обойти:
printf "A\nn\n" |./program
будет напечатан бит printf
A<newline>
n<newline>
который затем проходит через программу, так что теперь она видит 'n' и новую строку, так что она должна завершиться.