Friday, February 11, 2011

The curious case of Terry Childs - Network kidnapper

In 2008, a network administrator named Terry Childs took total control of his network and refused to share access. So whats the big deal? He was employed by the City of San Francisco and his network contained thousands of public records and important city government data, and lack of access to this network could cost the city millions of dollars. He was arrested, charged with 4 counts of computer tampering, and was held on 5 MILLION dollar bail before he finally agreed to hand over access to the network. A source close to the situation, as relayed by InfoWorlds Paul Venezia , said that 
Terry's area of responsibility was purely network. As far as I know (which admittedly is not very far), he did not work on servers, except maybe VoIP servers, AAA servers, and similar things directly related to the administration of the network. My suspicion is that you are right about how he was 'monitoring e-mail'; it was probably via a sniffer, IPS, or possibly a spam-filtering/antivirus appliance. But that's just conjecture on my part.”The routing configuration of the FiberWAN is extremely complex. Probably more so than it ought to be; I sometimes got the feeling that, in order to maintain more centralized control over the routing structure, [Childs] bent some of the rules of MPLS networks and caused problems for himself in terms of maintaining the routing."Because the system was so complex (and also because he didn't involve any of the other network engineers in his unit), Terry was the only person who fully understood the FiberWAN configuration. Therefore, to prevent inadvertent disruption of this admittedly critical network, he locked everyone else out. I know most of the networking equipment … does use centralized AAA, but I get the impression he may have configured the FiberWAN equipment for local authentication only.”
Mr Childs:

He goes on to say that : 


"This is where it gets tricky for the prosecution, IMO, because the localized authentication, with Terry as sole administrator, has been in place for months, if not years. His coworkers knew it (my coworkers and I were told many times by Terry's coworkers, 'If your request has anything to do with the FiberWAN, it'll have to wait for Terry. He's the only one with access to those routers'). His managers knew it.
"Other network engineers for the other departments of the City knew it. And everyone more or less accepted it.
"No one wanted the thing to come crashing down because some other network admin put a static route in there and caused a black hole; on the other hand, some of us did ask ourselves, 'What if Terry gets hit by a truck?' If a configuration is known and accepted, is that 'tampering'?”
“He's very controlling of his networks -- especially the FiberWAN. In an MPLS setup, you have 'provider edge' (PE) routers and 'customer edge' (CE) routers. He controlled both PE and CE, even though our department was the customer; we were only allowed to connect our routers to his CE routers, so we had to extend our routing tables into his equipment and vice versa, rather than tunneling our routing through the MPLS system.” 


After reading this case, as strange as it sounds, I almost felt like I could relate with Mr. Childs. While by no means would I recommended taking it to the extremes he did, but when you build something such a network, or even building your own computer, it begins to take on almost a child-like relationship. I know it may sound odd, but when you work on something very hard, configure it perfectly, and know the inside and outs of it, it becomes more than just a Network or a computer. It is YOURS. I began building home LAN's and other networks when I was still in middle school, right when the technology was new. The setup, back then,  was much more complex than it is nowadays. The first one I attempted to setup took me 3 days of arduous configuration. I was editing GUI scripts,configuring every single setting, and setting up static IP's- then, assuming the setting were all correct ( which was rare, it was more trial by error then) setting up each individual computer to access the network properly. When something went wrong with my first network, I was always the one to come to. At first, the rest of my family members would try to fix it when it had a brief loss of connection, and this would frustrate me to no end, as silly as this sounds. It was my network, the culmination of a ton of hard work and time, and only I was able to do it right (according to me). 


After a while, I was the go-to guy around my neighborhood for LAN setup - and each one seemingly took on a life of its own for me. I knew the explicit details of each one, the right settings, etc etc. When something would go wrong, I could not focus on anything else until I got it fixed. I would get knocks on my door at 3am from a distraught sister trying to finish some homework, or my father up late submitting reports and such. I like to imagine this is how artists feel about their work.




Mr. Childs network was so complex, he took care of it like a baby and knew it like the back of his hand - thats why when people began tinkering around with it, he locked it up. There is a line, however, and no doubt he went way to far, but I think Networks Admins and Gurus all around the world will look at Mr. Childs case, and know the feeling.




Read more about the case here : http://www.infoworld.com/d/adventures-in-it/why-san-franciscos-network-admin-went-rogue-286?page=0,0





 

Thursday, February 10, 2011

RapidMiner question and Correction

Earlier, I posted a how-to guide for RapidMiner, the leading open-source data mining and analysis tool. I received a question for a reader regarding the optimization process, and it seems I did leave an important detail out. Here is the process : 

Speeding Rapid Miner up:


1) Close all process you DONT need with task manager. Use common sense with this. Keep core processes and programs running but end everything unnecessary. (Example: Close things like limewire.exe or itunes.exe, but keep things like windows.exe and rapid-i.exe open!)


2) Find out how much RAM your system has. You can accomplish this by right clicking "My Computer" and clicking properties.


3) Go into your C: drive and then the program files folder. After that, find Rapid-I folder and open it up.  For windows, open up the rapidminerGUI file Right click the file, and hit edit. It will bring up a script in notepad.


4) Go down to where you see the line about JAVA MEMORY Max. Change it to something compatible for the amount of RAM your system has (remember to leave 1.5 - 2gb of ram for your OS.) For example, if you have a 2gb laptop, changing the amount to 1024 should be fine, although not preferable. It is a very powerful program and needs adequate resources to run.


This should get your RapidMiner working at full power.


What I failed to mention is that once you edit the code, in the RapideMinerGUI, and you save it, you need to run RapidMiner by just double-clicking the same file you just edited. (rapidminerGUI)


Then you are done! Hope this helps!


Also, below is a video tutorial which shows how to use RapidMiner for data modeling. Enjoy!


100 Dollars for a XBOX 360 Network Adapter? No thanks, i'll connect to live for FREE!

Every once  in a while on this blog I'll take a break from the InfoTech cases, Programming and Database jargon to show y'all some cool ways to use basic InfoTech skills to save money, do some cool things, etc.


Heres the first one:


I have never been that big of a console gamer -I have a XBOX 360 elite that was collecting dust, as I primarily used it solely for a DVD player. Recently, my friends got me hooked on Call Of Duty Black Ops, an awesome first shooter multi player game by Activision and Treyarch. The game also has a campaign mode, but that is not nearly as fun as the online action. After a few days of playing at a buddy's house, I gave in - got my free month trial of XBOX live Gold, and bought the game. When I was looking at the Network Adapters ( so my XBOX can connect to the live service) I was shocked by the price. I just dropped 60$ on the game, I wasn't in the mood to spend an extra hundred. I knew there must be some way to bypass this, so I did a little research and found, low and behold, there is a VERY simple method to doing this - which I will share with you!




Things you need:


Ethernet Cable
A wireless network
A computer that is connected wirelessly to the internet


1) Plug one end of the Ethernet cable into the Ethernet port on the console, and the other into your computer

2) Go to your "Control Panel" and wait for a new window to appear. Double click the "Network And Sharing Center" icon.

3) Then click "Manage Network Connections"

4) You should see 2 Icons, one that says "Wireless Network Connection" and "Local Area Connection"

5) Turn on your XBOX. 

6)Right Click and drag to highlight both of the connections, and select "Bridge Connections." This will take a minute.

and BAM! You should now be able to connect to XBOX live!



It should look like this when you are done: 



If your xbox is giving you an error: Go to your start menu. Go to programs, accessories, and open up the command prompt. Make sure to right click it and hit "open as administrator." Once command prompt is up, type "ipconfig /all"   without the quotes. Go to the first connection, it should say "Wireless network" or something like that. Copy down your IP address, Gateway, and DNS servers. Go to the network settings on your XBOX, and enter all those settings in, except change the IP address slights, but within the same range as your network. (For example, if IPconfig shows your IP as 192.168.0.10, set the XBOX to 192.168.0.19.
Then save and connect!



An easy way to save 100$ - You can thank me by visiting this website often and visiting this pages advertisers. More tricks and other stuff coming soon!

RapidMiner : A how-to guide

In my business intelligence class we have been using a program called RapidMiner, which is an open-source system for data mining. In this class, we are analyzing almost 23 gigs of raw data, and it can seem very confusing at first. Unless you are running a very powerful computer, Rapid Miner can often freeze and crash due to the large amount of data and processing usage.


In this post, I will detail how to make RapidMiner work with your computer to its full potential, as well as detail how to use Rapid Miner.




Speeding Rapid Miner up:


1) Close all process you DONT need with task manager. Use common sense with this. Keep core processes and programs running but end everything unnecessary. (Example: Close things like limewire.exe or itunes.exe, but keep things like windows.exe and rapid-i.exe open!)


2) Find out how much RAM your system has. You can accomplish this by right clicking "My Computer" and clicking properties.


3) Go into your C: drive and then the program files folder. After that, find Rapid-I folder and open it up. Then,
a) for windows open up the rapidminerGUI
b) for Mac or linux, the other ones.


It should bring up a script in notepad.


Go down to where you see the line about JAVA MEMORY Max. Change it to something compatible for the amount of RAM your system has (remember to leave 1.5 - 2gb of ram for your OS.) For example, if you have a 2gb laptop, changing the amount to 1024 should be fine, although not preferable. It is a very powerful program and needs adequate resources to run.


This should get your RapidMiner working at full power.




Using RapidMiner:


Following are some video tutorials on how to use Rapid Miner. Good luck!







Wednesday, February 9, 2011

Java Programming - There are only 10 kinds of people in this world: those who know binary and those who don’t.

While I am sitting at home working on some Java Applets for my advanced programming class, I got to wondering how useful this language will be in the real world. I know it is used widely for creating basic standalone applications and internet applets, but some fellow MIS majors stress that it is one of the lesser used languages in the programming world - however that once you learn a language such as java that it becomes MUCH easier to learn other languages. I have heard that C++ is very versatile and not too bad to learn. Assembly seems to be the toughest, and I just began looking into languages such as Python and Ruby on Rails.

EncyclopediaDramatica, a satirical wiki that documents internet culture (and pretty much makes fun of everything) defines Java as
Java is an interpreted language which is unique in that it includes a pretend compiler so that Java programmers can feel like they're using a grownup programming language. It is object oriented and has automatic garbage collection to make it as easy as possible to allocate memory.
Java is like Alzheimers; it starts slow and eventually, it takes away all of your memory. Something Java fans like to talk about is the JIT compiler which eventually does turn Java into native code but only after it's been interpreted 10,000 times. By that time the program has probably already crashed with an out of memory error. Programming in Java drives most hackers permanently insane

One thing I have realized is how much work one can put into Java, and how confusing it must look to the untrained eye. For example, I built a program below that makes a multiplication table up to the number that the user inputs:
import javax.swing.*;
public class pw {


public static void main(String[] args) {
String matrixSize = JOptionPane.showInputDialog("Welcome to the Paul Welch multiplication table. What number would you like to multiply through?");
int userMatrixSize = Integer.parseInt(matrixSize);  
int column;


System.out.println("Multiplication Table through " +  userMatrixSize);

for (row=1; row<=userMatrixSize; row++)    {                             
for (column=1;column<=userMatrixSize; column++) {
System.out.print(" " + row*column + " ");
System.out.println(" "); 
}
System.out.println( " Thank you for using the Paul Welch Multiplcation Table " );

This is a program I built to build an employee payroll and report system. It took a great while, a lot of code memorization, patience, and correct syntax. It gathers the employees information, calculates taxes, and provides a monthly/yearly report.


public class pwEmployeePayroll
{
public static void main(String args[])
{ // declare vars
String hrWage;
String hoursWeek;
String dedPer;
String howManyYear;
String employeeName;
double hourlyWage=0.00;
double hoursPerWeek=0.00;
double deductionPaycheck=0.00;
double lessThanTwenty = .10;
double betTwenThir= .15;
double greatThir= .19;
double totalPaid=0.00;
double totalPaidPreTax=0.00;
double totalTaxesPaid = 0.00;
double paycheckAmount=0.00;
String monReport;
int monthsReport = 0;
double x = 20.00;
double y = 30.00;
String howManyMonths;
// intro
System.out.println("Welcome to the Paul Welch Tax Calculator." );
System.out.println(" This program will gather information from you and calculate relevant items, such as taxes.");
System.out.println("Lets gather some information about the employee on which you seek information!");
System.out.println(" Note : please enter all numbers in a whole number form, i.e. 30.00"); 
// get user info
employeeName= JOptionPane.showInputDialog( " What is the employees name?");
hoursWeek=JOptionPane.showInputDialog(" How many hours does the employee work a week ");
hoursPerWeek = Double.parseDouble(hoursWeek);
while ( hoursPerWeek <=0 )
{
System.out.println(" Invalid Entry. Try again");
hoursPerWeek = Double.parseDouble(JOptionPane.showInputDialog( " What is the employees hours per week?"));
} // Validate entry
hrWage=JOptionPane.showInputDialog( " What is the employees hourly wage");
hourlyWage= Double.parseDouble(hrWage); 
while (hourlyWage <=0)
{
System.out.println("Invalid Entry. Please enter again");
hourlyWage = Double.parseDouble(JOptionPane.showInputDialog(" What is the employees hourly wage"));
} // Validate entry
totalPaidPreTax = hoursPerWeek * hourlyWage;
//Calculations : figure out total taxes paid and what not
if (hourlyWage < x || hourlyWage != 0)
{
totalTaxesPaid = (totalPaidPreTax * lessThanTwenty);
}
 
if (hourlyWage >= x && hourlyWage <= y)
{
totalTaxesPaid = (totalPaidPreTax * betTwenThir);
}
 if (hourlyWage > y)
{
 totalTaxesPaid = (totalPaidPreTax * greatThir);
}
paycheckAmount = (totalPaidPreTax - totalTaxesPaid); System.out.println(" Per month, the employee's information is as follows:");
System.out.println("Employee Name   "    +    employeeName);
System.out.println("Paycheck amount   "   +     paycheckAmount);
System.out.println("Total taxes paid   "    +    totalTaxesPaid);
System.out.println( "Total paid pre-tax     "   +  totalPaidPreTax );
// Basic information is set and stored, now onto calculating over time periods
monReport =JOptionPane.showInputDialog( "Would you like to calculate that with additional months? Please enter Y or N");
while ((monReport.compareTo("Y") !=0) && (monReport.compareTo("N") !=0))
{
System.out.println("Invalid Response. Please enter Y or N");
}  // Validate entry

while(monReport.equals("Y"))
{
howManyMonths = JOptionPane.showInputDialog("How many months would you like to calculate");// Input, then calculate
monthsReport = Integer.parseInt(howManyMonths);
paycheckAmount = paycheckAmount * monthsReport;
totalPaidPreTax = totalPaidPreTax * monthsReport;
totalTaxesPaid = totalTaxesPaid * monthsReport;
System.out.println( "For that amount of months, the employee's pay and taxes is as follows");
System.out.println("Employee Name   " + employeeName);
System.out.println("Paycheck amount   " + paycheckAmount);
System.out.println("Total taxes paid   " + totalTaxesPaid);
System.out.println( "Total paid pre-tax   "  + totalPaidPreTax);
String yearlyReport=JOptionPane.showInputDialog("Would you like a yearly report on this employee? Enter Y for yes or N for no");
while(yearlyReport.equals("Y"))
  {
    howManyYear= JOptionPane.showInputDialog(" How many years would you like to calculate?");
int howManyYears = Integer.parseInt(howManyYear);
 
System.out.println("Yearly report is as follows:");
 paycheckAmount = paycheckAmount * howManyYears;
totalPaidPreTax = totalPaidPreTax * howManyYears;
totalTaxesPaid = totalTaxesPaid * howManyYears;
System.out.println("Employee Name    " + employeeName);
System.out.println("Paycheck amount    " + paycheckAmount);
System.out.println("Total taxes paid   " + totalTaxesPaid);
System.out.println( "Total paid pre-tax   "  + totalPaidPreTax);
while((yearlyReport.compareTo("Y") !=0) && (yearlyReport.compareTo("N") !=0))
 System.out.println("Invalid Response. Please enter Y or N");
yearlyReport =JOptionPane.showInputDialog(" Would you like another yearly report on this employee? Enter Y for yes or N to quit the program");
 }

I suppose it makes me appreciate that most code for basic functions are stored in an API and what not, and I also appreciate the programmers who spent tedious hours writing it.

What do y'all think about Java and other languages? Feel free to comment

Information Systems: No longer a cost center, but a essential tool for profit maximization.

After a thorough look through many different business IT cases over a two decade period, there is one thing I am sure of - The effective utilization of Information Technology can provide a HUGE competitive advantage.  Companies who neglect their IT resources/department , or treat it as a necessity rather than an asset will fall wayside to their competitors.

I recently got through reading about Harrah's, the nationwide chain of casinos, and how they utilized business intelligence and Information Tech to become a powerful force in their market and realize huge gains. I recommend my readers check this article out, here are a few excerpts:

"To compete on analytics, organizations also need to compete on technology, and that means constantly monitoring cutting-edge IT developments. The key prerequisite is a data-oriented strategy that allows a business to rapidly pull information from every plausible source. These technologies could include enterprise resource planning, CRM, point-of-sale and other transaction technologies. Competing on that information, then, necessitates using an enterprise data warehouse that can store, integrate and present the data in formats that can be easily accessed and analyzed."

"New technologies and data sources that were once just brainstorming ideas are now becoming a reality, much to the advantage of analytical competitors. For example, information content in data warehouses has long been dominated by structured data. But significant progress is being made toward incorporating equal amounts of unstructured data, which includes natural-language data sources such as word processing files, e-mails, text fields from databases and applications, and even voice recognition."

Check out the article here:

Hello All!

This is a blog I have decided to start to write about my progress in the field of MIS. I will post about my thoughts, Ideas, questions, etc. about all the areas of IT.




About me: My name is Paul Welch and I am pursing a BSBA degree from Auburn University with a major in Management Information Systems. I seek a career oriented, lucrative, and rewarding position in any of the MIS concentration areas. My major studies and preferred area of work include Data Management, Programming, Computer Applications, Consulting, Business Strategy, and Information/Network Security. I am currently working on becoming a MCP (Microsoft Certified Professional), as well as obtaining Network +, Security +, VMware, CISCO, and other CompTIA certifications. My previous work experience includes creating and managing the Network and the Internet Marketing for a local restaurant, working as an Account Executive with the Auburn Plainsman, as well as a nighttime supervisor at a Chick-Fil-A. I enjoy working with people immensely and possess exemplary leadership capabilities. I served as Class President in High School and the Student Government. I also enjoy sports, the outdoors, and all things computer related