Tuesday, November 15, 2011

Showing Up is not Participation

You might remember not all that long ago that the Middle East experienced a surge of protests and demonstrations in favor of democracy?  Now, what do you remember most prominently about that?

Take your time.

Odds are, you recalled how it was hailed as a social media revolution.  Your confusion is understandable, because that is all the American primary media outlets could focus upon.  It’s not exactly a secret that the larger media outlets haven’t really understood how to wield social media since it’s very inception; the attempts to fit them together have been awkward, at best.  Yet social media has captured the attention of the people, and this has not escaped corporate notice, so the march of badly-integrated half-attempts continues unabated.  Naturally, when social media was used as a tool to co-ordinate something that big media companies did understand, they rushed to embrace it and tried to subtly co-opt it in the same stroke.  Subtlety is not something big media does well, however, and the result was a complete shift of emphasis from the people who were making things happen to the glorified message board that was helping coordinate efforts.

To read most of the reports and articles from that time, you would think Twitter had single-handedly sprung the latch on the cages of the repressive regimes.  The heroes were somehow not the brave men and women standing up for their rights, but the programmers and American capitalists who gifted them with social media, setting them free.  In actuality, we were barely spectators.  Content to watch from the sidelines, we re-tweeted and then patted ourselves on the backs at having played a pivotal role in their success, as if it were on equal footing with being out there putting our freedom and lives on the line.

Fast-forward now to the occupy movement, and you might notice something odd.  It isn’t a reversal placing us in their shoes.  True enough, we’re the ones in the streets, and yet we’re still just re-tweeting.  Somewhere along the line, we seem to have fallen victim to a Venn overlap of arrogance and entitlement, a fallacy that one need merely show up to have positive results.  This isn’t even wishful thinking on par with Field of Dreams, it doesn’t seem to expect any input of effort at all.  No planning, no goal, no demands, no suggestions for a solution – the Occupy movement has done nothing but show up and hope that that will somehow be enough.  The funny thing is, Occupy has succeeded in gaining the notice of politicians.  The smug, righteously-indignant masses have bravely marched up to reclaim the political process, cell phones in hand to showcase the event to the world.  The governing body has turned to us, with an expectant air, and asked what we want.  Silence fills the air, broken only by muttering and shuffled feet.  It’s almost lazy, apathetic, and rather embarrassing. I’m almost ashamed that this is the best we can muster. Really, if we can’t be bothered to figure out what we want out of this, what makes anyone think the politicians are going to do anything about it? How would we even know if they did?

It’s time we rejected the social media definition of ‘participation’.  Simply showing up is not enough.

Disclaimer: I’m not suggesting that you start some sort of myopic rebellion, loot, riot, or anything else criminal.  Just get a coherent plan before you organize a march on Washington.

Monday, October 11, 2010

The Decline of the High Economy

Today I read an opinion editorial by David Frum on CNN, blaming China for the recent economic recession in the U.S.  In it, he talks of the attempts China has made to sustain a booming growth.  While they might have the best of intentions, their methods are unscrupulous, and as Frum pointed out, they have essentially set themselves up to learn the same painful lesson Wall Street was recently taught (but doesn’t seem to have learned): just because you can write a number down that someone theoretically owes you does not mean the money exists.  You cannot squeeze blood from a turnip, no matter how hard you twist.

However, while the piece does correctly identify a contributing factor, it misses a larger picture.  Like many distributed systems involving people, the market is far too complicated to be described in such simplistic terms.  Several levels of interactions are taking place simultaneously, and there is more than enough blame to go around, making it easy to pick out the portion which blames a convenient group for the speaker.  Both The Chinese government and Wall Street were complicit in this level, and in both cases greed overcame reason when the respective people in charge saw imaginary numbers piling to sky.  Indeed, I would be quite surprised if China is anything but the next one slapped (let alone the end) as the rubber-band of debt fires back through the hands of everyone in the lending chain holding it.

But this is just one layer.  Beneath it lies a much bigger problem for the Western world, of which this is merely a symptom.  The so-called ‘trickle-down’ economic effect has taken hold.  While it was mostly spoken of in a self-congratulatory manner by people defending exploitation of low-income foreign workers, the truth is that the rationale behind it was quite justified.  What many failed to realize, however, was the eventual obvious implication: what happens when the rest of the world doesn’t need to work for you anymore? 

Make no mistake: the gradual rise in living standard among the third world is not a bad thing, taken as a whole, and certainly not undeserved.  Quite the opposite: most of them have put in a harder day’s work on a daily basis than anyone in the Western world does.  And that their efforts are beginning to bear fruit for them is cause for celebration in its own right.

No, the problem is the failure of the Western world to prepare for this. With capitalism and the globalized economy actively making the flow of money more and more liquid across geographic boundaries, these effects which were spoken of before with a wink and nod are now poised to lay waste to the economies of the Western world.  In fact, many of these economies were better equipped to handle the transition before such widespread globalization.  What happened was a long, methodical process over several decades of attempting to exploit the gradient difference between living standards in various parts of the world (the United States is far from the only one involved).  Corporations, noted these days for have foresight spanning mere months (frequently only until the next quarter), moved their production assets and operations overseas to where the bottom line was the lowest.  The free market did exactly what it was designed to do and optimized for profit.

But the ugly truth looming in the not-so-distant future is that Western world did little to nothing to try to maintain some assets in place, which would remain geographically tied to their location.  Acting as middle-men is too lucrative a position, and who doesn’t want cheap gadgets?  Now, much of the United States’ production capacity is only a memory, and somewhere along the way we forgot that another thing we like to do is cut out the middle-man for greater profits.  Greed blinded the lawmakers and businessmen to the fact that was was best for the global economy was not necessarily best for the national economy.  We have, in essence, become a nation of middle-men, in the form of the so-called ‘service economy’, and before long people will look to cut us out of the loop.  With very little left to anchor money geographically, the financial power will eventually migrate to other places, preferentially toward areas with few regulations, leaving economically burnt-out superpowers in their wake.  One need look no further than the explosive growth of Dubai to see this exodus in action.

It isn’t an apocalypse, and the nation will eventually recover, but not before the process reaches or is well on it’s way toward the inevitable conclusion in which most or all of the living standards of the world more or less equalize at some average level.  We had a chance to try to prepare for this and make the transition gracefully, perhaps even ensure that the average rose until it was at the level we generally expect for ourselves, but greed has allowed the opportunity of control to slip away.  I had hoped, when I initially saw the meltdown of 2008, that it was not the harbinger of the tipping point, but with each day that passes I see more and more confirmation that the chance to fix the problem is at last gone, and control no longer truly rests in our hands.

I hope that some day the new rising stars of the world stage will be more considerate of us than we were of them, but history weighs in rather grimly on how people typically react when a power dynamic is reversed.

The question quickly becomes, for the Western world, one of how to make itself valuable again.  Given that the standard of living among the highest has nowhere to go but down, the most damage-controlling options are those which are easily replicated and permit a global living standard to be higher.  That is, creating technologies which are more efficient, cleaner, and scalable while we still have the resources to conduct research.  In addition, during this critical free-fall period, anything that can be done to restore actual production would be helpful.  Given the impossibility of competing based solely on price, the United States’ battle cry should be a return to the higher quality of production that ‘Made in the USA’ once stood for.  It will never be as profitable as selling cheap junk which then needs to be replaced (read: ‘consumerism’), but one lesson we should be taking from this is the value of eschewing higher short-term profits at the expense of long-term stability.

But when has the financial sector ever learned its lesson?

Labels: , , ,

Monday, March 01, 2010

Convenient Batch Re-Titling of TV Series

Have you ever downloaded or archived a TV series? Chances are, unless you meticulously hand-labeled the episodes yourself, you ended up with a grab-bag of assorted wretchedly deformed file names. Things like:

history.channel.aXXo51_[DVR]the_making_of_shoes[HI_QUALITY].AVI
the_three_stooges.1x5.the_voice_of_spring.DVDRip.sTeAlTh.XVID.avi

The OCD neat-freak in me rebels at the very sight of these. They're difficult if not impossible to search for in a file system, and are so cluttered with meta-information that they take a moment to even recognize what they are. The lack of white-space in the names is torturous to the eye. Contrast that with the following:

History Channel - The Making of Shoes.avi
The Three Stooges - S01EP05 - The Voice of Spring.avi

Much cleaner, isn't it? The only concession to short-hand is the Season/Episode identifier, mainly because it would absurdly long without compacting that information. Of course, given that a typical season can run 26 episodes in length, re-entering the information by hand can be anywhere from tedious to masochistic.

Fortunately, there's a better way. Many bulk re-naming tools with wide feature sets exist, but my personal favorite is ReNamer, available in both portable and installable formats. ReNamer's killer feature that sets it above most others is the near real-time application of all the naming rules in the list together, so you can see the final product as you build up rule sets. You can also turn on/off rules in the set with check-boxes, making it easy to find out which rules are causing problems and iteratively fix renaming rule sets. I've created a 22-rule set that can be used to re-name TV series, fixing most of the common naming problems. You can download the file here. Just drop the file into the 'Presets' folder inside the ReNamer program folder, and you're good to go! It will appear under the Presets > Load menu.

You can add files simply by dragging and dropping them into the lower pane. (Note: for some odd reason, this doesn't work on Vista/Windows 7 if you're running the program as an administrator. Go figure. You can still add files from the menu.) The Ctrl+A key combination ('select all') makes it easy to snap up all the files in a folder for dragging. You can see on the left the current name, and on the right the new name. If you're satisfied, you can go ahead and hit 'Rename' in the upper-right corner to actually rename the files, or you can mess with the rules as needed to set the names up like you want them.

Now, I'll go into a bit of detail about what the rules themselves do, since there's no way to add commentary, and some of them are fairly long and/or complex.

  • Rules 1 & 2 remove periods (except in the extension) unless they're surrounded by numbers on both sides. (So decimal numbers will be left as-is.)
  • Rule 3 removes common format/source meta information acronyms that are more or less irrelevant if you have the proper codecs.
  • Rule 4 replaces underscores in the middle of a word with spaces.
  • Rule 5 replaces any "-blah" sequences at the end, which can be useful if there are a lot of contributor screen-names tacked onto the end of the file name. It's disabled by default, as it can remove unintended title information. (For instance: D-Day.avi)
  • Rule 6 is a placeholder for you to add removal commands for other common strings that don't belong, such as a contributor screen-name or a format tag. Note that when editing it, you can use the "+" button to add more than one string search. Look at rule 3 for an example of how to use it. It is also disabled by default.
  • Rule 7 cleans up any mish-mash of spaces, dashes, underscores and periods left hanging around at the end of the file name from the clean-up so far.
  • Rules 8-10 reduce multiple occurrences of spaces, dashes, and periods anywhere in the name to a single one.
  • Rule 11 forces everything to lower-case to make it easier to deal with grammar corrections.
  • Rule 12 fixes missed apostrophes on common contractions.
  • Rule 13 puts everything back into proper first-letter capitalization for titles.
  • Rule 14 de-capitalizes in-between words that shouldn't be capitalized in a title.
  • Rule 15 undoes rule 14 whenever an in-between word is the first word in a group.
  • Rules 16 & 17 capitalize roman numerals (in the middle of the title or at the end)
  • Rules 18 & 19 convert most episode naming conventions to the S#EP# format
  • Rules 20 & 21 convert S#EP# to S##EP## with fixed numbers of digits (inserting leading zeros if needed) to make the names sort properly in a list view.
  • Rule 22 changes most variations of "part 1 - subtitle" to "(Part 1) - subtitle". (With or without subtitles)
  • Rule 23 interprets a trailing number as a part, and renames it to "(Part #)". Because this can misinterpret title information (such as "Apollo 13"), it is left disabled by default.
These are not by any means fool-proof. It's worth mentioning a small list of things that won't be fixed, and have to be checked manually:
  • Missing or incorrect title information
  • Possessive apostrophes ("Sallys day out")
  • Acronyms ("Us Guns of World War II")
  • Mixed trailing numbers ("Amazing Videos 2" & "Apollo 11" in the same batch, one will have to be manually corrected)

However, these rules should help save you a lot of work. There may be a few bugs still lingering in them, it's definitely a work in progress, but anyone with an OCD neat-freak streak in them will probably want to customize the rules anyway to suit themselves.

Labels: ,

Thursday, February 04, 2010

Operation Digital Shield

Most people who are in any wise paying attention by this point have heard of the Chinese attack on Google. However, after I read this article published on Wired.com's digital security blog Threat Level, I saw the true scope of the attacks. Already irritated with China from the outset, I decided to craft my own Great Firewall. Given that any traffic could potentially be a vector, I decided to simply out and out IP-ban China in its entirety. If you want to send a message to the Chinese government, or are just concerned about your system, it isn't difficult to do with a bit of batch scripting.

I'm running Windows 7, so the exact commands will probably work verbatim on Vista, but may require tweaking for XP. The first step is to open the command line and get familiar with netsh. netsh is a very deep tool with a great deal of power, but we're mainly interested in using it to set firewall rules programatically. First, type netsh to enter the program's interactive environment. Then, type advfirewall firewall to access the firewall controls. Type add rule ? to get a help message explaining how to use the command. Pay close attention to the syntax of the add rule command. Optional parameters are listed in square brackets. After a few misses getting started, I found that the command I needed was:

netsh advfirewall firewall add rule name="myrule" action=block dir=in protocol=any localip=any remoteip=

This sets up a firewall rule that blocks any incoming traffic of any sort to any IP address my machine happens to have (on any interface) from anything listed in the remoteip argument. So far, so good. Next, I had to hunt down a list of IP addresses for China. A few minutes with Google yielded blockacountry.com, which keeps IP address lists for each nation. Generating an IP list was a simple process of selecting the country from a list, and clicking a button. However, the list is generated in the form of an apache .htaccess file, so it will need a bit of work first.

Copying the contents of the file to Notepad++, I first manually deleted the start and end lines of the file, leaving only the 'deny from <address>' lines. Next, I use the find/replace dialog (Ctrl+H) to clean up the list, replacying "deny from " with nothing, and replacing "\r\n" with ",\r\n" with Regular Expressions turned on to put a comma at the end of every line. Now, break the list down into blocks of about 220 lines or so. This is necessary because there is a limit to how much can be placed in a single command line entry, so we'll distribute the list over a group of about 6 rules. It's easy to count the lines if you position the cursor at the start of the first line of a group, and then hold the shift key to select while hitting the down arrow key to move down. A counter in the status bar of Notepad++ will tell you how many lines are selected. When you have a group selected, hit Ctrl+J to pull them all onto one line. After doing this for all the groups, you should be left with only about six really long lines of IP addresses seperated with commas. Do one more find/replace with regular expressions, replacing "\x20" with nothing to get rid of any remaining spaces, and trim the last comma off the end of each line.

Now, all we have to do is paste the command above in front of each line of IP addresses, and rename the rules to something useful. I used "China IP Ban - Incoming (Part 1)" with 1-6 for each of the rules. (Each one has to be named something different!) Also noticing that the article suggests that many computers may already be infected with sleeper agents, I copied and pasted the rules, changing the dir=in argument to dir=out, and changing "Incoming" in the name to "Outgoing", for a total of 12 rules, blocking anything inbound or outbound to/from China. Save the text file with a .bat extension, and run it as administrator to create the firewall rules.

I know already some of the more experienced network administrators are probably rolling their eyes. Yes, this is a first attempt, and it's far from bulletproof. But it completely closes the most direct avenue of attack, and makes it that much more difficult for a hacker.

For reference, I've appended the plain-text version of my final batch script. I urge you to walk through the steps above before using it to make certain you have some idea of what it does and how it does it. That said, this comes with no warranties of any kind, use at your own risk, yadda, yadda.



Show/Hide Batch File



netsh advfirewall firewall add rule name="China IP Ban - Outgoing (Part 1)" action=block dir=out protocol=any localip=any remoteip=58.14.0.0/15,58.16.0.0/16,58.17.0.0/17,58.17.128.0/17,58.18.0.0/16,58.19.0.0/16,58.20.0.0/16,58.21.0.0/16,58.22.0.0/15,58.24.0.0/15,58.30.0.0/15,58.32.0.0/13,58.40.0.0/15,58.42.0.0/16,58.43.0.0/16,58.44.0.0/14,58.48.0.0/13,58.56.0.0/15,58.58.0.0/16,58.59.0.0/17,58.59.128.0/17,58.60.0.0/14,58.66.0.0/15,58.68.128.0/17,58.82.0.0/15,58.87.64.0/18,58.99.128.0/17,58.100.0.0/15,58.116.0.0/14,58.128.0.0/13,58.144.0.0/16,58.154.0.0/15,58.192.0.0/15,58.194.0.0/15,58.196.0.0/15,58.198.0.0/15,58.200.0.0/13,58.208.0.0/12,58.240.0.0/15,58.242.0.0/15,58.244.0.0/15,58.246.0.0/15,58.248.0.0/13,59.32.0.0/13,59.40.0.0/15,59.42.0.0/16,59.43.0.0/16,59.44.0.0/14,59.48.0.0/16,59.49.0.0/17,59.49.128.0/17,59.50.0.0/16,59.51.0.0/17,59.51.128.0/17,59.52.0.0/14,59.56.0.0/14,59.60.0.0/15,59.62.0.0/15,59.64.0.0/14,59.68.0.0/14,59.72.0.0/15,59.74.0.0/15,59.76.0.0/16,59.77.0.0/16,59.78.0.0/15,59.80.0.0/14,59.107.0.0/17,59.107.128.0/17,59.108.0.0/15,59.110.0.0/15,59.151.0.0/17,59.155.0.0/16,59.172.0.0/15,59.174.0.0/15,59.191.0.0/17,59.192.0.0/10,60.0.0.0/13,60.8.0.0/15,60.10.0.0/16,60.11.0.0/16,60.12.0.0/16,60.13.0.0/18,60.13.64.0/18,60.13.128.0/17,60.14.0.0/15,60.16.0.0/13,60.24.0.0/14,60.28.0.0/15,60.30.0.0/16,60.31.0.0/16,60.55.0.0/16,60.63.0.0/16,60.160.0.0/15,60.162.0.0/15,60.164.0.0/15,60.166.0.0/15,60.168.0.0/13,60.176.0.0/12,60.194.0.0/15,60.200.0.0/14,60.204.0.0/16,60.205.0.0/16,60.206.0.0/15,60.208.0.0/13,60.216.0.0/15,60.218.0.0/15,60.220.0.0/14,60.232.0.0/15,60.235.0.0/16,60.245.128.0/17,60.247.0.0/16,60.252.0.0/16,60.253.128.0/17,60.255.0.0/16,61.4.80.0/20,61.4.176.0/20,61.8.160.0/20,61.28.0.0/20,61.28.16.0/20,61.28.32.0/19,61.28.64.0/18,61.29.128.0/18,61.29.192.0/19,61.29.224.0/20,61.29.240.0/20,61.45.128.0/18,61.47.128.0/18,61.48.0.0/14,61.52.0.0/15,61.54.0.0/16,61.55.0.0/16,61.87.192.0/18,61.128.0.0/15,61.130.0.0/15,61.132.0.0/16,61.133.0.0/17,61.133.128.0/17,61.134.0.0/18,61.134.64.0/19,61.134.96.0/19,61.134.128.0/18,61.134.192.0/18,61.135.0.0/16,61.136.0.0/18,61.136.64.0/18,61.136.128.0/17,61.137.0.0/17,61.137.128.0/17,61.138.0.0/18,61.138.64.0/18,61.138.128.0/18,61.138.192.0/18,61.139.0.0/17,61.139.128.0/18,61.139.192.0/18,61.140.0.0/14,61.144.0.0/14,61.148.0.0/15,61.150.0.0/15,61.152.0.0/16,61.153.0.0/16,61.154.0.0/15,61.156.0.0/16,61.157.0.0/16,61.158.0.0/17,61.158.128.0/17,61.159.0.0/18,61.159.64.0/18,61.159.128.0/17,61.160.0.0/16,61.161.0.0/18,61.161.64.0/18,61.161.128.0/17,61.162.0.0/16,61.163.0.0/16,61.164.0.0/16,61.165.0.0/16,61.166.0.0/16,61.167.0.0/16,61.168.0.0/16,61.169.0.0/16,61.170.0.0/15,61.172.0.0/14,61.176.0.0/16,61.177.0.0/16,61.178.0.0/16,61.179.0.0/16,61.180.0.0/17,61.180.128.0/17,61.181.0.0/16,61.182.0.0/16,61.183.0.0/16,61.184.0.0/14,61.188.0.0/16,61.189.0.0/17,61.189.128.0/17,61.190.0.0/15,61.232.0.0/14,61.236.0.0/15,61.240.0.0/14,116.1.0.0/16,116.2.0.0/15,116.4.0.0/14,116.8.0.0/14,116.13.0.0/16,116.16.0.0/12,116.52.0.0/14,116.56.0.0/15,116.58.128.0/20,116.58.208.0/20,116.60.0.0/14,116.66.0.0/17,116.69.0.0/16,116.70.0.0/17,116.76.0.0/15,116.78.0.0/15,116.89.144.0/20,116.90.184.0/21,116.95.0.0/16,116.112.0.0/14
netsh advfirewall firewall add rule name="China IP Ban - Outgoing (Part 2)" action=block dir=out protocol=any localip=any remoteip=116.116.0.0/15,116.128.0.0/10,116.192.0.0/16,116.193.16.0/20,116.193.32.0/19,116.194.0.0/15,116.196.0.0/16,116.198.0.0/16,116.199.0.0/17,116.199.128.0/19,116.204.0.0/15,116.207.0.0/16,116.208.0.0/14,116.212.160.0/20,116.213.64.0/18,116.213.128.0/17,116.214.32.0/19,116.214.64.0/20,116.214.128.0/17,116.215.0.0/16,116.216.0.0/14,116.224.0.0/12,116.242.0.0/15,116.244.0.0/15,116.246.0.0/15,116.248.0.0/15,116.252.0.0/15,116.254.128.0/17,116.255.128.0/17,117.8.0.0/13,117.21.0.0/16,117.22.0.0/15,117.24.0.0/13,117.32.0.0/13,117.40.0.0/14,117.44.0.0/15,117.48.0.0/14,117.53.48.0/20,117.53.176.0/20,121.0.16.0/20,121.4.0.0/15,121.8.0.0/13,121.16.0.0/13,121.24.0.0/14,121.28.0.0/15,121.30.0.0/16,121.31.0.0/16,121.32.0.0/14,121.36.0.0/16,121.37.0.0/16,121.38.0.0/15,121.40.0.0/14,121.46.0.0/16,121.47.0.0/16,121.48.0.0/15,121.51.0.0/16,121.55.0.0/18,121.56.0.0/15,121.58.0.0/17,121.59.0.0/16,121.60.0.0/14,121.68.0.0/14,121.76.0.0/15,121.89.0.0/16,121.100.128.0/17,121.192.0.0/16,121.193.0.0/16,121.194.0.0/15,121.201.0.0/16,121.204.0.0/14,121.224.0.0/12,121.248.0.0/14,121.255.0.0/16,122.0.64.0/18,122.0.128.0/17,122.4.0.0/14,122.8.0.0/13,122.48.0.0/16,122.49.0.0/18,122.51.0.0/16,122.64.0.0/11,122.96.0.0/15,122.102.0.0/20,122.102.64.0/20,122.102.80.0/20,122.136.0.0/13,122.144.128.0/17,122.152.192.0/18,122.156.0.0/14,122.192.0.0/14,122.198.0.0/16,122.200.64.0/18,122.204.0.0/14,122.224.0.0/12,122.240.0.0/13,122.248.48.0/20,123.0.128.0/18,123.4.0.0/14,123.8.0.0/13,123.49.128.0/17,123.52.0.0/14,123.56.0.0/13,123.64.0.0/11,123.96.0.0/15,123.98.0.0/17,123.99.128.0/17,123.100.0.0/19,123.101.0.0/16,123.103.0.0/17,123.108.128.0/20,123.108.208.0/20,123.112.0.0/12,123.128.0.0/13,123.136.80.0/20,123.137.0.0/16,123.138.0.0/15,123.144.0.0/14,123.148.0.0/16,123.149.0.0/16,123.150.0.0/15,123.152.0.0/13,123.160.0.0/14,123.164.0.0/14,123.168.0.0/14,123.172.0.0/15,123.174.0.0/15,123.176.80.0/20,123.177.0.0/16,123.178.0.0/15,123.180.0.0/14,123.184.0.0/14,123.188.0.0/14,123.196.0.0/15,123.199.128.0/17,123.206.0.0/15,123.232.0.0/14,123.242.0.0/17,123.244.0.0/14,123.249.0.0/16,123.253.0.0/16,124.6.64.0/18,124.14.0.0/15,124.16.0.0/15,124.20.0.0/16,124.21.0.0/20,124.21.16.0/20,124.21.32.0/19,124.21.64.0/18,124.21.128.0/17,124.22.0.0/15,124.29.0.0/17,124.40.128.0/18,124.42.0.0/17,124.47.0.0/18,124.64.0.0/15,124.66.0.0/17,124.67.0.0/16,124.68.0.0/14,124.72.0.0/16,124.73.0.0/16,124.74.0.0/15,124.76.0.0/14,124.88.0.0/16,124.89.0.0/17,124.89.128.0/17,124.90.0.0/15,124.92.0.0/14,124.108.8.0/21,124.108.40.0/21,124.112.0.0/15,124.114.0.0/15,124.116.0.0/16,124.117.0.0/16,124.118.0.0/15,124.126.0.0/15,124.128.0.0/13,124.147.128.0/17,124.156.0.0/16,124.160.0.0/16,124.161.0.0/16,124.162.0.0/16,124.163.0.0/16,124.164.0.0/14,124.172.0.0/15,124.174.0.0/15,124.192.0.0/15,124.196.0.0/16,124.200.0.0/13,124.220.0.0/14,124.224.0.0/16,124.225.0.0/16,124.226.0.0/15,124.228.0.0/14,124.232.0.0/15,124.234.0.0/15,124.236.0.0/14,124.240.0.0/17,124.242.0.0/16,124.243.192.0/18,124.248.0.0/17,124.249.0.0/16,124.250.0.0/15,124.254.0.0/18,125.31.192.0/18,125.32.0.0/16,125.33.0.0/16,125.34.0.0/16,125.35.0.0/17,125.35.128.0/17,125.36.0.0/14,125.40.0.0/13,125.58.128.0/17,125.62.0.0/18,125.64.0.0/13,125.72.0.0/16,125.73.0.0/16,125.74.0.0/15,125.76.0.0/17,125.76.128.0/17,125.77.0.0/16
netsh advfirewall firewall add rule name="China IP Ban - Outgoing (Part 3)" action=block dir=out protocol=any localip=any remoteip=125.78.0.0/15,125.80.0.0/13,125.88.0.0/13,125.96.0.0/15,125.98.0.0/16,125.104.0.0/13,125.112.0.0/12,125.169.0.0/16,125.171.0.0/16,125.208.0.0/18,125.210.0.0/16,125.211.0.0/16,125.213.0.0/17,125.215.0.0/18,125.216.0.0/15,125.218.0.0/16,125.219.0.0/16,125.220.0.0/15,125.222.0.0/15,125.254.128.0/18,125.254.192.0/18,134.196.0.0/16,159.226.0.0/16,161.207.0.0/16,162.105.0.0/16,166.111.0.0/16,167.139.0.0/16,168.160.0.0/16,192.83.122.0/24,192.83.169.0/24,192.124.154.0/24,192.188.170.0/24,198.17.7.0/24,202.0.110.0/24,202.0.176.0/22,202.4.128.0/19,202.4.252.0/22,202.8.128.0/19,202.10.64.0/20,202.14.88.0/24,202.14.235.0/24,202.14.236.0/23,202.14.238.0/24,202.20.120.0/24,202.22.248.0/22,202.22.252.0/22,202.38.0.0/23,202.38.2.0/23,202.38.4.0/22,202.38.8.0/21,202.38.64.0/19,202.38.96.0/19,202.38.128.0/23,202.38.130.0/23,202.38.132.0/23,202.38.134.0/24,202.38.135.0/24,202.38.136.0/24,202.38.137.0/24,202.38.138.0/24,202.38.140.0/23,202.38.142.0/24,202.38.143.0/24,202.38.146.0/23,202.38.149.0/24,202.38.150.0/23,202.38.152.0/23,202.38.154.0/23,202.38.156.0/24,202.38.158.0/23,202.38.160.0/23,202.38.164.0/22,202.38.168.0/24,202.38.169.0/24,202.38.170.0/24,202.38.171.0/24,202.38.172.0/24,202.38.173.0/24,202.38.174.0/24,202.38.175.0/24,202.38.176.0/23,202.38.184.0/21,202.38.192.0/18,202.41.152.0/21,202.41.240.0/20,202.43.144.0/20,202.46.32.0/19,202.46.224.0/20,202.60.112.0/20,202.63.248.0/22,202.69.4.0/22,202.69.16.0/20,202.70.0.0/19,202.74.8.0/21,202.75.208.0/20,202.85.208.0/20,202.90.0.0/22,202.90.224.0/20,202.90.252.0/22,202.91.0.0/22,202.91.128.0/22,202.91.176.0/20,202.91.224.0/19,202.92.0.0/22,202.92.252.0/22,202.93.0.0/22,202.93.252.0/22,202.94.0.0/19,202.95.0.0/22,202.95.4.0/22,202.95.8.0/21,202.95.16.0/20,202.95.252.0/22,202.96.0.0/18,202.96.64.0/21,202.96.72.0/21,202.96.80.0/20,202.96.96.0/21,202.96.104.0/21,202.96.112.0/20,202.96.128.0/21,202.96.136.0/21,202.96.144.0/20,202.96.160.0/21,202.96.168.0/21,202.96.176.0/20,202.96.192.0/21,202.96.200.0/21,202.96.208.0/20,202.96.224.0/21,202.96.232.0/21,202.96.240.0/20,202.97.0.0/21,202.97.8.0/21,202.97.16.0/20,202.97.32.0/19,202.97.64.0/19,202.97.96.0/20,202.97.112.0/20,202.97.128.0/18,202.97.192.0/19,202.97.224.0/21,202.97.232.0/21,202.97.240.0/20,202.98.0.0/21,202.98.8.0/21,202.98.16.0/20,202.98.32.0/21,202.98.40.0/21,202.98.48.0/20,202.98.64.0/19,202.98.96.0/21,202.98.104.0/21,202.98.112.0/20,202.98.128.0/19,202.98.160.0/21,202.98.168.0/21,202.98.176.0/20,202.98.192.0/21,202.98.200.0/21,202.98.208.0/20,202.98.224.0/21,202.98.232.0/21,202.98.240.0/20,202.99.0.0/18,202.99.64.0/19,202.99.96.0/21,202.99.104.0/21,202.99.112.0/20,202.99.128.0/19,202.99.160.0/21,202.99.168.0/21,202.99.176.0/20,202.99.192.0/21,202.99.200.0/21,202.99.208.0/20,202.99.224.0/21,202.99.232.0/21,202.99.240.0/20,202.100.0.0/21,202.100.8.0/21,202.100.16.0/20,202.100.32.0/19,202.100.64.0/21,202.100.72.0/21,202.100.80.0/20,202.100.96.0/21,202.100.104.0/21,202.100.112.0/20,202.100.128.0/21,202.100.136.0/21,202.100.144.0/20,202.100.160.0/21,202.100.168.0/21,202.100.176.0/20,202.100.192.0/21,202.100.200.0/21,202.100.208.0/20,202.100.224.0/19,202.101.0.0/18,202.101.64.0/19,202.101.96.0/19,202.101.128.0/18,202.101.192.0/19,202.101.224.0/21,202.101.232.0/21,202.101.240.0/20,202.102.0.0/19,202.102.32.0/19,202.102.64.0/18,202.102.128.0/21,202.102.136.0/21,202.102.144.0/20,202.102.160.0/19,202.102.192.0/21,202.102.200.0/21,202.102.208.0/20,202.102.224.0/21,202.102.232.0/21,202.102.240.0/20
netsh advfirewall firewall add rule name="China IP Ban - Outgoing (Part 4)" action=block dir=out protocol=any localip=any remoteip=202.103.0.0/21,202.103.8.0/21,202.103.16.0/20,202.103.32.0/19,202.103.64.0/19,202.103.96.0/21,202.103.104.0/21,202.103.112.0/20,202.103.128.0/18,202.103.192.0/19,202.103.224.0/21,202.103.232.0/21,202.103.240.0/20,202.104.0.0/15,202.106.0.0/16,202.107.0.0/17,202.107.128.0/17,202.108.0.0/16,202.109.0.0/16,202.110.0.0/18,202.110.64.0/18,202.110.128.0/18,202.110.192.0/18,202.111.0.0/17,202.111.128.0/19,202.111.160.0/19,202.111.192.0/18,202.112.0.0/16,202.113.0.0/20,202.113.16.0/20,202.113.32.0/19,202.113.64.0/18,202.113.128.0/18,202.113.192.0/19,202.113.224.0/20,202.113.240.0/20,202.114.0.0/19,202.114.32.0/19,202.114.64.0/18,202.114.128.0/17,202.115.0.0/19,202.115.32.0/19,202.115.64.0/18,202.115.128.0/17,202.116.0.0/19,202.116.32.0/20,202.116.48.0/20,202.116.64.0/19,202.116.96.0/19,202.116.128.0/17,202.117.0.0/18,202.117.64.0/18,202.117.128.0/17,202.118.0.0/19,202.118.32.0/19,202.118.64.0/18,202.118.128.0/17,202.119.0.0/19,202.119.32.0/19,202.119.64.0/20,202.119.80.0/20,202.119.96.0/19,202.119.128.0/17,202.120.0.0/18,202.120.64.0/18,202.120.128.0/17,202.121.0.0/16,202.122.0.0/21,202.122.32.0/21,202.122.64.0/19,202.122.112.0/21,202.122.128.0/24,202.123.96.0/20,202.125.176.0/20,202.127.0.0/23,202.127.2.0/24,202.127.3.0/24,202.127.4.0/24,202.127.5.0/24,202.127.6.0/23,202.127.12.0/22,202.127.16.0/20,202.127.40.0/21,202.127.48.0/20,202.127.112.0/20,202.127.128.0/20,202.127.144.0/20,202.127.160.0/21,202.127.192.0/23,202.127.194.0/23,202.127.196.0/22,202.127.200.0/21,202.127.208.0/24,202.127.209.0/24,202.127.212.0/22,202.127.216.0/21,202.127.224.0/19,202.130.0.0/19,202.130.224.0/19,202.131.16.0/21,202.131.48.0/20,202.131.208.0/20,202.136.48.0/20,202.136.208.0/20,202.136.224.0/20,202.141.160.0/19,202.142.16.0/20,202.143.16.0/20,202.148.96.0/19,202.149.160.0/19,202.149.224.0/19,202.150.16.0/20,202.152.176.0/20,202.153.48.0/20,202.158.160.0/19,202.160.176.0/20,202.164.0.0/20,202.165.96.0/20,202.165.176.0/20,202.165.208.0/20,202.168.160.0/20,202.168.176.0/20,202.170.128.0/19,202.170.216.0/21,202.173.8.0/21,202.173.224.0/19,202.179.240.0/20,202.180.128.0/19,202.181.112.0/20,202.189.80.0/20,202.192.0.0/13,202.200.0.0/14,202.204.0.0/14,203.18.50.0/24,203.79.0.0/20,203.80.144.0/20,203.81.16.0/20,203.83.56.0/21,203.86.0.0/19,203.86.32.0/19,203.86.64.0/20,203.86.80.0/20,203.88.32.0/19,203.88.192.0/19,203.89.0.0/22,203.90.0.0/22,203.90.128.0/19,203.90.160.0/19,203.90.192.0/19,203.91.32.0/19,203.91.96.0/20,203.91.120.0/21,203.92.0.0/22,203.92.160.0/19,203.93.0.0/22,203.93.4.0/22,203.93.8.0/24,203.93.9.0/24,203.93.10.0/23,203.93.12.0/22,203.93.16.0/20,203.93.32.0/19,203.93.64.0/18,203.93.128.0/21,203.93.136.0/22,203.93.140.0/24,203.93.141.0/24,203.93.142.0/23,203.93.144.0/20,203.93.160.0/19,203.93.192.0/18,203.94.0.0/22,203.94.4.0/22,203.94.8.0/21,203.94.16.0/20,203.95.0.0/21,203.95.96.0/20,203.95.112.0/20,203.99.16.0/20,203.99.80.0/20,203.100.32.0/20,203.100.80.0/20,203.100.96.0/19,203.100.192.0/20,203.110.160.0/19,203.118.192.0/19,203.119.24.0/21,203.119.32.0/22,203.128.32.0/19,203.128.96.0/19,203.130.32.0/19,203.132.32.0/19,203.134.240.0/21,203.135.96.0/20,203.135.112.0/20,203.135.160.0/20,203.148.0.0/18,203.152.64.0/19,203.156.192.0/18,203.158.16.0/21,203.161.192.0/19,203.166.160.0/19,203.171.224.0/20,203.174.96.0/19,203.175.128.0/19,203.175.192.0/18,203.176.168.0/21,203.184.80.0/20,203.187.160.0/19,203.190.96.0/20,203.191.16.0/20,203.191.64.0/18,203.191.144.0/21,203.191.152.0/21,203.192.0.0/19,203.196.0.0/21,203.207.64.0/18,203.207.128.0/17,203.208.0.0/20,203.208.16.0/22
netsh advfirewall firewall add rule name="China IP Ban - Outgoing (Part 5)" action=block dir=out protocol=any localip=any remoteip=203.208.32.0/19,203.209.224.0/19,203.212.0.0/20,203.212.80.0/20,203.222.192.0/20,203.223.0.0/20,210.2.0.0/20,210.2.16.0/20,210.5.0.0/19,210.5.144.0/20,210.12.0.0/18,210.12.64.0/18,210.12.128.0/18,210.12.192.0/18,210.13.0.0/18,210.13.64.0/18,210.13.128.0/17,210.14.64.0/19,210.14.128.0/19,210.14.160.0/19,210.14.192.0/19,210.14.224.0/19,210.15.0.0/19,210.15.32.0/19,210.15.64.0/19,210.15.96.0/19,210.15.128.0/18,210.16.128.0/18,210.21.0.0/17,210.21.128.0/17,210.22.0.0/16,210.23.32.0/19,210.25.0.0/16,210.26.0.0/15,210.28.0.0/14,210.32.0.0/14,210.36.0.0/14,210.40.0.0/13,210.51.0.0/16,210.52.0.0/18,210.52.64.0/18,210.52.128.0/17,210.53.0.0/17,210.53.128.0/17,210.56.192.0/19,210.72.0.0/17,210.72.128.0/19,210.72.160.0/19,210.72.192.0/18,210.73.0.0/19,210.73.32.0/19,210.73.64.0/18,210.73.128.0/17,210.74.0.0/19,210.74.32.0/19,210.74.64.0/19,210.74.96.0/19,210.74.128.0/19,210.74.160.0/19,210.74.192.0/18,210.75.0.0/16,210.76.0.0/19,210.76.32.0/19,210.76.64.0/18,210.76.128.0/17,210.77.0.0/16,210.78.0.0/19,210.78.32.0/19,210.78.64.0/18,210.78.128.0/19,210.78.160.0/19,210.78.192.0/18,210.79.64.0/18,210.79.224.0/19,210.82.0.0/15,210.87.128.0/20,210.87.144.0/20,210.87.160.0/19,210.185.192.0/18,210.192.96.0/19,211.64.0.0/14,211.68.0.0/15,211.70.0.0/15,211.80.0.0/16,211.81.0.0/16,211.82.0.0/16,211.83.0.0/16,211.84.0.0/15,211.86.0.0/15,211.88.0.0/16,211.89.0.0/16,211.90.0.0/15,211.92.0.0/15,211.94.0.0/15,211.96.0.0/15,211.98.0.0/15,211.100.0.0/16,211.101.0.0/18,211.101.64.0/18,211.101.128.0/17,211.102.0.0/16,211.103.0.0/17,211.103.128.0/17,211.136.0.0/14,211.140.0.0/15,211.142.0.0/17,211.142.128.0/17,211.143.0.0/16,211.144.0.0/15,211.146.0.0/16,211.147.0.0/16,211.148.0.0/14,211.152.0.0/15,211.154.0.0/16,211.155.0.0/18,211.155.64.0/19,211.155.96.0/19,211.155.128.0/17,211.156.0.0/14,211.160.0.0/14,211.164.0.0/14,218.0.0.0/16,218.1.0.0/16,218.2.0.0/15,218.4.0.0/15,218.6.0.0/16,218.7.0.0/16,218.8.0.0/15,218.10.0.0/16,218.11.0.0/16,218.12.0.0/16,218.13.0.0/16,218.14.0.0/15,218.16.0.0/14,218.20.0.0/16,218.21.0.0/17,218.21.128.0/17,218.22.0.0/15,218.24.0.0/15,218.26.0.0/16,218.27.0.0/16,218.28.0.0/15,218.30.0.0/15,218.56.0.0/14,218.60.0.0/15,218.62.0.0/17,218.62.128.0/17,218.63.0.0/16,218.64.0.0/15,218.66.0.0/16,218.67.0.0/17,218.67.128.0/17,218.68.0.0/15,218.70.0.0/15,218.72.0.0/14,218.76.0.0/15,218.78.0.0/15,218.80.0.0/14,218.84.0.0/14,218.88.0.0/13,218.96.0.0/14,218.104.0.0/17,218.104.128.0/19,218.104.160.0/19,218.104.192.0/21,218.104.200.0/21,218.104.208.0/20,218.104.224.0/19,218.105.0.0/16,218.106.0.0/15,218.108.0.0/16,218.109.0.0/16,218.185.192.0/19,218.192.0.0/16,218.193.0.0/16,218.194.0.0/16,218.195.0.0/16,218.196.0.0/14,218.200.0.0/14,218.204.0.0/15,218.206.0.0/15,218.240.0.0/14,218.244.0.0/15,218.246.0.0/15,218.249.0.0/16,219.72.0.0/16,219.82.0.0/16,219.128.0.0/12,219.144.0.0/14,219.148.0.0/16,219.149.0.0/17,219.149.128.0/18,219.149.192.0/18,219.150.0.0/19,219.150.32.0/19,219.150.64.0/19,219.150.96.0/20,219.150.112.0/20,219.150.128.0/17,219.151.0.0/19,219.151.32.0/19,219.151.64.0/18,219.151.128.0/17,219.152.0.0/15,219.154.0.0/15,219.156.0.0/15,219.158.0.0/17,219.158.128.0/17,219.159.0.0/18,219.159.64.0/18,219.159.128.0/17,219.216.0.0/15,219.218.0.0/15,219.220.0.0/16,219.221.0.0/16,219.222.0.0/15,219.224.0.0/15,219.226.0.0/16,219.227.0.0/16,219.228.0.0/15
netsh advfirewall firewall add rule name="China IP Ban - Outgoing (Part 6)" action=block dir=out protocol=any localip=any remoteip=219.230.0.0/15,219.232.0.0/14,219.236.0.0/15,219.238.0.0/15,219.242.0.0/15,219.244.0.0/14,220.101.192.0/18,220.112.0.0/14,220.152.128.0/17,220.154.0.0/15,220.160.0.0/11,220.192.0.0/15,220.194.0.0/15,220.196.0.0/14,220.200.0.0/13,220.231.0.0/18,220.231.128.0/17,220.232.64.0/18,220.234.0.0/16,220.242.0.0/15,220.248.0.0/14,220.252.0.0/16,221.0.0.0/15,221.2.0.0/16,221.3.0.0/17,221.3.128.0/17,221.4.0.0/16,221.5.0.0/17,221.5.128.0/17,221.6.0.0/16,221.7.0.0/19,221.7.32.0/19,221.7.64.0/19,221.7.96.0/19,221.7.128.0/17,221.8.0.0/15,221.10.0.0/16,221.11.0.0/17,221.11.128.0/18,221.11.192.0/19,221.11.224.0/19,221.12.0.0/17,221.12.128.0/18,221.13.0.0/18,221.13.64.0/19,221.13.96.0/19,221.13.128.0/17,221.14.0.0/15,221.122.0.0/15,221.129.0.0/16,221.130.0.0/15,221.133.224.0/19,221.136.0.0/16,221.137.0.0/16,221.172.0.0/14,221.176.0.0/13,221.192.0.0/15,221.194.0.0/16,221.195.0.0/16,221.196.0.0/15,221.198.0.0/16,221.199.0.0/19,221.199.32.0/20,221.199.48.0/20,221.199.64.0/18,221.199.128.0/18,221.199.192.0/20,221.199.224.0/19,221.200.0.0/14,221.204.0.0/15,221.206.0.0/16,221.207.0.0/18,221.207.64.0/18,221.207.128.0/17,221.208.0.0/14,221.212.0.0/16,221.213.0.0/16,221.214.0.0/15,221.216.0.0/13,221.224.0.0/13,221.232.0.0/14,221.236.0.0/15,221.238.0.0/16,221.239.0.0/17,221.239.128.0/17,222.16.0.0/15,222.18.0.0/15,222.20.0.0/15,222.22.0.0/16,222.23.0.0/16,222.24.0.0/15,222.26.0.0/15,222.28.0.0/14,222.32.0.0/11,222.64.0.0/13,222.72.0.0/15,222.74.0.0/16,222.75.0.0/16,222.76.0.0/14,222.80.0.0/15,222.82.0.0/16,222.83.0.0/17,222.83.128.0/17,222.84.0.0/16,222.85.0.0/17,222.85.128.0/17,222.86.0.0/15,222.88.0.0/15,222.90.0.0/15,222.92.0.0/14,222.125.0.0/16,222.126.128.0/17,222.128.0.0/14,222.132.0.0/14,222.136.0.0/13,222.160.0.0/15,222.162.0.0/16,222.163.0.0/19,222.163.32.0/19,222.163.64.0/18,222.163.128.0/17,222.168.0.0/15,222.170.0.0/15,222.172.0.0/17,222.172.128.0/17,222.173.0.0/16,222.174.0.0/15,222.176.0.0/13,222.184.0.0/13,222.192.0.0/14,222.196.0.0/15,222.198.0.0/16,222.199.0.0/16,222.200.0.0/14,222.204.0.0/15,222.206.0.0/15,222.208.0.0/13,222.216.0.0/15,222.218.0.0/16,222.219.0.0/16,222.220.0.0/15,222.222.0.0/15,222.240.0.0/13,222.248.0.0/16,222.249.0.0/17,222.249.128.0/19,222.249.160.0/20,222.249.176.0/20,222.249.192.0/18
netsh advfirewall firewall add rule name="China IP Ban - Incoming (Part 1)" action=block dir=in protocol=any localip=any remoteip=58.14.0.0/15,58.16.0.0/16,58.17.0.0/17,58.17.128.0/17,58.18.0.0/16,58.19.0.0/16,58.20.0.0/16,58.21.0.0/16,58.22.0.0/15,58.24.0.0/15,58.30.0.0/15,58.32.0.0/13,58.40.0.0/15,58.42.0.0/16,58.43.0.0/16,58.44.0.0/14,58.48.0.0/13,58.56.0.0/15,58.58.0.0/16,58.59.0.0/17,58.59.128.0/17,58.60.0.0/14,58.66.0.0/15,58.68.128.0/17,58.82.0.0/15,58.87.64.0/18,58.99.128.0/17,58.100.0.0/15,58.116.0.0/14,58.128.0.0/13,58.144.0.0/16,58.154.0.0/15,58.192.0.0/15,58.194.0.0/15,58.196.0.0/15,58.198.0.0/15,58.200.0.0/13,58.208.0.0/12,58.240.0.0/15,58.242.0.0/15,58.244.0.0/15,58.246.0.0/15,58.248.0.0/13,59.32.0.0/13,59.40.0.0/15,59.42.0.0/16,59.43.0.0/16,59.44.0.0/14,59.48.0.0/16,59.49.0.0/17,59.49.128.0/17,59.50.0.0/16,59.51.0.0/17,59.51.128.0/17,59.52.0.0/14,59.56.0.0/14,59.60.0.0/15,59.62.0.0/15,59.64.0.0/14,59.68.0.0/14,59.72.0.0/15,59.74.0.0/15,59.76.0.0/16,59.77.0.0/16,59.78.0.0/15,59.80.0.0/14,59.107.0.0/17,59.107.128.0/17,59.108.0.0/15,59.110.0.0/15,59.151.0.0/17,59.155.0.0/16,59.172.0.0/15,59.174.0.0/15,59.191.0.0/17,59.192.0.0/10,60.0.0.0/13,60.8.0.0/15,60.10.0.0/16,60.11.0.0/16,60.12.0.0/16,60.13.0.0/18,60.13.64.0/18,60.13.128.0/17,60.14.0.0/15,60.16.0.0/13,60.24.0.0/14,60.28.0.0/15,60.30.0.0/16,60.31.0.0/16,60.55.0.0/16,60.63.0.0/16,60.160.0.0/15,60.162.0.0/15,60.164.0.0/15,60.166.0.0/15,60.168.0.0/13,60.176.0.0/12,60.194.0.0/15,60.200.0.0/14,60.204.0.0/16,60.205.0.0/16,60.206.0.0/15,60.208.0.0/13,60.216.0.0/15,60.218.0.0/15,60.220.0.0/14,60.232.0.0/15,60.235.0.0/16,60.245.128.0/17,60.247.0.0/16,60.252.0.0/16,60.253.128.0/17,60.255.0.0/16,61.4.80.0/20,61.4.176.0/20,61.8.160.0/20,61.28.0.0/20,61.28.16.0/20,61.28.32.0/19,61.28.64.0/18,61.29.128.0/18,61.29.192.0/19,61.29.224.0/20,61.29.240.0/20,61.45.128.0/18,61.47.128.0/18,61.48.0.0/14,61.52.0.0/15,61.54.0.0/16,61.55.0.0/16,61.87.192.0/18,61.128.0.0/15,61.130.0.0/15,61.132.0.0/16,61.133.0.0/17,61.133.128.0/17,61.134.0.0/18,61.134.64.0/19,61.134.96.0/19,61.134.128.0/18,61.134.192.0/18,61.135.0.0/16,61.136.0.0/18,61.136.64.0/18,61.136.128.0/17,61.137.0.0/17,61.137.128.0/17,61.138.0.0/18,61.138.64.0/18,61.138.128.0/18,61.138.192.0/18,61.139.0.0/17,61.139.128.0/18,61.139.192.0/18,61.140.0.0/14,61.144.0.0/14,61.148.0.0/15,61.150.0.0/15,61.152.0.0/16,61.153.0.0/16,61.154.0.0/15,61.156.0.0/16,61.157.0.0/16,61.158.0.0/17,61.158.128.0/17,61.159.0.0/18,61.159.64.0/18,61.159.128.0/17,61.160.0.0/16,61.161.0.0/18,61.161.64.0/18,61.161.128.0/17,61.162.0.0/16,61.163.0.0/16,61.164.0.0/16,61.165.0.0/16,61.166.0.0/16,61.167.0.0/16,61.168.0.0/16,61.169.0.0/16,61.170.0.0/15,61.172.0.0/14,61.176.0.0/16,61.177.0.0/16,61.178.0.0/16,61.179.0.0/16,61.180.0.0/17,61.180.128.0/17,61.181.0.0/16,61.182.0.0/16,61.183.0.0/16,61.184.0.0/14,61.188.0.0/16,61.189.0.0/17,61.189.128.0/17,61.190.0.0/15,61.232.0.0/14,61.236.0.0/15,61.240.0.0/14,116.1.0.0/16,116.2.0.0/15,116.4.0.0/14,116.8.0.0/14,116.13.0.0/16,116.16.0.0/12,116.52.0.0/14,116.56.0.0/15,116.58.128.0/20,116.58.208.0/20,116.60.0.0/14,116.66.0.0/17,116.69.0.0/16,116.70.0.0/17,116.76.0.0/15,116.78.0.0/15,116.89.144.0/20,116.90.184.0/21,116.95.0.0/16,116.112.0.0/14
netsh advfirewall firewall add rule name="China IP Ban - Incoming (Part 2)" action=block dir=in protocol=any localip=any remoteip=116.116.0.0/15,116.128.0.0/10,116.192.0.0/16,116.193.16.0/20,116.193.32.0/19,116.194.0.0/15,116.196.0.0/16,116.198.0.0/16,116.199.0.0/17,116.199.128.0/19,116.204.0.0/15,116.207.0.0/16,116.208.0.0/14,116.212.160.0/20,116.213.64.0/18,116.213.128.0/17,116.214.32.0/19,116.214.64.0/20,116.214.128.0/17,116.215.0.0/16,116.216.0.0/14,116.224.0.0/12,116.242.0.0/15,116.244.0.0/15,116.246.0.0/15,116.248.0.0/15,116.252.0.0/15,116.254.128.0/17,116.255.128.0/17,117.8.0.0/13,117.21.0.0/16,117.22.0.0/15,117.24.0.0/13,117.32.0.0/13,117.40.0.0/14,117.44.0.0/15,117.48.0.0/14,117.53.48.0/20,117.53.176.0/20,121.0.16.0/20,121.4.0.0/15,121.8.0.0/13,121.16.0.0/13,121.24.0.0/14,121.28.0.0/15,121.30.0.0/16,121.31.0.0/16,121.32.0.0/14,121.36.0.0/16,121.37.0.0/16,121.38.0.0/15,121.40.0.0/14,121.46.0.0/16,121.47.0.0/16,121.48.0.0/15,121.51.0.0/16,121.55.0.0/18,121.56.0.0/15,121.58.0.0/17,121.59.0.0/16,121.60.0.0/14,121.68.0.0/14,121.76.0.0/15,121.89.0.0/16,121.100.128.0/17,121.192.0.0/16,121.193.0.0/16,121.194.0.0/15,121.201.0.0/16,121.204.0.0/14,121.224.0.0/12,121.248.0.0/14,121.255.0.0/16,122.0.64.0/18,122.0.128.0/17,122.4.0.0/14,122.8.0.0/13,122.48.0.0/16,122.49.0.0/18,122.51.0.0/16,122.64.0.0/11,122.96.0.0/15,122.102.0.0/20,122.102.64.0/20,122.102.80.0/20,122.136.0.0/13,122.144.128.0/17,122.152.192.0/18,122.156.0.0/14,122.192.0.0/14,122.198.0.0/16,122.200.64.0/18,122.204.0.0/14,122.224.0.0/12,122.240.0.0/13,122.248.48.0/20,123.0.128.0/18,123.4.0.0/14,123.8.0.0/13,123.49.128.0/17,123.52.0.0/14,123.56.0.0/13,123.64.0.0/11,123.96.0.0/15,123.98.0.0/17,123.99.128.0/17,123.100.0.0/19,123.101.0.0/16,123.103.0.0/17,123.108.128.0/20,123.108.208.0/20,123.112.0.0/12,123.128.0.0/13,123.136.80.0/20,123.137.0.0/16,123.138.0.0/15,123.144.0.0/14,123.148.0.0/16,123.149.0.0/16,123.150.0.0/15,123.152.0.0/13,123.160.0.0/14,123.164.0.0/14,123.168.0.0/14,123.172.0.0/15,123.174.0.0/15,123.176.80.0/20,123.177.0.0/16,123.178.0.0/15,123.180.0.0/14,123.184.0.0/14,123.188.0.0/14,123.196.0.0/15,123.199.128.0/17,123.206.0.0/15,123.232.0.0/14,123.242.0.0/17,123.244.0.0/14,123.249.0.0/16,123.253.0.0/16,124.6.64.0/18,124.14.0.0/15,124.16.0.0/15,124.20.0.0/16,124.21.0.0/20,124.21.16.0/20,124.21.32.0/19,124.21.64.0/18,124.21.128.0/17,124.22.0.0/15,124.29.0.0/17,124.40.128.0/18,124.42.0.0/17,124.47.0.0/18,124.64.0.0/15,124.66.0.0/17,124.67.0.0/16,124.68.0.0/14,124.72.0.0/16,124.73.0.0/16,124.74.0.0/15,124.76.0.0/14,124.88.0.0/16,124.89.0.0/17,124.89.128.0/17,124.90.0.0/15,124.92.0.0/14,124.108.8.0/21,124.108.40.0/21,124.112.0.0/15,124.114.0.0/15,124.116.0.0/16,124.117.0.0/16,124.118.0.0/15,124.126.0.0/15,124.128.0.0/13,124.147.128.0/17,124.156.0.0/16,124.160.0.0/16,124.161.0.0/16,124.162.0.0/16,124.163.0.0/16,124.164.0.0/14,124.172.0.0/15,124.174.0.0/15,124.192.0.0/15,124.196.0.0/16,124.200.0.0/13,124.220.0.0/14,124.224.0.0/16,124.225.0.0/16,124.226.0.0/15,124.228.0.0/14,124.232.0.0/15,124.234.0.0/15,124.236.0.0/14,124.240.0.0/17,124.242.0.0/16,124.243.192.0/18,124.248.0.0/17,124.249.0.0/16,124.250.0.0/15,124.254.0.0/18,125.31.192.0/18,125.32.0.0/16,125.33.0.0/16,125.34.0.0/16,125.35.0.0/17,125.35.128.0/17,125.36.0.0/14,125.40.0.0/13,125.58.128.0/17,125.62.0.0/18,125.64.0.0/13,125.72.0.0/16,125.73.0.0/16,125.74.0.0/15,125.76.0.0/17,125.76.128.0/17,125.77.0.0/16
netsh advfirewall firewall add rule name="China IP Ban - Incoming (Part 3)" action=block dir=in protocol=any localip=any remoteip=125.78.0.0/15,125.80.0.0/13,125.88.0.0/13,125.96.0.0/15,125.98.0.0/16,125.104.0.0/13,125.112.0.0/12,125.169.0.0/16,125.171.0.0/16,125.208.0.0/18,125.210.0.0/16,125.211.0.0/16,125.213.0.0/17,125.215.0.0/18,125.216.0.0/15,125.218.0.0/16,125.219.0.0/16,125.220.0.0/15,125.222.0.0/15,125.254.128.0/18,125.254.192.0/18,134.196.0.0/16,159.226.0.0/16,161.207.0.0/16,162.105.0.0/16,166.111.0.0/16,167.139.0.0/16,168.160.0.0/16,192.83.122.0/24,192.83.169.0/24,192.124.154.0/24,192.188.170.0/24,198.17.7.0/24,202.0.110.0/24,202.0.176.0/22,202.4.128.0/19,202.4.252.0/22,202.8.128.0/19,202.10.64.0/20,202.14.88.0/24,202.14.235.0/24,202.14.236.0/23,202.14.238.0/24,202.20.120.0/24,202.22.248.0/22,202.22.252.0/22,202.38.0.0/23,202.38.2.0/23,202.38.4.0/22,202.38.8.0/21,202.38.64.0/19,202.38.96.0/19,202.38.128.0/23,202.38.130.0/23,202.38.132.0/23,202.38.134.0/24,202.38.135.0/24,202.38.136.0/24,202.38.137.0/24,202.38.138.0/24,202.38.140.0/23,202.38.142.0/24,202.38.143.0/24,202.38.146.0/23,202.38.149.0/24,202.38.150.0/23,202.38.152.0/23,202.38.154.0/23,202.38.156.0/24,202.38.158.0/23,202.38.160.0/23,202.38.164.0/22,202.38.168.0/24,202.38.169.0/24,202.38.170.0/24,202.38.171.0/24,202.38.172.0/24,202.38.173.0/24,202.38.174.0/24,202.38.175.0/24,202.38.176.0/23,202.38.184.0/21,202.38.192.0/18,202.41.152.0/21,202.41.240.0/20,202.43.144.0/20,202.46.32.0/19,202.46.224.0/20,202.60.112.0/20,202.63.248.0/22,202.69.4.0/22,202.69.16.0/20,202.70.0.0/19,202.74.8.0/21,202.75.208.0/20,202.85.208.0/20,202.90.0.0/22,202.90.224.0/20,202.90.252.0/22,202.91.0.0/22,202.91.128.0/22,202.91.176.0/20,202.91.224.0/19,202.92.0.0/22,202.92.252.0/22,202.93.0.0/22,202.93.252.0/22,202.94.0.0/19,202.95.0.0/22,202.95.4.0/22,202.95.8.0/21,202.95.16.0/20,202.95.252.0/22,202.96.0.0/18,202.96.64.0/21,202.96.72.0/21,202.96.80.0/20,202.96.96.0/21,202.96.104.0/21,202.96.112.0/20,202.96.128.0/21,202.96.136.0/21,202.96.144.0/20,202.96.160.0/21,202.96.168.0/21,202.96.176.0/20,202.96.192.0/21,202.96.200.0/21,202.96.208.0/20,202.96.224.0/21,202.96.232.0/21,202.96.240.0/20,202.97.0.0/21,202.97.8.0/21,202.97.16.0/20,202.97.32.0/19,202.97.64.0/19,202.97.96.0/20,202.97.112.0/20,202.97.128.0/18,202.97.192.0/19,202.97.224.0/21,202.97.232.0/21,202.97.240.0/20,202.98.0.0/21,202.98.8.0/21,202.98.16.0/20,202.98.32.0/21,202.98.40.0/21,202.98.48.0/20,202.98.64.0/19,202.98.96.0/21,202.98.104.0/21,202.98.112.0/20,202.98.128.0/19,202.98.160.0/21,202.98.168.0/21,202.98.176.0/20,202.98.192.0/21,202.98.200.0/21,202.98.208.0/20,202.98.224.0/21,202.98.232.0/21,202.98.240.0/20,202.99.0.0/18,202.99.64.0/19,202.99.96.0/21,202.99.104.0/21,202.99.112.0/20,202.99.128.0/19,202.99.160.0/21,202.99.168.0/21,202.99.176.0/20,202.99.192.0/21,202.99.200.0/21,202.99.208.0/20,202.99.224.0/21,202.99.232.0/21,202.99.240.0/20,202.100.0.0/21,202.100.8.0/21,202.100.16.0/20,202.100.32.0/19,202.100.64.0/21,202.100.72.0/21,202.100.80.0/20,202.100.96.0/21,202.100.104.0/21,202.100.112.0/20,202.100.128.0/21,202.100.136.0/21,202.100.144.0/20,202.100.160.0/21,202.100.168.0/21,202.100.176.0/20,202.100.192.0/21,202.100.200.0/21,202.100.208.0/20,202.100.224.0/19,202.101.0.0/18,202.101.64.0/19,202.101.96.0/19,202.101.128.0/18,202.101.192.0/19,202.101.224.0/21,202.101.232.0/21,202.101.240.0/20,202.102.0.0/19,202.102.32.0/19,202.102.64.0/18,202.102.128.0/21,202.102.136.0/21,202.102.144.0/20,202.102.160.0/19,202.102.192.0/21,202.102.200.0/21,202.102.208.0/20,202.102.224.0/21,202.102.232.0/21,202.102.240.0/20
netsh advfirewall firewall add rule name="China IP Ban - Incoming (Part 4)" action=block dir=in protocol=any localip=any remoteip=202.103.0.0/21,202.103.8.0/21,202.103.16.0/20,202.103.32.0/19,202.103.64.0/19,202.103.96.0/21,202.103.104.0/21,202.103.112.0/20,202.103.128.0/18,202.103.192.0/19,202.103.224.0/21,202.103.232.0/21,202.103.240.0/20,202.104.0.0/15,202.106.0.0/16,202.107.0.0/17,202.107.128.0/17,202.108.0.0/16,202.109.0.0/16,202.110.0.0/18,202.110.64.0/18,202.110.128.0/18,202.110.192.0/18,202.111.0.0/17,202.111.128.0/19,202.111.160.0/19,202.111.192.0/18,202.112.0.0/16,202.113.0.0/20,202.113.16.0/20,202.113.32.0/19,202.113.64.0/18,202.113.128.0/18,202.113.192.0/19,202.113.224.0/20,202.113.240.0/20,202.114.0.0/19,202.114.32.0/19,202.114.64.0/18,202.114.128.0/17,202.115.0.0/19,202.115.32.0/19,202.115.64.0/18,202.115.128.0/17,202.116.0.0/19,202.116.32.0/20,202.116.48.0/20,202.116.64.0/19,202.116.96.0/19,202.116.128.0/17,202.117.0.0/18,202.117.64.0/18,202.117.128.0/17,202.118.0.0/19,202.118.32.0/19,202.118.64.0/18,202.118.128.0/17,202.119.0.0/19,202.119.32.0/19,202.119.64.0/20,202.119.80.0/20,202.119.96.0/19,202.119.128.0/17,202.120.0.0/18,202.120.64.0/18,202.120.128.0/17,202.121.0.0/16,202.122.0.0/21,202.122.32.0/21,202.122.64.0/19,202.122.112.0/21,202.122.128.0/24,202.123.96.0/20,202.125.176.0/20,202.127.0.0/23,202.127.2.0/24,202.127.3.0/24,202.127.4.0/24,202.127.5.0/24,202.127.6.0/23,202.127.12.0/22,202.127.16.0/20,202.127.40.0/21,202.127.48.0/20,202.127.112.0/20,202.127.128.0/20,202.127.144.0/20,202.127.160.0/21,202.127.192.0/23,202.127.194.0/23,202.127.196.0/22,202.127.200.0/21,202.127.208.0/24,202.127.209.0/24,202.127.212.0/22,202.127.216.0/21,202.127.224.0/19,202.130.0.0/19,202.130.224.0/19,202.131.16.0/21,202.131.48.0/20,202.131.208.0/20,202.136.48.0/20,202.136.208.0/20,202.136.224.0/20,202.141.160.0/19,202.142.16.0/20,202.143.16.0/20,202.148.96.0/19,202.149.160.0/19,202.149.224.0/19,202.150.16.0/20,202.152.176.0/20,202.153.48.0/20,202.158.160.0/19,202.160.176.0/20,202.164.0.0/20,202.165.96.0/20,202.165.176.0/20,202.165.208.0/20,202.168.160.0/20,202.168.176.0/20,202.170.128.0/19,202.170.216.0/21,202.173.8.0/21,202.173.224.0/19,202.179.240.0/20,202.180.128.0/19,202.181.112.0/20,202.189.80.0/20,202.192.0.0/13,202.200.0.0/14,202.204.0.0/14,203.18.50.0/24,203.79.0.0/20,203.80.144.0/20,203.81.16.0/20,203.83.56.0/21,203.86.0.0/19,203.86.32.0/19,203.86.64.0/20,203.86.80.0/20,203.88.32.0/19,203.88.192.0/19,203.89.0.0/22,203.90.0.0/22,203.90.128.0/19,203.90.160.0/19,203.90.192.0/19,203.91.32.0/19,203.91.96.0/20,203.91.120.0/21,203.92.0.0/22,203.92.160.0/19,203.93.0.0/22,203.93.4.0/22,203.93.8.0/24,203.93.9.0/24,203.93.10.0/23,203.93.12.0/22,203.93.16.0/20,203.93.32.0/19,203.93.64.0/18,203.93.128.0/21,203.93.136.0/22,203.93.140.0/24,203.93.141.0/24,203.93.142.0/23,203.93.144.0/20,203.93.160.0/19,203.93.192.0/18,203.94.0.0/22,203.94.4.0/22,203.94.8.0/21,203.94.16.0/20,203.95.0.0/21,203.95.96.0/20,203.95.112.0/20,203.99.16.0/20,203.99.80.0/20,203.100.32.0/20,203.100.80.0/20,203.100.96.0/19,203.100.192.0/20,203.110.160.0/19,203.118.192.0/19,203.119.24.0/21,203.119.32.0/22,203.128.32.0/19,203.128.96.0/19,203.130.32.0/19,203.132.32.0/19,203.134.240.0/21,203.135.96.0/20,203.135.112.0/20,203.135.160.0/20,203.148.0.0/18,203.152.64.0/19,203.156.192.0/18,203.158.16.0/21,203.161.192.0/19,203.166.160.0/19,203.171.224.0/20,203.174.96.0/19,203.175.128.0/19,203.175.192.0/18,203.176.168.0/21,203.184.80.0/20,203.187.160.0/19,203.190.96.0/20,203.191.16.0/20,203.191.64.0/18,203.191.144.0/21,203.191.152.0/21,203.192.0.0/19,203.196.0.0/21,203.207.64.0/18,203.207.128.0/17,203.208.0.0/20,203.208.16.0/22
netsh advfirewall firewall add rule name="China IP Ban - Incoming (Part 5)" action=block dir=in protocol=any localip=any remoteip=203.208.32.0/19,203.209.224.0/19,203.212.0.0/20,203.212.80.0/20,203.222.192.0/20,203.223.0.0/20,210.2.0.0/20,210.2.16.0/20,210.5.0.0/19,210.5.144.0/20,210.12.0.0/18,210.12.64.0/18,210.12.128.0/18,210.12.192.0/18,210.13.0.0/18,210.13.64.0/18,210.13.128.0/17,210.14.64.0/19,210.14.128.0/19,210.14.160.0/19,210.14.192.0/19,210.14.224.0/19,210.15.0.0/19,210.15.32.0/19,210.15.64.0/19,210.15.96.0/19,210.15.128.0/18,210.16.128.0/18,210.21.0.0/17,210.21.128.0/17,210.22.0.0/16,210.23.32.0/19,210.25.0.0/16,210.26.0.0/15,210.28.0.0/14,210.32.0.0/14,210.36.0.0/14,210.40.0.0/13,210.51.0.0/16,210.52.0.0/18,210.52.64.0/18,210.52.128.0/17,210.53.0.0/17,210.53.128.0/17,210.56.192.0/19,210.72.0.0/17,210.72.128.0/19,210.72.160.0/19,210.72.192.0/18,210.73.0.0/19,210.73.32.0/19,210.73.64.0/18,210.73.128.0/17,210.74.0.0/19,210.74.32.0/19,210.74.64.0/19,210.74.96.0/19,210.74.128.0/19,210.74.160.0/19,210.74.192.0/18,210.75.0.0/16,210.76.0.0/19,210.76.32.0/19,210.76.64.0/18,210.76.128.0/17,210.77.0.0/16,210.78.0.0/19,210.78.32.0/19,210.78.64.0/18,210.78.128.0/19,210.78.160.0/19,210.78.192.0/18,210.79.64.0/18,210.79.224.0/19,210.82.0.0/15,210.87.128.0/20,210.87.144.0/20,210.87.160.0/19,210.185.192.0/18,210.192.96.0/19,211.64.0.0/14,211.68.0.0/15,211.70.0.0/15,211.80.0.0/16,211.81.0.0/16,211.82.0.0/16,211.83.0.0/16,211.84.0.0/15,211.86.0.0/15,211.88.0.0/16,211.89.0.0/16,211.90.0.0/15,211.92.0.0/15,211.94.0.0/15,211.96.0.0/15,211.98.0.0/15,211.100.0.0/16,211.101.0.0/18,211.101.64.0/18,211.101.128.0/17,211.102.0.0/16,211.103.0.0/17,211.103.128.0/17,211.136.0.0/14,211.140.0.0/15,211.142.0.0/17,211.142.128.0/17,211.143.0.0/16,211.144.0.0/15,211.146.0.0/16,211.147.0.0/16,211.148.0.0/14,211.152.0.0/15,211.154.0.0/16,211.155.0.0/18,211.155.64.0/19,211.155.96.0/19,211.155.128.0/17,211.156.0.0/14,211.160.0.0/14,211.164.0.0/14,218.0.0.0/16,218.1.0.0/16,218.2.0.0/15,218.4.0.0/15,218.6.0.0/16,218.7.0.0/16,218.8.0.0/15,218.10.0.0/16,218.11.0.0/16,218.12.0.0/16,218.13.0.0/16,218.14.0.0/15,218.16.0.0/14,218.20.0.0/16,218.21.0.0/17,218.21.128.0/17,218.22.0.0/15,218.24.0.0/15,218.26.0.0/16,218.27.0.0/16,218.28.0.0/15,218.30.0.0/15,218.56.0.0/14,218.60.0.0/15,218.62.0.0/17,218.62.128.0/17,218.63.0.0/16,218.64.0.0/15,218.66.0.0/16,218.67.0.0/17,218.67.128.0/17,218.68.0.0/15,218.70.0.0/15,218.72.0.0/14,218.76.0.0/15,218.78.0.0/15,218.80.0.0/14,218.84.0.0/14,218.88.0.0/13,218.96.0.0/14,218.104.0.0/17,218.104.128.0/19,218.104.160.0/19,218.104.192.0/21,218.104.200.0/21,218.104.208.0/20,218.104.224.0/19,218.105.0.0/16,218.106.0.0/15,218.108.0.0/16,218.109.0.0/16,218.185.192.0/19,218.192.0.0/16,218.193.0.0/16,218.194.0.0/16,218.195.0.0/16,218.196.0.0/14,218.200.0.0/14,218.204.0.0/15,218.206.0.0/15,218.240.0.0/14,218.244.0.0/15,218.246.0.0/15,218.249.0.0/16,219.72.0.0/16,219.82.0.0/16,219.128.0.0/12,219.144.0.0/14,219.148.0.0/16,219.149.0.0/17,219.149.128.0/18,219.149.192.0/18,219.150.0.0/19,219.150.32.0/19,219.150.64.0/19,219.150.96.0/20,219.150.112.0/20,219.150.128.0/17,219.151.0.0/19,219.151.32.0/19,219.151.64.0/18,219.151.128.0/17,219.152.0.0/15,219.154.0.0/15,219.156.0.0/15,219.158.0.0/17,219.158.128.0/17,219.159.0.0/18,219.159.64.0/18,219.159.128.0/17,219.216.0.0/15,219.218.0.0/15,219.220.0.0/16,219.221.0.0/16,219.222.0.0/15,219.224.0.0/15,219.226.0.0/16,219.227.0.0/16,219.228.0.0/15
netsh advfirewall firewall add rule name="China IP Ban - Incoming (Part 6)" action=block dir=in protocol=any localip=any remoteip=219.230.0.0/15,219.232.0.0/14,219.236.0.0/15,219.238.0.0/15,219.242.0.0/15,219.244.0.0/14,220.101.192.0/18,220.112.0.0/14,220.152.128.0/17,220.154.0.0/15,220.160.0.0/11,220.192.0.0/15,220.194.0.0/15,220.196.0.0/14,220.200.0.0/13,220.231.0.0/18,220.231.128.0/17,220.232.64.0/18,220.234.0.0/16,220.242.0.0/15,220.248.0.0/14,220.252.0.0/16,221.0.0.0/15,221.2.0.0/16,221.3.0.0/17,221.3.128.0/17,221.4.0.0/16,221.5.0.0/17,221.5.128.0/17,221.6.0.0/16,221.7.0.0/19,221.7.32.0/19,221.7.64.0/19,221.7.96.0/19,221.7.128.0/17,221.8.0.0/15,221.10.0.0/16,221.11.0.0/17,221.11.128.0/18,221.11.192.0/19,221.11.224.0/19,221.12.0.0/17,221.12.128.0/18,221.13.0.0/18,221.13.64.0/19,221.13.96.0/19,221.13.128.0/17,221.14.0.0/15,221.122.0.0/15,221.129.0.0/16,221.130.0.0/15,221.133.224.0/19,221.136.0.0/16,221.137.0.0/16,221.172.0.0/14,221.176.0.0/13,221.192.0.0/15,221.194.0.0/16,221.195.0.0/16,221.196.0.0/15,221.198.0.0/16,221.199.0.0/19,221.199.32.0/20,221.199.48.0/20,221.199.64.0/18,221.199.128.0/18,221.199.192.0/20,221.199.224.0/19,221.200.0.0/14,221.204.0.0/15,221.206.0.0/16,221.207.0.0/18,221.207.64.0/18,221.207.128.0/17,221.208.0.0/14,221.212.0.0/16,221.213.0.0/16,221.214.0.0/15,221.216.0.0/13,221.224.0.0/13,221.232.0.0/14,221.236.0.0/15,221.238.0.0/16,221.239.0.0/17,221.239.128.0/17,222.16.0.0/15,222.18.0.0/15,222.20.0.0/15,222.22.0.0/16,222.23.0.0/16,222.24.0.0/15,222.26.0.0/15,222.28.0.0/14,222.32.0.0/11,222.64.0.0/13,222.72.0.0/15,222.74.0.0/16,222.75.0.0/16,222.76.0.0/14,222.80.0.0/15,222.82.0.0/16,222.83.0.0/17,222.83.128.0/17,222.84.0.0/16,222.85.0.0/17,222.85.128.0/17,222.86.0.0/15,222.88.0.0/15,222.90.0.0/15,222.92.0.0/14,222.125.0.0/16,222.126.128.0/17,222.128.0.0/14,222.132.0.0/14,222.136.0.0/13,222.160.0.0/15,222.162.0.0/16,222.163.0.0/19,222.163.32.0/19,222.163.64.0/18,222.163.128.0/17,222.168.0.0/15,222.170.0.0/15,222.172.0.0/17,222.172.128.0/17,222.173.0.0/16,222.174.0.0/15,222.176.0.0/13,222.184.0.0/13,222.192.0.0/14,222.196.0.0/15,222.198.0.0/16,222.199.0.0/16,222.200.0.0/14,222.204.0.0/15,222.206.0.0/15,222.208.0.0/13,222.216.0.0/15,222.218.0.0/16,222.219.0.0/16,222.220.0.0/15,222.222.0.0/15,222.240.0.0/13,222.248.0.0/16,222.249.0.0/17,222.249.128.0/19,222.249.160.0/20,222.249.176.0/20,222.249.192.0/18



UPDATE:
As has been pointed out to me, there are other, and probably more effective ways of doing this. However, this method is instructive in learning more about the Windows firewall, and demonstrates some tricks for when other methods aren't available. That said, one of the better ways is through the open-source program PeerBlock, which can be subscribed to a number of ban lists available at iBlockList, including a list of IP ranges in China. Expect to have to make a few manual edits to unblock sites that you use, because the lists are quite extensive.

Labels: ,

Friday, July 24, 2009

Quantum Electronics

Recently, scientists at Yale have created the world's first quantum integrated circuit. For those of you who are uninitiated in quantum mechanics, let me first preface this by saying that quantum mechanics do not, fundamentally, make intuitive sense. I don't understand them, and that's okay, because nobody does. But don't take my word for it:

I think I can safely say that nobody understands quantum mechanics.
-Richard Feynman
Okay, that said, this marks a major milestone in quantum computing. What is quantum computing? Basically, it uses the very singular properties and behaviors of subatomic particles to calculate things in ways that seem utterly nonsensical, yet have fantastic power. Quantum computer bits may assume a bizarre state called a 'q-bit', in which they are both zero and one. Using this, a quantum computer may determine all possible outcomes of an algorithm in a single step!

The chip mentioned in the article is a two-bit chip. The two bits of this chip would allow it to investigate algorithms it could compute within the time of holding a q-bit (on the order of microseconds for this model) of a size less than four (22). For instance, say you had a list of four items. Provided a look-up could be done in less than the maximum time the q-bits can be made to persist on the chip, this could look up all four values simultaneously and return the one you wanted, as opposed to a regular chip, which would have to look at the first one, decide if it was the entry you asked for, then look at the second, and so on. That might not sound terribly impressive, but when you scale it up to chips of, say, 16 bits, then it could compute algorithms with 216 possibilities: 65,536 list lookups (in our example) in a single step. That's a tremendous speed boost.

It also spells out some other, less enjoyable implications in the field of security. Most of the current strong cryptographic systems hinge upon (in one form or another) the factoring problem. It runs something along the lines of: Given a number, determine if the number is prime. You've probably even been required to do this (or something like it) in grade school, and for small numbers, it's easy, as everything is fast for small n. However, the only known algorithm for this is to simply try dividing it by numbers. (You can eliminate some as you go, but not enough to really change the category of the problem.) Thus, arbitrarily large numbers can be chosen such that even a computer working at it's fastest speed has trouble completing the problem in any reasonable timeframe.

If you've noticed that this looks similar in pattern to looking up things in a list, you're catching on. A quantum chip could potentially test all numbers within it's maximum capabilities at once. Before, it was relatively easy to keep ahead of computers: a few extra bits in the factoring problem would add orders of magnitude greater difficulty and time to for brute-force solution techniques. With quantum chips, however, security would be in an arms race against chip manufacturers to increase the size of the key space faster than the capacity of chips could be increased. Alternatively, they could opt to try to make the algorithm longer, so that it couldn't be calculated within the lifetime of the q-bits needed to make the magical all-at-once computation happen. Either way, this could get interesting...

Labels:

Monday, July 20, 2009

This Shirt Is Made of Awesome

Really, I think this speaks for itself. Grab one on shirt.woot.com. (No, I'm not paid to advertise this. It really just is that awesome.)

Wednesday, July 08, 2009

Clouds Versus Islands

With their characteristic lack of fanfare, Google announced today that they would be releasing an operating system based on their browser, Chrome. They've long ago learned that they, like Apple, needn't bother making a big deal out of it because the media will do it for them. Already, most every news outlet and blog has started making echos touting the start of the new era and how Google is ready to challenge Microsoft.

Color me skeptical, but I don't think this is going to be any bigger than the launch of Microsoft's Bing search 'decision' engine: a modest success, but nothing earth-shattering or even really threatening to the incumbent. Why? Quite simply, Google will be stepping outside their core competency, and they very nature of the announced operating system shows it. Google is exceptionally good at re-inventing old ideas in the image of the internet. But the operating system is fundamentally different in one very important way: whereas most of the things Google has tackled in the past tended to be ideas that evolved from the desktop into the internet in a piecemeal fashion, the operating system's role and purpose is to control the computer on which it resides. In unveiling a 'Cloud' desktop, Google is (not so) implicitly stating that they want to turn the computer into nothing but a portal to the internet.

This idea isn't new. It's called the thin client approach, and it's been around for a while. However, while it has some benefits, it suffers from a number of problems in execution, which are more than mere technical obstacles. The first is that it largely ignores the capabilities of what the machine itself can do. Yes, this can work in environments with cheaper hardware, but hardware itself is so cheap that it seems absurd not to go ahead and add the power to it. And if it exists, other operating systems will take advantage of it. The second is response time. Barring some advance that trumps the light-speed barrier, a network will never be faster for small operations than a local processor, because the latency in the network will be far greater (if for no reason other than distance) than the latency on the hardware bus inside the computer. For snappy response time, there's just no substitute for having the machine right there. And as Microsoft has learned the hard way, users value snappy response times above many, many other things.

But even if we were to say that people accept very 'dumb' terminals for price and put up with slower computing, there's the issue of ownership. At the end of the day, the data has to reside somewhere, and if it's not on your computer, then you're at the mercy of the internet for access. The internet was not designed to facilitate centralization, it was designed to be resiliently decentralized. That is, it will make a best effort to get information through, but at the end of the day you and you alone are responsible for making sure important information is available. For access to any kind of critical data, be it business, personal, or governmental, this is unacceptable. If Michael Jackson can stress the internet to the breaking point, what would happen if real trouble started? It's even more of a gamble for countries in which Google doesn't physically operate: not only do you not have your data, but you have no legal recourse to get it back short of basically begging. In other words, in the event of an emergency, an island may be disconnected, but it is still solid ground. The same can't be said for a cloud.

Don't get me wrong. I love Google, and I think they've become a role model for how responsible corporations should operate. I would be very surprised if the new Chrome OS made more than a small dent in the adoption of Windows, especially given how competitive it's become of late. In fact, a Chrome OS may be better poised to unseat Linux distros as the free operating system of choice, as Google will undoubtedly apply a level of fit and finish to the product that most Linux distros (yes, even Ubuntu) haven't the discipline to create. Google may even have a firm grip on the limits of scope, and simply decline to stop the media echo chamber. After all, who wouldn't want free publicity? But I think this is at most a mild jab in a sparring match between titans, not a finishing blow.

Labels: , , ,

Tuesday, June 30, 2009

On Standards and the Web

In case you haven't heard yet, Firefox 3.5 went live today. Among it's more noted features is support for the HTML <video> tag, which basically tells the browser that it should insert all the functionality of a flash embedded video player at that location. I installed it today, of course, and truth be told I really didn't see all that much difference, except for the <video> tag.

I'm a follower of the blog Lifehacker, which posts a lot of tips and tweaks for everyday life, especially computers. However, a few weeks ago I started noticing content being posted with the <video> tag. If you don't have a browser that supports HTML 5, it doesn't work very well. Did I mention that Firefox 3.5 is the first browser to support this? That's right, mainstream content was already being served in a standard that was only implemented in unreleased browsers.

Think about that for a minute. Also consider that HTML 5 isn't even finished yet. Then think about how far Twitter and Youtube have come in just a few years. Do you see the problem yet? Given how quickly businesses build up on the web, and how quickly they are adopted as the de-facto standards, releasing anything half-finished onto the web is dangerous. Suppose the next Youtube were to build up around the <video> tag, accumulate half the internet's video content, and then the <video> tag standard was changed at the last minute in a way that was difficult for this new video site (by now a cornerstone of social media) to implement? Suppose they simply chose not to change? Browser developers would then be stuck either implementing two incompatible versions of the same standard, or explaining to non-technical users why they can't see the videos of dancing bunnies anymore. In fact, that's very similar in nature to the situation that arose with non-standard tags and Internet Explorer, and we all remember how well that mess went.

Sometimes, unfinished things need to be kept seperate from the mainstream, even if it means you don't get the shiniest bits of tech immediately. I think we might do well to cultivate a little more patience for the sake of sanity a few years later. I also know that I'm not the only one who's noticed...

Labels: ,