找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15389|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! D( F  t; I" ?! F
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 `$ p! m+ O  f$ j) H
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 x6 v. U0 j9 W6 k8 z, D+ tusage: himr <address> <value>. sample: himr 0x80040000 0x0
9 d: l  q9 g2 p- o( j0 b5 u- p6 B1 p& J0 p- a

: F1 \1 D) o+ `7 B$ k) g- E不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?0 a: R: q7 F: P7 c5 ^7 N
# w3 ]( g# I# [7 |* ^
补充内容 (2012-3-8 09:42):/ O) n9 u: P, g0 u1 ?, m. W
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( _7 W: D& `& H) o& n& y
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
& t7 [! C/ G/ O' B9 d$ }% A+ |
8 D9 b* y. U5 t7 l) dhimr <address> <value>. sample: himr 0x80040000 0x02 w( V8 ]3 @( o' m$ y/ s# T; W0 \

+ P- r+ |" x; k/ x例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。! N2 V7 t  n5 q$ |5 Y  }  F! `' o
himr 0x80040000 0x00; L7 ~" P2 l6 h1 T
himr 0x80040001 0x11- K; L4 D# l5 s. e1 D: i. Y
himr 0x80040002 0x22
  d9 B( k4 i! U+ a3 Xhimr 0x80040003 0x33, Y% r& D0 N9 H: M
himr 0x80040004 0x44
9 e/ V, `- s* v7 O- \himr 0x80040005 0x55
3 n$ ~" l+ s  |- ^* P7 E
# z7 I2 o$ g. N3 `( h( {SN也是类似。% r4 x+ @' d( m, L! e  J( s
% C9 z; w+ t+ ~! z, S
现在主要是,谁告诉我们MAC和SN的地址?! I4 W$ b+ R0 p! i  G6 V# P4 {
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ z( @! u1 j7 R! U0 p# g+ F一直想找到运程修改MAC和SN的办法,苦于无解啊
1 v4 m3 ~2 T3 S* d/ Q! b  T
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  D; }, b% @# p; W, p! |! t) K9 k* E( Z) Q; O
修改的代码早有了。到今天不会编译。7 b+ R2 B2 E* i! s( T
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 F7 F. J$ R. u8 W6 r$ h) f; z
  2. #include <malloc.h>* k; m( @0 Q+ Q- T" Y
  3. #include <sys/types.h>
    3 O, s$ O" n8 n7 f4 |
  4. #include <sys/stat.h>
    % v) c9 ]" `% U, D
  5. #include <sys/ioctl.h>5 V6 a) f+ [4 ]# o' C$ j
  6. #include <stdio.h>. Y  T3 O. R& A& I# ~9 S+ }
  7. #include <string.h>
    ( r9 \3 r) ^1 \. K8 S8 N1 z- b8 q

  8. , [) W9 G- {" e* R! m8 o( U( S+ e. q
  9. typedef struct {$ D% ?$ N$ d" q: C
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 ~! s" {/ c" n% ]6 D
  11.         unsigned int        sub_addr_count;" h: B; x+ \* X; z& u# h
  12.         unsigned char*        e2prom_cmd_data;
    2 }$ F6 T: e0 G1 ~8 N6 M4 ~$ u! w( ?" ?
  13.         unsigned int        data_count;
    % R( A- u( y0 ^( T$ V
  14. } e2prom_s_cmd;& S& V! c2 [/ Y, a( q9 v

  15. 2 T; A" I7 C! w4 C, Z" m  J
  16. #define E2PROM_CMD_READ 1: M- ^& W: V1 H4 ]0 C1 P' ]
  17. #define E2PROM_CMD_WRITE 2/ e9 b+ f% {* n1 K1 J1 X+ {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 [1 }; }6 E' l3 v  s( w. S" Q

  19. * T- l. D. r: D+ j  m- G" w) b6 H  _# \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . x* X6 E6 h; D& T6 `
  21. {1 b: P' ~, L; S7 Q! m) `2 |
  22.         int fd, ret;; r2 [5 S+ Y  T. c- x: G( e- w; f
  23.         e2prom_s_cmd arg;
    : @  z% H& m0 c7 w
  24.         unsigned char buf[0x18];
      ]  I2 }) h) C" @$ z* _8 m6 T

  25. # V# m( h# u8 f
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 H1 k3 o7 H- p: M, V! l
  27.         if (fd  < 0) {
    ' o7 i8 A$ G* k0 O* E# ?' T* v
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  r+ f* s3 Z* }( z. L
  29.                 return -1;
    5 {  E9 _0 a  r1 P2 A( B
  30.         }6 O6 e; S% Q& N* e& h
  31.         arg.sub_addr_count      = 2;/ v$ z2 |+ D- U3 [
  32.         arg.data_count          = 0x18;
    . ?) E6 a. {# V" m, T% l  L2 j5 [
  33.         arg.e2prom_cmd_sub_addr = 0x290;( y- G8 Z2 {7 p- r1 a+ I: z
  34.         arg.e2prom_cmd_data     = buf;
    ; s6 N' R$ c8 [2 r8 T
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    5 u$ M1 {( p! A3 W
  36.         if (ret != 0) {
    / D. [% [# |0 ?1 h1 Q# L- u) k
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    $ [+ [" N9 W' y( z* w/ U+ `
  38.                 return -1;
    , z5 E3 `4 e3 o4 D9 ]
  39.         }
    + }5 F. f1 L/ D8 s9 l8 B! F" r
  40.         memcpy(mac, buf, 6);) K5 m0 ^, s* }7 _7 {0 w
  41.         memcpy(stbid, &buf[6], 18);2 X6 V1 v/ f( q- `6 B
  42.         stbid[18] = '\0';
    $ ?$ e: H* X( g2 }1 C/ N* l

  43. - Z2 _& e: m$ `/ E! d7 f7 b1 U
  44.         return 0;, V6 z3 T) i9 {* H
  45. }: v. Y0 V2 y& T/ I
  46. ( X8 W$ M8 ~# Z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + E" t2 A! l" h/ f
  48. {3 H# K7 |& t5 J+ E
  49.         int fd, ret;, d" v. o0 P; ~4 q8 e
  50.         e2prom_s_cmd arg;3 o9 e. a+ d1 c! E7 ]4 v- U5 p
  51.         unsigned char buf[0x18];9 X/ U" a, X, Y; K6 A

  52. - y: C3 A- n# r" t
  53.         memcpy(buf, mac, 6);
    1 w" |! N! a- @8 F2 T
  54.         memcpy(&buf[6], stbid, 18);
    4 n% Y; M; s- a, t8 c& r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    , L" ~9 m# p0 _. [
  56.         if (fd  < 0) {
    + e* ?, d* {* R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . S9 f, G# w9 O6 g
  58.                 return -1;' l3 V' N3 c) H
  59.         }
    8 J! L# y+ ?0 d2 m' u2 ^
  60.         arg.sub_addr_count      = 2;
    3 Z! Y; y9 _5 |) P. Z
  61.         arg.data_count          = 0x18;
    ) J1 I6 r9 J( h' \' y( x
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ L! o: I; X% k$ g
  63.         arg.e2prom_cmd_data     = buf;6 }7 M/ p* r. V8 r
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 t, j! j  r- u8 B3 O
  65.         if (ret != 0) {
    ; c+ E+ Y* O& V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # B5 V5 q: T/ g- F# c1 D
  67.                 return -1;$ g, J) S' e& i, ]) @7 {% s
  68.         }
    - u) D  p0 Y! T6 ^- w# k
  69. 3 A) P( T9 [& B* v# B
  70.         return 0;
    & f) b* n% @" ]  \6 J% ]
  71. }
    ' U! [8 ^: J7 b

  72. ) c$ s6 s7 L  v+ I& \- N  p% w
  73. int main()
    $ ^, e+ g' A; z/ \: k7 ]) ]
  74. {
    6 t( v' a* A' X1 A: G1 K# F2 X% I  s1 o
  75.         char c;
    % T5 ]! e6 F9 c& H6 Q! K
  76.         int i, macs[6];
    ( ~6 Q3 d7 R7 `8 m) O3 t
  77.         unsigned char mac[6];
    2 B) c2 x3 O4 }
  78.         unsigned char stbid[256];% L2 k/ X2 o  _/ Q% t  _1 g4 k5 P

  79. 9 t, l/ q# _( C* g8 m" W* O/ V
  80.         if (readparam(mac, stbid) < 0)" X& H2 v: @3 W: V! l* s
  81.                 return 1;
    - Q& k- R3 i( t7 o% g- ]" E

  82. 3 S$ t8 K5 E3 J. o4 `  I! k; |
  83.         printf("Current parameters: \n");+ X! [  Z$ I' `% n$ ^7 X0 @
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % O( O: \& \, x$ \* q
  85.         printf("  STBID: %s\n", stbid);9 j7 f! h0 n4 A- i% ^" w
  86.        
    - u. s  s) M1 B+ E+ i8 {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");5 U) ]8 i8 ^) v' P' {; c$ {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& d7 ^1 C( |7 M
  89.                 printf("Input MAC error\n");* d2 u2 g6 P& ?) [9 K
  90.                 return 1;2 u7 w4 A7 Z4 ~# x
  91.         }
    ) F2 n4 @2 U# a9 I2 k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 p+ \3 C& \+ z6 `
  93.         printf("\nPlease input new STBID: ");$ U. M- u4 U% i7 _+ P3 K
  94.         scanf("%s", stbid);
    1 _& |" m- l+ D
  95.         if (strlen(stbid) != 18) {# `5 k8 w1 U- F. a
  96.                 printf("Invalid stbid\n");
    : x% w# C! r/ O" x' ^
  97.                 return 1;- a% o  u0 J0 A
  98.         }2 Z4 n# H+ h4 m1 j+ {! U/ V$ }# R
  99.         printf("\nNew parameters: \n");9 _" X, k1 l6 C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, ~2 H9 Q( \) U0 [0 W
  101.         printf("  STBID: %s\n", stbid);
    0 P9 D3 K9 D% |7 t
  102. 4 {7 C# C& ~; a8 W8 T
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , ?2 l, J6 ~, K  n' N3 }
  104.         for (;;) {% T8 ?4 |; h! [# \* O
  105.                 c = getchar();
    , }2 S9 E* w2 a) `: K$ p+ t, d! V
  106.                 if (c == 'y' || c == 'Y')1 s# U1 `4 E) G4 M2 N# \6 a# O
  107.                         break;
    ! f. l5 W+ Y9 \$ s0 J4 @
  108.                 if (c == 'n' || c == 'N') {( S' S3 Y: O. }% Q; c7 \# K
  109.                         printf("\nAborted.\n");& e/ D" F4 M: g# t: w9 g
  110.                         return 1;
    / F) i1 J* D/ a! A
  111.                 }
    * e2 K5 L1 d) f* ]
  112.         }
    ) C& X" F% a2 ]9 R1 ?% V. E  R
  113.         if (writeparam(mac, stbid) == 0) + |" U6 u2 S1 X5 q3 g
  114.                 printf("Parameters changed.\n");
    4 {. M& c9 m  V0 M  Z
  115. ( \* O. H" `4 U5 |/ P( }
  116.         return 0;$ l1 S/ X# Q& d  ]
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
3 G# Y8 w% @0 `5 O% Z3 k* D0 o在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 M: K0 y% j# A) b; ^
你用的编译命令行格式是什么?( {" ]% C0 L- Q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-31 13:49 , Processed in 0.026879 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表