Jump to content

Emeryth

Active Members
  • Posts

    109
  • Joined

  • Last visited

Posts posted by Emeryth

  1. A writeup? Anything specific you want me to write about?

    For now, you can have the schematics:

    schematics.th.png

    As you can see the only really complicated part is the power supply, the LCD and buttons are just connected directly to the microcontroller.

  2. It just does whatever the fonera can do, if you manage to adapt the software to the display and controls.

    We've got airodump-ng working - displaying a list of APs (as seen on the picture), simple attacks using mdk3, deauthentication, connecting to an unsecured network and scanning hosts using nmap.

    Maybe it's not very impressive right now, you can do those things using a laptop which isn't much bigger, but the hardware has much more potential, that's why I'm working on a better version.

  3. Just want to show off my project.

    Looking at all the fonera battery packs and automated hacking software I wondered why hasn't anybody thought of transforming the fonera into a truly autonomous pentesting device.

    I've wanted do it it for a very long time and never had the motivation, but recently I had to come up with a team project for school and this seemed perfect.

    So with a team of 5 people and 6 months of work we came up with this:

    post-10286-1281363725_thumb.jpg

    A hand-held wifi pentesting device, codename "Wifon".

    post-10286-1281364060_thumb.jpg

    It's a fonera with a cheap 64 charcter LCD and 6 buttons, powered with two li-ion cells in a modified box of chocolates :P.

    I was the leader of the project and I did all the hardware.

    The LCD and buttons are controlled by an ATMEGA88 microcontroller, which communicates with the fonera via UART.

    A switching 3.3V voltage regulator powers the fonera, and a linear 5V regulator powers the LCD and microcontroller.

    Two 900mAh cells allow for 90 minutes of operation.

    My friend - Kacper, wrote software for communicating with the display, posing as a normal terminal, so that any existing app can run on the screen without modification (although they do require modification to be useful).

    The rest of the team - Adam, Marek and MichaƂ, adapted software such as aircrack to work nicely with the screen and buttons.

    The software on the fonera was written mostly in Ruby, because that was the only reasonable scripting language small enough to fit on the device.

    Here's how it looks in action:

    post-10286-1281365194_thumb.jpg

    As you can imagine (and see by the case :P) , some things were rushed to meet the deadline, but we're satisfied with the outcome.

    The total cost (not counting the fonera) was about $20 and ZERO hardware modifications of the fonera itself (the second antenna is optional), just plug and play.

    All in all, this is more of a proof of concept than a usable device, but it works!

    Here's a sneak peek at Wifon 2.0, this time I'm working alone but with much better hardware, namely a 320x240 color touchscreen :)

    newlh.th.jpg

    If anyone is interested I can provide schematics, code, and answer any questions about the project.

  4. I still recommend using the nokia cable, but as a side note, it is possible to safely bring down 5V serial to 3.3V with just one transistor and two resistors like this: http://forums.overclockers.com.au/showthread.php?t=783133 (the picture shows 3.3V to 5V conversion, but the other way around is also explained)

    I used it recently to connect a microcontroller to the fonera, as I didn't want to risk connecting 5V directly.

  5. Check out my older post if you need drivers for your cable:

    http://www.hak5.org/forums/index.php?showtopic=15672

    Disassemble the phone plug and use this pinout to find which wires inside your cable are TX, RX and ground (ground is usually the cable's shielding)

    http://pinouts.ru/CellularPhones-Nokia/nok...op_pinout.shtml

    If you have the la fonera 2100, connect the wires according to this: http://www.dd-wrt.com/wiki/index.php/LaFon...rial-Cable-Port

    otherwise, you'll have to find what are the correct pins for your model.

    Info about the rest of the flashing procedure is all over the net so just look it up.

  6. My nokia CA-42 cable uses the Prolific pl-2303, a very popular USB->serial chip, it might be inside yours too.

    For some reason the latest drivers from the Prolific website ( http://www.prolific.com.tw/Eng/downloads.asp?ID=31 ) don't work with my cable, so here's the old driver I'm currently using:

    http://www.sendspace.com/file/qsmsch

    If that doesn't work, you should try to find out what particular chip your cable is using and get drivers for it.

    And if it works, just connect the cable to the tx and rx pins accordingly, and the ground wire (which will be the cable's shielding probably) to the ground pin of the router (otherwise you'll get garbage).

    Use putty or hyperterminal to open the connection, and that's it.

    Good luck!

  7. Time to get this back up!

    Here's the challenge I mentioned a while ago: A game in 100 lines of code.

    The Rules:

    -Any language

    -Any kind of game

    -The submission should simply be 100 (or less) lines of text

    -Even empty lines are counted - to simplify

    -No additional files (unless your language/environment absolutely requires it)

    -Using only standard libraries is allowed

    -The above rules can bent or broken if you have a good reason

    It's not about how much code can you fit in 100 lines, try making it readable.

    There is no deadline, and everyone who submits something will be a winner.

    Because I think you're all n00bs, who can't even write "Hello World" in under 100 lines ;P

    Here's my 100 line Arkanoid in Java to motivate you:

    package java101;
    
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;
    import java.util.Random;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.SwingWorker;
    
    public class Main {
        static GamePanel panel;
        static int ball_x=13000,ball_y=15000,ball_vx=0,ball_vy=200,ball_last_x,ball_last_y,paddle_x
    =130,paddle_width=64,game_state=0,points=0,lives=3;
    
        public static void main(String[] args) {
    
           JFrame window = new JFrame();
           window.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
            panel =new GamePanel();
           for (int x=0;x<10;x++ )
            for (int y=0;y<10;y++ ){
                if(x>0&&x<9&&y>0)panel.field[x][y]=new Random().nextInt();}
           window.add(panel);
           window.setSize(320, 260);
           window.setResizable(false);
           window.setVisible(true);
           window.setTitle("Arkanoid 101");
           window.addMouseMotionListener(new MouseMotionListener(){
                public void mouseDragged(MouseEvent e) {
                   Main.game_state=1;}
                public void mouseMoved(MouseEvent e) {
                   Main.paddle_x=e.getX()-32;
                   if (Main.paddle_x<0)Main.paddle_x=0;
                   if (Main.paddle_x>320-Main.paddle_width)Main.paddle_x=320-Main.paddle_width;
                   Main.panel.repaint();}
            });
            SwingWorker time = new SwingWorker() {
            @Override
            protected Object doInBackground() throws Exception {
                while (true){
                if (game_state==1&&lives>0){
                ball_last_x=ball_x;
                ball_last_y=ball_y;
                ball_x+=ball_vx;
                ball_y+=ball_vy;
                if (ball_last_x/100!=ball_x/100||ball_last_y/100!=ball_y/100)Main.panel.repaint();
                if (ball_x/100-2<=0||ball_x/100+2>=310)ball_vx=-ball_vx;
                else if (ball_y/100-3<=0)ball_vy=-ball_vy;
                else if (ball_y/100+3>=200)
                 if(ball_x>=paddle_x*100&&ball_x<=(paddle_x+paddle_width)*100){ball_vy=-ball_vy;
                    ball_vx=(ball_x/100-paddle_x-paddle_width/2)*5;
                    ball_vx=  (ball_vx<0) ? ball_vx-50 : ball_vx+50;
                    ball_vy=  (ball_vx<0) ? ball_vx-50 : -ball_vx-50;
                    }
                    else{
                        lives--;
                        Main.game_state=0;
                        Main.ball_x=13000;
                        Main.ball_y=15000;
                    Main.ball_vx=0;
                    Main.ball_vy=200;}
                else if(ball_y<10000&&ball_y>300&&ball_x<31700&&ball_x>300){
                    if (panel.field[ball_x/3200][(ball_y/100-3)/10]!=0)destroy_block(0,-3);
                    else if (ball_y<9000&&panel.field[ball_x/3200][(ball_y/100+3)/10]!=0)destroy_block(0,3);
                    else if (panel.field[(ball_x/100-2)/32][ball_y/1000]!=0)destroy_block(-2,0);
                    else if (panel.field[(ball_x/100+2)/32][ball_y/1000]!=0)destroy_block(2,0);}}
                Thread.sleep(10);}
               }};
        time.run();
        }
    
       static void destroy_block(int x, int y){
            panel.field[(ball_x/100+x)/32][(ball_y/100+y)/10]=0;
            ball_vx=  (x!=0) ? -ball_vx : ball_vx;
            ball_vy=  (y!=0) ? -ball_vy : ball_vy;
            points+=Math.abs(ball_vx/10)+Math.abs(ball_vy/10);
        }
    }
    
     class GamePanel extends JPanel{
    
         int field[][]=new int[10][10];
        @Override
       public void paintComponent(Graphics g){
            g.setColor(Color.WHITE);
             g.fillRect(0, 0, 320, 240);
            for (int x=0;x<10;x++ )
            for (int y=0;y<10;y++ ){
                g.setColor(new Color(Integer.MAX_VALUE-field[x][y]));
                g.fillRect(x*32, y*10, 32, 10);
            }
             g.setColor(Color.BLACK);
             g.fillRect(Main.paddle_x, 200, Main.paddle_width, 10);
             g.drawOval(Main.ball_x/100-2, Main.ball_y/100-2, 5, 5);
             g.drawString("Lives: "+Main.lives+" Points: "+Main.points, 0, 220);
             if (Main.game_state==0&&Main.lives>0) g.drawString("Click and drag to start", 100, 120);
             if (Main.lives==0) g.drawString("GAME OVER", 100, 120);
         }
    }

×
×
  • Create New...