terça-feira, 29 de dezembro de 2009

Função Modulo 10, para Progress(Datasul), muito usada para calculo de digitos verificadores.


function modulo_10 returns int (valor_calculo as char):

def var i as int.
def var j as int.
def var k as int.
def var count-num as int.
def var vl-num as int.
def var fator as int.
def var soma as int.
def var divide as int.
def var digito as int.

count-num = length(string(valor_calculo)).
j = count-num.
k = 2.
fator = 0.
soma = 0.

do i = 1 to count-num:

vl-num = int(substring(string(valor_calculo), j, 1)).

fator = k * vl-num.

if length(string(fator), "CHARACTER") = 2 then
soma = soma + int(substring(string(fator), 1, 1)) + int(substring(string(fator), 2, 1)).
else
soma = soma + fator.

if k = 2 then
k = 1.
else
k = k + 1.

j = j - 1.

end.

divide = soma modulo 10.
digito = 10 - divide.

/*Observação: se o dígito for igual a 10, será assumido o valor 0*/
if digito = 10 then
digito = 0.

return digito.

end function.

segunda-feira, 21 de dezembro de 2009

Horario de Verão no HP-UX

1) Acrescentar no arquivo /usr/lib/tztab as linhas com as definições das datas para o Brasil:

# Brazilian Eastern Standard Time, Brazilian Eastern Daylight Time BRA3BDT
0 1  15-21 10 2008-2024 0 BDT2
0 23 14-20 2  2009-2011 6 BRA3
0 23 25    2  2012    0-6 BRA3
0 23 14-20 2  2013-2014 6 BRA3
0 23 21    2  2015    0-6 BRA3
0 23 14-20 2  2016-2022 6 BRA3
0 23 25    2  2023    0-6 BRA3
0 23 14-20 2  2024-2025 6 BRA3

parametros EX: 0 23 14-20 2 2024-2025 6 BRA3

0         = minuto (0-59)
23        = hora (0-23)
14-20     = dia do mes (1-31)
2         = mes do ano (1-12)
2024-2025 = ano (1970-2038)
6         = dia da semana (domingo = 0)
BRA3      = Time Zone



Caso seja a primeira vez que se está configurando horario de verão no sistema, certificar-se de que a hora atual do sistema está correta em relação a GMT:

# date
Thu Sep 11 09:11:17 BRA 2008

# date -u
Thu Sep 11 12:11:17 UTC 2008

Quando não estamos em horario de verão a diferença com relação a GMT (UTC) deve ser -3 horas.
Se estiver diferente disso, seu sistema está com o horario absoluto errado ou com o timezone definido incorretamente (diferente de GMT-3). Isto precisa ser corrigido primeiro.
Se for necessario ajustar o horario absoluto do sistema, usar o comando date.
A sintaxe é:

# date [-u] [mmddhhmm[[cc]yy]]

Caso seja necessario retroagir a data para este ajuste recomendamos que o sistema seja reiniciado (reboot).

2) Altere o arquivo /etc/TIMEZONE para BRA3BDT:

# TZ=BRA3BDT
# export TZ

Windows XP System Level Privilege Escalation

Escalação de privilégio é o ato de explorar um bug ou falha de projeto em um software para obter acesso aos recursos que normalmente teria sido protegido de uma aplicação ou usuário. O resultado é que a aplicação executa ações com mais privilégios do que o pretendido pelo desenvolvedor do aplicativo ou o administrador do sistema.

Usando um simples comando em uma maquina rodando Windows XP é possível rodar qualquer processo com o usuário system. O nível do usuário system é maior que o do usuário administrador, e possui controle total do sistema operacional e do kernel. Você pode usar a conta guest para exploitar o sistema.

O usuário Local System (system) é diferente do usuário administrador, porque possui controle total sobre o sistema operacional, similar ao root nos sistemas *nix. Muitos processos do sistema operacional roda com o usuário system, e não pode ser fechado pelo usuário administrador, se tentar finalizar o processo como administrador, o resultado será uma mensagem de erro.

Mãos a obra:
No Windows XP clique em Iniciar/Executar, digite cmd.exe e clique em ok, será aberta uma janela do prompt de comando:




Utilize o comando at para agendar uma nova tarefa:

at 12:13 /interactive "cmd.exe"



OBS: substitua o horário (12:13) para hora atual + 1 minuto, para a tarefa ser executada no maximo após um minuto.

Caso queira visualizar as tarefas agendadas com o comando at, digite at no prompt:





No horário agendado será aberto um novo prompt de comando (OBS: este novo prompt já é com usuário system) todos os processos iniciados apartir dele será executado como usuário system




Somente para ilustração executei o comando calc (Calculadora do Windows) observe no gerenciador de tarefas que o processo calc.exe esta sendo executado como usuário system




Agora use a sua imaginação e faça o que quiser, por exemplo finalize o processo explorer.exe (processo do Desktop) e no prompt de comando digite explorer, será aberta uma nova área de trabalho com o usuário system, tudo que for aberto apartir dela será executado como system...

be happy... ;)