Skip to Content

IT nieuczesane.
author

Author: nExoR

jak przeszukiwać Internet przy pomocy PowerShell (;

800px-Mucha-jobdzisiejszy wpis jest przygotowany gościnnie przez Kacpra. Kacper jest specjalistą SCCM i szeroko rozumianej automatyzacji/orkiestracji, co tłumaczy odwołanie się do metod zakrawających na developerkę, gdy UI w postaci formatek dostarczanych przez dostawcę nie wystarczyło. jest to też bardzo ciekawy przykład tego, jak uniwersalny jest PS…

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

Nie znasz dnia, ani godziny kiedy może się przydać PowerShell. Szukałem ostatnio lodówki z kostkarką i trafiłem w ten sposób na stronę w http://www.liebherr.aged.com.pl/. Niestety twórca filtra produktów nie przewidzał, że ktoś mógłby szukać lodówki ze wspomnianą kostkarką. Mogłem oczywiście znaleźć sobie jakąś inną stronę czy sklep internetowy. Jednak mój wewnętrzny nerd został podrażniony, nie było już odwrotu. :) Postanowiłem zaprząc PowerShella do tego zadania, jak to mam w zwyczaju. Trzeba było napisać małego crawlera, który znajdzie to czego mi się nie chciało samemu szukać. Efektem postanowienia jest poniższy skrypt:

O dwóch rzeczach należy wspomnieć. Cmdlet Invoke-WebRequest i wykomentowanej linii na końcu. Invoke-WebRequest wywołuje uczucia ambiwalentne. Z jednej strony ma kilka fajnych funkcjonalności jak np. użyta właściwość Links zwracanego obiektu. Zawiera ona tablicę linków które znajdują się na stronie, więc nie trzeba się bawić w regexy i szukać ich samodzielnie. Jest też kilka innych ciekawych właściwości jak np. Images czy InputFields. niestety Invoke-WebRequest ma też jedną wadę, która może być w pewnych sytuacja dosyć uciążliwa. Mianowicie dosyć słabo sobie radzi z kodowaniem UTF8 bez BOMa. A w zasadzie to w ogóle sobie nie radzi i zwraca po prostu krzaki jeśli na stronie są np. polskie znaki diaktryczne. I niestety nic się nie da z tym zrobić w zasadzie, a przynajmniej mi się nie udało. Jako obejście można skorzystać z klas .NET Net.WebRequest i Net.WebResponse, ale tracimy wtedy opisane wcześniej zalety Invoke-WebRequesta.

Natomiast wykomentowana linia to pierwsza wersja pętli, która znajduje się bezpośrednio nad nią. Korzystając z Select-Stringa nie da się pobrać zawartości znacznika title, bez samego znacznika. Ponownie trzeba się odwołać do klasy .NET Regex, która zwraca grupy dopasowań, a dzięki nim mamy także dostęp do samej zawartości znacznika.

Kacper.

.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.oOo.

eN.

UltraWide festival cardboard setup entry

o ile idea samego UltraWide festival nie do końca do mnie przemawia o tyle w ramach tego jest taki śmieszny event: card bard setup entry. polecam pooglądać co też to ludziska nie wymyślą (;

i taki ciekawy secik:

eN.

nowości w PS5 – remote copy

Windows_PowerShell_iconbyło na WGUiSW

IMHO jednym z najważniejszych rozszerzeń, bo przydatnych w codziennej pracy, jakie pojawiły się w PowerShell 5 jest możliwość kopiowania plików via winRM – coś aka SCP. SMB ma swoje wymagania i raczej nie otwiera się portów na zewnątrz dla tego protokołu. winRM pozwala szyfrowanym kanałem przesłać plik uzupełniając możliwości zdalnej administracji.

wymaganiem jest oczywiście, aby po obu stronach był PS5 [WMF5], czyli niestety, jeszcze przez kilka miesięcy raczej rozwiązanie laboratoryjne, ponieważ WMF5 jest cały czas jako production preview. instalowałem testowo na w2k12R2 i w2k8R2 – i na tym drugim, niestety ze skutkiem śmiertelnym dla PS5 [bez paniki, nie debugowałem problemu, ale na pewno ‚don’t do it on production’ jak mawiają rodzice].

plik kopiuje się podając sesję zdalną, a więc najpierw trzeba ją założyć. niestety nie jest obsługiwane kopiowane do wielu sesji na raz ):

obsługiwane jest również kopiowanie Z serwera przy pomocy ‚fromSession’. kopiowane ‚proxy’ czyli podając równocześnie ‚do’ i ‚z’ nie zadziała:

niewątpliwie funkcjonalność, dla której warto będzie na serwerach podnieść wersję WMF, jak już będzie wersja finalna.

eN.

 

Exchange – uprawnienia do kalendarzy zasobów

exchange-logoogólnie

prosty scenariusz: trzeba założyć zasób, reprezentujący samochód firmowy tak, aby ludzie mogli go sobie rezerwować. następnie chcemy aby wszyscy widzieli kto go wypożyczył i dokąd zabrał. standardowo większość informacji jest ukryta i widać tylko ogólny wpis.

w tym celu należy nadać uprawnienia do kalendarza nie jest trudno i jest sporo linków, które szybko wskażą, że można to zrobić poleceniem:

… ale:

  • po pierwsze to nie zawsze zadziała (w Polsce można uznać, że prawie nigdy)
  • są bardziej złożone scenariusze. no i co daje ‚reviewer’?? dla tego warto wiedzieć więcej – np. jakie inne uprawnienia można nadać
  • czemu nadal nie ma wszystkich informacji
  • a co przy jeszcze bardziej wymyślnych wymaganiach dotyczących automatyki? jak jeszcze może ‚reagować’ taki obiekt na rezerwację?

lokalizacja

czemu w PL nie zadziała? ponieważ ‚calendar’ to nazwa katalogu, a ta jest zlokalizowana. żeby było śmieszniej nazwa będzie zależna od… ustawień przeglądarki w momencie tworzenia obiektu zasobu (użytkownikom definiuje się kraj). sweet. ponieważ mam główną przeglądarkę ustawiona na en-US, żeby nie oglądać raniących w oczy auto-tłumaczeń technetowych czy portalu office365 w którym ciężko się połapać, część obiektów ma ‚calendar’ a część ‚kalendarz’. zakładając z command line zawsze tworzy ‚calendar’ pomimo polskich regionalsów, więc mniemam, że ten sposób jest bardziej deterministyczny (ale trzeba by porobić więcej testów na różnie zlokalizowanych systemach).

czyli zapis ścieżki do konkretnego folderu to „roomResource@wfiles.pl:\kalendarz” . i znów – tyle dość łatwo i szybko można wyszperać na forach… ale pozostaje pytanie – jak wylistować wszystkie katalogi?? skoro jest kalendarz, to pewnie są jakieś inne foldery i może da się z nimi coś zrobić? i jak sprawdzić czy to jest ‚calendar’ czy ‚kalendarz’? ale najpierw…

uprawnienia

standardowo, po utworzeniu zasobu sali lub ekwipunq jedyne co widać w kalendarzu to ‚busy’. equipmentMBXdef

można to zmienić i umożliwić bardziej pełny widok nadając uprawnienia LimitedDetails lub Reviewer (pełna lista uprawnień tutaj). różnica jest dość poważna. ograniczone detale pozwolą na zobaczenie organizatora i lokalizacji ale nie pozwolą otworzyć zdarzenia ze względu na brak uprawnień:

equipmentMBXrevequipementMBXnoaccnadanie uprawnień podglądacza (; pozwoli otworzyć wpis w kalendarzu i w pełni mu się przyjrzeć:

equipmentMBXdetaa gdzie informacje??

na pierwszy rzut oka może wygląda dobrze, ale ktoś choć trochę bardziej spostrzegawczy zauważy, że pole tematu oraz szczegółowe informacje chyba nie dają pełnych informacji. i faktycznie – standardowo, założenie jest takie: ktoś wynajmuje salę, wysyła zaproszenie, więc w tym zaproszeniu umieszcza informacje o czym będzie rozmowa, pewnie agendę, może jakieś materiały dodatkowe itd. zasób sali dostaje to samo zaproszenie co każdy inny – a to byłby niekontrolowany wyciek informacji. nie byłoby miło, gdyby cała firma wiedziała, że właśnie dyrektorzy spotykają się, np. żeby omówić zwolnienia pracowników… dla tego standardowe opcje są ustawione restrykcyjnie i wycinają wszystkie informacje.

są jednak scenariusze, w których niektóre osoby muszą wiedzieć więcej – np. dział logistyki musi wiedzieć gdzie jest samochód i po co. wtedy trzeba wykonać następujące operacje:

  • nadać ludzikom uprawnienia ‚limitedDetails’ żeby widzieli ‚kto’ ale niewiele więcej (set-MailboxFolderPermission)
  • nadać wybrańcom uprawnienia ‚reviewer’ żeby mogli wejść i zobaczyć detale (add-MailboxFolderPermission)
  • no i skonfigurować zasób tak, żeby te informacje przyjmował a nie wycinał. (set-CalendarProcessing)

zobaczmy jakie zachowania można dla zasobu ustawić:

wszystkich nie ma sensu tłumaczyć, można przeczytać na technecie, nas interesują konkretnie DeleteSubject, DeleteComents. jak widać można również pozwolić na załączniki, kontrolować czy zatwierdzanie jest automatyczne czy wymaga ręcznego potwierdzenia, czy w polu tematu dodawana jest nazwa użytkownika… i inne. przykładowa konfiguracja zasobu:

i w takim przypadq dział logistyki może zobaczyć takie krzaczki…

equipmentMBXfulllista folderów

na koniec powrócę do listy folderów. tu niestety niespodzianka: nie da się wylistować folderów dla zasobu. ponieważ zasób jest skrzynką… ale równocześnie nią nie jest. jest – i te foldery są, ale nie jest – bo tak twierdzi system. poniżej mała zabawa – wylistowanie folderów dla regularnego mailboxa, próba wylistowania dla zasobu i dowód, że jednak wszystkie foldery są…

przy czym normalny user ma nazwy katalogów po polsq bo zakładając tak miał zdefiniowaną licencję, a zasób po ang. bo był zakładany z linii poleceń, a zasoby licencji nie posiadają. wykorzystanie ‚get-mailboxfolderpermission’ w połączeniu z intuicją to jedyny sposób jaki znalazłem, żeby sprawdzić czy dany folder istnieje dla zasobu…

eN.

 

75. spotkanie WGUiSW

big_wguiswdziś pierwszy wtorek, więc zgodnie ze świecką tradycją – WGUiSW. będą dwie sesje.

  • moja, o zmianach w PowerShell 5.o
  • oraz Leszka Betlińskiego, o tajemniczo brzmiącym tytule ‚Agent Ci pomoże’

jak zwykle w eMeSach oraz online (:

eN.

PowerShell dla początqjących

MVAdla tych, którzy swoją przygodę rozpoczynają – szkolenie PS na Microsoft Virtual Academy by w-files (:

zapraszam!

eN.

 

zmiana hasła użytkownika w kontexcie innego użytkownika

repairprzykładowy scenariusz:

dostęp do sieci klienta via VPN. nie ma możliwości zmiany hasła podczas połączenia VPN, ponieważ to niekoszerne rozwiązanie. hasło wygasło. inny pracownik ma swoje konto nadal aktywne – czy da się zmienić szybko hasło, zamiast czekać aż helpdesk przetrawi ticket?

dostępne opcje(, które raczej nie zadziałają):

  • połączyć się RDP do DC. w przeciwieństwie do połączenia do member servera, podczas połączenia do DC jest możliwość zmiany wygasłego hasła. warunek jest taki, że trzeba mieć uprawnienia do logowania na DC, czyli zazwyczaj – być Domain Adminem.
  • w starym wpisie na stronach Technet znajdujemy opis, że można zmienić hasło przy pomocy ‚net user * /domain’. jest to niekompetencja osoby piszącej KB, ponieważ nie odróżnia ona ‚reset password’ od ‚change password’. przy pomocy net user można hasło wyłącznie zresetować, co wiąże się z posiadaniem odpowiednich uprawnień do konta, na którym wykonuje się operację. dalszy opis w tym KB jest również bzdurą, ponieważ uprawnienia domain admina nie są wymagane – można to skonfigurować nawet dla pojedynczych kont.

rozwiązanie

jest oczywiście sposób skuteczny, działający i niewymagający żadnych specjalnych uprawnień. i oczywiście przy pomocy PowerShell, a konkretnie commandleta Set-ADAccountPassword:

sprawdzałem dla PS 2.o i wystarczy.

eN.

szybkie wyszukiwanie plików w PowerShell

Windows_PowerShell_iconjest kilka takich narzędzi commanline w Linux, których braqje w Windows. jednym jest ‚du’ czyli Disk Usage liczący wielkość katalogu. to można sobie łatwo oprogramować:

to oczywiście na szybko, można to upiększać, dodać skrypt dostępny globalnie – prościzna. drugim bardzo często narzędziem, z którego często korzystałem było ‚locate’. w Linuxie super przydatne głównie z tego powodu, że każde distro się różni i pliki są rozpizgane po setkach katalogów. Linuxowa masakra. ale locate przeważnie jest a to poważnie ułatwia życie. idea jest taka sama jak w Windows – działa sobie indexer, który skanuje katalogi i tworzy indexy dla pliqw. można go wymusić do odświeżenia przy pomocy ‚updatedb’. w Windows jest ‚Windows Search’, czyli WSearch [w wXP był Indexing Service]. problem polega na tym, że nie ma standardowych narzędzi commandline. co prawda jest od jakiegoś czasu moduł WindowsSearch ale służy wyłącznie do konfiguracji usługi. w starym Windows Desktop Search był trick na skorzystanie z linii poleceń. jeśli jest w nowej wersji – nie znam go.

oczywiście jest API. a to daje możliwość oprogramowania sobie searcher. doqmentacja dot. tworzenia zapytań jest na MSDN. a przykładowy draft skryptu tu:

locate-File.ps1

to oczywiście wersja robocza. proof of concept. napisane tak, żeby zwracało ładne obiekty. ogólna idea to podłączenie się do bazy zawierającej indexy przy pomocy ADO i wykonanie kwerendy. wyniki podawane są niemal natychmiast tylko trzeba pamiętać, że są tam wyłącznie katalogi zindexowane – jeśli chcemy móc wyszukiwać po całym dysq, to trzeba dodać cały dysk do indexowania…

…a jeśli nie zależy nam na czasie to można szukać ‚po staremu’:

eN.

 

 

gmail: niedochodzące maile

wielokrotnie zgłaszały się do mnie osoby, którym poginęły [nie doszły] maile do skrzynki gmail. ponieważ ostatnio dopadło i mnie, i to w dość ważnej sprawie, sprawdziłem czy nie jest to przypadkiem wina RBLi. i wychodzi, że jest.

nie ma nigdzie oficjalnej informacji, z których list RBL google korzysta, ale na kilq site’ach zajmujących się tym tematem [np. link1, link2] znalazłem informację iż są to:

  • pbl.spamhaus.org
  • sbl.spamhaus.org
  • xbl.spamhaus.org
  • cbl.abuseat.org

…czyli głównie spamhouse. i po sprawdzeniu adresu nadawcy – faktycznie jest zarejestrowany przez spamhouse. osobiście wolałbym żeby maile wpadały do spamu, niż po prostu znikały pomimo, że nadawcę mam kontaktach, czyli na whiteliście /:

w przypadq outlook.com znalazłem informację, iż jest wykorzystywany wewnętrzny forefront w domenie bigfish.com .

eN.

blackhat

nie tak dawno pisałem, o zauważalnym trendzie w mediach, powiedzmy ‚modzie na IT’. chodzi zarówno o tematykę jak i poprawność. i oto właśnie kolejny przykład: blackhat

film oceniony bardzo nisko. faktycznie w kontekście samej sensacji nie porywa, a czasem jest wręcz nudnawy, jednak pod względem metod hackingu, nomenklatury, sposobów postępowania itd – bardzo rzetelna praca. jasna sprawa, naciągane gdzie-niegdzie musi być, niemniej warto ten film obejrzeć choćby po to, żeby to samemu ocenić.

głównym wątkiem jest atak na sterowniki PLC w rektorze nuklearnym, który powoduje przyspieszenie pracy wirówek gazowych.. kto pamięta rok 2o1o i stuxnet? co prawda eksplozji, tak jak w filmie,  nie było ale sporo zamieszania na pewno.

[ciekawostka: oryginalnie stuxnet atakował sterowniki SIMATIC S7-300 i S7-400 natomiast w filmie STASIK 437-A8.]

jest też odrobina social engineeringu, choć te wątki moim zdaniem powinny być bardziej rozwinięte. są też stare toole linuxowe, typu write, gdzie zaczyna się pojawiać ‚hollywood’. najwyraźniej rozmowa w trybie tekstowym czy kopiowanie bez porządnego, kolorowego paska postępu nadal jest niedopuszczalne.

niemniej trzeba przyznać, że jak na kino hollywoodzkie dla szerokiej publiki, film na prawdę trzyma się blisko rzeczywistości [w kwestiach technicznych].

PS. przykład prawdziwie hollywoodzkiego włamania aka ‚warto być hackerem’ (:

PPS. wygląda na to, że to nie koniec na ten rok.

eN.