Firearm Cleaners & Lubricants17 Apr 2008 11:05 am

Ed’s Red
As a general bore cleaner, plastic wad remover, and carbon solvent the following formula, a creation of C.E Harris, and dubbed “Ed’s Red” works quite well. In fact many folks claim it is better than anything they’ve tried. The original formula is:

1 part Dexron II, IIe or III Automatic Transmission Fluid - GM Spec D20265 or later
1 part K1 Kerosene
1 part Aliphatic Mineral Spirits federal spec TT-T-2981F (CAS# 64741-49-9) or Stodard Solvent/Varsol
(CAS#8052-41-1)
1 part Acetone (CAS#67-64-1)

Formula Addendum

It has been reported that methyethylketone/MEK (CAS#78-93-3) can be satisfactorily substituted for the acetone if desired.

It has been reported that Turpentine can be satisfactorily substituted for the Mineral Spirits if desired. The original Frankfort Arsenal formula upon which Ed’s Red is based used turpentine rather than mineral spirits which were substituted for lower cost.

It has been reported that Kroil penetrating oil can be satisfactorily substituted for the kerosene if desired.

It has been reported that Goo-Gone (a commercial citrus based solvent) can be satisfactorily substituted for the mineral spirits if desired.

It has been reported that commercial automotive “engine flush” can be substituted for the ATF (but you lose the red color).

For each gallon of Ed’s Red produced you can also add 1 pound of anhydrous lanolin (CAS#8006-54-0), which helps to neutralize fingerprints but it’s really not necessary. You can also leave out the acetone but then it doesn’t remove plastic wad fouling as well. Store in airtight chemical-proof containers as the acetone, if used, will evaporate. Two sources for bulk anhydrous lanolin are http://www.selectoils.com/item–Lanolin–SO-Lanolin.html and http://www.thesage.com/ .

According to Ed, “Ed’s Red” will flow at -65oF and won’t carbonize at 600oF. It has seen use by both the FBI and the Army Marksmanship Training Units.

MIXING INSTRUCTIONS
Mix outdoors, in good ventilation. Use a clean 1 gallon metal, or chemical-resistant, heavy gage NFPA approved plastic gasoline storage containers are also OK. Do NOT use light weight, thin, high density polyethelyne (HDPE), which is breathable, because the acetone will gradually evaporate. Don’t use PVC containers as they will dissolve. A possible online source for metal 1 pint and 1 quart screw top metal containers suitable for storing Ed’s Red is http://www.taxidermy.com . This site appears to be some sort of frames based design that does not allow you to link directly to containers, but you can find them via the following site links Products | Molding and Casting | Containers, Cups and Tools. The Blitz USA line of approved gasoline containers can be obtained at Auto Zone, Home Depot, Walmart, Target, and other retailers and are what I use. (www.blitzusa.com).

Add the ATF first. Use the empty container to measure the other components, so that it is thoroughly rinsed. If you incorporate the lanolin into the mixture, melt it in a hot water bath (lanolin melts at about 107 degrees F), or use a double boiler and avoid exposing to open flames. Pour the melted lanolin it into the larger container, rinsing the lanolin container with the bore cleaner mix, and stirring until it is all dissolved. (It will also, but slowly, dissolve in mineral spirits if you want to avoid using heat.)

You can divert a small quantity, up to 4 ounces per quart of the 50-50 ATF/kerosene mix for use as an “Ed’s Red-compatible” gun oil. This can be done without impairing the effectiveness of the mix.

INSTRUCTIONS FOR USING
a) Insure that the firearm is unloaded and that all magazines are removed. Cleaning is most effective when done while the barrel is still warm to the touch from firing. Saturate a cotton patch with Ed’s Red, wrap or impale on a jag and push it through the bore from breech to muzzle. The patch should be a snug fit. Let the first patch fall off and do not pull it back into the bore.

b) Wet a second patch, and similarly start it into the bore from the breech, this time scrubbing from the throat area forward in 4-5″ strokes and gradually advancing until the patch emerges out the muzzle. Waiting approximately 1 minute to let the bore cleaner soak will improve its action.

c. For pitted, heavily carbon-fouled “rattle battle” guns, leaded revolvers or neglected bores a bronze brush wet with bore cleaner may be used to remove stubborn deposits. This is unnecessary for smooth, target-grade barrels in routine use.

d) Use a final wet patch pushed straight through the bore to flush out loosened residue dissolved by Ed’s Red. Let the patch fall off the jag without pulling it back into the bore. If you are finished firing, leaving the bore wet will protect it from rust for up to 30 days. If the lanolin is incorporated into the mixture, it will protect the firearm from rust for up to two years.

e) Wipe spilled Ed’s Red from exterior surfaces before storing the gun. While Ed’s Red is harmless to blue and nickel finishes, the acetone it contains is harmful to most wood finishes and it could damage some plastics if left in prolonged contact.

f) Before firing again, push two dry patches through the bore and dry the chamber, using a patch wrapped around a suitably sized brush or jag. First shot point of impact usually will not be disturbed by Ed’s Red if the bore is cleaned as described.

It has been reported that when Ed’s Red is used exclusively and thoroughly, that hot water cleaning is unnecessary after use of Pyrodex or military chlorate primers. However, if bores are not wiped between shots and are heavily caked from black powder fouling, hot water cleaning is recommended first to break up heavy fouling deposits. Water cleaning should be followed by a thorough flush with Ed’s Red to prevent after-rusting which could result from residual moisture. It is ALWAYS good practice to clean twice, two days apart, whenever using chlorate primed ammunition, just to make sure you get all the residue out.

Thanks to Jim Dodd for the above instructions

An unusual use for Ed’s Red. Several correspondents report that an application of ER to an ant hill, especially fire ants, kills ‘em dead.

Eds Red Plus

This variation on the Ed’s Red formula gives it a copper removing ability similar to the commercial bore cleaner Marksman’s Choice MC-7. You will need:

11 ounces of basic Ed’s Red
2 ounces of 10%-20% industrial strength ammonia
2 ounces of Rustlick WS-11 cutting oil or suitable alternative
1 ounce of Murphy’s Oil Soap

Mix the oil soap and ammonia in a separate container. In a suitable 1 pint container containing 11 ounces of Ed’s Red, add the cutting oil and mix together. Then add the oil soap/ammonia mixture to Ed’s Red/ cutting oil and shake the container to mix the ingredients. You will end up with a pink opaque liquid that for the most part remains in solution, but some components may settle out over an extended period. It is always best to shake well before using. The resulting solution will remove mild copper deposits in bores if allowed to work about 15-20 minutes.

Water soluble cutting oils and rust inhibitors can be obtained online from http://www1.mscdirect.com/cgi/nnsrhm or locally from your industrial supplier. NAPA auto stores carry a soluble oil listed as NAPA Soluble Cutting and Grinding Oil,” part number 765-1525. Metal screw top containers can be obtained from http://www.taxidermy.com under | Products | Molding and Casting | Containers, Cups and Tools.

Thanks to Bill Mecca for this information.

You can link directly to that frame by putting this URL there http://www.taxidermy.com/cat/18/tool.html, but there’s no link back to their home page from there.

Thanks to Patrick Larkin Jr. for this tip.

…And For Historical Reference–The Original Hoppes No. 9
The original “Ode de Gun.” If you don’t like this smell you ain’t a real shooter! This formula came from Hatcher’s Notebook and the amounts are rounded from the original formula to make 1 quart. Any resemblance to the current “environmentally correct” No. 9 is accidental.

Original component Notes
Ammonium oleate (CAS#544-60-5) 5.0 oz (also known as ammonium soap) Could substitute lanolin but this would sacrifice its mild copper removal qualities
Amyl Acetate (CAS#544-60-5) 8.5 oz (”banana oil”)
Nitro-benzene 2.0 oz (the racing fuel additive)
K1 Kerosene 8.5 oz
Neutral Saponifiable Oil 8 oz (Not identified, probably sperm oil, but ATF could be substituted

Politics29 Feb 2008 09:33 am

Thanks in no small part to your calls to legislators, the state Senate today passed Assembly Bill AB581. Authored by Representative Scott Gunderson (R-Waterford), this is the bill that prohibits the governor and other public officials from confiscating guns during declared states of emergency.

Under the bill, public officials will not be able to exercise emergency powers to restrict the possession, transfer, sale, transport, storage, display or use of firearms or ammunition.

AB581 passed in the Assembly in December by a vote of 84 to 13, with two members not present. The vote in the Senate today was 26 in favor, 5 opposed, with two members not present.

Voting against the bill were Senators Spencer Coggs (D-Milwaukee), Lena Taylor (D-Milwaukee), Judy Robson (D-Beloit), Mark Miller (D-Monona) and Fred Risser (D-Madison). By their votes, these senators are on record as being in favor of allowing the governor or other public officials to confiscate firearms. Not just Evil Black rifles, or handguns, but ALL guns.

Governor Doyle’s office has said that he has not yet decided if he will sign the bill. He’s known about this bill for months, knows what it’s all about, and certainly should have decided what his position would be on the bill by now.

Please help Governor Doyle decide what his position should be by contacting his office at 608-266-1212.

Also call your state senator to thank him or her for a vote in favor of gun rights. If you don’t know who your state senator is, go to http://waml.legis.state.wi.us/ and enter your street address to get your senator’s name and contact information. Please also thank Senate Majority Leader Russ Decker (D-Wausau) for scheduling a vote on this very important bill.

Funnies20 Feb 2008 07:44 pm

Okay, this passed along via email… just too good not to post for folks to get a good chuckle from;

In these troubled times, it has become very difficult to distinguish the good towel-heads from the bad towel heads. Just where are the moderate Muslims, anyway? Do they actually exist?

The following is provided, to help you distinguish between a BAD “towel-head” and a GOOD “towel-head.” You must study the pictures carefully so that you will not confuse the two in a moment of indecision… it could save your life!

Bad TowelHead

bad towelhead

and…

GOOD towel-head

Good Towelhead

Now you got it straight? :)

Linux / Unix& PERL code snippets20 Feb 2008 06:23 am

Another simple script I've written and use often (actually runs via cron every 5 minutes) to verify the contents of a particular page to determine of it has changed for any reason like a webserver cracked/hacked or if the dynamic content is not what is expected.

In this case it is specifically monitoring a page from a PeopleSoft application that I do not entirely trust, if the content doesn't match my checksum that generally means the Tuxedo application server is hosed and needs to be restarted.

Easily adapted to fit your particular needs, is use it on all of my public websites that are on shared hosting accounts etc...

Comments for bigger sections are thrown in to give you an idea of what to tweak for your needs, remember to update $file2 with a new copy of the markup if you modify the landing page you are monitoring!

CODE:
  1. #!/pshome/usr/local/bin/perl
  2.  
  3. # This just checks what the current working directory is,
  4. # if dev or test then set the debug flags to on...etc.
  5. unshift(@INC, "/pshome/psmgr/bin");
  6. unshift(@INC, "/pshome/psmgr/bin.test") if ("/pshome/psmgr/bin.test" eq "$ENV{'PWD'}");
  7. unshift(@INC, "/pshome/psmgr/stat/bin") if ("/pshome/psmgr/stat/bin" eq "$ENV{'PWD'}");
  8. require sr;
  9.  
  10. $debug = 1;
  11. $debug = 1 if ("/home/bin.test" eq "$ENV{'PWD'}");
  12. $debug = 1 if ("/home/stat/bin" eq "$ENV{'PWD'}");
  13. $execute = 1;
  14.  
  15. $file1 = "/home/files/sitename.tmp";
  16. $file2 = "/home/files/sitename_known_good.txt";
  17. $url = "https://yoursite.com/psc/hrmsext/EMPLOYEE/HRMS/c/ROLE_APPLICANT.ER_APPLICANT_HOME.GBL?&";
  18. $url = "https://yoursite.com/psc/test/EMPLOYEE/HRMS/c/ROLE_APPLICANT.ER_APPLICANT_HOME.GBL" if ("/pshome/psmgr/bin.test" eq "$ENV{'PWD'}");
  19. $url = "https://yourseite.com/psc/test/EMPLOYEE/HRMS/c/ROLE_APPLICANT.ER_APPLICANT_HOME.GBL" if ("/pshome/psmgr/stat/bin" eq "$ENV{'PWD'}");
  20. $restarting = "/pshome/psmgr/files/careers.restarting";
  21. $restartingold = "/pshome/psmgr/files/careers.restarting.old";
  22. $check = "0";
  23.  
  24. # check to see if the restart is already in progress so we don't interrupt it
  25. # likely a cleaner way to do this, but it works for now!
  26. if (-e $restarting) { # check if restart file exists
  27.   print "Restart file exists, servers may be restarting, check again in 5 mins\n";
  28.   print "Renaming file and Exiting\n";
  29.   $cmd = "mv $restarting $restartingold";
  30.   print "$cmd\n" if ($debug);
  31.   system ($cmd) if ($execute);
  32.   exit;
  33. } #end if restart file exists
  34. if (-e $restartingold) { # check if restarting.old file still exists
  35.   print "Restarting file existed for at least 5 mins, servers should be back up, rechecking";
  36.   print "Remove restart file\n";
  37.   $check = "1";
  38.   $cmd = "rm $restartingold";
  39.   print "$cmd\n" if ($debug);
  40.   system ($cmd) if ($execute);
  41. } #end if restarting.1 file exists
  42. $cmd = "wget -b --no-check-certificate --output-document=$file1 $url";
  43. print "$cmd\n" if ($debug);
  44. system ($cmd) if ($execute);
  45. $cmd = "sleep 15";
  46. print "$cmd - sleeping 15 secs to allow complete xfer of file\n" if ($debug);
  47. system ($cmd) if ($execute);
  48. $diff1=`cksum $file1`;
  49. $diff2=`cksum $file2`;
  50. $diff1value = substr($diff1, 0, 9);
  51. $diff2value = substr($diff2, 0, 9);
  52. print "diff1value = $diff1value\n" if ($debug);
  53. print "diff2value = $diff2value\n" if ($debug);
  54. if ($diff1value != $diff2value) {
  55.   &notifydown;
  56.   &repair;
  57.   &cleanup;
  58.   exit;
  59.   } else {
  60.   print "Files match, this site is up!\n";
  61.   &cleanup;
  62.   print "check = $check\n" if ($debug);
  63.   if ($check == "1") { #check if recovering from restart
  64.     &notifyup;
  65.   } # end check if recovered from restart 
  66.   exit;
  67. }
  68. sub notifydown
  69. {
  70. print "This site appears to be down, sending page and email\n" if ($debug);
  71. &sr::send_email($debug,"Site Down!","Site is down, restarting app servers now!","David Cochran");
  72. &sr::send_page($debug,"Careers site is down, restarting app servers now!","David Cochran");
  73. } # end sub notifydown
  74. sub repair
  75. { # restart HRMSEXT App servers
  76. $cmd = "mv $file1 $restarting";
  77. print "$cmd\n" if ($debug);
  78. system ($cmd) if ($execute);
  79. $cmd = "/commands to restart the application server go here";
  80. print "$cmd\n" if ($debug);
  81. system ($cmd) if ($execute);
  82. } #end sub repair
  83. sub cleanup
  84. { # cleanup temp files
  85. $cmd = "rm -f wget-log*";
  86. print "$cmd\n" if ($debug);
  87. system ($cmd) if ($execute);
  88. $cmd = "rm -f $file1";
  89. print "$cmd\n" if ($debug);
  90. system ($cmd) if ($execute);
  91. } #end sub cleanup
  92. sub notifyup
  93. {
  94. print "site is back up, sending page and email.\n" if ($debug);
  95. &sr::send_email($debug,"site is OK!","Careers site is OK.","David Cochran");
  96. &sr::send_page($debug,"Careers site is back up","David Cochran");
  97. } # end sub notifyup

PERL code snippets07 Feb 2008 11:39 am

Managing a lot of SSL certificates? Hate being surprised when they expire on you and break your web site? How about a simple process to notify you in advance?

All of the above sound about right? It does to me, I literally manage close to 100 web sites that require SSL encryption for sensitive data transfers, it seems almost impossible to get and keep them all lined up for expiration dates. Even when they were something new would come along and mess up the rotation, in short order it looks like a shotgun blast to a calendar was the deciding factor.

Here is an easy perl script I wrote to check the dates of existing SSL certs, it gets the URL list to check from certs.urls, compares the certificate expiration date to the current date and send emails at the specified intervals. Pretty simple, but like most, it's very effective when run daily via cron.

I've edited some of the partially confidential stuff out, but not enough to render the script unusable by any means, just set the email.sr to your local email faciltiy.

CODE:
  1. #! /usr/local/bin/perl
  2. #
  3. # check_ssl_expire.pl, v 0.01
  4. #
  5. # Inital version - Dave Cochran 9/13/07
  6. ###########################################################
  7. use Switch;
  8. use Time::Local;
  9.  
  10. unshift(@INC, "/pshome/psmgr/bin");
  11. unshift(@INC, "/pshome/psmgr/bin.test") if ("/pshome/psmgr/bin.test" eq "$ENV{'PWD'}");
  12. unshift(@INC, "/pshome/psmgr/stat/bin") if ("/pshome/psmgr/stat/bin" eq "$ENV{'PWD'}");
  13. require sr;
  14.  
  15. $debug = 0;
  16. $debug = 1 if ("/pshome/psmgr/bin.test" eq "$ENV{'PWD'}");
  17. $debug = 1 if ("/pshome/psmgr/stat/bin" eq "$ENV{'PWD'}");
  18. $execute = 1;
  19.  
  20. $path = "/pshome/tmp";
  21. @urls = `cat /pshome/psmgr/files/cert.urls`;
  22.  
  23. foreach $url (@urls) { # start for each url
  24.   chomp $url;
  25.   print "\nChecking $url\n";
  26.   $cmd = "echo \"\" | openssl s_client -connect $url:443> $path/certificate";
  27.   print "\n\n    $cmd\n\n" if ($debug);
  28.   system ($cmd) if ($execute);
  29.  
  30.   $cmd = "openssl x509 -in $path/certificate -noout -enddate> $path/outdate";
  31.   print "    $cmd\n\n" if ($debug);
  32.   system ($cmd)> $result if ($execute);
  33.  
  34.   open (OUTDATE, "/pshome/tmp/outdate")  || die "couldn't open the file!";
  35.   $enddate = <outdate>;
  36.   chomp $enddate;
  37.   close(OUTDATE);
  38.   print "SSL enddate is: <$enddate>\n" if ($debug);
  39.   $expire = substr($enddate, 9, 20);
  40.   print "Expire date : <$expire>\n" if ($debug);
  41.   $month = substr($expire, 0, 3);
  42.   $day = substr($expire, 4, 2);
  43.   $year = substr($expire, 16, 4);
  44.  
  45.   switch ("$month")
  46.   {
  47.     case "Jan"  { $month = 0 }
  48.     case "Feb"  { $month = 1 }
  49.     case "Mar"  { $month = 2 }
  50.     case "Apr"  { $month = 3 }
  51.     case "May"  { $month = 4 }
  52.     case "Jun"  { $month = 5 }
  53.     case "Jul"  { $month = 6 }
  54.     case "Aug"  { $month = 7 }
  55.     case "Sep"  { $month = 8 }
  56.     case "Oct"  { $month = 9 }
  57.     case "Nov"  { $month = 10 }
  58.     case "Dec"  { $month = 11 }
  59.     else        { print "$month is not a valid month. You have problems!\n" }
  60.   } # end switch on month
  61.   $day =~ s/ /0/;
  62.   $expire_date = timegm(1,0,0,$day,$month,$year - 1900);
  63.   $today = `date +%Y%m%d`;
  64.   chomp $today;
  65.   $today = timegm(1,0,0,`date +%d`,`date +%m` -1,`date +%Y` - 1900);
  66.   $thirty_days = $today + (86400 * 30);
  67.   $fifteen_days = $today + (86400 * 15);
  68.   $seven_days = $today + (86400 * 7);
  69.   $one_day = ($today + 86400);
  70.  
  71.   print "Today is <$today> and the cert expires on <$expire_date>\n" if ($debug);
  72.   print "1 day is <$one_day>\n" if ($debug);
  73.   print "7 days is <$seven_days>\n" if ($debug);
  74.   print "15 days is <$fifteen_days>\n" if ($debug);
  75.   print "30 days is <$thirty_days>\n" if ($debug);
  76.  
  77.   $subject = "$url certificate expiration";
  78.   if ($today> $expire_date) { # start if the certificate is expired
  79.     &sr::send_page($debug,"$url cert expired",'Paul Hofmann','David Cochran');
  80.     $message = "The $url certificate is expired";
  81.     print "\t$message\n";
  82.     &sr::send_email($debug,$subject,$message,'David Cochran');
  83.   } # end if the certificate is expired
  84.   elsif ($one_day == $expire_date) { # start else if the certificate will expire in 1 day
  85.     &sr::send_page($debug,"$url cert expires in 1 day",'David Cochran');
  86.     $message = "The $url certificate will expire in 1 day";
  87.     print "\t$message\n";
  88.     &sr::send_email($debug,$subject,$message,'David Cochran');
  89.   } # end if the certificate will expire in 1 day
  90.   elsif ($seven_days == $expire_date) { # start else if the certificate will expire in 7 days
  91.     $message = "The $url certificate will expire in 7 days";
  92.     print "\t$message\n";
  93.     &sr::send_email($debug,$subject,$message,'David Cochran');
  94.   } # end if the certificate will expire in 7 days
  95.   elsif ($fifteen_days == $expire_date) { # start else if the certificate will expire in 15 days
  96.     $message = "The $url certificate will expire in 15 days";
  97.     print "\t$message\n";
  98.     &sr::send_email($debug,$subject,$message,'David Cochran');
  99.   } # end if the certificate will expire in 15 days
  100.   elsif ($thirty_days == $expire_date) { # start else if the certificate will expire in 30 days
  101.     $message = "The $url certificate will expire in 30 days";
  102.     print "\t$message\n";
  103.     &sr::send_email($debug,$subject,$message,'David Cochran');
  104.   } # end if the certificate will expire in 30 days
  105. } # end for each url

URLs are stored in cert.urls with no http:// prefix

CODE:
  1. blog.captivereefing.com
  2. www.captivereefing.com

You get the idea...

Happy hacking!

« Previous PageNext Page »


Car Insurance - Direct TV - Loans - Flights - Proliant Memory
X10 Home Security|Dakar's Photos
Listed on BlogShares