找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15592|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 t" P4 P- |, P* g# ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # G9 p/ d+ B/ \* y. k$ K( Q5 B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 }& c! @7 L, F+ v
usage: himr <address> <value>. sample: himr 0x80040000 0x0! l5 x9 D* h* b9 U" ~" Y
, M3 e  k& W; q: [/ J

- H% B' X4 U- F8 K不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 O9 A: S8 R1 j5 N. X, l" a' ]8 J( a, x
补充内容 (2012-3-8 09:42):/ |6 u' P7 t  `' [. J
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, k/ j, K  S% E+ j9 V: @3 o这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
" [" Q0 Y2 B2 H' b7 U5 {+ s* e& w6 k1 R9 R$ N4 z
himr <address> <value>. sample: himr 0x80040000 0x0* `7 ^; n9 ~7 e9 R/ H7 f8 }
( K6 s4 S* n! b8 N
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ s8 a% B7 N) h' z+ u5 j1 shimr 0x80040000 0x00
) x8 K* h8 c& Zhimr 0x80040001 0x11
$ Q) \' c: {0 mhimr 0x80040002 0x22
1 H) _" k! d4 \. Shimr 0x80040003 0x33
9 ^. q# L4 y5 u8 Hhimr 0x80040004 0x44$ d* \$ A0 _1 N$ P( q
himr 0x80040005 0x551 z$ }  y9 T: t( n1 e

* }* |) @9 e0 L$ xSN也是类似。
/ [7 {# n: k# r
- U2 g+ y, }3 u6 _5 E, B现在主要是,谁告诉我们MAC和SN的地址?
$ Y4 V2 E8 e( Z  f0 {* |
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% V; L/ ^/ N! d& w一直想找到运程修改MAC和SN的办法,苦于无解啊
; I+ T" d$ x3 w) z6 {( e
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / I6 z: J1 J. b! C
+ `, k$ Q+ S9 m# {) l: j8 D
修改的代码早有了。到今天不会编译。
3 e( W$ Q3 F* O3 [3 E& [需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    6 k0 [6 {2 c3 Q5 h8 t: `
  2. #include <malloc.h>; f/ ?. Y9 s0 ]; u
  3. #include <sys/types.h>) a$ U7 s+ z3 p* n4 D( X9 X% S
  4. #include <sys/stat.h>& `1 |* a  N% l4 E  ]
  5. #include <sys/ioctl.h>+ V8 Y2 D8 k% r9 Z/ X9 R/ N; s
  6. #include <stdio.h>5 ~! a/ Q7 U1 D, c+ \1 o
  7. #include <string.h>
    . u5 |4 v  |; u8 L: g) k. G
  8. . K' a, k3 W: A& J
  9. typedef struct {( Q% P+ [3 m9 \" a; \6 `0 w5 T6 d
  10.         unsigned int        e2prom_cmd_sub_addr;
    : ~: H4 @  ?1 J) p% Z
  11.         unsigned int        sub_addr_count;. B& e5 A( ?" _# S3 Q
  12.         unsigned char*        e2prom_cmd_data;
    5 c7 ?3 D  z  |0 ^% S4 L( ?
  13.         unsigned int        data_count;8 G7 X7 I& F- B, ^& @1 _- M
  14. } e2prom_s_cmd;7 f1 t! g' t+ e# h" u
  15. + G6 y& Y  Y8 \9 A
  16. #define E2PROM_CMD_READ 1. z* U0 F4 H: y! N/ P
  17. #define E2PROM_CMD_WRITE 2
    2 K+ B+ d+ \' A( I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - P; e4 f# n, @4 {! F9 U4 Q" u

  19. + W) U& g, g8 L
  20. static int readparam(unsigned char *mac, unsigned char *stbid). ]. D# K9 G) j  @
  21. {
    & p6 L8 a/ \0 f2 k
  22.         int fd, ret;
    ; |# D. q- n+ U# L1 @
  23.         e2prom_s_cmd arg;/ m- I5 N) {6 {' K, f) t1 u; ]
  24.         unsigned char buf[0x18];
    1 w  g4 q7 D. x/ r

  25. & _7 `$ ^& R; \3 \* \( z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# y8 a) N% Q& X* Q
  27.         if (fd  < 0) {! h( T& G  L- y+ @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 {, J2 ?& W/ l: T& z; o
  29.                 return -1;
    5 n! u" ]' R& D2 m" k
  30.         }$ G. x' ]5 _8 N7 ]) E/ B# y
  31.         arg.sub_addr_count      = 2;9 W, Y1 \+ j- @
  32.         arg.data_count          = 0x18;
    ( J8 `! c6 B: e& r
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( }. x! h' F% ]7 n. Y; v- h" _
  34.         arg.e2prom_cmd_data     = buf;
    0 I+ |  P3 [5 ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- A! V; D) h0 w2 `% {* y
  36.         if (ret != 0) {/ w7 J7 ^, f- }- t  f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; p. o- g4 Y% p
  38.                 return -1;  w( P% m" f; x- ^* j( g, J' n
  39.         }
    ) N7 P& L; |6 B3 E; |
  40.         memcpy(mac, buf, 6);
    - j$ s8 f6 I* _4 T, e: O
  41.         memcpy(stbid, &buf[6], 18);/ c3 ~6 g0 `6 k" \' M1 b6 `% n
  42.         stbid[18] = '\0';
    + k/ F, y. D# N3 `+ C/ t
  43. 2 }4 a$ G, U4 R; s. E  b
  44.         return 0;
    5 f* q. M$ Z5 H
  45. }# ^% B  Z4 z: I
  46. ! \7 |2 y$ d/ u+ V* z4 @- _. v
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , V/ |* _' [3 M' d- S' S
  48. {
    : t9 q/ _- M, F& |2 c3 [
  49.         int fd, ret;
    * l# w1 [0 \1 R" C. v7 N
  50.         e2prom_s_cmd arg;; P) [# _! @2 o; z2 `8 N$ u
  51.         unsigned char buf[0x18];5 m7 _' A8 Q5 r/ ~
  52. 1 I: B1 R  I/ ?) W* A) y/ m
  53.         memcpy(buf, mac, 6);
    2 L4 G. `5 E# ^9 ~+ r
  54.         memcpy(&buf[6], stbid, 18);) ?5 X! T5 x" F  q: T& F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' d. C" N9 d; a# r  N% F7 C- ~2 }+ M2 P
  56.         if (fd  < 0) {
    7 o6 f- [- g/ m. r
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 H& g9 E! o+ T# q$ u2 b/ |% o
  58.                 return -1;
    # [! l  {- I" E7 N
  59.         }' ^0 w$ C# T2 g+ s5 v( k
  60.         arg.sub_addr_count      = 2;
    5 M" g9 u3 k6 |" Q8 Z! I
  61.         arg.data_count          = 0x18;8 {2 ]  ^2 w2 f1 A) N
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : ?) s5 f0 d  [# F5 }: N
  63.         arg.e2prom_cmd_data     = buf;
    % U: Y7 R& w# p& B  T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . `9 y' Z  W4 U: N* i" X
  65.         if (ret != 0) {9 O, v- g6 U9 }( ]* Y, D1 E! m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 \4 |8 k' D2 `- l% k* Y; E: g
  67.                 return -1;. N, f: P0 V: S# A0 L! T
  68.         }# J3 q, R% C6 r$ S& F

  69. 3 ~5 F0 m2 h7 n* r( T/ @
  70.         return 0;
    / `9 @9 j  S, G% I* P& h
  71. }; o; ~2 ~- [& ]) C1 X

  72. . H: p8 D. I  u0 g% v, ]; I8 d
  73. int main()" W1 V+ c0 Z1 G( k
  74. {
    . c0 N% p. V$ _  F
  75.         char c;
    # O4 }6 a( M. v( R2 B0 O' k, b
  76.         int i, macs[6];
    ) J2 O8 j% u  S
  77.         unsigned char mac[6];* K1 G1 |0 x* `& H# p; T8 B
  78.         unsigned char stbid[256];
    7 N( w4 K) U0 ]/ @+ t
  79. - V, @5 R6 l3 ~" M% @: F" `
  80.         if (readparam(mac, stbid) < 0)
    7 A4 K& [' \' T) T
  81.                 return 1;* N4 l0 K5 _5 B' Y  e8 d" d
  82. ; r4 ^, j& M$ _3 Y( E
  83.         printf("Current parameters: \n");, N/ O% }9 a( V/ K, R7 q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 [- _! \8 a" q6 c" u
  85.         printf("  STBID: %s\n", stbid);# e% S! c8 f. ]# a( q6 o
  86.        
    0 h6 u+ B; E0 U6 j4 O
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 A4 |$ r4 p9 X/ \  s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - I1 r' R/ e: N# D; [* ?
  89.                 printf("Input MAC error\n");
      L, a# r8 U; T( n# F+ C2 t5 F
  90.                 return 1;) u4 y" J+ j+ p5 x
  91.         }* N$ Y* A' _% s- [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 e* p; d$ {% I& Z/ T: N6 s
  93.         printf("\nPlease input new STBID: ");" @3 a4 c, a! \" [
  94.         scanf("%s", stbid);
    + h8 Z" R6 r4 a5 `- q# c6 x# J$ b& D
  95.         if (strlen(stbid) != 18) {4 D1 C8 f  j: \+ c- u, N/ v" I
  96.                 printf("Invalid stbid\n");) i2 C  x* |9 x# W9 U
  97.                 return 1;1 G5 M6 x8 D+ |2 H3 J8 C
  98.         }9 o0 P. x2 M( L
  99.         printf("\nNew parameters: \n");# K, E# c$ x1 {. a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 u0 `7 w( k8 y3 f: Y
  101.         printf("  STBID: %s\n", stbid);( d! G9 z4 Y' _. y  r
  102. + A& F* @; X( h% M; @- e' ^2 w# e) m
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . k6 S* x( |6 D' z# s7 L
  104.         for (;;) {# l- o3 I7 H+ g1 Y3 k
  105.                 c = getchar();( Y% x6 Y+ s+ Y" I1 r1 N' s' [/ E& [
  106.                 if (c == 'y' || c == 'Y')" a, K6 b5 w; d. x* ~- f
  107.                         break;9 d/ z! T9 p# U" j  m  f
  108.                 if (c == 'n' || c == 'N') {( o3 L% J- }- F; U
  109.                         printf("\nAborted.\n");
    1 I; b. O# ]1 Z
  110.                         return 1;
    * g( m- q: Q+ n4 {, R* s
  111.                 }
    * S- p$ j1 D$ `' }+ D9 x
  112.         }
    & s" ?- U) O5 u5 u
  113.         if (writeparam(mac, stbid) == 0)
    5 n8 S) n  r# E
  114.                 printf("Parameters changed.\n");
    ! }" ~3 ~/ w) s. D

  115. % P' ~/ @) x( R! W: C3 f
  116.         return 0;
    + W% P, l5 c7 [% f3 }: b% m
  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
% Q) u+ c; u- i. W( U在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
$ _3 O% b! A+ u/ n5 ]7 k/ p4 s
你用的编译命令行格式是什么?9 v( y+ C/ o+ B2 l+ x
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-16 18:30 , Processed in 0.026850 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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