problems with security routines...

If you have questions about any aspect of QBasic programming, or would like to help fellow programmers solve their problems, check out this board!
Post Reply
User avatar
SebMcClouth
Veteran
Posts: 240
Joined: Fri Apr 29, 2005 2:20 am
Location: Inside the Matrix

problems with security routines...

Post by SebMcClouth »

As you can read I'm having some problems with my security routines... Can someone take a look at it and check it out?

Code: Select all

'
' qbinux/tools/secure/secure.qs0
'
' Copyright (C) 2005 Sebastian McClouth
'
'Modification history tools/secure/secure.sq0
'
'15 Sep 05      Sebastian McClouth
'       1st build attempt. Code based upon the login-routine by Z!re.
'       Qbinux is currently single-tasking and single-user, so Getty supports
'       to load only one user per login.

'$DYNAMIC
DEFINT A-Z
'$INCLUDE: 'include/b4g.ql0'
'$INCLUDE: 'include/qbinux.ql0'
'$INCLUDE: 'include/handle.err'

REM $STATIC
SUB Getty
DIM ProcInfo AS ProcInfoType
'In future release 'etc/getty.cfg' will be opened here.

'Version message
'Additional information: in future release 'etc/issue' will be openend to
'show the login-message. Currently, this file doesn't exist yet. Until the
'NVXFS is inplented in Qbinux Setup this file won't exist.

'Here comes the routine that checks if 'etc/issue' exist.

PRINT
PRINT McClouthLabel
GetProcInfo ProcInfo
PRINT CoreVersion + " on an " + lcase$(left$(GetVendorName$(ProcInfo.CpuVendor),1))+STRIM$(ProcInfo.CpuFamily)+"86"

CurUser = CHR$(BITS2NUM("00000000"))
't$ = WorkPath(".../etc/passwd")         'Will be created at a later time.
'AlreadyHere& = GetID(t$, 0)

'R=Read
'W=Write
'H=Hidden
'D=Delete Protected
'
'RWHD
PriPub = CHR$(BITS2NUM("001100000"))
IsSystem = CHR$(BITS2NUM("10000000"))

'MkFile ".../etc/passwd"
't$=WorkPath(".../etc/passwd")
't&=GetID(t$,0)
'ulist$=string$(8-len(hex$(t&)),0)+hex$(t&)

'ff=freefile
'open "NVXFS/"+ulist$+".nff" for append as #ff
'l&=lof(ff)
'close #ff
'if l&= 0 and AlreadyHere& <> 0 then    'Will activate this later again.
  'print
  'color 4
  'print "Warning: There seems to be a problem with the userlist."
  'print "         You must reinstall Qbinux in order to fix this."
  'print
  'print "  This error is the direct consequence of someone deleting"
  'print "  the Qbinux userlist file, usually to try and gain access"
  'print "  to files and folders that are hidden/locked."
  'print : color 7
  'print "                Press any key to end"
  't$=input$(1)
  'end
'elseif l& = 0 and Already& = 0 then
  'This is for useradd, so no code needed here.
'else
  Enter:
  'for a=0 to 2                 'I don't know what this is for.
        pwd$ = ""
        print "login:";: ly = CSRLIN
        print:print "Password:"
        DO 
          LOCATE ly - 2, 8: PRINT dspl$;"   " 'Display storing variable
          press$ = INKEY$
          IF press$ <> "" THEN 'On press
                'Filter Backspace, subtract variable
                IF press$ = CHR$(8) AND LEN (dspl$) > 0 THEN
                        sb = LEN(dspl$)
                        Ndspl$ = MID$(dspl$, 1, (sb - 1))
                        dspl$ = Ndspl$
                'Filter Enter, Exit for checking
                ELSEIF press$ = CHR$(13) THEN
                        EXIT DO
                'Add up user input to variable
                ELSE
                        dspl$ = dspl$ + press$
                END IF
          END IF
        LOOP
        T!=Timer
        Flag = Login(dspl$, T!)
        locate ly + 2, 1
   'next
   
   if flag = 0 then                     'Should be able to get the flag from
     'failed login, display message, and goto enter     'login.
     print "Login incorrect"
     print
     goto Enter
   elseif flag = 1 then
     exit sub
   end if
'end if

END SUB

'Former SUB (Usr$, y%, x%, t!)
'-----------------------------
'Only username 'root' and password 'toor' are supported.
FUNCTION Login (Usr$, t!)
dspl$ = ""

DO
  press$ = INKEY$
  IF press$ <> "" THEN
        IF press$ = CHR$(8) AND LEN (dspl$) > 0 THEN
                sb = LEN(dspl$)
                Ndspl$ = MID$(dspl$, 1, (sb - 1))
                dspl$ = Ndspl$
        ELSEIF press$ = CHR$(13) THEN
                IF Usr$ = "root" AND dspl$="toor" THEN
                        Login = 1
                ELSE
                        Login = 0
                END IF
                EXIT DO
         ELSE
                dspl$ = dspl$ + press$
         END IF
  END IF
  'IF timer -t! >=.075 THEN
  '      togg = (togg + 1) MOD 2
  '      LOCATE y%-1, 12
  '      IF togg = 0 THEN PRINT "_"; ELSE PRINT " ";
  '      t! = TIMER
  'END IF
LOOP
END FUNCTION
I know why you're here. I know what you've been doing... why you hardly sleep, why you live alone, and why night after night, you sit by your computer...<br>
Unfortunately, no one can be told what Qbinux is. You have to see it for yourself.
Post Reply