A Filesharing Virus?

Almost two years ago I received a very strange spam. It contained an account (with a password) to a site billed as “the best black board around”. (If you don’t know what this is, the black boards are the Internet underground – sites dedicated to, and run by the cybercrime.) The curiosity quickly took over, I set up a virtual machine (just for the case), put it under heavy monitoring and entered the site from it. To my amazement, the site didn’t tried to infect me.

It turned out to be really big. Hundreds of exploits, and maybe thousands of malware of every kind I knew to exist, for sale. Forums covering any cybercrime, cyber-counterculture and geeky topics I could think of. One of them attracted my attention.

It was some kind of cyber-libertarian place. There appeared to be only one person participating in it. However, s/he was prolific, and had posted hundreds of messages, despite getting no attention from anyone. It seemed that the texts were collected from all over the Net. Some were pulled out of old Usenet newsgroups. Others – from blogs or forums. For some, I couldn’t trace their origin. It was one of these last things that surprised me.

I saved it locally, pulled out of the site and examined it. When I tried to log back in and to investigate further, the site demanded payment for continuing my “expired” access. So much with the spam, the greatest black board etc.

The saved text, however, continued to fascinate me. After more than an year of thinking, I finally decided to post it here, and ask for your opinion. (It is not under my copyright, but I doubt that the authors will come forward and assert their rights over it. 🙂 )

—-

The P2P networks around the world are under attack.

Until recently it was coming from copyright holders who want to prevent the usage of the content claimed to be theirs, and are ready to attack the file sharing as a technology in order to achieve this goal. Currently they are joined by governments who see in the P2P information sharing a dangerous instrument, able to control their abuse of power. If this trend continues, it is only a matter of time when the freedom P2P provides will be taken away.

The most popular P2P networks (BitTorrent, eDonkey, Kazaa, LimeWire) are not very resistant to attack. Some, like Freenet or Gnunet, are more resistant, but less popular, and contain much less content. This might allow the P2P attackers to take down the popular P2P first, and most of the available content with them. Then they may shift to the more resistant ones, using the gained experience, and ultimately destroy all of them.

To survive, the P2P networks need strenghtening, enrichment and better defense. For this, a tool is needed that:

– is abundant in Internet, and constantly gets more and more foothold
– shares content via as many as possible popular P2P networks, including the ones most resistant to attack
– stores a very large amounts of content in many places in Internet
– copies content between the different P2P networks (thus enriching automatically the more resistant ones)
– does all this without the need for human participation
– can do all this without the knowledge of the resource owners
– acts non-predictably, to avoid creating patterns for detecting and cleaning it

The ideal software for this goal will be a computer virus that:

– infects in a large number of ways, and is hard to find and disinfect
– has no payload other than the P2P ability
– automatically exchanges content, found in the P2P networks
– stores the exchanged content hidden and encrypted
– allows programmers to enhance it without compromising its stealth and resistance
– creates no incentive for the cyber gangsters to use it

Follows a blueprint of such a virus. It is based on leaked cyberwarfare research, and modified for the purpose of filesharing.

The first versions will probably implement only a part of the blueprint; later ones might implement all, and add more.

—-

– Programming

The virus will be programmed in C, with some sections in assembly language.

The source code must be licensed under a BSD-type license, in order to remove the copyright obstacles before improving it.

– Structure

— Loader

A small part of the virus code, which decrypts, uncompresses and runs the rest of it. Will be heavily obfuscated (uniquely for each copy), to make the virus detection harder.

All other parts will be compressed and encrypted with a key unique for each copy of the virus.

— Obfuscator

A module that is able to heavily obfuscate a binary code in random, non-repeating ways that produce different result every time. Used to obfuscate the loader while making a copy of the virus.

— Encryptor / Compressor

A module that assembles, compresses and encrypts the virus body, sans the loader. It also encrypts / decrypts the stored or transferred content on need, and handles the signing / checking of contents etc.

— Infector

A module that is responsible for installing the virus on the machine it was run. May have sub-modules that check if the machine is already infected, check for different OS versions and apply different methods of installing.

— Attacker

A module that propagates copies of the virus. Will have sub-modules that apply different methods of attack (eg. network infection, removable devices infection, sending the virus as e-mail, etc).

— File sharer

A module that implements the file sharing. Will have sub-modules for:

— Network handling

Will determine what transfer speed will be quick enough to effectively share content, but not enough to noticeably clog the machine network bandwidth. If available, may use transfer priorities, setting the file sharing at the lowest priority. Sometimes, for random periods, will not follow these rules (see “incomplete disclosure” below).

Will also determine what P2P protocols can be used on this machine, what may trigger the firewall, etc. If possible, may try to stealthly declare itself as an exception in the firewall config.

Will have plugins for the different file sharing protocols, and will manage them. (Sometimes, for random periods, may deactivate plugins. Each plugin will be (de)activated separately from the others: there might be periods when all are active, or none is. See “incomplete disclosure” below.)

— Content cache handling

Will implement the cache as hidden from the machine owner. Will determine what part of the disk space may be used for it without disrupting the machine work, and risking being noticed. May dynamically grow or shrink the cache, depending on the needs of the filesharing network and the machine usage stealth.

Will handle the process of the caching. Will encrypt all stored content with a hidden random key, so that the machine owner will not be able to know what is cached on his machine (and this be not legally liable for the sharing done). If possible, will hide the key well enough to prevent node raiders (authorities etc.) from decrypting the contents (and thus making impossible to persecute the machine owner, as there is no proof that he stores illegal content).

Will cache some of the content that is indirectly routed through this node, thus increasing the content availability without making extra transfer requests. This will decrease the network traffic, and the attacker’s ability to identify the true sender or receiver of the content, even if the node is raided.

Will make a part of the cached content units unavailable for sharing (requests, searches etc), for randomly selected periods of time, different for each content unit. This is a part of the incomplete disclosure politics. Since the network is expected to be big enough, this will not compromise significantly the content availability.

— Transfer handling

On request for content that is present, will send it, unless the content is currently made unavailable.

Sometimes will check not only the content store, but also will scan the machine for content that matches the request, and may send it.

On request for content that is not present or is temporarily unavailable, in some cases will refuse it, and in some will request the content from another node, and re-send it, this enabling indirect routing, and effectively hiding the sender and the receiver one from another. Will check for and prevent request looping. May route indirectly even some content that is available on the node, as a part of the incomplete disclosure. Increasing the percent of the indirect transfers, while decreasing the number of the nodes a content is requested from, may make harder the identification of the node that actually requests the content. Technologies similar to those of the TOR network may be implemented.

Will sometimes scan the machine for popular types of content, and on discovering content that is not in the file sharing networks, may adopt some of it into the content store.

— Search handling

On search request, will declare whether the pattern is found locally. (In a percent of the cases, the pattern will be mandatorily declared as not found. Some content units will always be reported as not found on search, but may be transferred on request for content. This is a part of the incomplete disclosure.)

Will resend the request to a number of other nodes (sometimes even if the content is found locally).

Will refuse to process a search request that has already passed through this node (to avoid request looping).

— Rating handling

Will determine which network content need to be cached, and which are abundant enough. Will automatically request for download some content that need caching. If a content is too abundant, in some cases may mark it for deletion from the local cache. (Some randomly selected contents will never be marked for deletion: thus, even a large amount of ‘insiders’ falsely claiming to have the content will not be able to completely flush it from the network. This is a part of the ‘incomplete disclosure’ policy.)

Will try its best to determine if a content is dummy, and should be dropped from the network. Will do that in an ‘insider-resistant’ way, so that even a big number of ‘insiders’ voting a real content as dummy (and other ‘insiders’ falsely claiming to have this content) will not be able to eliminate it completely. Every node will make the decision for every content separately.

Will try its best to determine ‘insider’ type attacks (where a large number of dummy ‘nodes’ try to flush a content from the network in some way, or to flood the network with dummy contents). May block these nodes from interactions, or decrease their rating. Every node will make these decisions separately.

— Other

Misc other modules may be added. Some examples follow.

— Exposed virus module

On some machines the virus might be written also in an exposed, pre-designated well-known place. Thus, if the users wish to keep it, they will able to back it up before cleaning, to infect the machine back after this, and even to re-distribute it, if they want to.

— Exposed source module

The virus may carry with itself its source code, in compressed form. If it finds on the machine proof that the owner is a programmer (eg. C/C++ compiler), in some cases may drop the virus source code in a predefined place, in unencrypted form. This will enable some programmers to improve the code, and produce new, improved or simply different versions, thus making harder the overall virus cleaning.

— Forbidden types of modules

Some types of modules are forbidden:
– Modules that allow any form of remote control (eg. botnet software): their action may prompt the machine owner to clean the virus.
– Modules that implement any interface to the local machine, incl. filesharing: they may compromise the virus secrecy, may compromise the machine owner’s ability to deny knowledge of the sharing, and may deter some machine owners from using also a standard filesharing software, and enriching the local content through it.
– Modules that exchange virus modules or plugins (the nature of the process makes relying on any trust mechanism, including public key infrastructure, too dangerous to be permitted; releasing newer versions will be a better practice)

– Modus operandi

— The incomplete disclosure

In all of its activities, the virus will sometimes intentionally fail to perform. All types of resources it uses will be subject to randomly determined periods of non-usage. Since almost all types of attacks against it and its network rely at some point on its predictable activity, this will disrupt them. Examples follow:

— Incomplete presence

Sometimes the virus may clean itself (and the content cache) from the system, leaving no trace at all. In some cases the virus may leave the content cache on the system, and in some times may even decrypt it, and set it visible. This will give to the filesharers, if caught, the opportunity to pretend that they may have unknowingly had the virus, and that it probably cleaned itself at some point without them noticing it.

— Incomplete activity

For random periods of time, the virus may stop all of its network activity. (The periods may vary from seconds to years.) During these periods it may, at random, also delete the local cache, or even ‘lay dormant’ cleaning itself from the system, but leaving an obfuscated watchdog that will reinstall it at the end of the dormancy period.

— Incomplete content presence

Some content units will be marked as ‘unavailable’, for different randomly selected periods of time. Until this time is over, the unit will be unavailable for any kind of access – it will not be reported as present at the node, will not be transmitted on request (unless via indirect routing from another node), will not be deleted due to overpresence, etc. Since the network is expected to be big enough, this will not diminish noticeably its availability for download. At the same time, attempts to clean it from the network will be hampered: even if successful (possibly using types of attacks that are not anticipated today), sleeping copies will continue to appear and be redistributed. The frequency and duration of the unavailability can be varied to achieve the desired characteristics of the retaining process.

— Incomplete adding

On request, sometimes not only the content cache, but all or a part of the machine storage may be checked for content matching the description. Sometimes this content will be sent. Sometimes it will be included into the cache, without being sent. Sometimes it will be ignored.

— Incomplete request processing

Some requests (for data or search) will be processed. Some (randomly) will not be.

— Incomplete request retransmission

Some requests will be transmitted further. Some will not be. Some will be transmitted only to some of the neighboring nodes. Similarly to the content units, some neighboring nodes will be marked as ‘unavailable’, and no exchange with them will be done for a random period of time, even if they try to connect here.

— Stealth

As with all viruses, measures should be taken to hide the virus from discovering. Among these:

* it should not allow connections from programs running on the same host (at least most of the time), or any other filesharing benefit from it
* its contents should be as hard to find and decrypt as possible (as it is a marker for the virus)

– Content handling

In some P2P networks, eg. BitTorrent, the basic content unit is a form of ‘package’ that may contain any number of files. In most, however, the basic content unit is a file. This creates some problems, as a content may consist of more than one file, and some of the described network functions may require appending extra info (signatures, ratings etc) that cannot be inserted into some types of content files.

On these networks it might be a good idea to use as a basic content unit not a single content file, but an archive that contains all necessary files. Since the goal is not compression but packaging, the most appropriate types of archives are these that offer maximal recoverability. For example, if an archive is not received completely, it must be trivial to extract from it all files that were received completely.

The content unit package must be able to contain:

* the content itself (as many files as needed)
* content description block (content name; descriptors – keywords etc; unique ID – most probably a long checksum; etc)
* error / info loss correction codes (to allow recovery in case of transmission errors or lost parts)
* ratings of the content that are signed with the rating node signature
* other types of files, according to the need

—-

NOTES:

Most of the modules require a lot of work, but are more or less straightforward. The Infector and Attacker modules require a good deal of knowledge about writing viruses.

The work of the network will be subject to a lot of attacks with huge financial and administrative resources behind them. The design of the virus, if properly implemented, makes relatively hard to identify and destroy a crucial amount of nodes. This makes the network destruction harder than the attacks of the content in it. So, most (and most dangerous) attacks will be directed towards the content.

This makes the truly non-trivial module the Rating handling, as it is expected to deal with these attacks. Probably an ‘arms race’ will follow between the attackers and defenders. As the attackers will probably have a lot of resources behind them, the defenders may have to be productive and inventive in order to keep a favorable balance.

Currently, the following types of attacks are considered:

– Eliminating content from the networks

In this attack, one or more of the following methods will be used:

— Identifying and eliminating the nodes that carry it. (Countered with a big number of nodes, across many different jurisdictions, with indirect routing and with incomplete exposure)

— Creating a fake impression (through a big number of fake nodes) that a content is too abundant, and may be freely deleted. (Countered with the setting that on each node some randomly selected contents will not be deleted.)

— Creating a fake rating (through a big number of fake nodes) that a content is dummy, and should be deleted. (Countered with decreasing the rating weight of the external data, and increasing the rating weight of the internal analysis. If possible, retaining or increasing the rating weight of external data that is very hard to falsify or destroy its source.)

— Scaring machine owners into cleaning the virus, by false or intimidating information. (Countered with the stealth work of the virus, that makes plausible the explanation that the machine owner didn’t knew about it, and actually hard to detect it.)

– Flooding the networks with false content

— Injecting into the network (through fake nodes) a big amount of dummy content that effectively drowns the real one. (Extremely hard to be countered. File type analysis can detect files that do not match the content type they declare to be of, or otherwise appear to not contain real content, eg. movies shorter than a minute, or sound files that have the characteristics of noise. However, a better fake is impossible to detect automatically. Most rating based systems can be circumvented, and in fact used to flush off the real content, by big numbers of fake nodes. Currently we are aware of no bulletproof defense against this attack.)

— Injecting into the network (through fake nodes) a big amount of partial or advertising content. (Extremely hard to be countered, exactly like the previous kind of attack. In addition, this attack compromises the P2P network even worse than the previous attack.)

Some defense against the injection attacks may be analyzing the visible, non-hidden content presence and dynamics as a guide. If a content unit is visible on the machine, and stays on it for a long time, even after the human users play it to the end, its rating may go up. Alternatively, if a content unit has been deleted from the machine soon after it became visible there, and especially if deleted immediately after being watched partially, its rating may go down. If both things happen, their indicativeness for the content might be considered higher than otherwise. (Other methods of rating the content may be used, too.)

Other defense might be the ability to add / check signed node ratings of the contents. If a node ratings tend to be often similar to the local ratings, they might be considered a boost to a content rating. (Eg. the local rating of this node might go up.)

Using the rating opinions of other nodes to influence the decisions of a node may be dangerous, as a big number of fake nodes will be able to suppress the real content and to promote the fake one. However, the usage of rating opinions may be beneficial, if the ratings difference for the same content is used to rate the other nodes credibility. The process can be fine-tuned so that the nodes with similar opinions tend to ‘group’, and thus to separate real from dummy nodes. (More complex trust topologies can be achieved by this fine-tuning, too). Other methods of rating the network nodes may be used, too.

If done properly, the node rating will isolate to an extent the real nodes and the fake nodes into separate groups. This will decrease the ability of the fake nodes to influence the rating of the content, to flood the network with fake or spam content, and may be used to limit their participation in the network.

Not every filesharing network supports ratings. Most of them, however, have support for content rating, and some have, or may be enhanced with node rating. The data from them can be used to manage the content and node ratings for the entire node.

Адът и писателите

Знаете ли как наказват в Ада писателите? И аз не знам. Още не съм бил там. Но защо да не предположа?

Възможно е да ги карат да пишат сценарии за сапунени сериали. Или пък те да са единствените, на които е забранено да пишат.

Може би назначават за дяволи около казана им критици. (Което сигурно е раят на критиците. Адът им вероятно е да ги карат да пишат, и да им сложат писатели да ги критикуват.)

По-некадърните може би ги карат да си четат произведенията. Или ги даряват с майсторство, за да могат да разберат какви помии са творили.

Талантливите може би ги карат да прислужват на графомани. Или да гледат как графомани издават повече от тях и получават повече признание. (Оопс, това става и извън ада.)

На завистливите може би показват как други писатели си прекарват в рая. (Ако има писатели, които отиват в рая.) Или как получават повече признание още приживе. Или пък как половинката им след тяхната смърт започва да пише и успява повече от тях.

… Много неща са възможни.

Най-вероятно обаче ми се струва да ги предават в ръцете на героите им.

Предлагам сюжет за писане!

Мероприятия като Булгакон събуждат в мен ненаситилото се на фантастика хлапе. И най-вече всепоглъщащото му любопитство, и кошера идеи в главата му. А тъй като, уви, вече не съм хлапе, ми се иска и да направя нещо по тези идеи…

Само че не смогвам. Нямам времето. Затова понякога ги предлагам на околните.

В конкретния случай идеята е един сюжет. Предлагам го на всеки, който желае да напише нещо по него. Да видим какво ще се получи. 🙂

—-

Посред нощ е, но министър-председателят, президентът и председателят на Народното събрание са събудени. Всеки поотделно, от свои много доверени хора. С надеждата да изпреварят доверените хора на другите двама. И с вест, която смръзва кръвта.

Преди няколко нощи в Националния военноисторически музей е извършен взлом. Старателната инвентаризация не открива никакви липси. Опитът да идентифицират взломаджиите също е безуспешен – на записа от камерите се виждат двама души с черни качулки, черни ръкавици и без видими особени белези. Криминалистите решават, че престъпниците са се уплашили от нещо и са избягали без плячка. Както и уморената и апатична управа на музея, те са склонни да приключат случая.

На следващия ден обаче при директора се явява чистачката – маниакално подредена и наблюдателна стринка. Съобщава, че е видяла следи, които вечерта преди обира не са били там. От един от експонатите липсва мъничко, незабележимо за всеки друг кичурче. А на пода, току пред него, има почти неразличима изсъхнала следа от капка.

Новината на кой експонат е посегнато размърдва любопитството на директора. Криминален инспектор пристига отново и води със себе си лабораторен експерт. Следата от капка е внимателно анализирана. И когато късно през нощта излизат резултатите, верните хора на тримата най-важни властници спринтират да ги предупредят.

Капката е от специален разтвор, в който се съхраняват биологични проби, за да бъдат подготвени за клониране. А липсващото кичурче е от косата на Васил Левски.

Apibot 0.31

The next version of Apibot is ready. You can find it on the Apibot site, or to download it from this link.

It was intended primarily as a bugfix release, and a lot of bugs were squashed indeed. However, you will find some new things, too.

The first is the ability to use HTTP over SSL – in short, HTTPS. Just put a “https://”-starting API URL in the wiki description, and you are in the business. Useful for those who value their privacy. 🙂

The Page object has now the functions replace_category(), replace_langlink() and replace_file(). These allow you not only to modify, but also to add or delete the corresponding elements. Other new functions there are is_actual() and reset_text_changes(). Enjoy!

The apibot_actionobjects.php file was restructured into “official” and “unofficial” sections. The latter acquired some new actionobjects, mostly doing re-categorization of pages – moving the members of one category to another, joining a category to another, etc. I hope these will gradually move into the official section.

A propos, if writing a specific actionobject seems too much of a work, now you can supply to the iterator a simple callback function instead. A perfect convenience for small tasks.

… Thinking of all this, Apibot seems to be the most powerful MediaWiki bot, written in PHP, currently in existence. I guess it starts coming close to a mainstay like pywikibot. Which is a good thing. 🙂

However, I am not satisfied with it. The monstrous apibot.php is a mess. I’d like to split it into modules, matching the modules of the MediaWiki API. This will allow for more maintainability, more abilities and less bugs. It will also allow adding modules that service the API extensions added by the different MediaWiki extensions. (Apibot gets the extensions and API parameters info after logging, unless told otherwise, so it will be able to configure itself to use the extensions present at any specific wiki.)

Other interesting idea might be to add filter actionobjects. They will allow for more precise selection of the info elements to be processed than the MediaWiki API allows (currently). And, what is more important, they will be connectable one to another, forming chains of processing, much like the UNIX utilities can be stringed together to provide for complex processing of information. This way, a bot operator with only basic knowledge of PHP will be able to quickly assemble a processing chain capable of performing even very complex tasks. Moreover, an appropriate software (eg. a relatively simple web frontend) will be able to allow even a bot operator without PHP knowledge at all to do this… 🙂

Okay. Enough dreaming. Get it, enjoy it and supply back bug and wish reports! 🙂

Булгакон 2011

От месеци се каня да пиша за предстоящото събитие. Малко поизплашен заради гадостта, която изиграх (с най-добри чувства) при организирането на тазгодишната Таласъмия (да са живи старозагорският клуб, че въпреки “помощта” ми свършиха работа, и то впечатляваща). И докато посмея да надигна глас, то Булгаконът дойде.

За някои може би вече е късно да си уредят идването. Но за всеки случай да изкукуригам за изгрева.

Тазгодишният Булгакон ще се проведе на обичайното вече напоследък място – Балчик. Времето е от 3 до 6 септември. Домакин ще е отново гостоприемният Тихомир Тачев от балчишкия клуб “Александър Грин”.

Мястото на срещата отново е тихият хотел “Калейдоскоп”. Намира се близо до входа на Балчик, зад гърба на двореца на румънската кралица. Когато идвате от Варна, в един момент ще видите отляво големия светещ надпис на хотел “Париж”, а малко след него – бензиностанция. Горе-долу по средата между двете надясно се отделя мъничко пътче. Тръгвате по него и стигате до “Калейдоскоп”.

Хотелът е потънал в разкошна зеленина. Стаите са тихи, уютни и чисти. Цената (по предварителни планове) е около двайсетина лева на човек на ден и включва закуска, обяд и вечеря. (По спомени от предишната година – вкусно сготвени и предостатъчни като количество.) Ако можех да си го позволя, бих живял там целогодишно – мястото е толкова красиво и спокойно, че се чувстваш като в рая.

Предварителната програма, уви, не ми е известна. Но това няма значение. Едно, че почти никога не е била спазена. 🙂 И второ, че на сборища на поклонници на фантастиката винаги е интересно, с или без програма.

Феновете са и най-голямата ценност, заради която си струва да отиде човек на Булгакон. Общност от мечтателни и чисти душевно хора. Някои с вечно вдигната към звездите глава, други пък железни реалисти, те се разбират чудесно и от половин дума. Толкова топлота и доброта съм виждал в общност почти само в групичките на ентусиастите планинари и на тези, които ходят в свободните си дни да чистят природата. Ако ги пратиш вкупом в ада, те ще го превърнат в рай просто с присъствието си. Струва си да изкараш няколко дни сред тях. Почивка е, в сравнение с която плажът и морето са нищо.

А плажът и морето на Балчик са красиви. Градът – също. Да не говорим за двореца. Нос Калиакра е на двайсетина километра… Абе, има какво да види човек, дори ако не се случва Булгакон в момента. Но феновете придават на и без тях красивото място особен привкус. Усещане за нещо, което може да те крепи и дълго след като е свършило. Че светът не се състои само от блъскане от сутрин до вечер, караници с половинката и скука в неделните следобеди. Че животът е прекрасен, и дълъг, и пълен с приказни неща на живо, в реалността.

Усещане, което не искам да пропусна и тази година. И каня всички, които имат нужда от него, да го споделят.

Спамът от Булмар

Бях обещал преди време да излагам тук всеки по-нахален български спамер, когото хвана. Ето че място в списъка си заслужиха Булмар.

Доколкото разбирам от спамовете им, са автори на някакъв счетоводен софтуер. Спамът им идва от най-различни домейни. Напоследък писмата даже започнаха да включват линк за отписване, “съгласно закона”.

Линкът сочи към unsubscribe.bg. Там можете да въведете е-майла си, за да… си го преместят в другия джоб – спамът, естествено, не престава. Една чудесна илюстрация работят ли в Интернет opt-out методите и колко добър е беззъбият ни закон срещу спама.

Когато ми остане време (вероятно ще е скоро), ще заведа оплакване срещу тях в Комисията по защита на потребителя. За да защитя клиентите си от спама им обаче, съм блокирал на пощенския сървър на хостинга ми входящата поща от:

195.189.81.0/25
spot-mail.com
best-mail.org
best-mail.net
jet-mail.info
fly-mail.info
intranet.bulmar.com

Ако някой клиент изпищи, че няма връзка с тях, ще го посъветвам учтиво да си смени счетоводния продукт. Ще му обясня и защо. Хора, които са спамери, и в добавка на това са некоректни в отписването, надали ще са коректни и като бизнес-партньори. Или поне аз не бих им се доверил. А без доверие бизнес няма.

Ако клиентът много настоява да сваля блокировката, ще му покажа учтиво вратата. И също ще му обясня защо. Ако всеки клиент поиска да отпуша спама отнякъде, всички ще се удавят в спам и ще се махнат от мен. По-изгодно ми е да ме напусне един клиент, отколкото всички.

(Преди няколко дни един нагъл спамер ми писа, че съм му спирал така кореспонденцията, и щял да ме съди. С неизказано удоволствие му отговорих, че моите сървъри са моя собственост, и никой закон не може да ми нареди да приемам на тях каквото не желая. И че законът задължава него да отписва нежелаещите клиенти, но не задължава мен да пренасям и тъпча боклука му в гърлата на хората, които ме хранят срещу това да ги опазвам от боклука му.

Изпратих му и пълните си фирмени данни, за да му е по-удобно да ме даде под съд. Надали е нужно да обяснявам, че това няма да се случи. За съжаление. Съмнявам се да има съдия, който да не е проклинал купищата спам в е-майла си и да не е мечтал да му падне спамер в съдебната зала. И се съмнявам и да има спамер, който да не се досеща за това. За съжаление.)

Очаквайте и следващи представяния на спамери.

Патриотизмът и Уикипедия

Който ме познава, знае – Уикипедия е едно от хобитата ми. По тази линия, често мисля как може да се направи нещо за нея.

Българоезичната Уикипедия е без никакво съмнение най-използваният български информационен продукт. Свободен за всекиго, полезен за всекиго. Всъщност, тя е една сериозна част от присъствието на България в Интернет. Като комбинация от качество и пълнота се движи някъде около 30-то място сред Уикипедиите – доста сериозно постижение, като се имат предвид малките ресурси на България. И още повече, като се има предвид свещената клетва на типичния българин никога да не върши нещо, от което може да има полза и за някой друг. Това 30-то място е постигнато с труда на смешно малък брой хора.

Често съм си мислел – дали няма как повече хора да пишат в Уикипедия? Минавали са ми през ума много възможности. Една от тях е да предизвикам по-богатите българи – собственици на фирми и т.н. – да спонсорират желаещи да работят в Уикипедия. През Възраждането богатите българи са заделяли и давали за благотворителност чували злато. Защо да не направят нещо полезно за България и сега?… Добре де, това беше ирония. Да не кажа сарказъм. Всички знаем много добре произхода и манталитета на 99% от съвременните богати българи. Но все пак може би има 1%, който да е склонен да дари нещо, полезно за всички.

Един от възможните начини, които си представям, е да плаща хонорар на човек, за да работи по Уикипедия. България е пълна с пенсионирани учители, учени и просто грамотни и знаещи хора – едно богатство, което времето неумолимо отнася. Повечето грамотни и знаещи пенсионери живеят в мизерия и си допълват пенсията с висене зад някоя сергия под пека през лятото и на студа през зимата. Предполагам, че срещу хонорар от порядъка на триста лева месечно биха били пре-щастливи да работят в Уикипедия по колкото часа на ден им позволява здравето им. Въпросът е дали сред тези, които имат триста (а и три хиляди, често и трийсет хиляди) лева за джобни пари, и ги изпиват или профукват за глупости за една вечер, всяка вечер, ще се намерят такива, които да биха ги дали вместо това “на ползу роду”. Без никакво съмнение ще са единици. Но ми се иска да мисля, че ще ги има.

“На ползу роду” ще рече в случая наистина родолюбиво и безкористно. Защото на наетите от тях хора ще бъде забранено да влизат в конфликт на интереси, тоест да пишат за наелата ги фирма, да се опитват да я рекламират по какъвто и да е начин, и т.н. Това изискване е безусловно и няма да бъде отменено при никакви обстоятелства. Ако някой не може да го преглътне и не би дал и стотинка за общото благо, без лично той да е на полза, той ще е петно за Уикипедия. Петно, без което тя е минавала досега и ще мине и занапред.

Уви, все още моята фирма не е достатъчно богата, за да даде първа пример, колкото и смешна да е сумата. (Всъщност, тя дава донякъде – храни ме, така че мога да работя по Уикипедия в част от свободното си време.) Но имам молба към всички, които четат този запис – помислете дали не ви хрумва фирма, или дори просто богат човек, който би дал възможност на някого да допълва издръжката си с това да пише в Уикипедия. Ако да, потърсете съдействието им. Или просто пишете за тях някъде, дори тук като коментар.

Нещата имат и друга страна – желаещите да работят по Уикипедия срещу това заплащане. Нека си кажем директно, то е мизерно. Стига за дребна-дребна добавка към пенсията. Затова и очаквам да се съгласят на него единствено закъсали пенсионери. А и от тях не всеки ще става за редактор в Уикипедия. Трябва да е човек, склонен да научи поне основите на уики-синтаксиса – той е елементарен, но все пак изисква някакво желание, за да бъде научен. Трябва да е склонен да научи как се пише в енциклопедия – стилът е различен от този в художествено произведение или пътепис, примерно. Трябва да е склонен да научи (и да спазва) поне основните правила на Уикипедия – изискванията за неутралност, за значимост, за източници, за неизползване на неща, защитени с авторски права. Трябва да може да пише грамотно (възрастните обикновено го могат, младите са по-проблемни).

Ако се намерят такива желаещи, ще е чудесно да се знаят имената и координатите им – току-виж се случи някой хем богат, хем свестен, който да е склонен да даде хонорар, но да няма точно подходящ човек. Ако пък са и показали, че умеят и желаят да пишат в Уикипедия, ще е направо чудесно, и според мен такива трябва да бъдат избирани с предимство.

… Докато пиша това, едно гласче ми казва отвътре: “Хабиш си времето. България е мутрокрация. Богат тук може да е единствено престъпникът, егоистът, боклукът…” Много ми се иска то да се окаже неправо.

Помощ, повреди ми се Inbox-а!

Потребителите на Microsoft Outlook Express често си го харесват. В интерес на истината, добра програма е. Сравнително лекичка, пъргава, нищо излишно, но и нищо липсващо. Според мен изхвърлянето му от по-новите версии Windows в полза на Windows Mail беше грешка.

Много хора, поне в България, продължават да си работят на Windows XP и да са щастливи с него. (Особено ако перспективата е Vista. 🙂 ) Съответно и да използват Outlook Express. Много от тях обаче са се натъквали под една или друга форма на проблема с прелялата папка. Най-често това е Inbox, по-рядко – Sent Items.

Симптоматиката е проста. Безотказният допреди малко Outlook Express отведнъж започва да не тегли съобщенията от сървъра. Плюе неразбираеми грешки и толкова. Караниците с администратора на сървъра не помагат – той твърди, че при него всичко е наред, и други хора взимат поща безпроблемно. Или пък, да кажем, тегленето на съобщения е наред, но отведнъж изпращаните съобщения започват да “не разбират, че са изпратени”. Стоят си в Outbox, при всяко свързване за обмяна на поща заминава поредно копие от тях (за радост на получателя), но не щат да идат в Sent Items! Ако не сте се натъквали вече на проблема, загадката е пълна.

Отговорът е прост. Папките на Outlook Express имат максимален размер 2 гигабайта. Когато бъде достигнат, папката престава да приема нови съобщения. Необходимо е да си направите една или повече нови папки (аз обикновено ги правя като подпапки на въпросната папка), и да преместите част от съобщенията в тях.

Ако обаче папката по някаква причина е успяла да надхвърли 2 гигабайта (и това се случва), е напълно възможно Outlook Express да не иска да я отвори повече. Когато я изберете, не виждате никакви съобщения. А понякога те са много ценни. Тогава… викате неволята.

Нетът е пълен с програмки, които претендират да възстановяват повредени папки на Outlook Express. Повечето от тях дори наистина работят – изваждат ви списъка на съобщенията ви. След което казват: “Хайде сега си плати, за да ти извадим и съобщенията!”. Звучи напълно коректно, но не всеки може или иска да плати сумата (например защото трябва да има международно валидна кредитна карта, и защото заради 15-те долара за програмата ще му смъкнат и още три пъти по толкова за превода). Затова е полезно човек да знае, че съществува и свободният софтуер. 🙂

Програмката, която ви трябва, се нарича undbx. Сваляте си я, разопаковате и слагате някъде. В архива й се съдържа един .HTA файл – отворете го с браузер. Ще видите съвсееем прост интерфейс – път за файловете с папките, път за извадените съобщения, чавка дали да се пробва Recover, бутон за стартиране на възстановяването.

Пътят към файловете с папките може да бъде намерен в Outlook Express, Tools -> Options -> Maintenance -> Store Folder -> Change. Обикновено е нещо от типа на C:\Documents and Settings\%myprofile%\Local Settings\Application Data\Identites\%some_classname%\Microsoft\Outlook Express. (%myprofile% е името на Windows юзера ви, а %some_classname% е идентификатор на Windows клас – съчетание от няколко десетки букви, цифри и тирета.) По-патилите потребители обикновено го преместват на D: – фаловете с този диск са доста по-редки, а съхранената поща е ценно нещо… Както и да е. Копирате този път – това е пътят към папките на Outlook Express. Ако искате да възстановите само една, примерно Inbox, добавете към този път и името на съответния файл, напр. /Inbox.dbx.

Recover чавката ще накара undbx да се опита да възстанови и всички съобщения, които някога сте изтрили от папката. За повечето от тях възстановяването няма да е възможно, или ще е частично, често с гадни разултати. Също, тя удължава доста времето на работата на undbx – ако не ви е реално нужно да си възстановите и изтритите съобщения, не я цъкайте. Но ако ви е нужно, пробвайте.

Пътят за съхраняване на извадените съобщения е папка на диска ви, в която undbx ще създаде подпапки за всяка възстановена папка на Outlook Express. Съобщенията ще се запишат в тези подпапки в .eml формат, като отделни файлове с име, съставено от имената на подателя и на получателя на съобщението.

Спирате Outlook Express, пускате задачката и… чакате. Повредена заради надхвърляне на двата гигабайта папка може да отнеме доста време за обработка; на 2-гигахерцов Celeron с включена опция за Recover е нормално да глътне пет-шест часа. За сметка на това пък буквално не съм видял случай не-изтрито съобщение да не бъде извадено успешно… Изчакахте ли? Честито. Пощата ви е налице.

Папката на Outlook Express продължава да е преляла и да не може да се работи с нея, нали? Това е най-лесно за решаване. Спирате го, влизате в директорията, където се съхраняват папките на Outlook Express, и изтривате (или премествате другаде, ако сте предпазливи) прелялата папка. След това пускате Outlook Express и избирате тази папка. Вече я имате отново, годна за работа – той я създава автоматично.

Но празна. А извадените съобщения също са в не съвсем привичен вид и несгодни за работа. Което, за щастие, се оправя лесно. Изберете с мишката (или Ctrl-A) файловете с възстановените съобщения и просто ги преместете в Outlook Express, право в отворения празен списък на папката. Пак изчакайте (този пък по-малко – при описаните по-горе условия около 15 мин.), и папката ви е възстановена заедно със съобщенията. Ура! А сега побързайте да направите други папки и да разпределите съобщенията в тях. Иначе тази много бързо ще прелее отново.

Би трябвало да е отново преляла, след като нищо не е изгубено ли? Не винаги. При всекидневната работа със съобщения (триене, получаване, триене, получаване…) папките на Outlook Express се фрагментират вътрешно. Фрагментирането пречи на пълноценното използване на обема им. Средно фрагментиран Inbox, прелял над 2 ГБ, при импорт на всички съобщения обратно на чисто обикновено става около 1.9 ГБ. Въпреки това, ако искате да сте предпазливи, отначало преместете в новоизпразнената папка само част от възстановените съобщения, и добавете останалите след като разпределите по други папки тези. Това важи с особена сила за Sent Items, където повечето потребители не трият съобщения (и съответно тя не се фрагментира).

Дано описанието е било полезно. И още повече дано не ви се налага да ви е полезно. 🙂

(На хакерски настроените препоръчвам да вземат хубав дебъгер, да разгледат кода на комерсиалните програмки за вадене на съобщения от повреден .dbx, и да го сравнят с отворения код на undbx. В доста случаи угризенията на съвестта, че не са си платили за тези програмки, ще изчезнат отведнъж. 🙂 )

Въпросите

Помещението сякаш е потънало в сива мъгла. Високите стени се губят зад мен в нея, таванът – също. Напред обаче мъглата се разрежда. Пристъпвам натам. Странно защо, не си задавам въпроса къде съм. Сякаш няма значение.

И без мъглата помещението е мрачно, сякаш навън е дъждовна вечер. По пода пред мен е разхвърляно какво ли не. Трикрако дървено столче, купчина летви до него, по-нататък – ниска маса от грубо дърво. На нея стои чаша от печена глина, наполовина пълна с вино. Още по-нататък лежи голямо руло хасе, до него – няколко четки. Зад тях, до стената, са две скулптури. По-близката е на възрастен мъж, приклекнал с гръб към мен и приведен напред, плешивото му теме лъщи в полумрака. Срещу него има полуиздялано от мраморен блок коленичило момче. Оскъдната светлина пада върху него и разкрива изключително майсторство. Древногръцката чистота и стройност на скулптурата е смайващо неразделно съчетана със средновековни християнски черти. Направо дъхът ми спира, като го погледна. Чие ли дело е?

Мъжът внезапно се размърдва и надига. В първия миг се стряскам, след това разбирам – взел съм го за статуя заради неподвижността и мраморния прах по него. В ръцете му виждам чук и длето – очевидно е скулпторът. Без да го питам, зная кой е.

(разбрал съм по стила на скулптурата му? надали – не съм такъв експерт… както и да е.)

– Извинявайте, че нарушавам покоя ви, маестро.

Смехът му е сух, подобен по-скоро на кашлица. Дори на слабата светлина се вижда, че очите му са жълтеникави, носът – подут и гъбясал, главата – винаги изкривена на една страна.

– Хе-хе. Ти моя покой, или аз твоя? Тоя сън е твой, синко, не е мой. Моя вече от пет столетия само Второто Пришествие може да го наруши.

Не зная какво да отговоря. Твърде е някак… директно отведнъж.

– Интересен логически въпрос, нали? Даже теологически. Ти ли нарушаваш моя сън, или аз твоя? Хе-хе… Питай, синко. Нали затова си дошъл. Рядко идват при мен напоследък. Заскучал съм се, с удоволствие ще ти отговоря.

– Н-н-не зная какво – измънквам.

– Какво ще да е. Направи кеф на стареца. – Той се приближава до скулптурата на момчето и внимателно започва да доизчуква грапавия мрамор край стройната му ръка. – Направил ли си някой известен паметник вече? Или още само хабиш камъка?

– Не съм скулптор изобщо. Не зная какво да питам. Не зная защо изобщо те сънувам.

– А, вече си сигурен, че ти ме сънуваш? Хе-хе. Добре. Все е начало… Като не си скулптор, що дириш при мен? Да ти извая нещо не мога, отдавна вече съм прах. Друго освен отговори на въпросите ти нямам. Ама давай ги въпросите. Щото и прахът си има работа.

Вдигам рамене.

– Какво те питат обикновено?

Микеланджело обръща глава към мен. В погледа му се чете неприкрит сарказъм. И презрение.

– Дали съм бил педал, естествено. Какво вълнува дребните хорица? Че и доста скулптори. Бях, ако искаш да знаеш. И по жени си падах, и по мъже. Защо мислиш, че съм тук сега, вместо в рая, след всичките ми църковни стенописи и статуи?… Не вярваш в рая, виждам. Да, ама аз вярвам. Затова и съм тук вместо там, да правя скулптури, които няма кой да оцени… Друго да те вълнува? Дали съм спал с Витория Колона? Не съм, прекалено дърт бях вече. Друго?

Почвам да се ядосвам. Даже и насън си има граница на подигравките, които човек може да изтърпи.

– Не ме вълнува изобщо личния ти живот, маестро. Ако ще сам да си се таковал, то си е твой проблем. – Сепвам се за миг и продължавам по-кротко. – Наистина не знам за какво да те попитам. Но мръсничкото гъди-гъди кой какъв бил не ме вълнува.

Длетото и чукът тропват на пода, и брадатата физиономия се завърта към мен.

– Така ли? Я да те видим тогава какво искаш. – Той впива в мен поглед и усещам как направо ме пронизва. – Хе-хе. Нямал бил нищо да пита. Я кажи, кой си мечтаеше само преди няколко часа да може да ме попита как точно създавам такива гениални скулптури? А?

Усещам как се изчервявам. Не отговарям нищо.

– Ела, ще ти покажа. Не е толкова сложно. Искаш ли? Щом се събудиш, ще носиш в себе си тайната на гения. Ще ти трябва към годинка-две, докато ти се изпедепсат ръцете с длетото, ама после ще правиш неща като моите. Че и по-добри даже, нали с времето сте изпонаучили повече, любопитниците. Погледни тук, ръката на момчето. Съотношението на дължината на предмишницата към…

– Не, маестро. Не искам да го знам.

Очите му проблясват ядосано в полумрака.

– Ти ще питаш ли, или ще си играеш с мен на шикалки? Я се засрами малко, сульо такъв! Кой си ти, че да ме безпокоиш без полза?

– Не искам, защото ще изгубя умението да се възхищавам на тези скулптури. – Сънната псевдо-логика ме кара да вярвам, че той е непоклатимо прав, че разкаже ли ми как прави нещата, ще ми предаде гения си. Но въпреки това не искам. – Ще мога да ги творя, но ще спрат да ме правят щастлив.

– Ще тръгнеш да правиш по-добри. Да рисуваш, да ставаш все по-добър. Така е то, и с мен беше така. Какво мислиш, че ръчка един такъв като мен цял живот да се мъчи да прави още и още? Колкото и да ми завиждаха и да ме клеветеха, още с Пиетата признаха, че съм най-добрият от живите. Поне в статуите. В стенописите така и не изяснихме с Леонардо кой е по-добрият. В картините него го бива повече, признавам. Приличаш ми на него, същият любопитник си. Що те е страх?

(ама докъде съм суетен – насън да слагам комплименти към себе си в устата на Микеланджело… печална картинка)

– И малкото, което умея, вече нямам силите и времето да го разгърна и изчерпя докрай. Цял живот няма да ми стигне. Защо ми е тогава да стана и велик скулптор в добавка? Само ще ме лиши от щастието да гледам по-обикновените скулптури. Вместо красотата ще виждам грешките им.

– Така ли мислиш? Хе-хе. Добре тогава, няма да ти кажа. И да ме питаш, няма. Майната ти, любопитко. Помислих си за миг, че става от тебе нещо повече от дребните хорица, ама не. Същата тор си. Хайде сега, ако ще питаш още нещо, питай. Че след малко ще ти зазвънят клиентите, и край на срещата с мен. Друг път няма да ме посетиш, никога вече. Толкова ти се полага. Последен шанс. – Той се ухилва.

Замислям се. След това го поглеждам в очите.

– Вярно ли е това за статуята на Мойсей?

– Кое?

– Че като си я привършил, си я ударил с чука по коляното и си й викнал: “Проговори, де!”

Усмивката на Микеланджело за миг изчезва и той ме поглежда изненадано. След това отново устните му се разтягат, този път одобрително, и той кимва:

– Знаеш какво да попиташ… Да, вярно е. Чак му спуках коляното. Наистина е от мен… Сега разбра ли къде грешиш?

– Да. Щом творецът е способен да се възхити на собствената си творба…

– Да ти разкажа тогава как се прави истинската красота? Още не е късно.

– Потрябва ли ми, ще я открия и сам. Никога не е късно.

Рошава вежда се повдига и брадясалата физиономия ме изглежда с крива усмивка. Наполовина подигравателна, наполовина окуражителна. След това мъжът се навежда, вдига длетото и чука от пода и се обръща отново към скулптурата на момчето.

Мъглата обгръща стаята пред мен и неравното почукване на длетото се стопява в сгъстилия се мрак.

Соларни хора

http://dnes.dir.bg/news/hrana-slantze-slancheva-energia-ivan-stoychev-9265198?nt=13

Боже, колко луди има по този свят, боже…

(Не става дума за Иван Стойчев. Той ако беше толкова луд, щеше да е отдавна умрял. Който яде чужд зелник никога не е луд… Познайте за кого става дума.)